diff --git a/CLAUDE.md b/CLAUDE.md index 9eeb64de8..af5db63d4 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -163,7 +163,69 @@ Always cover: 3. **Error cases** — invalid inputs, type errors. 4. **Integration** — components working together. -Naming: `test___`. +Naming: `test___`, **kept under 60 +characters**. Omit any part the module or class name already carries — a test in +`test_config.py` needs no `config_` prefix — and drop `_returns_*` tails when the +scenario already implies the outcome. Keep `_raises` for error cases; the +exception type is usually redundant with it. + +``` +# too long — the module already says `summary_generator_stress`, and +# `_raises_runtime_error` repeats what `pytest.raises` in the body states +test_summary_generator_stress_init_strain_without_filenames_raises_runtime_error + +# good +test_init_strain_without_filenames_raises +``` + +### Test tiers, markers, and locations + +Tests are split into three tiers so the fast ones can be run without waiting on +real data or being interrupted by GUI pop-ups. **Put every new test in the tier +matching what it actually touches, and apply the marker that tier requires.** + +| Tier | Location | Marker | Run with | +|---|---|---|---| +| Unit | `tests/unit//`, mirroring the `pyrs/` package layout | *none* | `pixi run test-unit` | +| Integration | `tests/integration/` (flat) | `@pytest.mark.integration` | `pixi run test-integration` | +| GUI | `tests/ui/` | `@pytest.mark.gui` **and** `@pytest.mark.integration` | `pixi run test-gui` | +| By-hand scripts | `tests/scripts/` | *n/a — never collected* | run the file directly | + +Marker definitions, registered in `pyproject.toml`: + +- **`integration`** — exercises real file I/O (`tests/data`, the `/HFIR` + archive) or a multi-component workflow. +- **`gui`** — constructs or drives Qt widgets; requires a display (xvfb or + offscreen). + +Notes: + +- Markers are enforced by `addopts = "--strict-markers"`: an unregistered marker + is an error, not a silent no-op. Register new markers in `pyproject.toml`. +- `test-gui` selects `-m gui`; `test-integration` selects + `-m 'integration and not gui'`. GUI tests therefore carry **both** markers — + `gui` alone would drop them from the integration tier. +- A test is a *unit* test only if it needs no real file and no widget. If it + loads a fixture file purely for convenience, prefer rewriting it against a + synthetic fixture and keeping it in the unit tier. +- Apply a whole-module marker with `pytestmark = pytest.mark.integration` rather + than decorating every function. +- `tests/util/` holds shared helper modules and fixtures, not tests of its own + (beyond tests *for* those helpers); `tests/scripts/` is excluded from + collection via `norecursedirs`. +- `test-gui` sets `QT_QPA_PLATFORM=offscreen` itself, so no window ever appears. + The full `pixi run test` does **not** — it is the task CI drives under + `xvfb-run`, and a pixi task `env` would override that. Export + `QT_QPA_PLATFORM=offscreen` yourself before running the full suite on a + workstation with a real desktop session, or it will stall on the GUI tier + until the timeout below fires — see [docs/ground_truths.md](docs/ground_truths.md). +- **Every test has a 300-second timeout** (`timeout`/`timeout_method` in + `pyproject.toml`, via `pytest-timeout`). A hang is a failure, not an infinite + wait. `timeout_method = "thread"` is deliberate: a test blocked inside Qt's C++ + event loop never returns to the interpreter, so the default `signal` method + cannot interrupt it — verified. The watchdog dumps every thread's stack, which + names the blocking line. Override per-test with `@pytest.mark.timeout(N)` for a + genuinely long-running case rather than raising the global limit. ## 🔍 Code Review Process diff --git a/docs/ground_truths.md b/docs/ground_truths.md index 0a197ed5a..783daed77 100644 --- a/docs/ground_truths.md +++ b/docs/ground_truths.md @@ -308,6 +308,63 @@ using that name. `grep -rn '"\.\./\|\.\(json\|csv\|h5\|xml\)"' tests/` `open()`, `os.remove()`, etc.) is a reasonable sweep for this pattern in other UI tests. +## `pixi run test` hangs on the GUI tier under an interactive display (2026-09) + +Running the full suite on a workstation with a real desktop session +(`DISPLAY=:0` plus a live Wayland compositor) and **no** `QT_QPA_PLATFORM` +override hangs indefinitely at the first GUI test, +`tests/ui/test_calibration_ui.py`. It is not slow — it is blocked. The +process sits at ~6% CPU with `wchan = poll_schedule_timeout`, holding the +compositor's cursor-shm, `mime.cache` and `icon-theme.cache` file +descriptors open: the signature of a real, mapped Qt window spinning its +event loop waiting for an interaction that never arrives. pytest's stdout +is block-buffered when redirected, so the log shows nothing after the +`tests/ui/test_calibration_ui.py` line and the run looks merely slow. + +Set `QT_QPA_PLATFORM=offscreen` and the same suite completes in under six +minutes. This matches what `scripts/development/run_tests.py`'s own +docstring assumes ("the offscreen Qt platform used for local runs"), but +nothing in the repo actually *sets* it, so whether a local run works +depends on the developer's desktop environment. + +Note the asymmetry with the segfault entry above: `offscreen` is what +makes a local run finish, while CI's real display server (`xvfb-run` + +`xcb`) is what makes the shutdown segfault reproducible. The two failure +modes want opposite platforms, which is why neither is reliably visible +from the other's environment. + +**Resolved (2026-09-18), two ways:** + +1. `test-gui` now carries `env = { QT_QPA_PLATFORM = "offscreen" }` in its + pixi task definition, so it can no longer open a window regardless of + the developer's desktop. It is *not* set on the `test` task: a pixi task + `env` overrides the ambient environment unconditionally (verified — a + caller's `QT_QPA_PLATFORM=xcb` is ignored, and neither `${VAR:-default}` + in `env` nor in `cmd` expands), so setting it there would silently + defeat CI's `xvfb-run` wrapper and switch CI off the `xcb` platform + this very section is about. +2. Every test now has a 300s cap (`pytest-timeout`, configured in + `pyproject.toml`). A hang is therefore a failure with a stack dump + rather than an unbounded wait, including on the full `pixi run test` + where offscreen is not forced. + +`timeout_method = "thread"` is required, not a preference. Measured +directly against a `QEventLoop().exec()` that never returns to the +interpreter: with `--timeout-method=signal` (the plugin's Unix default) +the 5s timeout passed unnoticed and an external `timeout 40` had to kill +the process; with `--timeout-method=thread` it was caught at 5s and the +dump named the exact blocking line. SIGALRM is only delivered when the +interpreter next executes bytecode, which a blocked C++ event loop never +does. + +**Practical consequence:** prefer `pixi run test-unit` / +`pixi run test-integration` for day-to-day work — they deselect the `gui` +marker entirely and never open a window. (Confirmed: the only `tests/ui/` +tests the integration tier selects are `test_model`, +`test_model_multiple_files` and `test_model_from_json`, which construct +`Model()` and touch no widget.) Before the full `pixi run test`, still +export `QT_QPA_PLATFORM=offscreen` yourself. + ## Uncalibrated (`Status: -1`) calibration JSON silently applied during reduction (2026-07) `read_calibration_json_file()` in diff --git a/pixi.lock b/pixi.lock index 24d226e73..bf3060905 100644 --- a/pixi.lock +++ b/pixi.lock @@ -15,6 +15,7 @@ environments: - url: https://conda.anaconda.org/mantid-ornl/label/nightly/ - url: https://conda.anaconda.org/mantid/label/main/ - url: https://conda.anaconda.org/mantid/label/nightly/ + - url: https://conda.anaconda.org/neutrons/ - url: https://prefix.dev/pixi-build-backends/ indexes: - https://pypi.org/simple @@ -24,142 +25,138 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.14.3-py313hd6074c6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.16.1-h7cc23a3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.14.1-pl5321h57e6904_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ast-serialize-0.8.0-py310hd8a072f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ast-serialize-0.11.2-py311hf77984d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.7.0-py313h8f72f4d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.7.0-py313h8f72f4d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.6-he440d0b_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.2.0-h505cf86_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.2.0-h9908984_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py313h2fc2bef_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.2.0-h505cf86_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.2.0-h9908984_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py313h2fc2bef_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.8-hebe6cf0_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-3.3.3-hea3f660_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3c89d7e_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.1.1-py313ha52865f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-3.3.4-hea3f660_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.6-h3c89d7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.1.1-py313ha52865f_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/chardet-7.6.0-py313h2af15c8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cli11-2.7.2-h54a6638_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/comrak-0.54.0-hb17b654_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/comrak-0.55.0-hf19af3b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/conda-26.5.0-py313h78bf25f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/conda-pypi-0.11.0-py313hd5f5364_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py313hc8edb43_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.16.0-py313h2af15c8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.4.0-py313h2551ef2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.16.1-py313h2af15c8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cpp-expected-1.3.1-h171cf75_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-50.0.0-py313h78454fb_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-50.0.1-py311hc91d8b8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cyrus-sasl-2.1.28-hac629b4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-he8c428d_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.21-py313h5d5ffb9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.22-py313h901f96d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/double-conversion-3.4.0-hecca717_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-abi-5.0.1.80-hf414acd_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/elfutils-0.194-h849f50c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-abi-5.0.1.80-hf414acd_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/elfutils-0.196-h03e2bf6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-hb03c661_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/euphonic-1.6.2-py313h29aa505_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-9.0.1-gpl_h5342cc5_901.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-9.0.2-gpl_h9b364d9_900.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fmt-12.1.0-h76c4fd7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.18.3-h4db4eae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.63.0-py313h3dea7bd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.65.0-py313h6cd9899_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freeglut-3.2.2-h215f996_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freeimage-3.18.0-hd1b7436_25.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.3-ha770c72_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.17-h7cc23a3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.8.0-py313h6b9daa2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.44.8-h68053f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.44.8-h68053f1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gl2ps-1.4.2-h36e74d4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glew-2.3.0-h71661d4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.88.3-h67ed8a3_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/glslang-16.5.0-h980caa0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.90.0-h3d503d9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glslang-16.6.0-h980caa0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hfd2156b_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gnutls-3.8.13-h18acefa_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.15-h54a6638_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gsl-2.8-hbf7d49c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gsl-2.8-h3cd6761_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gtest-1.17.0-h171cf75_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.52-ha5ea40c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/h5py-3.16.0-nompi_py313hf402d47_104.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-14.4.0-ha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-14.5.0-ha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h2a13503_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h19486de_110.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5plugin-7.0.0-py313hf57f36c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5plugin-7.1.0-py313h14eca21_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-py310h44b86e0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/imath-3.2.2-hde8ca8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/intel-gmmlib-22.10.0-hb700be7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/intel-gmmlib-22.10.2-h7148c6a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/intel-media-driver-26.1.6-hecca717_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/jasper-4.2.9-h1588d4d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jasper-4.2.9-hd038ad9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsoncpp-1.9.6-hf42df4d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-hd590300_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-h7cc23a3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.5.1-py313h2551ef2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.5.1-py313h2551ef2_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-hbc21106_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lame-4.0-h770b6ad_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.19.1-h9073bf1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.19.1-h9073bf1_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.46.1-default_hbd61a6d_102.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.2.0-hdb68285_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/level-zero-1.29.0-hb700be7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/level-zero-1.33.1-h7148c6a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20260526.0-cxx17_h0dc7533_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.5-h088129d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.9-gpl_h3152399_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libass-0.17.5-h434b012_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-10_h4a7cf45_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libass-0.17.5-h3b6f6bf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-11_h4a7cf45_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-1.88.0-hd24cca6_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-python-1.88.0-py313hfaae9d9_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-h39a168f_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-ha411449_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-h018ffa1_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-h39a168f_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-ha411449_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-h018ffa1_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.78-h084b8d7_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-10_h0358290_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp23.1-23.1.0-default_h0acdd01_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-23.1.0-default_h7855034_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-11_h0358290_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp23.1-23.1.1-default_h0acdd01_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-23.1.1-default_h7037f76_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h7a8fb5f_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.21.0-ha042cf0_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.22.0-ha042cf0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdav1d7-1.5.4-hebe6cf0_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-hd45a770_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libdovi-3.4.0-ha23c83e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdovi-3.4.0-h39d0f39_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.129-h7cc23a3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h373387f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-1.7.0-ha4b6fd6_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-devel-1.7.0-ha4b6fd6_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-h280c20c_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.1-hecca717_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.4-hd2095e1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.7.0-h81df57d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.5.0-he200343_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.3-h5e6c136_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-16.2.0-ha9f2e26_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-16.2.0-h69a702a_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-16.2.0-h69a702a_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-16.2.0-h6b99dfc_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-16.2.0-ha9f2e26_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-16.2.0-h69a702a_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-16.2.0-h69a702a_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-16.2.0-h6b99dfc_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-devel-1.7.0-ha4b6fd6_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.88.3-he503a2a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.90.0-h569388d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglu-9.0.3-h5888daf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-devel-1.7.0-ha4b6fd6_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-16.2.0-he0feb66_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-14.4.0-h23af247_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-devel-14.4.0-h23af247_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-16.2.0-he0feb66_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-14.5.0-h23af247_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-devel-14.5.0-h23af247_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.13.0-default_he001693_1000.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwy-1.4.0-h57c4cff_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h0cb94f2_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libidn2-2.3.8-hfac485b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.2.0-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.12.0-heb2dce7_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-10_h47877c9_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblief-1.0.0-hd2095e1_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm23-23.1.0-h474f4eb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-11_h47877c9_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblief-1.0.0-h45ba95f_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm23-23.1.1-h474f4eb_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libmamba-2.9.0-py314h3b59866_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libmamba-spdlog-2.9.0-hf1e253f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libmambapy-2.9.0-py313ha4c4ee9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libmicrohttpd-1.0.10-hc2fc477_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmamba-2.9.0-py313hc1bd57e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmamba-spdlog-2.9.0-hc46a78c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmambapy-2.9.0-py313hf10c6ed_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libmsgpack-c-6.1.0-h54a6638_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.10.0-nompi_h3fa17b5_205.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.68.1-h74cf4be_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libntlm-1.8-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-hd0c01bc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.34-pthreads_hcf972fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.34-pthreads_hf13c14d_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-1.7.0-ha4b6fd6_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-2026.3.1-hf7e0547_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-batch-plugin-2026.3.1-h202117f_0.conda @@ -178,29 +175,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.19-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libplacebo-7.360.1-hc50b9dd_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.58-h922cc85_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-18.6-h9d76c99_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-18.6-h9d76c99_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-7.35.1-h622638d_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpsl-0.23.1-hd9e3e90_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpython-3.13.15-hdc7f604_103_cp313.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libraw-0.22.2-h074291d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librdkafka-2.13.2-he5e3081_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.62.3-h4c96295_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.62.3-ha427ee3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hbc6d301_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.22-hebe6cf0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.22-hebe6cf0_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsolv-0.7.39-h72ddc62_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.4-h13e7031_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-h6154650_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-16.2.0-h934c35e_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-16.2.0-hdf11a46_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.13-h084b8d7_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtasn1-4.21.0-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-16.2.0-h934c35e_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-16.2.0-hdf11a46_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-261.3-h26e0ef7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtheora-1.1.1-h4ab18f5_1006.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.2-hcc2c06a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libudev1-257.13-h084b8d7_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libunistring-0.9.10-h7f98852_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libudev1-261.3-h26e0ef7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libunwind-1.8.3-h65a8314_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liburing-2.14-hb700be7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libusb-1.0.29-h73b1eb8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.2-h5347b49_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.3-hcfc3c73_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libva-2.24.1-hb83e432_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h54a6638_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libvpl-2.16.0-h54a6638_0.conda @@ -211,12 +207,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.38-h280c20c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.13.2-h51789e4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbfile-1.2.0-hb03c661_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.3-hca6bf5a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.3-h49c6c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.43-h711ed8c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libzip-1.11.2-h6991a6a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.4-hf3af7cc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.4-h7df9aa5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.45-h8e12856_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzip-1.11.4-h6008cf6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-4.4.5-py313h28739b2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-4.4.5-py313h557dd98_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-hee9eb32_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-hebe6cf0_1003.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py313h3dea7bd_1.conda @@ -225,12 +221,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/mbedtls-4.0.0-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/menuinst-2.5.2-py313hd5f5364_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.33.7-h877a99e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.2.2-py313h2551ef2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.2.2-py313h2551ef2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.7.1-py313h3dea7bd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/muparser-2.3.4-h27087fc_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-2.3.1-py313h7f1de9a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-2.3.1-py313hd42f317_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/nettle-3.10.1-h5ef0d04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/nh3-0.3.7-py310h300b7de_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.12.0-h54a6638_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.1.3-py313h4bf6692_0.conda @@ -239,39 +234,38 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2025.06.13-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openexr-3.4.15-ha9edf89_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openh264-2.6.0-h8c49934_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-h55fea9a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-heb1ab33_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjph-0.31.0-h8d634f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openldap-2.6.13-hbde042b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.4-h781a0a9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/p11-kit-0.26.5-h8d769aa_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-3.0.5-py313hbfd7664_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.58.2-hda50119_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-3.0.6-np2py313h4900a6c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.58.2-h7bb47b9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/patch-2.8-h280c20c_1003.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/patchelf-0.19.1-hee9eb32_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-h8b3dc9c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.3.0-py313h80991f8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.3.0-py313h3b26573_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/poco-1.15.3-h8ecfa4d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/proj-9.8.1-he0df7b0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.5.2-py313h3dea7bd_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.2-py313hd42f317_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb03c661_1003.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.2-py313hd42f317_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h7cc23a3_1004.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pugixml-1.15-h3f63f65_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-h9a6aba3_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/py-lief-1.0.0-py313hbdba758_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/py-lief-1.0.0-py313h553f6f3_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/py-rattler-0.24.0-py310h70157a2_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/py-rattler-build-0.72.2-py310h701b438_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/py-rattler-build-0.73.0-py311h30674b1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pycifrw-5.0.1-py313h07c4f96_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pycosat-0.6.6-py313h07c4f96_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.46.5-py313ha296275_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pycosat-0.6.6-py313h995f894_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.46.5-py313ha296275_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyqt6-6.11.0-py313h5860079_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyqt6-sip-13.10.0-py313h7033f15_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.11.1-py313hcd51b16_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pystack-1.7.1-py313h5b59f99_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.15-hb101c97_101_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-librt-0.15.0-py313h54dd161_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pystack-1.7.1-py313h8390439_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.15-hf47f18c_103_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-librt-0.15.0-py313hd42f317_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py313h3dea7bd_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.2.0-py312h8a5ba0d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.2.0-py312h8a5ba0d_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/qscintilla2-2.14.1-py313h7033f15_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-gtk-platformtheme-6.11.1-hc54bc45_1.conda @@ -284,34 +278,33 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/reproc-14.2.8.post0-hee9eb32_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/reproc-cpp-14.2.8.post0-h1c70be6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ripgrep-15.2.0-hf19af3b_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-2026.6.3-py313ha296275_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-2026.6.3-py313ha296275_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.18.17-py313h54dd161_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.15-py313hd42f317_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.15-py313hd42f317_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.16.3-py313h4b8bb8b_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.32.56-h54a6638_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl3-3.4.14-hdeec2a5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/secretstorage-3.5.0-py313h78bf25f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl3-3.4.16-h5330f5c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/shaderc-2026.3-hcebf71c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/simdjson-4.6.9-h4dbf13b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/simdjson-4.6.11-h4dbf13b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sip-6.15.3-py313h7033f15_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.2-h03e3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.2-h34e00bb_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/spdlog-1.17.0-hb6aa676_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/spglib-2.7.0-py313h37f3353_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/spglib-2.7.0-py313h12dc443_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/spirv-tools-2026.3-h7148c6a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.53.4-h9ffa6c4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-4.2.0-hd2095e1_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2023.0.0-hab88423_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2023.1.0-hfd44327_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h1df4ec4_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.8-py313h07c4f96_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.10-py313h995f894_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.1.0-py313h7037e92_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/unixodbc-2.3.14-h69e2008_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/utfcpp-4.09-ha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/uv-0.12.7-h86a270d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/uv-0.12.17-h841d291_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/viskores-1.1.1-cpu_hc82bd48_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-base-9.6.2-py313hda7482d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.26.0-hc1c935e_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/x264-1!164.3095-h166bdaf_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/x265-3.5-h924138e_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/x264-1!164.3095-h7cc23a3_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/x265-3.5-h73f68a7_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.1-h4f16b4b_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-cursor-0.1.6-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-image-0.4.0-hb711507_2.conda @@ -322,11 +315,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-h280c20c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-h0d788c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.13-he1eb515_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-h7cc23a3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.7-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-h7cc23a3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.7-h7cc23a3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.2-h7cc23a3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.3-h7cc23a3_1.conda @@ -337,27 +330,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.3.1-h7cc23a3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-h7cc23a3_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxxf86vm-1.1.7-hb03c661_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2025.1-h280c20c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2025.1-hebe6cf0_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-hebe6cf0_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-cpp-0.8.0-h54a6638_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.24.5-py313h3dea7bd_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h09e67af_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zfp-1.0.1-h909a3a2_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h901266b_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zfp-1.0.1-h79e284d_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.2-h25fd6f3_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.3-hce19668_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.25.0-py313hd42f317_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.25.0-py313hd42f317_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-49.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-51.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.7.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anaconda-auth-0.15.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anaconda-auth-0.15.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anaconda-cli-base-0.8.2-pyhc364b38_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anaconda-client-1.14.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-doc-0.0.5-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.14.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.15.1-pyh5ded981_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/archspec-0.2.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda @@ -365,7 +358,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/backports.tarfile-1.2.0-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.15.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/boltons-26.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/boltons-26.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/boolean.py-5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.7.22-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cachecontrol-0.14.4-pyha770c72_0.conda @@ -374,21 +367,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.7.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.5.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.4.2-pyhc90fa1f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.5.0-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.1.2-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.3-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/conda-build-26.7.1-pyh31ec981_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/conda-index-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/conda-index-0.13.0-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/conda-libmamba-solver-26.7.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/conda-lockfiles-0.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.5.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.6.0-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.13.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/conda-self-0.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.15-py313hd8ed1ab_101.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/conda-pypi-0.12.0-pyh5ded981_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/conda-self-0.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.15-py313hd8ed1ab_103.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cyclonedx-python-lib-11.12.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cyclopts-4.23.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cyclopts-4.25.2-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.3-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/distro-1.9.0-pyhd8ed1ab_1.conda @@ -398,9 +392,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/evalidate-2.0.5-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.32.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/flexcache-0.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/flexparser-0.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.32.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/flexcache-0.3-pyh5ded981_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/flexparser-0.4-pyh5ded981_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -413,26 +407,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.4.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h5glance-0.9-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hatch-1.17.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hatchling-1.32.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hatchling-1.32.4-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/html5lib-1.1-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/htmlgen-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore2-2.12.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore2-2.13.0-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx2-2.12.0-pyhe5d96d1_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx2-2.13.0-pyhcd62e61_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperlink-21.0.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/id-1.6.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.19-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.19-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.20-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-2.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-9.0.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-resources-7.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-7.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.3.0-pyha191276_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.17.0-pyh53cf698_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.17.1-pyh53cf698_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.classes-3.4.0-pyhcf101f3_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.context-6.1.2-pyhcf101f3_0.conda @@ -466,14 +460,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.7-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pint-0.25.3-pyhc364b38_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pint-0.26.1-pyhc364b38_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-26.2.1-pyh145f28c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-api-0.0.34-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-audit-2.10.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-requirements-parser-32.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkce-1.0.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkginfo-1.12.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.11.5-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.11.11-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pooch-1.9.0-pyhd8ed1ab_0.conda @@ -481,7 +475,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/prettytable-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.53-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/py-serializable-2.1.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-abi-11-hc364b38_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyconify-0.2.1-pyhd8ed1ab_0.conda @@ -489,24 +483,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.13.5-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.21.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.13.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.14.0-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.5-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyproject_hooks-1.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.1.1-pyhc364b38_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-7.1.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-qt-4.5.0-pyhdecd6ff_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-timeout-2.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-build-1.6.0-pyhc364b38_0.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-discovery-1.6.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.6.1-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.3-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.22.2-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.15-h4df99d1_101.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.15-h4df99d1_103.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-installer-1.0.1-pyh332efcf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-libarchive-c-5.3-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-9_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2026.3.post1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyvista-0.48.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyvista-0.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyvista-validation-0.2.2-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyvistaqt-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/qtconsole-base-5.7.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/qtpy-2.4.3-pyhd8ed1ab_1.conda @@ -520,9 +516,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rich-15.0.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-rst-2.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-4.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/scooby-0.11.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/scooby-0.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/secretstorage-3.5.0-pyhc9edb4d_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seekpath-2.2.1-pyhcf101f3_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/semver-3.0.4-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/semver-3.1.0-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-84.0.0-pyh332efcf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda @@ -537,25 +534,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jquery-4.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-mermaid-2.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-mermaid-2.1.1-pyh5ded981_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-programoutput-0.20-pyhc364b38_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/superqt-0.8.2-pyh9208f05_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.7.0-pyhc455866_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhcf101f3_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-w-1.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.15.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toolz-1.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.70.0-pyh8f84b5b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.70.1-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.16.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/trove-classifiers-2026.6.1.19-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/truststore-0.10.4-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/twine-7.0.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.27.2-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-pyyaml-6.0.12.20260815-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-pyyaml-6.0.12.20260906-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-six-1.17.0.20260724-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.16.0-h69aa097_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.4-pyhcf101f3_0.conda @@ -563,21 +560,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2026c-h151e31d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uncertainties-3.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/unearth-0.18.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/userpath-1.9.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/versioningit-3.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.7.7-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.10.0-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wayland-protocols-1.49-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.8.3-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.8.4-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wslink-2.5.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-4.1.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/mantid/label/nightly/linux-64/mantid-6.16.20260828.1750-np21py313he1c858e_0.conda - - conda: https://conda.anaconda.org/mantid/label/nightly/linux-64/mantidqt-6.16.20260828.1750-py313h4e5e0ba_0.conda - - conda: https://conda.anaconda.org/mantid/label/nightly/linux-64/mantidworkbench-6.16.20260828.1750-py313h6f496a1_0.conda + - conda: https://conda.anaconda.org/mantid/label/nightly/linux-64/mantid-6.16.20260918.1225-np21py313h00d128e_0.conda + - conda: https://conda.anaconda.org/mantid/label/nightly/linux-64/mantidqt-6.16.20260918.1225-py313hf47c1b5_0.conda + - conda: https://conda.anaconda.org/mantid/label/nightly/linux-64/mantidworkbench-6.16.20260918.1225-py313h97147f1_0.conda + - conda: https://conda.anaconda.org/neutrons/noarch/neutrons_standard-0.1.0-pyh4616a5c_0.conda - pypi: ./ - pypi: https://files.pythonhosted.org/packages/14/2f/967ba146e6d58cf6a652da73885f52fc68001525b4197effc174321d70b4/jmespath-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b7/5e/4516280c9680e2e417fbb6c9f5c519de9d1d824b46a9feb134fdac3f47c8/regex-2026.8.31-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/20/3b/000c79c3f9c06b7542225a5d3a7f9a85405da7224b3b9af94a491d07abea/regex-2026.9.10-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/d2/b8/f0b9b880c03a3db8eaff63d76ca751ac7d8e45483fb7a0bb9f8e5c6ce433/toml_cli-0.8.2-py3-none-any.whl dev: channels: @@ -587,6 +585,7 @@ environments: - url: https://conda.anaconda.org/mantid-ornl/label/nightly/ - url: https://conda.anaconda.org/mantid/label/main/ - url: https://conda.anaconda.org/mantid/label/nightly/ + - url: https://conda.anaconda.org/neutrons/ - url: https://prefix.dev/pixi-build-backends/ indexes: - https://pypi.org/simple @@ -596,142 +595,138 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.14.3-py313hd6074c6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.16.1-h7cc23a3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.14.1-pl5321h57e6904_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ast-serialize-0.8.0-py310hd8a072f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ast-serialize-0.11.2-py311hf77984d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.7.0-py313h8f72f4d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.7.0-py313h8f72f4d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.6-he440d0b_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.2.0-h505cf86_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.2.0-h9908984_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py313h2fc2bef_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.2.0-h505cf86_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.2.0-h9908984_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py313h2fc2bef_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.8-hebe6cf0_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-3.3.3-hea3f660_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3c89d7e_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.1.1-py313ha52865f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-3.3.4-hea3f660_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.6-h3c89d7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.1.1-py313ha52865f_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/chardet-7.6.0-py313h2af15c8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cli11-2.7.2-h54a6638_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/comrak-0.54.0-hb17b654_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/comrak-0.55.0-hf19af3b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/conda-26.5.0-py313h78bf25f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/conda-pypi-0.11.0-py313hd5f5364_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py313hc8edb43_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.16.0-py313h2af15c8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.4.0-py313h2551ef2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.16.1-py313h2af15c8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cpp-expected-1.3.1-h171cf75_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-50.0.0-py313h78454fb_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-50.0.1-py311hc91d8b8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cyrus-sasl-2.1.28-hac629b4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-he8c428d_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.21-py313h5d5ffb9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.22-py313h901f96d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/double-conversion-3.4.0-hecca717_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-abi-5.0.1.80-hf414acd_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/elfutils-0.194-h849f50c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-abi-5.0.1.80-hf414acd_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/elfutils-0.196-h03e2bf6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-hb03c661_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/euphonic-1.6.2-py313h29aa505_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-9.0.1-gpl_h5342cc5_901.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-9.0.2-gpl_h9b364d9_900.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fmt-12.1.0-h76c4fd7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.18.3-h4db4eae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.63.0-py313h3dea7bd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.65.0-py313h6cd9899_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freeglut-3.2.2-h215f996_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freeimage-3.18.0-hd1b7436_25.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.3-ha770c72_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.17-h7cc23a3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.8.0-py313h6b9daa2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.44.8-h68053f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.44.8-h68053f1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gl2ps-1.4.2-h36e74d4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glew-2.3.0-h71661d4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.88.3-h67ed8a3_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/glslang-16.5.0-h980caa0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.90.0-h3d503d9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glslang-16.6.0-h980caa0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hfd2156b_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gnutls-3.8.13-h18acefa_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.15-h54a6638_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gsl-2.8-hbf7d49c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gsl-2.8-h3cd6761_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gtest-1.17.0-h171cf75_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.52-ha5ea40c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/h5py-3.16.0-nompi_py313hf402d47_104.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-14.4.0-ha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-14.5.0-ha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h2a13503_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h19486de_110.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5plugin-7.0.0-py313hf57f36c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5plugin-7.1.0-py313h14eca21_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-py310h44b86e0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/imath-3.2.2-hde8ca8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/intel-gmmlib-22.10.0-hb700be7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/intel-gmmlib-22.10.2-h7148c6a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/intel-media-driver-26.1.6-hecca717_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/jasper-4.2.9-h1588d4d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jasper-4.2.9-hd038ad9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsoncpp-1.9.6-hf42df4d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-hd590300_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-h7cc23a3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.5.1-py313h2551ef2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.5.1-py313h2551ef2_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-hbc21106_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lame-4.0-h770b6ad_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.19.1-h9073bf1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.19.1-h9073bf1_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.46.1-default_hbd61a6d_102.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.2.0-hdb68285_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/level-zero-1.29.0-hb700be7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/level-zero-1.33.1-h7148c6a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20260526.0-cxx17_h0dc7533_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.5-h088129d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.9-gpl_h3152399_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libass-0.17.5-h434b012_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-10_h4a7cf45_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libass-0.17.5-h3b6f6bf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-11_h4a7cf45_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-1.88.0-hd24cca6_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-python-1.88.0-py313hfaae9d9_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-h39a168f_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-ha411449_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-h018ffa1_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-h39a168f_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-ha411449_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-h018ffa1_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.78-h084b8d7_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-10_h0358290_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp23.1-23.1.0-default_h0acdd01_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-23.1.0-default_h7855034_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-11_h0358290_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp23.1-23.1.1-default_h0acdd01_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-23.1.1-default_h7037f76_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h7a8fb5f_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.21.0-ha042cf0_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.22.0-ha042cf0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdav1d7-1.5.4-hebe6cf0_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-hd45a770_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libdovi-3.4.0-ha23c83e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdovi-3.4.0-h39d0f39_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.129-h7cc23a3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h373387f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-1.7.0-ha4b6fd6_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-devel-1.7.0-ha4b6fd6_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-h280c20c_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.1-hecca717_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.4-hd2095e1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.7.0-h81df57d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.5.0-he200343_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.3-h5e6c136_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-16.2.0-ha9f2e26_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-16.2.0-h69a702a_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-16.2.0-h69a702a_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-16.2.0-h6b99dfc_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-16.2.0-ha9f2e26_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-16.2.0-h69a702a_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-16.2.0-h69a702a_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-16.2.0-h6b99dfc_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-devel-1.7.0-ha4b6fd6_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.88.3-he503a2a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.90.0-h569388d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglu-9.0.3-h5888daf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-devel-1.7.0-ha4b6fd6_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-16.2.0-he0feb66_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-14.4.0-h23af247_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-devel-14.4.0-h23af247_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-16.2.0-he0feb66_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-14.5.0-h23af247_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-devel-14.5.0-h23af247_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.13.0-default_he001693_1000.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwy-1.4.0-h57c4cff_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h0cb94f2_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libidn2-2.3.8-hfac485b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.2.0-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.12.0-heb2dce7_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-10_h47877c9_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblief-1.0.0-hd2095e1_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm23-23.1.0-h474f4eb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-11_h47877c9_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblief-1.0.0-h45ba95f_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm23-23.1.1-h474f4eb_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libmamba-2.9.0-py314h3b59866_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libmamba-spdlog-2.9.0-hf1e253f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libmambapy-2.9.0-py313ha4c4ee9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libmicrohttpd-1.0.10-hc2fc477_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmamba-2.9.0-py313hc1bd57e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmamba-spdlog-2.9.0-hc46a78c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmambapy-2.9.0-py313hf10c6ed_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libmsgpack-c-6.1.0-h54a6638_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.10.0-nompi_h3fa17b5_205.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.68.1-h74cf4be_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libntlm-1.8-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-hd0c01bc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.34-pthreads_hcf972fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.34-pthreads_hf13c14d_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-1.7.0-ha4b6fd6_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-2026.3.1-hf7e0547_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-batch-plugin-2026.3.1-h202117f_0.conda @@ -750,29 +745,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.19-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libplacebo-7.360.1-hc50b9dd_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.58-h922cc85_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-18.6-h9d76c99_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-18.6-h9d76c99_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-7.35.1-h622638d_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpsl-0.23.1-hd9e3e90_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpython-3.13.15-hdc7f604_103_cp313.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libraw-0.22.2-h074291d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librdkafka-2.13.2-he5e3081_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.62.3-h4c96295_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.62.3-ha427ee3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hbc6d301_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.22-hebe6cf0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.22-hebe6cf0_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsolv-0.7.39-h72ddc62_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.4-h13e7031_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-h6154650_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-16.2.0-h934c35e_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-16.2.0-hdf11a46_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.13-h084b8d7_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtasn1-4.21.0-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-16.2.0-h934c35e_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-16.2.0-hdf11a46_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-261.3-h26e0ef7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtheora-1.1.1-h4ab18f5_1006.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.2-hcc2c06a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libudev1-257.13-h084b8d7_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libunistring-0.9.10-h7f98852_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libudev1-261.3-h26e0ef7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libunwind-1.8.3-h65a8314_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liburing-2.14-hb700be7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libusb-1.0.29-h73b1eb8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.2-h5347b49_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.3-hcfc3c73_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libva-2.24.1-hb83e432_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h54a6638_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libvpl-2.16.0-h54a6638_0.conda @@ -783,12 +777,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.38-h280c20c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.13.2-h51789e4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbfile-1.2.0-hb03c661_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.3-hca6bf5a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.3-h49c6c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.43-h711ed8c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libzip-1.11.2-h6991a6a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.4-hf3af7cc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.4-h7df9aa5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.45-h8e12856_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzip-1.11.4-h6008cf6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-4.4.5-py313h28739b2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-4.4.5-py313h557dd98_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-hee9eb32_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-hebe6cf0_1003.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py313h3dea7bd_1.conda @@ -797,12 +791,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/mbedtls-4.0.0-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/menuinst-2.5.2-py313hd5f5364_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.33.7-h877a99e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.2.2-py313h2551ef2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.2.2-py313h2551ef2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.7.1-py313h3dea7bd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/muparser-2.3.4-h27087fc_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-2.3.1-py313h7f1de9a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-2.3.1-py313hd42f317_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/nettle-3.10.1-h5ef0d04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/nh3-0.3.7-py310h300b7de_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.12.0-h54a6638_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.1.3-py313h4bf6692_0.conda @@ -811,39 +804,38 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2025.06.13-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openexr-3.4.15-ha9edf89_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openh264-2.6.0-h8c49934_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-h55fea9a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-heb1ab33_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjph-0.31.0-h8d634f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openldap-2.6.13-hbde042b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.4-h781a0a9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/p11-kit-0.26.5-h8d769aa_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-3.0.5-py313hbfd7664_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.58.2-hda50119_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-3.0.6-np2py313h4900a6c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.58.2-h7bb47b9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/patch-2.8-h280c20c_1003.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/patchelf-0.19.1-hee9eb32_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-h8b3dc9c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.3.0-py313h80991f8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.3.0-py313h3b26573_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/poco-1.15.3-h8ecfa4d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/proj-9.8.1-he0df7b0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.5.2-py313h3dea7bd_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.2-py313hd42f317_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb03c661_1003.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.2-py313hd42f317_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h7cc23a3_1004.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pugixml-1.15-h3f63f65_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-h9a6aba3_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/py-lief-1.0.0-py313hbdba758_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/py-lief-1.0.0-py313h553f6f3_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/py-rattler-0.24.0-py310h70157a2_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/py-rattler-build-0.72.2-py310h701b438_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/py-rattler-build-0.73.0-py311h30674b1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pycifrw-5.0.1-py313h07c4f96_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pycosat-0.6.6-py313h07c4f96_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.46.5-py313ha296275_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pycosat-0.6.6-py313h995f894_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.46.5-py313ha296275_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyqt6-6.11.0-py313h5860079_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyqt6-sip-13.10.0-py313h7033f15_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.11.1-py313hcd51b16_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pystack-1.7.1-py313h5b59f99_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.15-hb101c97_101_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-librt-0.15.0-py313h54dd161_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pystack-1.7.1-py313h8390439_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.15-hf47f18c_103_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-librt-0.15.0-py313hd42f317_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py313h3dea7bd_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.2.0-py312h8a5ba0d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.2.0-py312h8a5ba0d_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/qscintilla2-2.14.1-py313h7033f15_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-gtk-platformtheme-6.11.1-hc54bc45_1.conda @@ -856,33 +848,32 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/reproc-14.2.8.post0-hee9eb32_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/reproc-cpp-14.2.8.post0-h1c70be6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ripgrep-15.2.0-hf19af3b_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-2026.6.3-py313ha296275_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-2026.6.3-py313ha296275_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.18.17-py313h54dd161_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.15-py313hd42f317_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.15-py313hd42f317_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.16.3-py313h4b8bb8b_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.32.56-h54a6638_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl3-3.4.14-hdeec2a5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/secretstorage-3.5.0-py313h78bf25f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl3-3.4.16-h5330f5c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/shaderc-2026.3-hcebf71c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/simdjson-4.6.9-h4dbf13b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/simdjson-4.6.11-h4dbf13b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sip-6.15.3-py313h7033f15_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.2-h03e3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.2-h34e00bb_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/spdlog-1.17.0-hb6aa676_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/spglib-2.7.0-py313h37f3353_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/spglib-2.7.0-py313h12dc443_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/spirv-tools-2026.3-h7148c6a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.53.4-h9ffa6c4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-4.2.0-hd2095e1_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2023.0.0-hab88423_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2023.1.0-hfd44327_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h1df4ec4_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.8-py313h07c4f96_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.10-py313h995f894_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/unixodbc-2.3.14-h69e2008_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/utfcpp-4.09-ha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/uv-0.12.7-h86a270d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/uv-0.12.17-h841d291_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/viskores-1.1.1-cpu_hc82bd48_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-base-9.6.2-py313hda7482d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.26.0-hc1c935e_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/x264-1!164.3095-h166bdaf_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/x265-3.5-h924138e_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/x264-1!164.3095-h7cc23a3_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/x265-3.5-h73f68a7_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.1-h4f16b4b_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-cursor-0.1.6-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-image-0.4.0-hb711507_2.conda @@ -893,11 +884,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-h280c20c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-h0d788c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.13-he1eb515_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-h7cc23a3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.7-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-h7cc23a3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.7-h7cc23a3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.2-h7cc23a3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.3-h7cc23a3_1.conda @@ -908,27 +899,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.3.1-h7cc23a3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-h7cc23a3_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxxf86vm-1.1.7-hb03c661_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2025.1-h280c20c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2025.1-hebe6cf0_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-hebe6cf0_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-cpp-0.8.0-h54a6638_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.24.5-py313h3dea7bd_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h09e67af_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zfp-1.0.1-h909a3a2_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h901266b_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zfp-1.0.1-h79e284d_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.2-h25fd6f3_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.3-hce19668_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.25.0-py313hd42f317_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.25.0-py313hd42f317_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-49.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-51.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.7.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anaconda-auth-0.15.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anaconda-auth-0.15.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anaconda-cli-base-0.8.2-pyhc364b38_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anaconda-client-1.14.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-doc-0.0.5-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.14.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.15.1-pyh5ded981_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/archspec-0.2.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda @@ -936,26 +927,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/backports.tarfile-1.2.0-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.15.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/boltons-26.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/boltons-26.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.7.22-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-2.0.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-2.0.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.7.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.5.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.4.2-pyhc90fa1f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.5.0-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.1.2-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.3-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/conda-build-26.7.1-pyh31ec981_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/conda-index-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/conda-index-0.13.0-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/conda-libmamba-solver-26.7.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/conda-lockfiles-0.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.5.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.6.0-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.13.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/conda-self-0.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.15-py313hd8ed1ab_101.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/conda-pypi-0.12.0-pyh5ded981_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/conda-self-0.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.15-py313hd8ed1ab_103.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cyclopts-4.23.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cyclopts-4.25.2-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.3-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/distro-1.9.0-pyhd8ed1ab_1.conda @@ -965,9 +957,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/evalidate-2.0.5-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.32.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/flexcache-0.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/flexparser-0.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.32.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/flexcache-0.3-pyh5ded981_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/flexparser-0.4-pyh5ded981_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -980,24 +972,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.4.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h5glance-0.9-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hatch-1.17.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hatchling-1.32.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hatchling-1.32.4-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/htmlgen-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore2-2.12.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore2-2.13.0-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx2-2.12.0-pyhe5d96d1_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx2-2.13.0-pyhcd62e61_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperlink-21.0.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/id-1.6.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.19-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.20-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-2.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-9.0.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-resources-7.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-7.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.3.0-pyha191276_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.17.0-pyh53cf698_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.17.1-pyh53cf698_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.classes-3.4.0-pyhcf101f3_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.context-6.1.2-pyhcf101f3_0.conda @@ -1028,42 +1020,44 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.7-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pint-0.25.3-pyhc364b38_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pint-0.26.1-pyhc364b38_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-26.2.1-pyh145f28c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkce-1.0.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkginfo-1.12.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.11.5-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.11.11-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pooch-1.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prettytable-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.53-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-abi-11-hc364b38_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyconify-0.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.13.5-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.21.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.13.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.14.0-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.5-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyproject_hooks-1.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.1.1-pyhc364b38_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-7.1.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-qt-4.5.0-pyhdecd6ff_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-timeout-2.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-build-1.6.0-pyhc364b38_0.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-discovery-1.6.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.6.1-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.3-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.22.2-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.15-h4df99d1_101.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.15-h4df99d1_103.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-installer-1.0.1-pyh332efcf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-libarchive-c-5.3-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-9_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2026.3.post1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyvista-0.48.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyvista-0.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyvista-validation-0.2.2-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyvistaqt-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/qtconsole-base-5.7.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/qtpy-2.4.3-pyhd8ed1ab_1.conda @@ -1077,9 +1071,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rich-15.0.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-rst-2.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-4.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/scooby-0.11.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/scooby-0.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/secretstorage-3.5.0-pyhc9edb4d_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seekpath-2.2.1-pyhcf101f3_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/semver-3.0.4-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/semver-3.1.0-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-84.0.0-pyh332efcf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda @@ -1093,25 +1088,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jquery-4.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-mermaid-2.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-mermaid-2.1.1-pyh5ded981_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-programoutput-0.20-pyhc364b38_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/superqt-0.8.2-pyh9208f05_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.7.0-pyhc455866_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhcf101f3_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-w-1.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.15.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toolz-1.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.70.0-pyh8f84b5b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.70.1-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.16.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/trove-classifiers-2026.6.1.19-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/truststore-0.10.4-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/twine-7.0.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.27.2-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-pyyaml-6.0.12.20260815-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-pyyaml-6.0.12.20260906-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-six-1.17.0.20260724-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.16.0-h69aa097_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.4-pyhcf101f3_0.conda @@ -1119,20 +1114,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2026c-h151e31d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uncertainties-3.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/unearth-0.18.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/userpath-1.9.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/versioningit-3.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.7.7-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.10.0-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wayland-protocols-1.49-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.8.3-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.8.4-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wslink-2.5.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-4.1.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/mantid/label/nightly/linux-64/mantid-6.16.20260828.1750-np21py313he1c858e_0.conda - - conda: https://conda.anaconda.org/mantid/label/nightly/linux-64/mantidqt-6.16.20260828.1750-py313h4e5e0ba_0.conda - - conda: https://conda.anaconda.org/mantid/label/nightly/linux-64/mantidworkbench-6.16.20260828.1750-py313h6f496a1_0.conda + - conda: https://conda.anaconda.org/mantid/label/nightly/linux-64/mantid-6.16.20260918.1225-np21py313h00d128e_0.conda + - conda: https://conda.anaconda.org/mantid/label/nightly/linux-64/mantidqt-6.16.20260918.1225-py313hf47c1b5_0.conda + - conda: https://conda.anaconda.org/mantid/label/nightly/linux-64/mantidworkbench-6.16.20260918.1225-py313h97147f1_0.conda + - conda: https://conda.anaconda.org/neutrons/noarch/neutrons_standard-0.1.0-pyh4616a5c_0.conda - pypi: ./ - pypi: https://files.pythonhosted.org/packages/14/2f/967ba146e6d58cf6a652da73885f52fc68001525b4197effc174321d70b4/jmespath-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b7/5e/4516280c9680e2e417fbb6c9f5c519de9d1d824b46a9feb134fdac3f47c8/regex-2026.8.31-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/20/3b/000c79c3f9c06b7542225a5d3a7f9a85405da7224b3b9af94a491d07abea/regex-2026.9.10-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/d2/b8/f0b9b880c03a3db8eaff63d76ca751ac7d8e45483fb7a0bb9f8e5c6ce433/toml_cli-0.8.2-py3-none-any.whl prod: channels: @@ -1142,6 +1138,7 @@ environments: - url: https://conda.anaconda.org/mantid-ornl/label/nightly/ - url: https://conda.anaconda.org/mantid/label/main/ - url: https://conda.anaconda.org/mantid/label/nightly/ + - url: https://conda.anaconda.org/neutrons/ - url: https://prefix.dev/pixi-build-backends/ indexes: - https://pypi.org/simple @@ -1150,159 +1147,153 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.14.3-py312h5d8c7f2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.16.1-h7cc23a3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ast-serialize-0.8.0-py310hd8a072f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ast-serialize-0.11.2-py311hf77984d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.7.0-py312h3f22e6b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.7.0-py312h3f22e6b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.6-he440d0b_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.2.0-h505cf86_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.2.0-h9908984_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py312he9c40d5_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.2.0-h505cf86_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.2.0-h9908984_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py312he9c40d5_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.8-hebe6cf0_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-3.3.3-hea3f660_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-3.3.4-hea3f660_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-he90730b_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.1.1-py312h703531f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.1.1-py312h703531f_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/chardet-7.6.0-py312h8b7ec3f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cli11-2.7.2-h54a6638_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/comrak-0.54.0-hb17b654_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/comrak-0.55.0-hf19af3b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/conda-26.5.0-py312h7900ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/conda-pypi-0.11.0-py312h20c3967_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py312h0a2e395_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.16.0-py312h8b7ec3f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.4.0-py312h9be0db6_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.16.1-py312h8b7ec3f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cpp-expected-1.3.1-h171cf75_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-50.0.0-py312h89f293a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-50.0.1-py311hc91d8b8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cyrus-sasl-2.1.28-hac629b4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-he8c428d_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.21-py312h8285ef7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.22-py312h80505a6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/double-conversion-3.4.0-hecca717_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-abi-5.0.1.80-hf414acd_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/elfutils-0.194-h849f50c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-abi-5.0.1.80-hf414acd_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/elfutils-0.196-h03e2bf6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-hb03c661_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/euphonic-1.6.2-py312h4f23490_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fmt-12.1.0-h76c4fd7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.17.1-h27c8c51_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.63.0-py312h8a5da7c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.65.0-py312hfd18d64_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freeglut-3.2.2-h215f996_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freeimage-3.18.0-hd1b7436_25.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.3-ha770c72_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.17-h7cc23a3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.8.0-py312h447239a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.44.8-h68053f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.44.8-h68053f1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gl2ps-1.4.2-h36e74d4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glew-2.3.0-h71661d4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-2.88.3-h52e820b_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.88.3-h67ed8a3_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hfd2156b_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gnutls-3.8.13-h18acefa_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-2.90.0-h5e3c387_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.90.0-h3d503d9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.15-h54a6638_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gsl-2.8-hbf7d49c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gsl-2.8-h3cd6761_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.26.11-h6d08254_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.26.11-h29cf534_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gtest-1.17.0-h171cf75_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.52-ha5ea40c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/h5py-3.16.0-nompi_py312hfaa9938_104.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-14.4.0-ha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-14.4.0-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h2a13503_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h19486de_110.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5plugin-7.0.0-py312hfbf75e7_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5plugin-7.1.0-py312hff6e9eb_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-py310h44b86e0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/imath-3.2.2-hde8ca8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/jasper-4.2.9-h1588d4d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jasper-4.2.9-hd038ad9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsoncpp-1.9.6-hf42df4d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-hd590300_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-h7cc23a3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.5.1-py312h9be0db6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.5.1-py312h9be0db6_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-hbc21106_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lame-4.0-h770b6ad_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.19.1-h9073bf1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.19.1-h9073bf1_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.46.1-default_hbd61a6d_102.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.2.0-hdb68285_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.5-h088129d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.9-gpl_h3152399_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-10_h4a7cf45_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-11_h4a7cf45_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-1.88.0-hd24cca6_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-python-1.88.0-py312hf890105_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-h39a168f_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-ha411449_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-h018ffa1_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-h39a168f_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-ha411449_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-h018ffa1_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.78-h084b8d7_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-10_h0358290_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-11_h0358290_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp22.1-22.1.8-default_h0acdd01_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp23.1-23.1.0-default_h0acdd01_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-23.1.0-default_h7855034_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp23.1-23.1.1-default_h0acdd01_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-23.1.1-default_h7037f76_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h7a8fb5f_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.21.0-ha042cf0_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.22.0-ha042cf0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-hd45a770_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.129-h7cc23a3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h373387f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-1.7.0-ha4b6fd6_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-devel-1.7.0-ha4b6fd6_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-h280c20c_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.1-hecca717_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-h5348a74_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.4-hd2095e1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.7.0-h81df57d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.5.0-he200343_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.3-h5e6c136_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-16.2.0-ha9f2e26_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-16.2.0-h69a702a_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-16.2.0-h69a702a_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-16.2.0-h6b99dfc_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-16.2.0-ha9f2e26_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-16.2.0-h69a702a_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-16.2.0-h69a702a_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-16.2.0-h6b99dfc_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-devel-1.7.0-ha4b6fd6_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.88.3-he503a2a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.90.0-h569388d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglu-9.0.3-h5888daf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-devel-1.7.0-ha4b6fd6_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-16.2.0-he0feb66_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-14.4.0-h23af247_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-devel-14.4.0-h23af247_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-16.2.0-he0feb66_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-14.4.0-h23af247_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-devel-14.4.0-h23af247_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.13.0-default_he001693_1000.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h0cb94f2_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libidn2-2.3.8-hfac485b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.2.0-hb03c661_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-10_h47877c9_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblief-1.0.0-hd2095e1_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm22-22.1.8-h474f4eb_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm23-23.1.0-h474f4eb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-11_h47877c9_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblief-1.0.0-h45ba95f_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm22-22.1.8-h474f4eb_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm23-23.1.1-h474f4eb_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libmamba-2.9.0-py314h3b59866_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libmamba-spdlog-2.9.0-hf1e253f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libmambapy-2.9.0-py312h9266df1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libmicrohttpd-1.0.10-hc2fc477_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmamba-2.9.0-py312he3a525c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmamba-spdlog-2.9.0-hc368430_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmambapy-2.9.0-py312h08f3bd4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libmsgpack-c-6.1.0-h54a6638_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.10.0-nompi_h3fa17b5_205.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.68.1-h74cf4be_1.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/libntlm-1.8-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-hd0c01bc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.34-pthreads_hcf972fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.34-pthreads_hf13c14d_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-1.7.0-ha4b6fd6_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.6.1-hebe6cf0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.19-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.58-h922cc85_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-18.6-h9d76c99_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-18.6-h9d76c99_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpsl-0.23.1-hd9e3e90_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpython-3.12.14-h0c77377_3_cpython.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libraw-0.22.2-h074291d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librdkafka-2.13.2-he5e3081_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.62.2-h4c96295_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hbc6d301_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.22-hebe6cf0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.22-hebe6cf0_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsolv-0.7.39-h72ddc62_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.4-h13e7031_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-h6154650_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-16.2.0-h934c35e_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-16.2.0-hdf11a46_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.13-h084b8d7_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtasn1-4.21.0-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-16.2.0-h934c35e_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-16.2.0-hdf11a46_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-261.3-h26e0ef7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtheora-1.1.1-h4ab18f5_1006.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.2-hcc2c06a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libunistring-0.9.10-h7f98852_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.2-h5347b49_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.3-hcfc3c73_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h54a6638_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libvulkan-loader-1.4.357.0-h0e34353_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_1.conda @@ -1310,12 +1301,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.38-h280c20c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.13.2-h51789e4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbfile-1.2.0-hb03c661_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.3-hca6bf5a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.3-h49c6c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.43-h711ed8c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libzip-1.11.2-h6991a6a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.4-hf3af7cc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.4-h7df9aa5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.45-h8e12856_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzip-1.11.4-h6008cf6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-4.4.5-py312h3d67a73_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-4.4.5-py312hc6a72db_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-hee9eb32_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-hebe6cf0_1003.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py312h8a5da7c_1.conda @@ -1324,12 +1315,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/mbedtls-4.0.0-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/menuinst-2.5.2-py312h20c3967_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.33.7-h877a99e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.2.2-py312h9be0db6_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.2.2-py312h9be0db6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.7.1-py312h8a5da7c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/muparser-2.3.4-h27087fc_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-2.3.1-py312h89dfda2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-2.3.1-py312h1b36aeb_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/nettle-3.10.1-h5ef0d04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/nh3-0.3.7-py310h300b7de_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.12.0-h54a6638_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/nspr-4.40-h29cc59b_0.conda @@ -1337,39 +1327,38 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.1.3-py312h58c1407_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/occt-7.9.3-novtk_hb176d5c_103.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openexr-3.4.15-ha9edf89_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-h55fea9a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-heb1ab33_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjph-0.31.0-h8d634f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openldap-2.6.13-hbde042b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.4-h781a0a9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/p11-kit-0.26.5-h8d769aa_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-3.0.5-py312h8ecdadd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-3.0.6-np2py312h91ec553_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hda50119_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/patch-2.8-h280c20c_1003.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/patchelf-0.19.1-hee9eb32_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-h8b3dc9c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.3.0-py312h50c33e8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.3.0-py312h38079b3_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/poco-1.15.3-h8ecfa4d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/proj-9.8.1-he0df7b0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.5.2-py312h8a5da7c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.2-py312h1b36aeb_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb03c661_1003.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.2-py312h1b36aeb_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h7cc23a3_1004.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pugixml-1.15-h3f63f65_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-h9a6aba3_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/py-lief-1.0.0-py312ha6a3dbb_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/py-lief-1.0.0-py312ha985511_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/py-rattler-0.24.0-py310h70157a2_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/py-rattler-build-0.72.2-py310h701b438_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/py-rattler-build-0.73.0-py311h30674b1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pycifrw-5.0.1-py312h4c3975b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pycosat-0.6.6-py312h4c3975b_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.46.5-py312hc767a74_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pycosat-0.6.6-py312h5cc1888_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.46.5-py312hc767a74_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.15.9-py312h949fe66_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-12.12.2-py312h30efb56_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.11.1-py312h50ac2ff_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pystack-1.7.1-py312haf1912e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.14-h8ab3286_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-librt-0.15.0-py312h5253ce2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pystack-1.7.1-py312hb1168fa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.14-h5f976f7_3_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-librt-0.15.0-py312h1b36aeb_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py312h8a5da7c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.2.0-py312h8a5ba0d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.2.0-py312h8a5ba0d_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/qscintilla2-2.14.1-py312hc23280e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/qt-gtk-platformtheme-5.15.15-h4e19bd6_0.conda @@ -1381,24 +1370,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/reproc-14.2.8.post0-hee9eb32_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/reproc-cpp-14.2.8.post0-h1c70be6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ripgrep-15.2.0-hf19af3b_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-2026.6.3-py312hc767a74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-2026.6.3-py312hc767a74_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.18.17-py312h5253ce2_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.15-py312h1b36aeb_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.15-py312h1b36aeb_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.16.3-py312h54fa4ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/secretstorage-3.5.0-py312h7900ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/simdjson-4.6.9-h4dbf13b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/simdjson-4.6.11-h4dbf13b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sip-6.7.12-py312h30efb56_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.2-h03e3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.2-h34e00bb_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/spdlog-1.17.0-hb6aa676_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/spglib-2.7.0-py312h6eeef32_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/spglib-2.7.0-py312h90b849e_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.53.4-h9ffa6c4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2023.0.0-hab88423_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2023.1.0-hfd44327_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h1df4ec4_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.8-py312h4c3975b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-17.0.1-py312h4c3975b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.10-py312h5cc1888_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-18.0.0-py312h5cc1888_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/unixodbc-2.3.14-h69e2008_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/utfcpp-4.09-ha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/uv-0.12.7-h86a270d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/uv-0.12.17-h841d291_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/viskores-1.1.1-cpu_hc82bd48_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-base-9.6.2-py312hb8f95c7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.26.0-hc1c935e_2.conda @@ -1412,11 +1400,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-h280c20c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-h0d788c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.13-he1eb515_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-h7cc23a3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.7-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-h7cc23a3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.7-h7cc23a3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.2-h7cc23a3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.3-h7cc23a3_1.conda @@ -1427,27 +1415,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.3.1-h7cc23a3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-h7cc23a3_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxxf86vm-1.1.7-hb03c661_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2025.1-h280c20c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2025.1-hebe6cf0_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-hebe6cf0_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-cpp-0.8.0-h54a6638_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.24.5-py312h8a5da7c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h09e67af_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zfp-1.0.1-h909a3a2_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h901266b_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zfp-1.0.1-h79e284d_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.2-h25fd6f3_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.3-hce19668_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.25.0-py312h1b36aeb_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.25.0-py312h1b36aeb_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-49.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-51.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.7.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anaconda-auth-0.15.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anaconda-auth-0.15.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anaconda-cli-base-0.8.2-pyhc364b38_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anaconda-client-1.14.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-doc-0.0.5-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.14.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.15.1-pyh5ded981_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/archspec-0.2.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda @@ -1455,26 +1443,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/backports.tarfile-1.2.0-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.15.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/boltons-26.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/boltons-26.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.7.22-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-2.0.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-2.0.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.7.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.5.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.4.2-pyhc90fa1f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.5.0-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.1.2-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.3-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/conda-build-26.7.1-pyh31ec981_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/conda-index-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/conda-index-0.13.0-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/conda-libmamba-solver-26.7.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/conda-lockfiles-0.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.5.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.6.0-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.13.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/conda-self-0.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.14-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/conda-pypi-0.12.0-pyh5ded981_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/conda-self-0.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.14-py312hd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cyclopts-4.23.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cyclopts-4.25.2-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.3-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/distro-1.9.0-pyhd8ed1ab_1.conda @@ -1484,9 +1473,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/evalidate-2.0.5-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.32.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/flexcache-0.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/flexparser-0.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.32.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/flexcache-0.3-pyh5ded981_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/flexparser-0.4-pyh5ded981_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -1499,24 +1488,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.4.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h5glance-0.9-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hatch-1.17.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hatchling-1.32.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hatchling-1.32.4-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/htmlgen-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore2-2.12.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore2-2.13.0-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx2-2.12.0-pyhe5d96d1_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx2-2.13.0-pyhcd62e61_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperlink-21.0.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/id-1.6.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.19-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.20-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-2.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-9.0.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-resources-7.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-7.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.3.0-pyha191276_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.17.0-pyh53cf698_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.17.1-pyh53cf698_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.classes-3.4.0-pyhcf101f3_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.context-6.1.2-pyhcf101f3_0.conda @@ -1547,43 +1536,45 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.7-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pint-0.25.3-pyhc364b38_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pint-0.26.1-pyhc364b38_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-26.2.1-pyh8b19718_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkce-1.0.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkginfo-1.12.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.11.5-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.11.11-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pooch-1.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prettytable-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.53-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-abi-11-hc364b38_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyconify-0.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.13.5-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.21.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.13.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.14.0-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.5-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyproject_hooks-1.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.1.1-pyhc364b38_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-7.1.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-qt-4.5.0-pyhdecd6ff_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-timeout-2.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-build-1.6.0-pyhc364b38_0.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-discovery-1.6.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.6.1-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.3-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.22.2-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.12.14-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.12.14-hd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-installer-1.0.1-pyh332efcf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-libarchive-c-5.3-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-9_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2026.3.post1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyvista-0.48.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyvistaqt-0.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyvista-0.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyvista-validation-0.2.2-pyh5ded981_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyvistaqt-0.13.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/qtconsole-5.7.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/qtconsole-base-5.7.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/qtpy-2.4.3-pyhd8ed1ab_1.conda @@ -1597,9 +1588,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rich-15.0.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-rst-2.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-4.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/scooby-0.11.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/scooby-0.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/secretstorage-3.5.0-pyhc9edb4d_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seekpath-2.2.1-pyhcf101f3_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/semver-3.0.4-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/semver-3.1.0-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.1-pyh332efcf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda @@ -1613,25 +1605,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jquery-4.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-mermaid-2.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-mermaid-2.1.1-pyh5ded981_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-programoutput-0.20-pyhc364b38_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/superqt-0.8.2-pyh9208f05_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.7.0-pyhc455866_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhcf101f3_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-w-1.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.15.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toolz-1.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.70.0-pyh8f84b5b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.70.1-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.16.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/trove-classifiers-2026.6.1.19-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/truststore-0.10.4-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/twine-7.0.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.27.2-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-pyyaml-6.0.12.20260815-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-pyyaml-6.0.12.20260906-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-six-1.17.0.20260724-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.16.0-h69aa097_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.4-pyhcf101f3_0.conda @@ -1639,21 +1631,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2026c-h151e31d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uncertainties-3.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/unearth-0.18.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/userpath-1.9.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/versioningit-3.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.7.7-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.8.3-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.10.0-pyh5ded981_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.8.4-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.48.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wslink-2.5.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-4.1.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/mantid/label/main/linux-64/mantid-6.16.1-np21py312h68643e6_0.conda - conda: https://conda.anaconda.org/mantid/label/main/linux-64/mantidqt-6.16.1-py312h3be2853_0.conda - conda: https://conda.anaconda.org/mantid/label/main/linux-64/mantidworkbench-6.16.1-py312h9e94620_0.conda + - conda: https://conda.anaconda.org/neutrons/noarch/neutrons_standard-0.1.0-pyh4616a5c_0.conda - pypi: ./ - pypi: https://files.pythonhosted.org/packages/14/2f/967ba146e6d58cf6a652da73885f52fc68001525b4197effc174321d70b4/jmespath-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/cb/f5/dcdf5e0d898024005cfcce631e3e934d111dfbe177ca0b7f253ae8a735a2/regex-2026.9.10-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/d2/b8/f0b9b880c03a3db8eaff63d76ca751ac7d8e45483fb7a0bb9f8e5c6ce433/toml_cli-0.8.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ea/83/7f51ce519cab3f44e026122afed7fb27f9cd06e37eeff421888cbf88e50a/regex-2026.8.31-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl qa: channels: - url: https://conda.anaconda.org/conda-forge/ @@ -1662,268 +1655,262 @@ environments: - url: https://conda.anaconda.org/mantid-ornl/label/nightly/ - url: https://conda.anaconda.org/mantid/label/main/ - url: https://conda.anaconda.org/mantid/label/nightly/ + - url: https://conda.anaconda.org/neutrons/ - url: https://prefix.dev/pixi-build-backends/ indexes: - https://pypi.org/simple packages: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.14.3-py312h5d8c7f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.14.3-py313hd6074c6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.16.1-h7cc23a3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ast-serialize-0.8.0-py310hd8a072f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.14.1-pl5321h57e6904_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ast-serialize-0.11.2-py311hf77984d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.7.0-py312h3f22e6b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.7.0-py313h8f72f4d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.6-he440d0b_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.2.0-h505cf86_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.2.0-h9908984_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py312he9c40d5_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.2.0-h505cf86_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.2.0-h9908984_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py313h2fc2bef_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.8-hebe6cf0_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-3.3.3-hea3f660_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-he90730b_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.1.1-py312h703531f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/chardet-7.6.0-py312h8b7ec3f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-3.3.4-hea3f660_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.6-h3c89d7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.1.1-py313ha52865f_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/chardet-7.6.0-py313h2af15c8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cli11-2.7.2-h54a6638_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/comrak-0.54.0-hb17b654_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/conda-26.5.0-py312h7900ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/conda-pypi-0.11.0-py312h20c3967_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py312h0a2e395_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.16.0-py312h8b7ec3f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/comrak-0.55.0-hf19af3b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/conda-26.5.0-py313h78bf25f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.4.0-py313h2551ef2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.16.1-py313h2af15c8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cpp-expected-1.3.1-h171cf75_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-50.0.0-py312h89f293a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-50.0.1-py311hc91d8b8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cyrus-sasl-2.1.28-hac629b4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-he8c428d_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.21-py312h8285ef7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.22-py313h901f96d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/double-conversion-3.4.0-hecca717_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-abi-5.0.1.80-hf414acd_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/elfutils-0.194-h849f50c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-abi-5.0.1.80-hf414acd_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/elfutils-0.196-h03e2bf6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-hb03c661_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/euphonic-1.6.2-py312h4f23490_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-8.1.1-gpl_hee00b0e_901.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/euphonic-1.6.2-py313h29aa505_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-9.0.2-gpl_h9b364d9_900.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fmt-12.1.0-h76c4fd7_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.17.1-h27c8c51_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.63.0-py312h8a5da7c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.18.3-h4db4eae_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.65.0-py313h6cd9899_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freeglut-3.2.2-h215f996_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freeimage-3.18.0-hd1b7436_25.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.3-ha770c72_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.8.0-py312h447239a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.44.8-h68053f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.17-h7cc23a3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.8.0-py313h6b9daa2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.44.8-h68053f1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gl2ps-1.4.2-h36e74d4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glew-2.3.0-h71661d4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.88.3-h67ed8a3_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/glslang-16.5.0-h980caa0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.90.0-h3d503d9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glslang-16.6.0-h980caa0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hfd2156b_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gnutls-3.8.13-h18acefa_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.15-h54a6638_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gsl-2.8-hbf7d49c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gsl-2.8-h3cd6761_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gtest-1.17.0-h171cf75_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.52-ha5ea40c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/h5py-3.16.0-nompi_py312hfaa9938_104.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-14.4.0-ha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/h5py-3.16.0-nompi_py313hf402d47_104.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-14.5.0-ha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h2a13503_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h19486de_110.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5plugin-7.0.0-py312hfbf75e7_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5plugin-7.1.0-py313h14eca21_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-py310h44b86e0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/imath-3.2.2-hde8ca8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/intel-gmmlib-22.10.0-hb700be7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/intel-gmmlib-22.10.2-h7148c6a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/intel-media-driver-26.1.6-hecca717_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/jasper-4.2.9-h1588d4d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jasper-4.2.9-hd038ad9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsoncpp-1.9.6-hf42df4d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-hd590300_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-h7cc23a3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.5.1-py312h9be0db6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.5.1-py313h2551ef2_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-hbc21106_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.19.1-h9073bf1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lame-4.0-h770b6ad_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.19.1-h9073bf1_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.46.1-default_hbd61a6d_102.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.2.0-hdb68285_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/level-zero-1.29.0-hb700be7_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20260107.1-cxx17_h7b12aa8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/level-zero-1.33.1-h7148c6a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20260526.0-cxx17_h0dc7533_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.5-h088129d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.9-gpl_h3152399_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libass-0.17.4-h96ad9f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-10_h4a7cf45_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libass-0.17.5-h3b6f6bf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-11_h4a7cf45_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-1.88.0-hd24cca6_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-python-1.88.0-py312hf890105_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-h39a168f_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-ha411449_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-h018ffa1_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-python-1.88.0-py313hfaae9d9_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-h39a168f_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-ha411449_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-h018ffa1_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.78-h084b8d7_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-10_h0358290_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp23.1-23.1.0-default_h0acdd01_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-23.1.0-default_h7855034_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-11_h0358290_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp23.1-23.1.1-default_h0acdd01_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-23.1.1-default_h7037f76_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h7a8fb5f_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.21.0-ha042cf0_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.22.0-ha042cf0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdav1d7-1.5.4-hebe6cf0_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-hd45a770_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libdovi-3.4.0-ha23c83e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdovi-3.4.0-h39d0f39_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.129-h7cc23a3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h373387f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-1.7.0-ha4b6fd6_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-devel-1.7.0-ha4b6fd6_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-h280c20c_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.1-hecca717_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.4-hd2095e1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.7.0-h81df57d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.5.0-he200343_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.3-h5e6c136_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-16.2.0-ha9f2e26_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-16.2.0-h69a702a_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-16.2.0-h69a702a_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-16.2.0-h6b99dfc_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-16.2.0-ha9f2e26_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-16.2.0-h69a702a_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-16.2.0-h69a702a_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-16.2.0-h6b99dfc_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-devel-1.7.0-ha4b6fd6_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.88.3-he503a2a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.90.0-h569388d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglu-9.0.3-h5888daf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-devel-1.7.0-ha4b6fd6_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-16.2.0-he0feb66_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-14.4.0-h23af247_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-devel-14.4.0-h23af247_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-16.2.0-he0feb66_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-14.5.0-h23af247_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-devel-14.5.0-h23af247_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.13.0-default_he001693_1000.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwy-1.4.0-h57c4cff_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h0cb94f2_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libidn2-2.3.8-hfac485b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.2.0-hb03c661_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.11.2-h174a0a3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-10_h47877c9_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblief-1.0.0-hd2095e1_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm23-23.1.0-h474f4eb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.12.0-heb2dce7_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-11_h47877c9_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblief-1.0.0-h45ba95f_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm23-23.1.1-h474f4eb_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libmamba-2.9.0-py314h3b59866_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libmamba-spdlog-2.9.0-hf1e253f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libmambapy-2.9.0-py312h9266df1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libmicrohttpd-1.0.10-hc2fc477_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmamba-2.9.0-py313hc1bd57e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmamba-spdlog-2.9.0-hc46a78c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmambapy-2.9.0-py313hf10c6ed_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libmsgpack-c-6.1.0-h54a6638_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.10.0-nompi_h3fa17b5_205.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.68.1-h74cf4be_1.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/libntlm-1.8-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-hd0c01bc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.34-pthreads_hcf972fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.34-pthreads_hf13c14d_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-1.7.0-ha4b6fd6_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-2026.0.0-hb56ce9e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-batch-plugin-2026.0.0-hd85de46_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-plugin-2026.0.0-hd85de46_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-hetero-plugin-2026.0.0-hd41364c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-cpu-plugin-2026.0.0-hb56ce9e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-gpu-plugin-2026.0.0-hb56ce9e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-npu-plugin-2026.0.0-hb56ce9e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-ir-frontend-2026.0.0-hd41364c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-onnx-frontend-2026.0.0-h7a07914_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-paddle-frontend-2026.0.0-h7a07914_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-pytorch-frontend-2026.0.0-hecca717_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-frontend-2026.0.0-h78e8023_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-lite-frontend-2026.0.0-hecca717_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-2026.3.1-hf7e0547_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-batch-plugin-2026.3.1-h202117f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-plugin-2026.3.1-h202117f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-hetero-plugin-2026.3.1-hc0229a9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-cpu-plugin-2026.3.1-hf7e0547_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-gpu-plugin-2026.3.1-hf7e0547_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-npu-plugin-2026.3.1-hf7e0547_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-ir-frontend-2026.3.1-hc0229a9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-onnx-frontend-2026.3.1-h09f0106_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-paddle-frontend-2026.3.1-h09f0106_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-pytorch-frontend-2026.3.1-ha623fbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-frontend-2026.3.1-h9a43043_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-lite-frontend-2026.3.1-ha623fbf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.6.1-hebe6cf0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.19-hb03c661_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libplacebo-7.360.1-h9eeb4b2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libplacebo-7.360.1-hc50b9dd_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.58-h922cc85_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-18.6-h9d76c99_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-6.33.5-h538a264_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-18.6-h9d76c99_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-7.35.1-h622638d_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpsl-0.23.1-hd9e3e90_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpython-3.13.15-hdc7f604_103_cp313.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libraw-0.22.2-h074291d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librdkafka-2.13.2-he5e3081_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.62.2-h4c96295_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc7d488a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.22-hebe6cf0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.62.3-ha427ee3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hbc6d301_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.22-hebe6cf0_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsolv-0.7.39-h72ddc62_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.4-h13e7031_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-h6154650_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-16.2.0-h934c35e_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-16.2.0-hdf11a46_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.13-h084b8d7_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtasn1-4.21.0-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-16.2.0-h934c35e_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-16.2.0-hdf11a46_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-261.3-h26e0ef7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtheora-1.1.1-h4ab18f5_1006.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.2-hcc2c06a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libudev1-257.13-h084b8d7_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libunistring-0.9.10-h7f98852_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libudev1-261.3-h26e0ef7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libunwind-1.8.3-h65a8314_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liburing-2.14-hb700be7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libusb-1.0.29-h73b1eb8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.2-h5347b49_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.3-hcfc3c73_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libva-2.24.1-hb83e432_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h54a6638_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libvpl-2.16.0-h54a6638_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libvpx-1.15.2-hd2095e1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libvpx-1.17.0-hd2095e1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libvulkan-loader-1.4.357.0-h0e34353_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-hb83e432_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.38-h280c20c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.13.2-h51789e4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbfile-1.2.0-hb03c661_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.3-hca6bf5a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.3-h49c6c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.43-h711ed8c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libzip-1.11.2-h6991a6a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.4-hf3af7cc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.4-h7df9aa5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.45-h8e12856_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzip-1.11.4-h6008cf6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-4.4.5-py312h3d67a73_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-4.4.5-py313h557dd98_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-hee9eb32_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-hebe6cf0_1003.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py312h8a5da7c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.10.9-py312h7900ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.9-py312he3d6523_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py313h3dea7bd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.10.9-py313h78bf25f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.9-py313h683a580_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mbedtls-4.0.0-hecca717_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/menuinst-2.5.2-py312h20c3967_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-h8142553_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.2.2-py312h9be0db6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.7.1-py312h8a5da7c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/menuinst-2.5.2-py313hd5f5364_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.33.7-h877a99e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.2.2-py313h2551ef2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.7.1-py313h3dea7bd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/muparser-2.3.4-h27087fc_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-2.3.1-py312h89dfda2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-2.3.1-py313hd42f317_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/nettle-3.10.1-h5ef0d04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/nh3-0.3.7-py310h300b7de_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.12.0-h54a6638_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.1.3-py312h58c1407_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.1.3-py313h4bf6692_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/occt-7.9.3-novtk_hb176d5c_103.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.4-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2025.06.13-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openexr-3.4.15-ha9edf89_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openh264-2.6.0-h8c49934_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-h55fea9a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-heb1ab33_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjph-0.31.0-h8d634f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openldap-2.6.13-hbde042b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.4-h781a0a9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/p11-kit-0.26.5-h8d769aa_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-3.0.5-py312h8ecdadd_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hda50119_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-3.0.6-np2py313h4900a6c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.58.2-h7bb47b9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/patch-2.8-h280c20c_1003.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/patchelf-0.19.1-hee9eb32_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-h8b3dc9c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.3.0-py312h50c33e8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.3.0-py313h3b26573_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/poco-1.15.3-h8ecfa4d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/proj-9.8.1-he0df7b0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.5.2-py312h8a5da7c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.2-py312h1b36aeb_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb03c661_1003.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.5.2-py313h3dea7bd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.2-py313hd42f317_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h7cc23a3_1004.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pugixml-1.15-h3f63f65_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-h9a6aba3_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/py-lief-1.0.0-py312ha6a3dbb_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/py-lief-1.0.0-py313h553f6f3_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/py-rattler-0.24.0-py310h70157a2_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/py-rattler-build-0.72.2-py310h701b438_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pycifrw-5.0.1-py312h4c3975b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pycosat-0.6.6-py312h4c3975b_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.46.5-py312hc767a74_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyqt6-6.11.0-py312hdc4d070_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyqt6-sip-13.10.0-py312h1289d80_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.11.1-py312h50ac2ff_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pystack-1.7.1-py312haf1912e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.14-h8ab3286_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-librt-0.15.0-py312h5253ce2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py312h8a5da7c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.2.0-py312h8a5ba0d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/py-rattler-build-0.73.0-py311h30674b1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pycifrw-5.0.1-py313h07c4f96_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pycosat-0.6.6-py313h995f894_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.46.5-py313ha296275_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyqt6-6.11.0-py313h5860079_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyqt6-sip-13.10.0-py313h7033f15_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.11.1-py313hcd51b16_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pystack-1.7.1-py313h8390439_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.15-hf47f18c_103_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-librt-0.15.0-py313hd42f317_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py313h3dea7bd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.2.0-py312h8a5ba0d_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/qscintilla2-2.14.1-py312h1289d80_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-gtk-platformtheme-6.11.1-hc54bc45_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-main-6.11.1-pl5321h16c4a6b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-multimedia-6.11.1-pl5321hb5f9c21_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/qscintilla2-2.14.1-py313h7033f15_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-gtk-platformtheme-6.11.1-hc54bc45_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-main-6.11.1-pl5321h16c4a6b_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-multimedia-6.11.1-pl5321h54e2da9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-positioning-6.11.1-hfd2156b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-serialport-6.11.1-hf9e10ad_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rapidjson-1.1.0.post20250205-h54a6638_0.conda @@ -1931,34 +1918,32 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/reproc-14.2.8.post0-hee9eb32_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/reproc-cpp-14.2.8.post0-h1c70be6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ripgrep-15.2.0-hf19af3b_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-2026.6.3-py312hc767a74_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.18.17-py312h5253ce2_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.15-py312h1b36aeb_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.16.3-py312h54fa4ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-2026.6.3-py313ha296275_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.18.17-py313h54dd161_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.15-py313hd42f317_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.16.3-py313h4b8bb8b_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.32.56-h54a6638_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl3-3.4.14-hdeec2a5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/secretstorage-3.5.0-py312h7900ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/shaderc-2026.2-h718be3e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/simdjson-4.6.9-h4dbf13b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/sip-6.15.3-py312h1289d80_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.2-h03e3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl3-3.4.16-h5330f5c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/shaderc-2026.3-hcebf71c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/simdjson-4.6.11-h4dbf13b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sip-6.15.3-py313h7033f15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.2-h34e00bb_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/spdlog-1.17.0-hb6aa676_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/spglib-2.7.0-py312h6eeef32_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/spglib-2.7.0-py313h12dc443_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/spirv-tools-2026.3-h7148c6a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.53.4-h9ffa6c4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-4.0.1-hecca717_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2023.0.0-hab88423_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-4.2.0-hd2095e1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2023.1.0-hfd44327_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h1df4ec4_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.8-py312h4c3975b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-17.0.1-py312h4c3975b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.10-py313h995f894_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/unixodbc-2.3.14-h69e2008_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/utfcpp-4.09-ha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/uv-0.12.7-h86a270d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/uv-0.12.17-h841d291_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/viskores-1.1.1-cpu_hc82bd48_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-base-9.6.2-py312hb8f95c7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-base-9.6.2-py313hda7482d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.26.0-hc1c935e_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/x264-1!164.3095-h166bdaf_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/x265-3.5-h924138e_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/x264-1!164.3095-h7cc23a3_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/x265-3.5-h73f68a7_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.1-h4f16b4b_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-cursor-0.1.6-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-image-0.4.0-hb711507_2.conda @@ -1969,11 +1954,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-h280c20c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-h0d788c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.13-he1eb515_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-h7cc23a3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.7-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-h7cc23a3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.7-h7cc23a3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.2-h7cc23a3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.3-h7cc23a3_1.conda @@ -1984,27 +1969,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.3.1-h7cc23a3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-h7cc23a3_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxxf86vm-1.1.7-hb03c661_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2025.1-h280c20c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2025.1-hebe6cf0_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-hebe6cf0_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-cpp-0.8.0-h54a6638_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.24.5-py312h8a5da7c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h09e67af_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zfp-1.0.1-h909a3a2_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.24.5-py313h3dea7bd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h901266b_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zfp-1.0.1-h79e284d_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.2-h25fd6f3_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.3-hce19668_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.25.0-py312h1b36aeb_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.25.0-py313hd42f317_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-49.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-51.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.7.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anaconda-auth-0.15.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anaconda-auth-0.15.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anaconda-cli-base-0.8.2-pyhc364b38_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anaconda-client-1.14.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-doc-0.0.5-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.14.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.15.1-pyh5ded981_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/archspec-0.2.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda @@ -2012,26 +1997,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/backports.tarfile-1.2.0-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.15.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/boltons-26.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/boltons-26.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.7.22-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-2.0.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-2.0.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.7.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.5.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.4.2-pyhc90fa1f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.5.0-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.1.2-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.3-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/conda-build-26.7.1-pyh31ec981_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/conda-index-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/conda-index-0.13.0-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/conda-libmamba-solver-26.7.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/conda-lockfiles-0.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.5.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.6.0-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.13.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/conda-self-0.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.14-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/conda-pypi-0.12.0-pyh5ded981_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/conda-self-0.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.15-py313hd8ed1ab_103.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cyclopts-4.23.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cyclopts-4.25.2-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.3-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/distro-1.9.0-pyhd8ed1ab_1.conda @@ -2041,9 +2027,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/evalidate-2.0.5-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.32.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/flexcache-0.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/flexparser-0.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.32.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/flexcache-0.3-pyh5ded981_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/flexparser-0.4-pyh5ded981_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -2056,24 +2042,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.4.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h5glance-0.9-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hatch-1.17.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hatchling-1.32.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hatchling-1.32.4-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/htmlgen-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore2-2.12.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore2-2.13.0-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx2-2.12.0-pyhe5d96d1_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx2-2.13.0-pyhcd62e61_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperlink-21.0.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/id-1.6.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.19-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.20-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-2.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-9.0.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-resources-7.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-7.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.3.0-pyha191276_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.17.0-pyh53cf698_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.17.1-pyh53cf698_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.classes-3.4.0-pyhcf101f3_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.context-6.1.2-pyhcf101f3_0.conda @@ -2104,43 +2090,45 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.7-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pint-0.25.3-pyhc364b38_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pip-26.2.1-pyh8b19718_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pint-0.26.1-pyhc364b38_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-26.2.1-pyh145f28c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkce-1.0.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkginfo-1.12.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.11.5-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.11.11-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pooch-1.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prettytable-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.53-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-abi-11-hc364b38_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyconify-0.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.13.5-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.21.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.13.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.14.0-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.5-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyproject_hooks-1.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.1.1-pyhc364b38_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-7.1.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-qt-4.5.0-pyhdecd6ff_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-timeout-2.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-build-1.6.0-pyhc364b38_0.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-discovery-1.6.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.6.1-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.3-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.22.2-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.12.14-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.15-h4df99d1_103.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-installer-1.0.1-pyh332efcf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-libarchive-c-5.3-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-9_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2026.3.post1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyvista-0.48.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyvistaqt-0.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyvista-0.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyvista-validation-0.2.2-pyh5ded981_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyvistaqt-0.13.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/qtconsole-base-5.7.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/qtpy-2.4.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/quickbayes-1.0.2-pyhd8ed1ab_0.conda @@ -2153,10 +2141,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rich-15.0.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-rst-2.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-4.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/scooby-0.11.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/scooby-0.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/secretstorage-3.5.0-pyhc9edb4d_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seekpath-2.2.1-pyhcf101f3_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/semver-3.0.4-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-83.0.0-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/semver-3.1.0-pyh5ded981_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-84.0.0-pyh332efcf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_2.conda @@ -2169,25 +2158,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jquery-4.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-mermaid-2.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-mermaid-2.1.1-pyh5ded981_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-programoutput-0.20-pyhc364b38_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/superqt-0.8.2-pyh9208f05_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.7.0-pyhc455866_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhcf101f3_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-w-1.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.15.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toolz-1.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.70.0-pyh8f84b5b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.70.1-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.16.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/trove-classifiers-2026.6.1.19-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/truststore-0.10.4-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/twine-7.0.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.27.2-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-pyyaml-6.0.12.20260815-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-pyyaml-6.0.12.20260906-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-six-1.17.0.20260724-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.16.0-h69aa097_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.4-pyhcf101f3_0.conda @@ -2195,22 +2184,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2026c-h151e31d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uncertainties-3.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/unearth-0.18.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/userpath-1.9.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/versioningit-3.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.7.7-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.10.0-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wayland-protocols-1.49-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.8.3-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.48.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.8.4-pyh5ded981_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wslink-2.5.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-4.1.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/mantid-ornl/label/rc/linux-64/mantid-6.16.1.2rc1-np21py312h02a82f0_0.conda - - conda: https://conda.anaconda.org/mantid-ornl/label/rc/linux-64/mantidqt-6.16.1.2rc1-py312h5be7155_0.conda - - conda: https://conda.anaconda.org/mantid-ornl/label/rc/linux-64/mantidworkbench-6.16.1.2rc1-py312h6bd2d32_0.conda + - conda: https://conda.anaconda.org/mantid-ornl/label/rc/linux-64/mantid-6.16.1.2rc2-np21py313he1c858e_0.conda + - conda: https://conda.anaconda.org/mantid-ornl/label/rc/linux-64/mantidqt-6.16.1.2rc2-py313h4e5e0ba_0.conda + - conda: https://conda.anaconda.org/mantid-ornl/label/rc/linux-64/mantidworkbench-6.16.1.2rc2-py313h6f496a1_0.conda + - conda: https://conda.anaconda.org/neutrons/noarch/neutrons_standard-0.1.0-pyh4616a5c_0.conda - pypi: ./ - pypi: https://files.pythonhosted.org/packages/14/2f/967ba146e6d58cf6a652da73885f52fc68001525b4197effc174321d70b4/jmespath-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/20/3b/000c79c3f9c06b7542225a5d3a7f9a85405da7224b3b9af94a491d07abea/regex-2026.9.10-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/d2/b8/f0b9b880c03a3db8eaff63d76ca751ac7d8e45483fb7a0bb9f8e5c6ce433/toml_cli-0.8.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ea/83/7f51ce519cab3f44e026122afed7fb27f9cd06e37eeff421888cbf88e50a/regex-2026.8.31-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl packages: - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda build_number: 20 @@ -2304,30 +2293,16 @@ packages: - aom >=3.14.1,<3.15.0a0 size: 3246374 timestamp: 1787256015178 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda - sha256: b08ef033817b5f9f76ce62dfcac7694e7b6b4006420372de22494503decac855 - md5: 346722a0be40f6edc53f12640d301338 - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - license: BSD-2-Clause - license_family: BSD - purls: [] - run_exports: - weak: - - aom >=3.9.1,<3.10.0a0 - size: 2706396 - timestamp: 1718551242397 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ast-serialize-0.8.0-py310hd8a072f_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/ast-serialize-0.11.2-py311hf77984d_0.conda noarch: python - sha256: 25c15e85cb03a1c4d43d02d0ff37c8c9a970c3e84abeaf420fc190bb053bbe3f - md5: e46fc69f093a840e98b9e2c29727862d + sha256: ad68b61411979d15ed172f9886908471244ad2d4d26b80ba88a41b4079ea095b + md5: 954e55a97486ce671170f95b1a5ccc18 depends: - - python >=3.10 + - python >=3.11 - __glibc >=2.17,<3.0.a0 - - libgcc >=14 + - libgcc >=15 - _python_abi3_support 1.* - - cpython >=3.10 + - cpython >=3.11 constrains: - __glibc >=2.17 license: MIT @@ -2335,8 +2310,8 @@ packages: purls: - pkg:pypi/ast-serialize?source=compressed-mapping run_exports: {} - size: 1116952 - timestamp: 1786328964477 + size: 1156376 + timestamp: 1789562257253 - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2 sha256: 26ab9386e80bf196e51ebe005da77d57decf6d989b4f34d96130560bc133479c md5: 6b889f174df1e0f816276ae69281af4d @@ -2389,9 +2364,9 @@ packages: - atk-1.0 >=2.38.0 size: 355900 timestamp: 1713896169874 -- conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.7.0-py312h3f22e6b_0.conda - sha256: c10df0467f534472f0aa39013850d6dd9dd38ea5a6fb5c0812afb6f3fc768924 - md5: e7eb25765bdf21397cc6e30828871625 +- conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.7.0-py312h3f22e6b_1.conda + sha256: b377a4f053c4e184b031253c702984194d10c98228004d7cf07c1eca86247d62 + md5: b0e9b44b494bb001c4d35b206022eba2 depends: - python - __glibc >=2.17,<3.0.a0 @@ -2400,25 +2375,25 @@ packages: - zstd >=1.5.7,<1.6.0a0 license: BSD-3-Clause AND MIT AND EPL-2.0 purls: - - pkg:pypi/backports-zstd?source=hash-mapping + - pkg:pypi/backports-zstd?source=compressed-mapping run_exports: {} - size: 240967 - timestamp: 1786861419155 -- conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.7.0-py313h8f72f4d_0.conda - sha256: 69c1d1a8c3c30acd2fc14cd9667241c038b0f2fd5a2caf2f210fa160f8291b84 - md5: 40454ef16bb96ae63f063b50c8b68603 + size: 241113 + timestamp: 1788491295568 +- conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.7.0-py313h8f72f4d_1.conda + sha256: b8e6cbfade3ff6b344f9acc5c69193bd1aa7a2dc792e60eb8e05470fae122a1b + md5: 7ce840e6cf17fdba00e3d662f1d89e36 depends: - python - - libgcc >=15 - __glibc >=2.17,<3.0.a0 - - python_abi 3.13.* *_cp313 + - libgcc >=15 - zstd >=1.5.7,<1.6.0a0 + - python_abi 3.13.* *_cp313 license: BSD-3-Clause AND MIT AND EPL-2.0 purls: - pkg:pypi/backports-zstd?source=compressed-mapping run_exports: {} - size: 243610 - timestamp: 1786861410562 + size: 243747 + timestamp: 1788491297080 - conda: https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.6-he440d0b_1.conda sha256: e7af5d1183b06a206192ff440e08db1c4e8b2ca1f8376ee45fb2f3a85d4ee45d md5: 2c2fae981fd2afd00812c92ac47d023d @@ -2438,14 +2413,14 @@ packages: - blosc >=1.21.6,<2.0a0 size: 48427 timestamp: 1733513201413 -- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.2.0-h505cf86_3.conda - sha256: 1f2ccfebe6e0113bfc473b21906372c1ee4eb69bf6faef0ad7f3d4d79af63a98 - md5: 6ff307b78fbfb7dcafb7e25ff8bc9c10 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.2.0-h505cf86_4.conda + sha256: 61b78574f002390b6a7fc79834fc344beaab09550068a51100eea5a485dac741 + md5: 746aa619a1bcaf4da541101179d7c60e depends: - __glibc >=2.17,<3.0.a0 - - brotli-bin 1.2.0 h9908984_3 - - libbrotlidec 1.2.0 ha411449_3 - - libbrotlienc 1.2.0 h018ffa1_3 + - brotli-bin 1.2.0 h9908984_4 + - libbrotlidec 1.2.0 ha411449_4 + - libbrotlienc 1.2.0 h018ffa1_4 - libgcc >=15 license: MIT license_family: MIT @@ -2455,25 +2430,25 @@ packages: - libbrotlicommon >=1.2.0,<1.3.0a0 - libbrotlienc >=1.2.0,<1.3.0a0 - libbrotlidec >=1.2.0,<1.3.0a0 - size: 20676 - timestamp: 1786622810792 -- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.2.0-h9908984_3.conda - sha256: 56b2e5e8a49f9887af74cc63e0d55a3654e60b667ad5558da089549a36ae6a0c - md5: 8929291d9efc59715df1cfa7daf5e3ed + size: 20679 + timestamp: 1788480401508 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.2.0-h9908984_4.conda + sha256: ce7db81d5fd4b222ee1a27c52ccf7af44faaf88283017103a8e288f9c372b973 + md5: c48c09444f3736800ea0b9550c365baf depends: - __glibc >=2.17,<3.0.a0 - - libbrotlidec 1.2.0 ha411449_3 - - libbrotlienc 1.2.0 h018ffa1_3 + - libbrotlidec 1.2.0 ha411449_4 + - libbrotlienc 1.2.0 h018ffa1_4 - libgcc >=15 license: MIT license_family: MIT purls: [] run_exports: {} - size: 21598 - timestamp: 1786622801722 -- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py312he9c40d5_3.conda - sha256: 32ae6e002843704af9f39395f3116815fa66f2b27de1bd9044fb2a2d53fbe3d3 - md5: d176f3ed2824f930b524c45eb8f158bb + size: 21601 + timestamp: 1788480392621 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py312he9c40d5_4.conda + sha256: 6e4f440a7015d7d78120b3a3f90a4ec3d7bb6de7bc65458123c52433755db5f0 + md5: edb667e7ce56106424e8afab2dc0f0cb depends: - __glibc >=2.17,<3.0.a0 - libgcc >=15 @@ -2481,17 +2456,17 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 constrains: - - libbrotlicommon 1.2.0 h39a168f_3 + - libbrotlicommon 1.2.0 h39a168f_4 license: MIT license_family: MIT purls: - - pkg:pypi/brotli?source=compressed-mapping + - pkg:pypi/brotli?source=hash-mapping run_exports: {} - size: 367032 - timestamp: 1786622975850 -- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py313h2fc2bef_3.conda - sha256: 6b51c465b404e2f1ae3633ad48dc791f8c2c9352fd5adb57c8f0ac027da24336 - md5: 3bc8e37c6272e48b6eb6d15267b8a377 + size: 367657 + timestamp: 1788480501027 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py313h2fc2bef_4.conda + sha256: 3621a39631aec2d6f4b8ac0cc9ee6d46cee1ae684ba9d2ed6f84b9993e14fbc4 + md5: 8beb0b96d9c701006ff5511a3a92329f depends: - __glibc >=2.17,<3.0.a0 - libgcc >=15 @@ -2499,14 +2474,14 @@ packages: - python >=3.13,<3.14.0a0 - python_abi 3.13.* *_cp313 constrains: - - libbrotlicommon 1.2.0 h39a168f_3 + - libbrotlicommon 1.2.0 h39a168f_4 license: MIT license_family: MIT purls: - - pkg:pypi/brotli?source=compressed-mapping + - pkg:pypi/brotli?source=hash-mapping run_exports: {} - size: 367312 - timestamp: 1786622911623 + size: 367791 + timestamp: 1788480600802 - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_10.conda sha256: 1a0d382c515ebf55f8ee1f38c8b81bc95af5c2acc42ad53b66bc5df932032f96 md5: e675fabcf81499adc7edf58124fb1e01 @@ -2535,9 +2510,9 @@ packages: - c-ares >=1.34.8,<2.0a0 size: 228700 timestamp: 1787169971173 -- conda: https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-3.3.3-hea3f660_0.conda - sha256: 2b9197486cbd6b0d33426168576df9c5b844c8339e43e029685cd78b2fbdbb68 - md5: fe68c12d33323abd558a30821975133f +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-3.3.4-hea3f660_1.conda + sha256: a6ac9b752659abfff66157e7b5376e0233134c0b13f1bd476432de996049bb64 + md5: a656631fcba26c8d363b2c84af2440a8 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=15 @@ -2550,39 +2525,9 @@ packages: purls: [] run_exports: weak: - - c-blosc2 >=3.3.3,<3.4.0a0 - size: 413573 - timestamp: 1788179307405 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3c89d7e_2.conda - sha256: 8395bb43e188b76be0842b8ecd440e79a8d202d320bfee009e31b6623390b40d - md5: e83331a940393006789fedddc3b492f3 - depends: - - __glibc >=2.17,<3.0.a0 - - fontconfig >=2.18.3,<3.0a0 - - fonts-conda-ecosystem - - icu >=78.3,<79.0a0 - - libexpat >=2.8.1,<3.0a0 - - libfreetype >=2.14.3 - - libfreetype6 >=2.14.3 - - libgcc >=15 - - libglib >=2.88.3,<3.0a0 - - libpng >=1.6.58,<1.7.0a0 - - libstdcxx >=15 - - libxcb >=1.17.0,<2.0a0 - - libzlib >=1.3.2,<2.0a0 - - pixman >=0.46.4,<1.0a0 - - xorg-libice >=1.1.2,<2.0a0 - - xorg-libsm >=1.2.6,<2.0a0 - - xorg-libx11 >=1.8.13,<2.0a0 - - xorg-libxext >=1.3.7,<2.0a0 - - xorg-libxrender >=0.9.12,<0.10.0a0 - license: LGPL-2.1-only or MPL-1.1 - purls: [] - run_exports: - weak: - - cairo >=1.18.4,<2.0a0 - size: 989707 - timestamp: 1787926031792 + - c-blosc2 >=3.3.4,<3.4.0a0 + size: 416160 + timestamp: 1789266569113 - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-he90730b_1.conda sha256: 06525fa0c4e4f56e771a3b986d0fdf0f0fc5a3270830ee47e127a5105bde1b9a md5: bb6c4808bfa69d6f7f6b07e5846ced37 @@ -2613,9 +2558,39 @@ packages: - cairo >=1.18.4,<2.0a0 size: 989514 timestamp: 1766415934926 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.1.1-py312h703531f_2.conda - sha256: b649eacfd07be8fb889ef609601436dff831b2e9d095ef029601f3f10946c7d6 - md5: 3101547f7c22db267bd40988f67d7ab1 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.6-h3c89d7e_0.conda + sha256: 5d0efc6f9981468aca72897460d9b2d17b74dff72787f20a9d2330e214064515 + md5: 7920701f9abcb488411495742cf365a7 + depends: + - __glibc >=2.17,<3.0.a0 + - fontconfig >=2.18.3,<3.0a0 + - fonts-conda-ecosystem + - icu >=78.3,<79.0a0 + - libexpat >=2.8.1,<3.0a0 + - libfreetype >=2.14.3 + - libfreetype6 >=2.14.3 + - libgcc >=15 + - libglib >=2.90.0,<3.0a0 + - libpng >=1.6.58,<1.7.0a0 + - libstdcxx >=15 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.2,<2.0a0 + - pixman >=0.46.4,<1.0a0 + - xorg-libice >=1.1.2,<2.0a0 + - xorg-libsm >=1.2.6,<2.0a0 + - xorg-libx11 >=1.8.13,<2.0a0 + - xorg-libxext >=1.3.7,<2.0a0 + - xorg-libxrender >=0.9.12,<0.10.0a0 + license: LGPL-2.1-only or MPL-1.1 + purls: [] + run_exports: + weak: + - cairo >=1.18.6,<2.0a0 + size: 1007110 + timestamp: 1790045358757 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.1.1-py312h703531f_3.conda + sha256: 7c6e8b24d62e0bfa5d14050cd29053778f399feefa7d6887b04575210285a849 + md5: 41f019d067f8c52c6d9283d8afb28889 depends: - __glibc >=2.17,<3.0.a0 - libffi >=3.7.0,<3.8.0a0 @@ -2626,13 +2601,13 @@ packages: license: MIT license_family: MIT purls: - - pkg:pypi/cffi?source=hash-mapping + - pkg:pypi/cffi?source=compressed-mapping run_exports: {} - size: 302100 - timestamp: 1786775110054 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.1.1-py313ha52865f_2.conda - sha256: a0bd899c7f6ab06e2c60a61737b1c7da732f81235c3babbddd14ee01ec2ab8f9 - md5: 3c23b9907fd858c635a29ec77cf43301 + size: 302937 + timestamp: 1788485303634 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.1.1-py313ha52865f_3.conda + sha256: e1968f1efd8491e32a84416a4994cea98bbf51aebd8c7c04c783e121088fec63 + md5: 2b17c17965f71b59158030dce83832e1 depends: - __glibc >=2.17,<3.0.a0 - libffi >=3.7.0,<3.8.0a0 @@ -2645,8 +2620,8 @@ packages: purls: - pkg:pypi/cffi?source=hash-mapping run_exports: {} - size: 304702 - timestamp: 1786775106191 + size: 304628 + timestamp: 1788485299863 - conda: https://conda.anaconda.org/conda-forge/linux-64/chardet-7.6.0-py312h8b7ec3f_1.conda sha256: 8a83dd28bea7505861024c7d841110cae4d698a48e30cec898e72b31c0c1e714 md5: 50f48a586638851704b2717c504cd6ae @@ -2688,11 +2663,11 @@ packages: run_exports: {} size: 103234 timestamp: 1785918340763 -- conda: https://conda.anaconda.org/conda-forge/linux-64/comrak-0.54.0-hb17b654_0.conda - sha256: f80e00a568128566ac97787afcc2701bd3e636799363b9e2c88ce8733361e525 - md5: a072db87d32836deeeffd30995529d63 +- conda: https://conda.anaconda.org/conda-forge/linux-64/comrak-0.55.0-hf19af3b_0.conda + sha256: ed797b90e4e08853b143432a14186ca7638a096c8f0801bf0be620aeb5992e6f + md5: 1553a9323274ad4db8ea3db1c04944ae depends: - - libgcc >=14 + - libgcc >=15 - __glibc >=2.17,<3.0.a0 constrains: - __glibc >=2.17 @@ -2700,8 +2675,8 @@ packages: license_family: BSD purls: [] run_exports: {} - size: 1280692 - timestamp: 1783844531090 + size: 1279979 + timestamp: 1788720436488 - conda: https://conda.anaconda.org/conda-forge/linux-64/conda-26.5.0-py312h7900ff3_0.conda sha256: 01d5f9e72db64679cfd9312a46ac265003edc9c35f0bee58271cf478cc5bea88 md5: 32235f7b43b3e55630e53a586fe30b10 @@ -2780,114 +2755,70 @@ packages: run_exports: {} size: 1322772 timestamp: 1778892833531 -- conda: https://conda.anaconda.org/conda-forge/linux-64/conda-pypi-0.11.0-py312h20c3967_1.conda - sha256: 6ca133da0156df94bba85ed441a3a2cccca87d0f2cc03b0104f1a4cfa6f14f2f - md5: df3e518d7ed9e00758d3cefabaf4f276 - depends: - - python - - pip >=23.0.1 - - packaging - - unearth - - python-build - - python-installer >=1.0 - - platformdirs - - conda-index >=0.11.0 - - conda-package-streaming >=0.11 - - python_abi 3.12.* *_cp312 - constrains: - - conda >=26.1.0 - license: MIT - license_family: MIT - purls: - - pkg:pypi/conda-pypi?source=hash-mapping - run_exports: {} - size: 318774 - timestamp: 1784203009335 -- conda: https://conda.anaconda.org/conda-forge/linux-64/conda-pypi-0.11.0-py313hd5f5364_1.conda - sha256: be8fc374dd3337421c27e1fbc4aebcddc98c0c2edc91b1186bbd4a3906c15b36 - md5: 883062b39e70f60351208049bd05e87a - depends: - - python - - pip >=23.0.1 - - packaging - - unearth - - python-build - - python-installer >=1.0 - - platformdirs - - conda-index >=0.11.0 - - conda-package-streaming >=0.11 - - python_abi 3.13.* *_cp313 - constrains: - - conda >=26.1.0 - license: MIT - license_family: MIT - purls: - - pkg:pypi/conda-pypi?source=hash-mapping - run_exports: {} - size: 319681 - timestamp: 1784203005947 -- conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py312h0a2e395_4.conda - sha256: 62447faf7e8eb691e407688c0b4b7c230de40d5ecf95bf301111b4d05c5be473 - md5: 43c2bc96af3ae5ed9e8a10ded942aa50 +- conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.4.0-py312h9be0db6_1.conda + sha256: 6e25d853d433ab890e03a47db92c5d1651bdfa7b37527bb343706404fde7c010 + md5: 64e62dfa49dd4688301b02d8cfea3687 depends: - - numpy >=1.25 + - numpy >=2.0 - python - __glibc >=2.17,<3.0.a0 - - libstdcxx >=14 - - libgcc >=14 + - libstdcxx >=15 + - libgcc >=15 - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/contourpy?source=hash-mapping + - pkg:pypi/contourpy?source=compressed-mapping run_exports: {} - size: 320386 - timestamp: 1769155979897 -- conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py313hc8edb43_4.conda - sha256: 7f86eb205d2d7fcf2c82654a08c6a240623ac34cb406206b4b1f1afa5cda8e49 - md5: 33639459bc29437315d4bff9ed5bc7a7 + size: 328674 + timestamp: 1789746791989 +- conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.4.0-py313h2551ef2_1.conda + sha256: 078f4a0f83ee7d0f88c110e15f9f94ff4080dc925711d1d22b52779c2e48cf87 + md5: 1883f23b947ffaa13f9511ea817fc4e6 depends: - - numpy >=1.25 + - numpy >=2.0 - python - __glibc >=2.17,<3.0.a0 - - libstdcxx >=14 - - libgcc >=14 + - libstdcxx >=15 + - libgcc >=15 - python_abi 3.13.* *_cp313 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/contourpy?source=hash-mapping + - pkg:pypi/contourpy?source=compressed-mapping run_exports: {} - size: 321850 - timestamp: 1769155964333 -- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.16.0-py312h8b7ec3f_0.conda - sha256: aaea290a54335ad42ca4a416936c51acbd6f5be7cc2ed6c49fb629f3e8946a31 - md5: 385233507bd4b374469cc6563734c22b + size: 329540 + timestamp: 1789746824998 +- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.16.1-py312h8b7ec3f_0.conda + sha256: 4a8043346633a5324746c7f370083b3c3aa8f7c8dd5b9af50e9255238c30f57d + md5: a440583cd1dbfae9841862fee5c9e3bd depends: - python - - libgcc >=15 - __glibc >=2.17,<3.0.a0 + - libgcc >=15 - python_abi 3.12.* *_cp312 license: Apache-2.0 + license_family: APACHE purls: - - pkg:pypi/coverage?source=hash-mapping + - pkg:pypi/coverage?source=compressed-mapping run_exports: {} - size: 416603 - timestamp: 1787965687641 -- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.16.0-py313h2af15c8_0.conda - sha256: c95c677deaae32f2cca15f5c6e1a9267d6c0ba072f82d6667596946c5b30dff3 - md5: e53c02d7a82ec851a22628cdd241f182 + size: 417037 + timestamp: 1789915303358 +- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.16.1-py313h2af15c8_0.conda + sha256: 38000f8796939c8dcc4c385c52e7c00da72c7cd2cf071462275b4f3d73efee33 + md5: d57a44a18f604ad03769f340693918d9 depends: - python - libgcc >=15 - __glibc >=2.17,<3.0.a0 - python_abi 3.13.* *_cp313 license: Apache-2.0 + license_family: APACHE purls: - - pkg:pypi/coverage?source=hash-mapping + - pkg:pypi/coverage?source=compressed-mapping run_exports: {} - size: 425215 - timestamp: 1787965687641 + size: 426365 + timestamp: 1789915303358 - conda: https://conda.anaconda.org/conda-forge/linux-64/cpp-expected-1.3.1-h171cf75_1.conda sha256: 6a905f317b93104444dc74875933a7cdf65fa14ae05dd6485ece6ffd9d0b5e89 md5: 451367db888b29ad0db6b298669fbe77 @@ -2900,44 +2831,26 @@ packages: run_exports: {} size: 24388 timestamp: 1785920465106 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-50.0.0-py312h89f293a_1.conda - sha256: 53ff1766703834c6615969a8fe8cf531182056d8089b5ba6ab6be87c9744af98 - md5: ea2568855afe2bf4446dff019c7d0535 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-50.0.1-py311hc91d8b8_1.conda + noarch: python + sha256: 901268eb9ed9ab9a9285fda16abb4feb65eca3301755e560fef54ea7e2fc312c + md5: f68d2562d5f1a828fa82dfa2e91e27da depends: - - __glibc >=2.17,<3.0.a0 + - python - cffi >=2.0 - libgcc >=15 - - openssl >=3.5.8,<4.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - __glibc >=2.17 - license: Apache-2.0 AND BSD-3-Clause AND PSF-2.0 AND MIT - license_family: BSD - purls: - - pkg:pypi/cryptography?source=hash-mapping - run_exports: {} - size: 1895810 - timestamp: 1788125577352 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-50.0.0-py313h78454fb_1.conda - sha256: c3d5208b5a77d2b94df66088df588e297a5b0d081f51d1bc4dd56dcfc14022c6 - md5: b58e5e60eaa33a8b94e2466587cdd8a9 - depends: - __glibc >=2.17,<3.0.a0 - - cffi >=2.0 - - libgcc >=15 - openssl >=3.5.8,<4.0a0 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - _python_abi3_support 1.* + - cpython >=3.11 constrains: - __glibc >=2.17 license: Apache-2.0 AND BSD-3-Clause AND PSF-2.0 AND MIT - license_family: BSD purls: - pkg:pypi/cryptography?source=compressed-mapping run_exports: {} - size: 1897348 - timestamp: 1788125663012 + size: 1826946 + timestamp: 1789121519742 - conda: https://conda.anaconda.org/conda-forge/linux-64/cyrus-sasl-2.1.28-hac629b4_1.conda sha256: 7684da83306bb69686c0506fb09aa7074e1a55ade50c3a879e4e5df6eebb1009 md5: af491aae930edc096b58466c51c4126c @@ -2957,19 +2870,6 @@ packages: - cyrus-sasl >=2.1.28,<3.0a0 size: 210103 timestamp: 1771943128249 -- conda: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda - sha256: 22053a5842ca8ee1cf8e1a817138cdb5e647eb2c46979f84153f6ad7bde73020 - md5: 418c6ca5929a611cbd69204907a83995 - depends: - - libgcc-ng >=12 - license: BSD-2-Clause - license_family: BSD - purls: [] - run_exports: - weak: - - dav1d >=1.2.1,<1.2.2.0a0 - size: 760229 - timestamp: 1685695754230 - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-he8c428d_2.conda sha256: 87a0a42d4ccc527597eff3234509dfb03e0d9bf67d5e2b6fc758e2ef389d8abe md5: a6eb37b51be1a9a654dc3a8aca039b1a @@ -2987,38 +2887,38 @@ packages: - dbus >=1.16.2,<2.0a0 size: 449564 timestamp: 1788197922783 -- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.21-py312h8285ef7_0.conda - sha256: b8dbe25820064a099f315bbb8f45f5bac3fddb63e96af3cbf0c93a830733ef34 - md5: e6778419a1851f6e15820558abddfa04 +- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.22-py312h80505a6_0.conda + sha256: 903f8f96029ea87a6363ad689d891a0446c4872a6ee19eb01a3f24cad91e90e5 + md5: 8181d48cc85b7ffda685669e76f67a3a depends: - python + - libstdcxx >=15 + - libgcc >=15 - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - python_abi 3.12.* *_cp312 license: MIT license_family: MIT purls: - - pkg:pypi/debugpy?source=hash-mapping + - pkg:pypi/debugpy?source=compressed-mapping run_exports: {} - size: 2821960 - timestamp: 1780390159181 -- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.21-py313h5d5ffb9_0.conda - sha256: 53e970bdaf730781d6f27b0a47d768287cb90267b69c070f2ae1d8c22b1a6f88 - md5: 04c757a7c4377e0a84432b25dcb1bbc1 + size: 2839311 + timestamp: 1789745263829 +- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.22-py313h901f96d_0.conda + sha256: ea93fc34598a55d2d6e0891883837987b6641fec71e09711a026f300823e2be2 + md5: dcbf95e510f4b41f92b684bd97d419f7 depends: - python - __glibc >=2.17,<3.0.a0 - - libstdcxx >=14 - - libgcc >=14 + - libgcc >=15 + - libstdcxx >=15 - python_abi 3.13.* *_cp313 license: MIT license_family: MIT purls: - - pkg:pypi/debugpy?source=hash-mapping + - pkg:pypi/debugpy?source=compressed-mapping run_exports: {} - size: 2825625 - timestamp: 1780390153372 + size: 2841827 + timestamp: 1789745262357 - conda: https://conda.anaconda.org/conda-forge/linux-64/double-conversion-3.4.0-hecca717_0.conda sha256: 40cdd1b048444d3235069d75f9c8e1f286db567f6278a93b4f024e5642cfaecc md5: dbe3ec0f120af456b3477743ffd99b74 @@ -3034,39 +2934,37 @@ packages: - double-conversion >=3.4.0,<3.5.0a0 size: 71809 timestamp: 1765193127016 -- conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-abi-5.0.1.80-hf414acd_1.conda - sha256: 5b88f7addb5b32e6c735bcd37e9a36fff4ef000d6972345b2dca1e9adbe6be3e - md5: 2ee04f99e6b9bf0a1c4e537324cf7e6b +- conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-abi-5.0.1.80-hf414acd_3.conda + sha256: 2c0ae975516a66f50a525666dd128dd82e27aec6370d1a846b1390f3fbc03a98 + md5: 56a1cca9a4a7bed2999630e5644c8d0e constrains: - eigen >=5.0.1,<5.0.2.0a0 license: MPL-2.0 + license_family: MOZILLA purls: [] run_exports: {} - size: 13454 - timestamp: 1788180248648 -- conda: https://conda.anaconda.org/conda-forge/linux-64/elfutils-0.194-h849f50c_0.conda - sha256: f71eae7dc8ff9392d225d2d529691b2db16289b7d8009646eeb1adf0caf3937b - md5: 6da1f998c8ea85ba7692afbb5db72fb9 + size: 13466 + timestamp: 1788951264833 +- conda: https://conda.anaconda.org/conda-forge/linux-64/elfutils-0.196-h03e2bf6_0.conda + sha256: 075378fb752fa7d15c3d913fe4d30ea4049308b6b88dfba1ce0fda2870ce18f6 + md5: 24717939d024efa3e042e52e8c279328 depends: - - libgcc >=14 - - libstdcxx >=14 + - libgcc >=15 - __glibc >=2.17,<3.0.a0 - - libzlib >=1.3.1,<2.0a0 - - libsqlite >=3.51.1,<4.0a0 - - libmicrohttpd >=1.0.2,<1.1.0a0 - - libarchive >=3.8.2,<3.9.0a0 - - liblzma >=5.8.1,<6.0a0 - - bzip2 >=1.0.8,<2.0a0 + - libstdcxx >=15 - zstd >=1.5.7,<1.6.0a0 - - libcurl >=8.17.0,<9.0a0 + - libarchive >=3.8.9,<3.9.0a0 + - bzip2 >=1.0.8,<2.0a0 + - libzlib >=1.3.2,<2.0a0 + - liblzma >=5.8.3,<6.0a0 license: LGPL-3.0-only license_family: LGPL purls: [] run_exports: weak: - - elfutils >=0.194,<0.195.0a0 - size: 1289929 - timestamp: 1765447425767 + - elfutils >=0.196,<0.197.0a0 + size: 1356621 + timestamp: 1787399685716 - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-hb03c661_2.conda sha256: a5b51e491fec22bcc1765f5b2c8fff8a97428e9a5a7ee6730095fb9d091b0747 md5: 057083b06ccf1c2778344b6dabace38b @@ -3145,89 +3043,21 @@ packages: run_exports: {} size: 319218 timestamp: 1780933400453 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-8.1.1-gpl_hee00b0e_901.conda - sha256: 6af3f45857478c28fa134e23a8ab7a81ce63cdd29aa2d899232eb7d9410b26e7 - md5: 57b938a79ebb6b996505ea79394bd0c9 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-9.0.2-gpl_h9b364d9_900.conda + sha256: aeaece016f00e89efec54c6574cba7107326b07bb17afb75d990a245e0917863 + md5: 85fbb9706867d94b3e1636381d2e346e depends: - __glibc >=2.17,<3.0.a0 - - alsa-lib >=1.2.15.3,<1.3.0a0 - - aom >=3.9.1,<3.10.0a0 + - alsa-lib >=1.2.16.1,<1.3.0a0 + - aom >=3.14.1,<3.15.0a0 - bzip2 >=1.0.8,<2.0a0 - - dav1d >=1.2.1,<1.2.2.0a0 - - fontconfig >=2.17.1,<3.0a0 + - fontconfig >=2.18.3,<3.0a0 - fonts-conda-ecosystem - gmp >=6.3.0,<7.0a0 - - harfbuzz >=14.2.0 - - lame >=3.100,<3.101.0a0 - - libass >=0.17.4,<0.17.5.0a0 - - libexpat >=2.8.0,<3.0a0 - - libfreetype >=2.14.3 - - libfreetype6 >=2.14.3 - - libgcc >=14 - - libiconv >=1.18,<2.0a0 - - libjxl >=0.11,<0.12.0a0 - - liblzma >=5.8.3,<6.0a0 - - libopenvino >=2026.0.0,<2026.0.1.0a0 - - libopenvino-auto-batch-plugin >=2026.0.0,<2026.0.1.0a0 - - libopenvino-auto-plugin >=2026.0.0,<2026.0.1.0a0 - - libopenvino-hetero-plugin >=2026.0.0,<2026.0.1.0a0 - - libopenvino-intel-cpu-plugin >=2026.0.0,<2026.0.1.0a0 - - libopenvino-intel-gpu-plugin >=2026.0.0,<2026.0.1.0a0 - - libopenvino-intel-npu-plugin >=2026.0.0,<2026.0.1.0a0 - - libopenvino-ir-frontend >=2026.0.0,<2026.0.1.0a0 - - libopenvino-onnx-frontend >=2026.0.0,<2026.0.1.0a0 - - libopenvino-paddle-frontend >=2026.0.0,<2026.0.1.0a0 - - libopenvino-pytorch-frontend >=2026.0.0,<2026.0.1.0a0 - - libopenvino-tensorflow-frontend >=2026.0.0,<2026.0.1.0a0 - - libopenvino-tensorflow-lite-frontend >=2026.0.0,<2026.0.1.0a0 - - libopus >=1.6.1,<2.0a0 - - libplacebo >=7.360.1,<7.361.0a0 - - librsvg >=2.62.1,<3.0a0 - - libstdcxx >=14 - - libva >=2.23.0,<3.0a0 - - libvorbis >=1.3.7,<1.4.0a0 - - libvpl >=2.16.0,<2.17.0a0 - - libvpx >=1.15.2,<1.16.0a0 - - libvulkan-loader >=1.4.341.0,<2.0a0 - - libwebp-base >=1.6.0,<2.0a0 - - libxcb >=1.17.0,<2.0a0 - - libxml2 - - libxml2-16 >=2.14.6 - - libzlib >=1.3.2,<2.0a0 - - openh264 >=2.6.0,<2.6.1.0a0 - - openssl >=3.5.6,<4.0a0 - - pulseaudio-client >=17.0,<17.1.0a0 - - sdl2 >=2.32.56,<3.0a0 - - shaderc >=2026.2,<2026.3.0a0 - - svt-av1 >=4.0.1,<4.0.2.0a0 - - x264 >=1!164.3095,<1!165 - - x265 >=3.5,<3.6.0a0 - - xorg-libx11 >=1.8.13,<2.0a0 - constrains: - - __cuda >=12.8 - license: GPL-2.0-or-later - license_family: GPL - purls: [] - run_exports: - weak: - - ffmpeg >=8.1.1,<9.0a0 - size: 12983934 - timestamp: 1777900506207 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-9.0.1-gpl_h5342cc5_901.conda - sha256: a08c858fcec9a34bd20c7aac381c66d9c5ce3bfd7d476de445e6d5924de61daa - md5: 08760cc55c9985ce0bd7b2e92037e567 - depends: - - __glibc >=2.17,<3.0.a0 - - alsa-lib >=1.2.16.1,<1.3.0a0 - - aom >=3.14.1,<3.15.0a0 - - bzip2 >=1.0.8,<2.0a0 - - dav1d >=1.2.1,<1.2.2.0a0 - - fontconfig >=2.18.3,<3.0a0 - - fonts-conda-ecosystem - - gmp >=6.3.0,<7.0a0 - - lame >=4.0,<4.1.0a0 - - libass >=0.17.5,<0.17.6.0a0 - - libexpat >=2.8.1,<3.0a0 + - lame >=4.0,<4.1.0a0 + - libass >=0.17.5,<0.17.6.0a0 + - libdav1d7 >=1.5.4 + - libexpat >=2.8.1,<3.0a0 - libfreetype >=2.14.3 - libfreetype6 >=2.14.3 - libgcc >=15 @@ -3260,7 +3090,7 @@ packages: - libwebp-base >=1.6.0,<2.0a0 - libxcb >=1.17.0,<2.0a0 - libxml2 - - libxml2-16 >=2.15.3 + - libxml2-16 >=2.15.4 - libzlib >=1.3.2,<2.0a0 - openh264 >=2.6.0,<2.6.1.0a0 - openssl >=3.5.8,<4.0a0 @@ -3277,9 +3107,9 @@ packages: purls: [] run_exports: weak: - - ffmpeg >=9.0.1,<10.0a0 - size: 13764173 - timestamp: 1788011054961 + - ffmpeg >=9.0.2,<10.0a0 + size: 13754515 + timestamp: 1789812602775 - conda: https://conda.anaconda.org/conda-forge/linux-64/fmt-12.1.0-h76c4fd7_1.conda sha256: 25d14a197601fdd616f2e501431b52887e69b31e7defbc1679381d718357ceb7 md5: a70bb6d42ad121aef456e0007e92bed6 @@ -3335,13 +3165,13 @@ packages: - fonts-conda-ecosystem size: 296288 timestamp: 1786667377340 -- conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.63.0-py312h8a5da7c_0.conda - sha256: d235ae7075642044ceb3d922ef2a710a82665755ac9bbb7e8dad7daa72bc6d87 - md5: 294fb524171e2a2748cb7fe708aba826 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.65.0-py312hfd18d64_0.conda + sha256: e16afb57f621128c164264662cf8b97732a6a150dca3742771f8efca7508a25f + md5: a1f28d7f53adcd210da4ffc07e62b7e0 depends: - __glibc >=2.17,<3.0.a0 - brotli - - libgcc >=14 + - libgcc >=15 - munkres - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 @@ -3349,27 +3179,27 @@ packages: license: MIT license_family: MIT purls: - - pkg:pypi/fonttools?source=hash-mapping + - pkg:pypi/fonttools?source=compressed-mapping run_exports: {} - size: 3007892 - timestamp: 1778770568019 -- conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.63.0-py313h3dea7bd_0.conda - sha256: e0029a390d7aef29bd6e7c12a3759f5e0b989930b5781e544ca9bac0abcd8442 - md5: ae83c999b4cfc4c171ce88b99c8b43cc + size: 3117728 + timestamp: 1789076508246 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.65.0-py313h6cd9899_0.conda + sha256: 665422c697e1905eaeb7264c42a7a53d7684907939a9baab395a3680a958865f + md5: a99a1200c422dad619b8c63fdf38faf7 depends: - __glibc >=2.17,<3.0.a0 - brotli - - libgcc >=14 + - libgcc >=15 - munkres - python >=3.13,<3.14.0a0 - python_abi 3.13.* *_cp313 license: MIT license_family: MIT purls: - - pkg:pypi/fonttools?source=hash-mapping + - pkg:pypi/fonttools?source=compressed-mapping run_exports: {} - size: 2995315 - timestamp: 1778770432258 + size: 3186852 + timestamp: 1789076430495 - conda: https://conda.anaconda.org/conda-forge/linux-64/freeglut-3.2.2-h215f996_4.conda sha256: f94040a0d7c449038811097e145f223bd3b2ab4c5181870c6e27e1b9dd777d48 md5: b39dccf5af984bcb68ee2aa0f3213ea6 @@ -3432,19 +3262,19 @@ packages: - libfreetype6 >=2.14.3 size: 175239 timestamp: 1786641011029 -- conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_1.conda - sha256: 4846a3ca0402f3fe33ad84ed50ab213c6aafde4a0faef3c5002f6bf753e21671 - md5: 1cd10eda5692519d01bb20e086e214c9 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.17-h7cc23a3_0.conda + sha256: 3ba79ebfbd14ca5db4affaf10ee8001064e907de5baabc2dbe5bcd9aec856c9f + md5: f9d5302bca196ee87e62f393f2626562 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=14 + - libgcc >=15 license: LGPL-2.1-or-later purls: [] run_exports: weak: - - fribidi >=1.0.16,<2.0a0 - size: 61782 - timestamp: 1785912528684 + - fribidi >=1.0.17,<2.0a0 + size: 64102 + timestamp: 1790011855888 - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.8.0-py312h447239a_0.conda sha256: 7f36a4fc42f6d4cb9c5b210b6604b54eba2e5745c92d76241b6f8fce446818d1 md5: 6a42923f35087cc88a9fac31ef096ce6 @@ -3477,9 +3307,9 @@ packages: run_exports: {} size: 54166 timestamp: 1779999854010 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.44.8-h68053f1_0.conda - sha256: 4345423572cb80f13acbe52987a880576046a0b42c4e22e3a85e0198ee02aab0 - md5: 10dab6a745f32ceeac6c9e00d9979797 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.44.8-h68053f1_2.conda + sha256: 32f3ebd1871cb6ac7eac36c78c410860f38e8d252d5857a80f6abfcb79c7e0ff + md5: d7bd6ccfc58eb6796bd6bba85878fc0e depends: - __glibc >=2.17,<3.0.a0 - libgcc >=15 @@ -3494,8 +3324,8 @@ packages: run_exports: weak: - gdk-pixbuf >=2.44.8,<3.0a0 - size: 579757 - timestamp: 1786715266831 + size: 581961 + timestamp: 1788490424411 - conda: https://conda.anaconda.org/conda-forge/linux-64/gl2ps-1.4.2-h36e74d4_2.conda sha256: e28a214c71590a09f75f1aaccf5795bbcfb99b00c2d6ef55d34320b4f47485bd md5: 787c780ff43f9f79d78d01e476b81a7c @@ -3532,37 +3362,37 @@ packages: - glew >=2.3.0,<2.4.0a0 size: 492673 timestamp: 1766373546677 -- conda: https://conda.anaconda.org/conda-forge/linux-64/glib-2.88.3-h52e820b_2.conda - sha256: 769092271d1cb364030595a095da8c9f8020ed2e0b24c6cfa858aed5f0993e80 - md5: ca41c81d5b77d69b494e56578c42ed33 +- conda: https://conda.anaconda.org/conda-forge/linux-64/glib-2.90.0-h5e3c387_0.conda + sha256: 4d3ddb32831bbd89d4c1b5282930f70a1bf0e1210c772d2df4c13b3eb12f577f + md5: 783f9086aaff57b304816dc67181e3f7 depends: - python * - packaging - - libglib ==2.88.3 he503a2a_2 - - glib-tools ==2.88.3 h67ed8a3_2 + - libglib ==2.90.0 h569388d_0 + - glib-tools ==2.90.0 h3d503d9_0 license: LGPL-2.1-or-later purls: [] run_exports: weak: - - libglib >=2.88.3,<3.0a0 - size: 85426 - timestamp: 1787884091247 -- conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.88.3-h67ed8a3_2.conda - sha256: 966f78753d7f044df52a0b32876580ee15f006e8ec960afa5360c50e66be0fc5 - md5: 5c35ace78b7d630e77efcb37dacb62ae + - libglib >=2.90.0,<3.0a0 + size: 85802 + timestamp: 1789478025196 +- conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.90.0-h3d503d9_0.conda + sha256: a31c2244c6743a85941ac1d19a77ce2cc871afa171b0ad9aaac309af532d0677 + md5: d4adaebf8a2c9040ada6549c52a6b8d8 depends: - - libglib ==2.88.3 he503a2a_2 + - libglib ==2.90.0 h569388d_0 - libffi - - __glibc >=2.17,<3.0.a0 - libgcc >=15 + - __glibc >=2.17,<3.0.a0 license: LGPL-2.1-or-later purls: [] run_exports: {} - size: 236792 - timestamp: 1787884091247 -- conda: https://conda.anaconda.org/conda-forge/linux-64/glslang-16.5.0-h980caa0_2.conda - sha256: 2c2eb8deb61d781c3b1bae69e6b8de3fe9cbb18049493de4578a65ca8068090a - md5: f8cf8d6c2f5a98e7263d461c8514cb8a + size: 237225 + timestamp: 1789478025196 +- conda: https://conda.anaconda.org/conda-forge/linux-64/glslang-16.6.0-h980caa0_0.conda + sha256: 390b9e94b29b53366673e5460b433c9daa34788f5cdabf8b30bf40cf086c60dd + md5: 35406140e41bd93ba199420e299854ef depends: - __glibc >=2.17,<3.0.a0 - libgcc >=15 @@ -3574,8 +3404,8 @@ packages: run_exports: weak: - glslang >=16,<17.0a0 - size: 1437572 - timestamp: 1787686922356 + size: 1449282 + timestamp: 1789335100141 - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hfd2156b_3.conda sha256: f36c336efc874f346a53a9011f67e997f9faac505562cc18c13b6d399cfe61c7 md5: 576e32739f323438bf69ab006c21be7b @@ -3590,26 +3420,6 @@ packages: - gmp >=6.3.0,<7.0a0 size: 493498 timestamp: 1786629164954 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gnutls-3.8.13-h18acefa_0.conda - sha256: dbdbb714064914281c755650bc54e1855412e7e2f4c99ad171b5123ed704b2b1 - md5: 7c3de21891993e89aabdadaa603ed835 - depends: - - __glibc >=2.17,<3.0.a0 - - gmp >=6.3.0,<7.0a0 - - libgcc >=14 - - libidn2 >=2,<3.0a0 - - libstdcxx >=14 - - libtasn1 >=4.21.0,<5.0a0 - - nettle >=3.10.1,<3.11.0a0 - - p11-kit >=0.26.2,<0.27.0a0 - license: LGPL-2.1-or-later - license_family: LGPL - purls: [] - run_exports: - weak: - - gnutls >=3.8.13,<3.9.0a0 - size: 2054535 - timestamp: 1778044634746 - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.15-h54a6638_1.conda sha256: 7fa3b6a9c081fa3e545573152a788d061a0a0ba57df7251cc0f4f75225fc93e7 md5: f9fe2984587fa8235a6af6004760cd18 @@ -3625,22 +3435,22 @@ packages: - graphite2 >=1.3.15,<2.0a0 size: 102835 timestamp: 1786118485753 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gsl-2.8-hbf7d49c_1.conda - sha256: f923af07c3a3db746d3be8efebdaa9c819a6007ee3cc12445cee059641611e05 - md5: 04e128d2adafe3c844cde58f103c481b +- conda: https://conda.anaconda.org/conda-forge/linux-64/gsl-2.8-h3cd6761_2.conda + sha256: 433d1b1570afa09f469fa5cfb633a2d860fe270639ffa6ba7a354088ab5aba23 + md5: 5071d6d2577a3d5989b1767fbd0a4d56 depends: - __glibc >=2.17,<3.0.a0 - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 - - libgcc >=13 + - libgcc >=15 license: GPL-3.0-or-later license_family: GPL purls: [] run_exports: weak: - gsl >=2.8,<2.9.0a0 - size: 2486744 - timestamp: 1737621160295 + size: 2466796 + timestamp: 1789041589598 - conda: https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.26.11-h6d08254_0.conda sha256: 5a227ac457b9cc7a70b14008df1f91fd5dd2b3fda9641e5445c950b06d04be9e md5: 971da16e7fc43161329213557688d315 @@ -3798,19 +3608,32 @@ packages: run_exports: {} size: 1347671 timestamp: 1787108767322 -- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-14.4.0-ha770c72_0.conda - sha256: 78cf9cedd013ba49455b2c75e95d2cdc4aafd384be8f9ece0def6ff1b2a86c61 - md5: c2d4a4fe3216b26ef30e91d917c1b718 +- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-14.4.0-ha770c72_1.conda + sha256: 12b371fad335d0c27de968140088cc678233d7060c2743baf9cb687a9fa975a7 + md5: d5c10e05d7135fca0731173c288bfff5 depends: - - libharfbuzz-devel 14.4.0 h23af247_0 + - libharfbuzz-devel 14.4.0 h23af247_1 license: MIT license_family: MIT purls: [] run_exports: weak: - libharfbuzz >=14.4.0 - size: 11141 - timestamp: 1787795205932 + size: 11107 + timestamp: 1788405531557 +- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-14.5.0-ha770c72_0.conda + sha256: 1fefc6e69c1e08a42639ede2c025102bb76244a364d6a2d332991017aa4d74a6 + md5: ef253035e60216967c117ab9a279eea2 + depends: + - libharfbuzz-devel 14.5.0 h23af247_0 + license: MIT + license_family: MIT + purls: [] + run_exports: + weak: + - libharfbuzz >=14.5.0 + size: 10994 + timestamp: 1790061811404 - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h2a13503_7.conda sha256: 0d09b6dc1ce5c4005ae1c6a19dc10767932ef9a5e9c755cfdbb5189ac8fb0684 md5: bd77f8da987968ec3927990495dc22e4 @@ -3848,20 +3671,21 @@ packages: - hdf5 >=1.14.6,<1.14.7.0a0 size: 3721555 timestamp: 1780581675871 -- conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5plugin-7.0.0-py312hfbf75e7_2.conda - sha256: 5b640cc4aae8c5d30739c5b2e58afaac6287bfd13db1b9347186b2e47dfc04f8 - md5: 9dd0a82d4f4a67ee6af326d13dfe8deb +- conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5plugin-7.1.0-py312hff6e9eb_0.conda + sha256: 08eb7c2622838b058753c4f09460e233c14a90491b5efe9de6137f29409266ba + md5: 59208fe0ebf4546c1017949524da464a depends: - __glibc >=2.17,<3.0.a0 - blosc >=1.21.6,<2.0a0 - bzip2 >=1.0.8,<2.0a0 - - c-blosc2 >=3.3.0,<3.4.0a0 + - c-blosc2 >=3.3.3,<3.4.0a0 - h5py >=3.0.0 - hdf5 >=1.14.6,<1.14.7.0a0 - - libgcc >=14 - - libstdcxx >=14 + - libgcc >=15 + - libstdcxx >=15 - libzlib >=1.3.2,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 + - openjph >=0.31.0,<0.32.0a0 - packaging - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 @@ -3871,22 +3695,23 @@ packages: purls: - pkg:pypi/hdf5plugin?source=hash-mapping run_exports: {} - size: 3419182 - timestamp: 1785310734797 -- conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5plugin-7.0.0-py313hf57f36c_2.conda - sha256: 61ff595b5a15ce6e6a9b4871c6b5c562ed2a5573c335bcbbf164edc90f80d4d2 - md5: f516ec26c662fabde53235f2b2b8e9d3 + size: 3390488 + timestamp: 1788341518322 +- conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5plugin-7.1.0-py313h14eca21_0.conda + sha256: 5af567da65cc7165473ec68f73a4b60dab7a5834ab61a4a7e7f2a599f4a3fdc9 + md5: 6f8044b7ddcb5f1d929bd3b561aedb11 depends: - __glibc >=2.17,<3.0.a0 - blosc >=1.21.6,<2.0a0 - bzip2 >=1.0.8,<2.0a0 - - c-blosc2 >=3.3.0,<3.4.0a0 + - c-blosc2 >=3.3.3,<3.4.0a0 - h5py >=3.0.0 - hdf5 >=1.14.6,<1.14.7.0a0 - - libgcc >=14 - - libstdcxx >=14 + - libgcc >=15 + - libstdcxx >=15 - libzlib >=1.3.2,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 + - openjph >=0.31.0,<0.32.0a0 - packaging - python >=3.13,<3.14.0a0 - python_abi 3.13.* *_cp313 @@ -3896,8 +3721,8 @@ packages: purls: - pkg:pypi/hdf5plugin?source=hash-mapping run_exports: {} - size: 3424263 - timestamp: 1785311572974 + size: 3391428 + timestamp: 1788341293058 - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_3.conda sha256: 6d7e6e1286cb521059fe69696705100a03b006efb914ffe82a2ae97ecbae66b7 md5: 129e404c5b001f3ef5581316971e3ea0 @@ -3938,21 +3763,21 @@ packages: - imath >=3.2.2,<3.2.3.0a0 size: 160289 timestamp: 1759983212466 -- conda: https://conda.anaconda.org/conda-forge/linux-64/intel-gmmlib-22.10.0-hb700be7_0.conda - sha256: bc231d69eb6663db0e09738fb916c5e5507147cf1ac60f364f964004e0b29bab - md5: 10909406c1b0e4b57f9f4f0eb0999af8 +- conda: https://conda.anaconda.org/conda-forge/linux-64/intel-gmmlib-22.10.2-h7148c6a_0.conda + sha256: a916de0f52de5ce16dc7869ca433dc420be55cae6a04592333ae9923545aa096 + md5: 7d8cc0ba43a18e1d6ddd7142175d6022 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 + - libgcc >=15 + - libstdcxx >=15 license: MIT license_family: MIT purls: [] run_exports: weak: - - intel-gmmlib >=22.10.0,<23.0a0 - size: 1013714 - timestamp: 1774422680665 + - intel-gmmlib >=22.10.2,<23.0a0 + size: 1007001 + timestamp: 1789121934082 - conda: https://conda.anaconda.org/conda-forge/linux-64/intel-media-driver-26.1.6-hecca717_0.conda sha256: 7cbd7fda22db70c64af64c9173434a4ede58e4f220bda52a044e469aa94c65cb md5: aaf7c3db8c7c4533deb5449d3ba1c51f @@ -3970,25 +3795,26 @@ packages: - intel-media-driver >=26.1.6,<26.2.0a0 size: 8782375 timestamp: 1776080148587 -- conda: https://conda.anaconda.org/conda-forge/linux-64/jasper-4.2.9-h1588d4d_1.conda - sha256: a6a9858eadb4c794b56a1c954c1d4f4b57d96c9fb87092dd46f5bff9b0697b35 - md5: 115ecf05370670f93bc81a8c4f7fd57f +- conda: https://conda.anaconda.org/conda-forge/linux-64/jasper-4.2.9-hd038ad9_2.conda + sha256: a7b36f828a4d85171e61b3153997b5513f766d02501b2b596129edb0e8896d04 + md5: 7b3e0e66ba910b1785312ada14ff664d depends: - - __glibc >=2.17,<3.0.a0 + - libjpeg-turbo + - libglu >=9.0.3,<10.0a0 - freeglut >=3.2.2,<4.0a0 - - libexpat >=2.7.4,<3.0a0 - - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - libgcc >=15 + - libexpat >=2.8.1,<3.0a0 - libgl >=1.7.0,<2.0a0 - - libglu >=9.0.3,<10.0a0 - libglu >=9.0.3,<9.1.0a0 - - libjpeg-turbo >=3.1.2,<4.0a0 + - libjpeg-turbo >=3.2.0,<4.0a0 license: JasPer-2.0 purls: [] run_exports: weak: - jasper >=4.2.9,<5.0a0 - size: 684185 - timestamp: 1773677703432 + size: 724460 + timestamp: 1788279839591 - conda: https://conda.anaconda.org/conda-forge/linux-64/jsoncpp-1.9.6-hf42df4d_1.conda sha256: ed4b1878be103deb2e4c6d0eea3c9bdddfd7fc3178383927dce7578fb1063520 md5: 7bdc5e2cc11cb0a0f795bdad9732b0f2 @@ -4029,36 +3855,36 @@ packages: - keyutils >=1.6.3,<2.0a0 size: 135295 timestamp: 1786739238128 -- conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.5.1-py312h9be0db6_0.conda - sha256: 09f3578b5cf4484d236e02f5b9fe455e45448419b86ef16aee46d45e9fd3b715 - md5: 6ec45525bac89c279b6e5f4c47eec6bf +- conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.5.1-py312h9be0db6_3.conda + sha256: 2bf43f71103bd13f9977d6989a6ccdc1bff0db49cfd37280c3f934ac6ce6c3ed + md5: 52258f682691a6838dd40316265d9cee depends: - python + - __glibc >=2.17,<3.0.a0 - libstdcxx >=15 - libgcc >=15 - - __glibc >=2.17,<3.0.a0 - python_abi 3.12.* *_cp312 license: BSD-3-Clause purls: - pkg:pypi/kiwisolver?source=compressed-mapping run_exports: {} - size: 75073 - timestamp: 1787938396652 -- conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.5.1-py313h2551ef2_0.conda - sha256: 6fe07fe3915a718a3d144e9104b26575b411de55ddd8baf85c686d7aa52d058c - md5: cb89d589c15417938ec7f4fe67bc4088 + size: 75216 + timestamp: 1790082000484 +- conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.5.1-py313h2551ef2_3.conda + sha256: bb5beb208c8379eee9b3ce620684ac44ae73597ae0dab500c12f18e63e3c1020 + md5: 45c8698dd577ba504513001219cfd0fd depends: - python - - __glibc >=2.17,<3.0.a0 - libstdcxx >=15 - libgcc >=15 + - __glibc >=2.17,<3.0.a0 - python_abi 3.13.* *_cp313 license: BSD-3-Clause purls: - pkg:pypi/kiwisolver?source=compressed-mapping run_exports: {} - size: 75003 - timestamp: 1787938399572 + size: 75111 + timestamp: 1790082004004 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-hbc21106_2.conda sha256: 2a5c38c85e63df84c4e69ee71439841ce570d259ae3060627bb9a49a938d66f4 md5: 53318d715316929a574f83591308b1f8 @@ -4078,19 +3904,6 @@ packages: - krb5 >=1.22.2,<1.23.0a0 size: 1394333 timestamp: 1786762112514 -- conda: https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2 - sha256: aad2a703b9d7b038c0f745b853c6bb5f122988fe1a7a096e0e606d9cbec4eaab - md5: a8832b479f93521a9e7b5b743803be51 - depends: - - libgcc-ng >=12 - license: LGPL-2.0-only - license_family: LGPL - purls: [] - run_exports: - weak: - - lame >=3.100,<3.101.0a0 - size: 508258 - timestamp: 1664996250081 - conda: https://conda.anaconda.org/conda-forge/linux-64/lame-4.0-h770b6ad_1.conda sha256: 560a8561c5cc1f3c05b1e91d93436eb14fe55beb29c27e02623b42960d64d91f md5: 5aecb65b6ecfee6f878e6789a8a779de @@ -4106,9 +3919,9 @@ packages: - lame >=4.0,<4.1.0a0 size: 304210 timestamp: 1786292506120 -- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.19.1-h9073bf1_2.conda - sha256: 8cdec1ff3f276cd2069dca0dae4f45f3dc5c224e2d72daef78227832938467a6 - md5: b68c7304d2edb0f1a5bdfb875094d603 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.19.1-h9073bf1_3.conda + sha256: 03e675b9adaf235aab880e4133c72f4830e87bc7da2df59d6194771612239b22 + md5: 596464faa06e0b656b35416188ef9bba depends: - __glibc >=2.17,<3.0.a0 - libgcc >=15 @@ -4120,8 +3933,8 @@ packages: run_exports: weak: - lcms2 >=2.19.1,<3.0a0 - size: 253830 - timestamp: 1788155917881 + size: 254292 + timestamp: 1789051947923 - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.46.1-default_hbd61a6d_102.conda sha256: 27d83f1188cd19bcb7754a078b3fa7f4cfb8527f8eb2fde54dd01fc529d1adec md5: 449500f2c089da11c40f5c21312e3e07 @@ -4151,38 +3964,19 @@ packages: - lerc >=4.2.0,<5.0a0 size: 271158 timestamp: 1785036167977 -- conda: https://conda.anaconda.org/conda-forge/linux-64/level-zero-1.29.0-hb700be7_0.conda - sha256: d87cfc5eaa08eefff97d891ecb49faa958fcfc32a425767796269c4100d4e516 - md5: f3c3bc77c96af553f761af0e78bc8d9d +- conda: https://conda.anaconda.org/conda-forge/linux-64/level-zero-1.33.1-h7148c6a_0.conda + sha256: ae6bc49a784c442b4cf5b1306a342a4f85667b2f489509c01bb77edec0f9e0f3 + md5: 88ec7b59e2bff6caf5b517f73e7ce853 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 + - libgcc >=15 + - libstdcxx >=15 license: MIT license_family: MIT purls: [] run_exports: {} - size: 875773 - timestamp: 1780142086148 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20260107.1-cxx17_h7b12aa8_0.conda - sha256: a7a4481a4d217a3eadea0ec489826a69070fcc3153f00443aa491ed21527d239 - md5: 6f7b4302263347698fd24565fbf11310 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - constrains: - - libabseil-static =20260107.1=cxx17* - - abseil-cpp =20260107.1 - license: Apache-2.0 - license_family: Apache - purls: [] - run_exports: - weak: - - libabseil >=20260107.1,<20260108.0a0 - - libabseil =*=cxx17* - size: 1384817 - timestamp: 1770863194876 + size: 780520 + timestamp: 1788366449509 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20260526.0-cxx17_h0dc7533_2.conda sha256: 7bb3d495411b7059e85225aae500d84e7846a4bb02ebd77e4450200b20c180f0 md5: 6983bfe8e09992014b9cf393769c7a84 @@ -4240,68 +4034,48 @@ packages: - libarchive >=3.8.9,<3.9.0a0 size: 875346 timestamp: 1787292369121 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libass-0.17.4-h96ad9f0_0.conda - sha256: 035eb8b54e03e72e42ef707420f9979c7427776ea99e0f1e3c969f92eb573f19 - md5: d3be7b2870bf7aff45b12ea53165babd +- conda: https://conda.anaconda.org/conda-forge/linux-64/libass-0.17.5-h3b6f6bf_1.conda + sha256: 9de9aaf5e70265937a026d5f172c468ec4683e25bc0b2ddc641569b8d4a7f535 + md5: faaf338c59903174de76aca5181ba49e depends: - - libgcc >=13 - - __glibc >=2.17,<3.0.a0 - - libzlib >=1.3.1,<2.0a0 - - libfreetype >=2.13.3 - - libfreetype6 >=2.13.3 - - fribidi >=1.0.10,<2.0a0 - - libiconv >=1.18,<2.0a0 - - fontconfig >=2.15.0,<3.0a0 - - fonts-conda-ecosystem - - harfbuzz >=11.0.1 - license: ISC - purls: [] - run_exports: - weak: - - libass >=0.17.4,<0.17.5.0a0 - size: 152179 - timestamp: 1749328931930 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libass-0.17.5-h434b012_0.conda - sha256: 24d4b59a0267e1c159c3af82df106b42faeefccceba3c489044c93abf113c503 - md5: c1cb4d6e8a6e3f724740dee5346fc8b4 - depends: - - libgcc >=14 + - libgcc >=15 - __glibc >=2.17,<3.0.a0 - libfreetype >=2.14.3 - libfreetype6 >=2.14.3 - - libzlib >=1.3.2,<2.0a0 - - fribidi >=1.0.16,<2.0a0 - - fontconfig >=2.18.1,<3.0a0 + - fontconfig >=2.18.3,<3.0a0 - fonts-conda-ecosystem + - fribidi >=1.0.16,<2.0a0 + - libzlib >=1.3.2,<2.0a0 - libiconv >=1.18,<2.0a0 - - harfbuzz >=14.2.1 + - libharfbuzz >=14.4.0 license: ISC purls: [] run_exports: weak: - libass >=0.17.5,<0.17.6.0a0 - size: 154964 - timestamp: 1782298715788 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-10_h4a7cf45_openblas.conda - build_number: 10 - sha256: 3b0600d79b16cc868421adbba03364ba59d2a3c088c79eef678f4a0b43fc7c07 - md5: e2ca3eadd889d39b4e4b6b1ecc671816 + size: 155416 + timestamp: 1789989013309 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-11_h4a7cf45_openblas.conda + build_number: 11 + sha256: d942e0c820d60a613a6f786d074f0820fb6343e3f1ccfb110b1d98b44fb75968 + md5: b8cce1486f3c62f33291d6318c193d0d depends: - libopenblas >=0.3.34,<0.3.35.0a0 - libopenblas >=0.3.34,<1.0a0 constrains: - - blas 2.310 openblas - - libcblas 3.11.0 10*_openblas - - liblapack 3.11.0 10*_openblas - - liblapacke 3.11.0 10*_openblas + - blas 2.311 openblas + - libcblas 3.11.0 11*_openblas + - liblapack 3.11.0 11*_openblas + - liblapacke 3.11.0 11*_openblas - mkl <2027 license: BSD-3-Clause + license_family: BSD purls: [] run_exports: weak: - libblas >=3.11.0,<4.0a0 - size: 17975 - timestamp: 1788076997926 + size: 18246 + timestamp: 1789061062982 - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-1.88.0-hd24cca6_7.conda sha256: dd489228e1916c7720c925248d0ba12803d1dc8b9898be0c51f4ab37bab6ffa5 md5: d70e4dc6a847d437387d45462fe60cf9 @@ -4359,9 +4133,9 @@ packages: run_exports: {} size: 130496 timestamp: 1766348147704 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-h39a168f_3.conda - sha256: e5864f257f839ffc27d681659bac95901f524f602b9121e5dcc5e2df18437f2d - md5: 7a2499a177753582fb7ae7e9dc4a908a +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-h39a168f_4.conda + sha256: c4e9854c585f3ee1785f651287ecdf8c28f30a2ea1b159a513005f8a0f6453a3 + md5: df210655e30a05e3b069c91b7aaddd2d depends: - __glibc >=2.17,<3.0.a0 - libgcc >=15 @@ -4371,14 +4145,14 @@ packages: run_exports: weak: - libbrotlicommon >=1.2.0,<1.3.0a0 - size: 80265 - timestamp: 1786622773969 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-ha411449_3.conda - sha256: dad31b6d104973deb89710929a35651033aad692d4e7793cdb5b786a9bd54678 - md5: 6ab3315dc56618d652c1da42a648a129 + size: 80561 + timestamp: 1788480364653 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-ha411449_4.conda + sha256: d5ed24da3e583a92227fe77280978b7933f07a39a2b60156c5ad95e5c76733fa + md5: 0cfd601eb03cca403dcc248844787486 depends: - __glibc >=2.17,<3.0.a0 - - libbrotlicommon 1.2.0 h39a168f_3 + - libbrotlicommon 1.2.0 h39a168f_4 - libgcc >=15 license: MIT license_family: MIT @@ -4386,14 +4160,14 @@ packages: run_exports: weak: - libbrotlidec >=1.2.0,<1.3.0a0 - size: 34828 - timestamp: 1786622783405 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-h018ffa1_3.conda - sha256: d37124d0f51816e7d5e3a94bfc9ed3d6174d077f9b4f832d20c5a08b52bebf1f - md5: 2ac965638d4c6b2b38383bb1aebaf543 + size: 34739 + timestamp: 1788480374261 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-h018ffa1_4.conda + sha256: b9f3cb510337655485c2e79ce5f7dd468991b19ad29723ffa1175a0aed1b69ae + md5: 4136f6e4ef4835cc7df39a707cbd511c depends: - __glibc >=2.17,<3.0.a0 - - libbrotlicommon 1.2.0 h39a168f_3 + - libbrotlicommon 1.2.0 h39a168f_4 - libgcc >=15 license: MIT license_family: MIT @@ -4401,8 +4175,8 @@ packages: run_exports: weak: - libbrotlienc >=1.2.0,<1.3.0a0 - size: 298639 - timestamp: 1786622792145 + size: 298134 + timestamp: 1788480383223 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.78-h084b8d7_1.conda sha256: 8cb25174d6b6fac95d31e86cfe41faffc8ee9dacbf2bfd22e6c23377e8f338c1 md5: 5db514adf5f843126ff846d1510f22a4 @@ -4417,23 +4191,24 @@ packages: - libcap >=2.78,<2.79.0a0 size: 124306 timestamp: 1786025967663 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-10_h0358290_openblas.conda - build_number: 10 - sha256: 90fd992748d501f6efe2b8310aa81f5ee4a63629450dd88e851ba4ab757f3c3a - md5: a275bd95aa4e22c24120bf6ece6eb056 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-11_h0358290_openblas.conda + build_number: 11 + sha256: f7d1bbdea61cf94ba219d17b2cb571a29830f8025385af799bff5a7ad1ef45e6 + md5: 73a248c30811075059b5aeda766c2624 depends: - - libblas 3.11.0 10_h4a7cf45_openblas + - libblas 3.11.0 11_h4a7cf45_openblas constrains: - - blas 2.310 openblas - - liblapack 3.11.0 10*_openblas - - liblapacke 3.11.0 10*_openblas + - blas 2.311 openblas + - liblapack 3.11.0 11*_openblas + - liblapacke 3.11.0 11*_openblas license: BSD-3-Clause + license_family: BSD purls: [] run_exports: weak: - libcblas >=3.11.0,<4.0a0 - size: 17959 - timestamp: 1788077003985 + size: 18196 + timestamp: 1789061068819 - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp22.1-22.1.8-default_h0acdd01_10.conda sha256: 44ed5220e286dbb2886225b4ca2ea8eaac2769ac039e933440bea6ced3dadf95 md5: 2b93d9e99401f2384694c61eb292bdf0 @@ -4447,51 +4222,54 @@ packages: - libzlib >=1.3.2,<2.0a0 - libllvm22 >=22.1.8,<22.2.0a0 license: Apache-2.0 WITH LLVM-exception + license_family: APACHE purls: [] run_exports: weak: - libclang-cpp22.1 >=22.1.8,<22.2.0a0 size: 24529851 timestamp: 1788043761816 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp23.1-23.1.0-default_h0acdd01_1.conda - sha256: ff0507777b9d5ff5678466516d2f1793361ecef541114fb6f3cabb91fc7d5b3c - md5: d3ba2947f7d7cdd7c4eb73b206de330b +- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp23.1-23.1.1-default_h0acdd01_0.conda + sha256: 1a393452606eaed3192783a77acffffce6dec101f44bfa9f1c8b00da0e1b828b + md5: 685684bbe8a2b702db0a664f882a49aa depends: - - __glibc >=2.17,<3.0.a0 - libstdcxx >=15 - libgcc >=15 + - __glibc >=2.17,<3.0.a0 - libxml2 - - libxml2-16 >=2.15.3 + - libxml2-16 >=2.15.4 - zstd >=1.5.7,<1.6.0a0 - libzlib >=1.3.2,<2.0a0 - - libllvm23 >=23.1.0,<23.2.0a0 + - libllvm23 >=23.1.1,<23.2.0a0 license: Apache-2.0 WITH LLVM-exception + license_family: APACHE purls: [] run_exports: weak: - - libclang-cpp23.1 >=23.1.0,<23.2.0a0 - size: 25353391 - timestamp: 1788037800581 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-23.1.0-default_h7855034_1.conda - sha256: 1c7589a69833294ab79e5b239d4d70c8c6af68b745a5c17344319d088d884bb0 - md5: 6afb92887568acc8f18281c57c92c28b + - libclang-cpp23.1 >=23.1.1,<23.2.0a0 + size: 25352464 + timestamp: 1788986724670 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-23.1.1-default_h7037f76_0.conda + sha256: 89c4968a9eb3c45aa6ecd1e20dcf30419cc52ef756af3bbad5099ae488cb8330 + md5: 477ba0fcc49cbf8dad6fadac96dd87c5 depends: - - libclang-cpp23.1 ==23.1.0 default_h0acdd01_1 - - __glibc >=2.17,<3.0.a0 + - libclang-cpp23.1 ==23.1.1 default_h0acdd01_0 - libstdcxx >=15 - libgcc >=15 + - __glibc >=2.17,<3.0.a0 - libxml2 - - libxml2-16 >=2.15.3 + - libxml2-16 >=2.15.4 - zstd >=1.5.7,<1.6.0a0 - libzlib >=1.3.2,<2.0a0 - - libllvm23 >=23.1.0,<23.2.0a0 + - libllvm23 >=23.1.1,<23.2.0a0 license: Apache-2.0 WITH LLVM-exception + license_family: APACHE purls: [] run_exports: weak: - - libclang13 >=23.1.0 - size: 15442245 - timestamp: 1788037800581 + - libclang13 >=23.1.1 + size: 15440907 + timestamp: 1788986724670 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h7a8fb5f_6.conda sha256: 205c4f19550f3647832ec44e35e6d93c8c206782bdd620c1d7cf66237580ff9c md5: 49c553b47ff679a6a1e9fc80b9c5a2d4 @@ -4509,9 +4287,9 @@ packages: - libcups >=2.3.3,<2.4.0a0 size: 4518030 timestamp: 1770902209173 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.21.0-ha042cf0_5.conda - sha256: 0b6cc13e36cf19ae9b764740112fc591682e189c99353be9f72f3d96ccf29d79 - md5: 0ed167049513943d078a6c997df2b4e0 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.22.0-ha042cf0_0.conda + sha256: 483b7eb97f56fbb3a9cb7190d33012dfa0a5aaed99ede61465563cd97dd82504 + md5: e617deee7af8eb0c04f6296d12b54157 depends: - __glibc >=2.17,<3.0.a0 - krb5 >=1.22.2,<1.23.0a0 @@ -4520,16 +4298,28 @@ packages: - libpsl >=0.23.1,<0.24.0a0 - libssh2 >=1.11.1,<2.0a0 - libzlib >=1.3.2,<2.0a0 - - openssl >=3.5.7,<4.0a0 + - openssl >=3.5.8,<4.0a0 - zstd >=1.5.7,<1.6.0a0 license: curl license_family: MIT purls: [] run_exports: weak: - - libcurl >=8.21.0,<9.0a0 - size: 484517 - timestamp: 1787183722915 + - libcurl >=8.22.0,<9.0a0 + size: 499651 + timestamp: 1788340719230 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdav1d7-1.5.4-hebe6cf0_4.conda + sha256: 9d3d31b9549f76ab61e2678a22566e4342842f388ec6df4ac10aea3ae3526697 + md5: ad38caba8fd619ac5e6d5fef0a6678cd + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=15 + license: BSD-2-Clause + license_family: BSD + purls: [] + run_exports: {} + size: 765022 + timestamp: 1788366542408 - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-hd45a770_1.conda sha256: 82e134c8a08b1eed9a2ed8ab578b89aa1730dcde3dea8dd87645ed0637878e54 md5: 40f9b31aa9cf007789867df0decd0492 @@ -4544,12 +4334,12 @@ packages: - libdeflate >=1.25,<1.26.0a0 size: 73710 timestamp: 1785908694612 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libdovi-3.4.0-ha23c83e_0.conda - sha256: cea351b57c30d70e288b53ea69a1dcf6b750992f5d7717a7fc364072fa1209e7 - md5: 4377d220f09344452b227d699cacce4f +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdovi-3.4.0-h39d0f39_1.conda + sha256: 2b662358b456aab29e0c4b0e2b476d559fbc4639665cd32ebea66cc3f796fbd2 + md5: c408b3aee110b40687bfcd51fbe85810 depends: - - libgcc >=14 - __glibc >=2.17,<3.0.a0 + - libgcc >=15 constrains: - __glibc >=2.17 license: MIT @@ -4558,8 +4348,8 @@ packages: run_exports: weak: - libdovi >=3.4.0,<4.0a0 - size: 404998 - timestamp: 1784281566921 + size: 405118 + timestamp: 1789725215433 - conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.129-h7cc23a3_0.conda sha256: ea46b0ca0fa16af1f8b329b740e6cd8b4577c5378fa8717b28a885f70668633d md5: 64cc91512b6278c315349dc13c53f680 @@ -4631,34 +4421,35 @@ packages: - libev >=4.33,<4.34.0a0 size: 43220 timestamp: 1785917328200 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda - sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 - md5: a1cfcc585f0c42bf8d5546bb1dfb668d +- conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-h5348a74_2.conda + sha256: f874779772878f3b509c607de9089c282f71232fde4cac876fc660d29670f28d + md5: 2e699c6e151045b2cfea34b53ed69439 depends: - - libgcc-ng >=12 - - openssl >=3.1.1,<4.0a0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=15 + - openssl >=3.5.8,<4.0a0 license: BSD-3-Clause license_family: BSD purls: [] run_exports: weak: - libevent >=2.1.12,<2.1.13.0a0 - size: 427426 - timestamp: 1685725977222 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.1-hecca717_1.conda - sha256: 16feffd9ddbbe5b718515d38ee376c685ba95491cd901244e24671d20b952a77 - md5: b24d3c612f71e7aa74158d92106318b2 + size: 431007 + timestamp: 1788870247867 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.4-hd2095e1_0.conda + sha256: 2f5e90b621f7bf64c35d5c972bd85a645555d82404130569149a129dcbc8b8dd + md5: a77b44d6cbaad97f3ad050ab35fad55a depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=14 + - libgcc >=15 constrains: - - expat 2.8.1.* + - expat 2.8.4.* license: MIT license_family: MIT purls: [] run_exports: {} - size: 77856 - timestamp: 1781203599810 + size: 77595 + timestamp: 1790073019208 - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.7.0-h81df57d_1.conda sha256: c8c7583ef063bc3c430f1d48298e5ad24f796a35c22ed5b14183325825a61106 md5: 6525a0b06aa4fd390795f0740636a9dd @@ -4715,50 +4506,50 @@ packages: run_exports: {} size: 387671 timestamp: 1786641006460 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-16.2.0-ha9f2e26_4.conda - sha256: 24090e675d34403b4ee1cd4372d8f6c0937da7ecfd66a19a57cac2ed0f4ea793 - md5: cba14d01083fc62ffd32c24d7d390633 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-16.2.0-ha9f2e26_5.conda + sha256: 33d1b5d57c5a55a474330c5ec41fe7001a5aa600d9639389e8ce5edafae216a4 + md5: 3b62b92f0f082b67c59618ebf07617a7 depends: - __glibc >=2.17,<3.0.a0 - _openmp_mutex >=4.5 constrains: - - libgcc-ng ==16.2.0=*_4 - - libgomp 16.2.0 he0feb66_4 + - libgcc-ng ==16.2.0=*_5 + - libgomp 16.2.0 he0feb66_5 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] run_exports: {} - size: 1058083 - timestamp: 1787618680111 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-16.2.0-h69a702a_4.conda - sha256: d8e66c14e23f2b3c70410cff5979d9d357e6edfb990b28d8e630852f4d395629 - md5: b3e52878163a841f6fb951989cc0b217 + size: 1057064 + timestamp: 1789485807107 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-16.2.0-h69a702a_5.conda + sha256: d298972e17697a5e96806d5f2c151c53efd0afa0ef10db5d6757a5b186817219 + md5: e7c34906139296448e3554fafa3dbec2 depends: - - libgcc 16.2.0 ha9f2e26_4 + - libgcc 16.2.0 ha9f2e26_5 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] run_exports: strong: - libgcc - size: 28403 - timestamp: 1787618684957 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-16.2.0-h69a702a_4.conda - sha256: 7653be4d88a4d74676c38dd892914d027dcecc0c65c406be772d31cb641f8cfd - md5: 5e92b8413fd1c8f8f3006f4661b12def + size: 28535 + timestamp: 1789485811332 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-16.2.0-h69a702a_5.conda + sha256: 7e694578cbabd46251d7a069d89da6479c5edd962d78bbc66a847c1b722a8365 + md5: 34ddf93e56ee44924ce76a614e5fb379 depends: - - libgfortran5 16.2.0 h6b99dfc_4 + - libgfortran5 16.2.0 h6b99dfc_5 constrains: - - libgfortran-ng ==16.2.0=*_4 + - libgfortran-ng ==16.2.0=*_5 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] run_exports: {} - size: 28377 - timestamp: 1787618711732 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-16.2.0-h6b99dfc_4.conda - sha256: a5510cbcea3b9e9ab24b336429de997fa727af1dba323031500a962a20e38600 - md5: c22348a769bb072b6184eb6f7f05e4f2 + size: 28520 + timestamp: 1789485833036 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-16.2.0-h6b99dfc_5.conda + sha256: cc767363e3148a18d3a3015eeaed722bbf8ca0acc3a29157df2965e97caa9803 + md5: a7eb3f9540094247ec8a2fa800cf9bbf depends: - __glibc >=2.17,<3.0.a0 - libgcc >=16.2.0 @@ -4768,8 +4559,8 @@ packages: license_family: GPL purls: [] run_exports: {} - size: 2526008 - timestamp: 1787618692926 + size: 2528103 + timestamp: 1789485817694 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_5.conda sha256: 7b2e7e31e8a4f5a01c45ecadcd8aa68c8f733b035240bc7ba9881835ef4bf7b4 md5: 81141db127a106eb5a91df69a29c9918 @@ -4796,25 +4587,25 @@ packages: - libgl >=1.7.0,<2.0a0 size: 116212 timestamp: 1787310061570 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.88.3-he503a2a_2.conda - sha256: af6c14f387f810c5df491b328ae955329596d3bc73b1e2e091ab5adb46a10759 - md5: 533d342dedadf134c67760ce6fc5b748 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.90.0-h569388d_0.conda + sha256: 9e688e046550415c030c3d08ed9a3fd13a51d7bc56295283b858b6c3070bb9f8 + md5: c85e9539551f1fd21104e518d940c244 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=15 - - pcre2 >=10.47,<10.48.0a0 - - libzlib >=1.3.2,<2.0a0 + - __glibc >=2.17,<3.0.a0 - libiconv >=1.18,<2.0a0 + - pcre2 >=10.47,<10.48.0a0 - libffi >=3.7.0,<3.8.0a0 + - libzlib >=1.3.2,<2.0a0 constrains: - glib >2.66 license: LGPL-2.1-or-later purls: [] run_exports: weak: - - libglib >=2.88.3,<3.0a0 - size: 4758097 - timestamp: 1787884091247 + - libglib >=2.90.0,<3.0a0 + size: 4819130 + timestamp: 1789478025196 - conda: https://conda.anaconda.org/conda-forge/linux-64/libglu-9.0.3-h5888daf_1.conda sha256: a0105eb88f76073bbb30169312e797ed5449ebb4e964a756104d6e54633d17ef md5: 8422fcc9e5e172c91e99aef703b3ce65 @@ -4867,9 +4658,9 @@ packages: - libglx >=1.7.0,<2.0a0 size: 27698 timestamp: 1787310053582 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-16.2.0-he0feb66_4.conda - sha256: 0fe5cb8e0752241ab55e11656ed1b9726248b522d23b929fe7c95b83eb55b9bb - md5: 89d2c1231f47bd818f5d624b9411459d +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-16.2.0-he0feb66_5.conda + sha256: 224a5a09e258a1a257089a9af310e9336e1d36834959718a9fab8679742dd822 + md5: af44890f8a2beefd3a83805a59a65014 depends: - __glibc >=2.17,<3.0.a0 license: GPL-3.0-only WITH GCC-exception-3.1 @@ -4878,11 +4669,11 @@ packages: run_exports: strong: - _openmp_mutex >=4.5 - size: 639968 - timestamp: 1787618616266 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-14.4.0-h23af247_0.conda - sha256: a064695a1c12133d6a9dcf6b3b42423b8614fa45667606201af1b5f72628df0d - md5: 4463210c2a16ff5d3bf7f502af23f1f4 + size: 641644 + timestamp: 1789485759120 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-14.4.0-h23af247_1.conda + sha256: 979b14ba13054aab9e90363809aac470a58b7c37203c330216327356a98c8f60 + md5: c44470b6bfa6a582cb4dd42cbda3401e depends: - __glibc >=2.17,<3.0.a0 - cairo >=1.18.4,<2.0a0 @@ -4899,11 +4690,32 @@ packages: license_family: MIT purls: [] run_exports: {} - size: 1380045 - timestamp: 1787795176798 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-devel-14.4.0-h23af247_0.conda - sha256: bdecc73c22cb0a8d44ce066116562e35322fd6c1c04584a4754ae2befcab4cb3 - md5: 26e37e05324d7bb723350d50b33057fc + size: 1382623 + timestamp: 1788405508587 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-14.5.0-h23af247_0.conda + sha256: 4e1522841eb5a5ab5a152ea9e2c1db4ec7919ab3c8991354367db9e8902e6111 + md5: 4c0d9662a054c51e69b66a427e7ead03 + depends: + - __glibc >=2.17,<3.0.a0 + - cairo >=1.18.6,<2.0a0 + - graphite2 >=1.3.15,<2.0a0 + - icu >=78.3,<79.0a0 + - libfreetype >=2.14.3 + - libfreetype6 >=2.14.3 + - libgcc >=15 + - libglib >=2.90.0,<3.0a0 + - libpng >=1.6.58,<1.7.0a0 + - libstdcxx >=15 + - libzlib >=1.3.2,<2.0a0 + license: MIT + license_family: MIT + purls: [] + run_exports: {} + size: 1408394 + timestamp: 1790061782998 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-devel-14.4.0-h23af247_1.conda + sha256: 11f08038c165e354c2a7064ce6bcb28dad2668b330931572666f418e2a8f623c + md5: 148cd995f5ba8af22412a4258abc2f94 depends: - __glibc >=2.17,<3.0.a0 - cairo >=1.18.4,<2.0a0 @@ -4914,7 +4726,7 @@ packages: - libfreetype6 >=2.14.3 - libgcc >=15 - libglib >=2.88.3,<3.0a0 - - libharfbuzz 14.4.0 h23af247_0 + - libharfbuzz 14.4.0 h23af247_1 - libpng >=1.6.58,<1.7.0a0 - libstdcxx >=15 - libzlib >=1.3.2,<2.0a0 @@ -4924,8 +4736,33 @@ packages: run_exports: weak: - libharfbuzz >=14.4.0 - size: 2142051 - timestamp: 1787795196934 + size: 2144076 + timestamp: 1788405523805 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-devel-14.5.0-h23af247_0.conda + sha256: b877e3fc7a8cfd5c702086333c24bb454971e1332865e9361a8038fcf82d706c + md5: 82f4063122b5ebc18cc34bb269e941f3 + depends: + - __glibc >=2.17,<3.0.a0 + - cairo >=1.18.6,<2.0a0 + - freetype + - graphite2 >=1.3.15,<2.0a0 + - icu >=78.3,<79.0a0 + - libfreetype >=2.14.3 + - libfreetype6 >=2.14.3 + - libgcc >=15 + - libglib >=2.90.0,<3.0a0 + - libharfbuzz 14.5.0 h23af247_0 + - libpng >=1.6.58,<1.7.0a0 + - libstdcxx >=15 + - libzlib >=1.3.2,<2.0a0 + license: MIT + license_family: MIT + purls: [] + run_exports: + weak: + - libharfbuzz >=14.5.0 + size: 2308442 + timestamp: 1790061802020 - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.13.0-default_he001693_1000.conda sha256: 5041d295813dfb84652557839825880aae296222ab725972285c5abe3b6e4288 md5: c197985b58bc813d26b42881f0021c82 @@ -4970,21 +4807,6 @@ packages: - libiconv >=1.18,<2.0a0 size: 789471 timestamp: 1787033836207 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libidn2-2.3.8-hfac485b_1.conda - sha256: cc38c900b9a20fe75e61cbb594e749c57a06d96510722f5ddfa309682062b065 - md5: 842a81de672ddcf476337c8bde3cad33 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libunistring >=0,<1.0a0 - license: LGPL-2.0-only - license_family: LGPL - purls: [] - run_exports: - weak: - - libidn2 >=2,<3.0a0 - size: 139036 - timestamp: 1760385590993 - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.2.0-hb03c661_1.conda sha256: bba8538e6538ed58a8479b332337b96986561f975d06cfa2039a016c2d246ee4 md5: 898d1c9793eaa52efc4727bd84d2e39a @@ -5000,24 +4822,6 @@ packages: - libjpeg-turbo >=3.2.0,<4.0a0 size: 650434 timestamp: 1785896381946 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.11.2-h174a0a3_1.conda - sha256: 0c8a78c6a42a6e4c6de3a5e82d692f60400d43f4cc80591745f28b37daad9c70 - md5: 850f48943d6b4589800a303f0de6a816 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - libhwy >=1.4.0,<1.5.0a0 - - libbrotlienc >=1.2.0,<1.3.0a0 - - libbrotlidec >=1.2.0,<1.3.0a0 - license: BSD-3-Clause - license_family: BSD - purls: [] - run_exports: - weak: - - libjxl >=0.11,<1.0a0 - size: 1846962 - timestamp: 1777065125966 - conda: https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.12.0-heb2dce7_2.conda sha256: 965e59ea776344e93a416f7e0ba309810470a61c0e0c65f1eb90be0e808d7e9c md5: 485788d339785bac87fe86315b4a0627 @@ -5036,48 +4840,51 @@ packages: - libjxl >=0.12.0,<0.13.0a0 size: 1886013 timestamp: 1786691380980 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-10_h47877c9_openblas.conda - build_number: 10 - sha256: 166da1ef513efd2f9ea9e132246766306e5d1a18b4e83b8b8425b5adffb6345e - md5: 7b918d4958f359c889c662aa361cf992 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-11_h47877c9_openblas.conda + build_number: 11 + sha256: 1ad3f43c9319ef398a8ef45989f4903a06e3965b51e77fc669a4c894168a8411 + md5: 5622a13917855ce4b953b9e655cf9262 depends: - - libblas 3.11.0 10_h4a7cf45_openblas + - libblas 3.11.0 11_h4a7cf45_openblas constrains: - - blas 2.310 openblas - - libcblas 3.11.0 10*_openblas - - liblapacke 3.11.0 10*_openblas + - blas 2.311 openblas + - libcblas 3.11.0 11*_openblas + - liblapacke 3.11.0 11*_openblas license: BSD-3-Clause + license_family: BSD purls: [] run_exports: weak: - liblapack >=3.11.0,<3.12.0a0 - size: 17978 - timestamp: 1788077010883 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblief-1.0.0-hd2095e1_1.conda - sha256: 936e86c2ae878797fbb61097f53186d96850f5d5491b5fe9ece1d034c171786e - md5: 8644f038d7c75ab78d8fb609a4fdb15b + size: 18227 + timestamp: 1789061073957 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblief-1.0.0-h45ba95f_5.conda + sha256: bd848f40d8b994790223b50dc6ecc8bb2bb03d81a6cebdccf2558f5dc5a116f5 + md5: 4d93e518d81b5ad1db938ead45a020eb depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=15 - libstdcxx >=15 + - __glibc >=2.17,<3.0.a0 - mbedtls >=4.0.0,<4.1.0a0 + - fmt >=12.1.0,<12.2.0a0 + - spdlog >=1.17.0,<1.18.0a0 license: Apache-2.0 - license_family: Apache + license_family: APACHE purls: [] run_exports: weak: - liblief >=1.0.0,<1.1.0a0 - size: 2268848 - timestamp: 1788139009943 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm22-22.1.8-h474f4eb_2.conda - sha256: cfc90781f703b8b8cc35694d46c9a200e3cf66657f55517f8b1ec1f672c42752 - md5: d70196b03134e3bab985d9f5554fb38b + size: 2400169 + timestamp: 1789040612233 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm22-22.1.8-h474f4eb_3.conda + sha256: 135b8b9bfed6a20cdbda657ddb4584d483203eb0e4c29e448a60d4bcc762f391 + md5: c927dba789a253045c0089cb25af44ac depends: - __glibc >=2.17,<3.0.a0 - libgcc >=15 - libstdcxx >=15 - libxml2 - - libxml2-16 >=2.15.3 + - libxml2-16 >=2.15.4 - libzlib >=1.3.2,<2.0a0 - zstd >=1.5.7,<1.6.0a0 license: Apache-2.0 WITH LLVM-exception @@ -5086,17 +4893,17 @@ packages: run_exports: weak: - libllvm22 >=22.1.8,<22.2.0a0 - size: 44652037 - timestamp: 1787288437518 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm23-23.1.0-h474f4eb_0.conda - sha256: 50b31f6c51afe7df0639acf5dde8acf3f4f0dc9f644ab9842b717ae798507d68 - md5: 3b8c8325547a4fd8c51649ef7dfab688 + size: 44629067 + timestamp: 1790110003063 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm23-23.1.1-h474f4eb_0.conda + sha256: 5c716beeb80cd420c37cb811102a9e76c66072f47ed319de1a931ecdd98c9e6b + md5: d96e790721dd4e9af624acbf46cdd818 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=15 - libstdcxx >=15 - libxml2 - - libxml2-16 >=2.15.3 + - libxml2-16 >=2.15.4 - libzlib >=1.3.2,<2.0a0 - zstd >=1.5.7,<1.6.0a0 license: Apache-2.0 WITH LLVM-exception @@ -5104,9 +4911,9 @@ packages: purls: [] run_exports: weak: - - libllvm23 >=23.1.0,<23.2.0a0 - size: 45046595 - timestamp: 1787716721647 + - libllvm23 >=23.1.1,<23.2.0a0 + size: 45065095 + timestamp: 1788900116889 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_1.conda sha256: 9787df8c22a59c9a70d3e5a10db9ad663485e75e9ccc3f09bd092cb7b95e0dab md5: 1390b7c5ac0b1d8e447bc5efa6d3c8c2 @@ -5122,120 +4929,148 @@ packages: - liblzma >=5.8.3,<6.0a0 size: 112995 timestamp: 1786348617826 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libmamba-2.9.0-py314h3b59866_0.conda - sha256: 1b9ca94f36f6072ff71550dfaa8dd4106a118bf01f352ed639aef134b462bab6 - md5: 444e55c79d67040779af3a0167963bea +- conda: https://conda.anaconda.org/conda-forge/linux-64/libmamba-2.9.0-py312he3a525c_1.conda + sha256: 1aced4a6a8ec908392e26e76709689d7b097aa96ef3d93b92f0d3e8b7be5d184 + md5: 20afe395e040a265bb209de2f0b2ec70 depends: - cpp-expected >=1.3.1,<1.3.2.0a0 + - libstdcxx >=15 + - libgcc >=15 - __glibc >=2.17,<3.0.a0 - - libstdcxx >=14 - - libgcc >=14 - - simdjson >=4.6.6,<4.7.0a0 - - yaml-cpp >=0.8.0,<0.9.0a0 - - libarchive >=3.8.9,<3.9.0a0 - - libcurl >=8.21.0,<9.0a0 - - libmsgpack-c >=6.1.0,<7.0a0 - - reproc >=14.2.7.post0,<14.3.0a0 - - reproc-cpp >=14.2.7.post0,<14.3.0a0 - - openssl >=3.5.7,<4.0a0 - fmt >=12.1.0,<12.2.0a0 + - libsolv >=0.7.39,<0.8.0a0 + - reproc >=14.2.8.post0,<14.3.0a0 + - simdjson >=4.6.11,<4.7.0a0 + - libcurl >=8.22.0,<9.0a0 + - zstd >=1.5.7,<1.6.0a0 + - libmsgpack-c >=6.1.0,<7.0a0 + - reproc-cpp >=14.2.8.post0,<14.3.0a0 + - nlohmann_json-abi ==3.12.0 + - openssl >=3.5.8,<4.0a0 + - yaml-cpp >=0.8.0,<0.9.0a0 - spdlog >=1.17.0,<1.18.0a0 + - libarchive >=3.8.9,<3.9.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + run_exports: + weak: + - libmamba >=2.9.0,<2.10.0a0 + size: 2892489 + timestamp: 1789061577265 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libmamba-2.9.0-py313hc1bd57e_1.conda + sha256: b8266f3f439aa34c660c684d6fa1869c4b3717af0665e952070a9df8fbbabceb + md5: deb631c3ec0a154b0a0396c786803f84 + depends: + - cpp-expected >=1.3.1,<1.3.2.0a0 + - __glibc >=2.17,<3.0.a0 + - libstdcxx >=15 + - libgcc >=15 - nlohmann_json-abi ==3.12.0 + - reproc-cpp >=14.2.8.post0,<14.3.0a0 - zstd >=1.5.7,<1.6.0a0 + - fmt >=12.1.0,<12.2.0a0 + - libcurl >=8.22.0,<9.0a0 + - openssl >=3.5.8,<4.0a0 + - yaml-cpp >=0.8.0,<0.9.0a0 + - spdlog >=1.17.0,<1.18.0a0 - libsolv >=0.7.39,<0.8.0a0 + - libmsgpack-c >=6.1.0,<7.0a0 + - libarchive >=3.8.9,<3.9.0a0 + - reproc >=14.2.8.post0,<14.3.0a0 + - simdjson >=4.6.11,<4.7.0a0 license: BSD-3-Clause license_family: BSD purls: [] run_exports: weak: - libmamba >=2.9.0,<2.10.0a0 - size: 2850628 - timestamp: 1786125663902 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libmamba-spdlog-2.9.0-hf1e253f_0.conda - sha256: ddae16548197cf30cf72d700733427cb314ce6fa2921fea7e2922566288de42e - md5: 1066c66681f6a1d6e36d13dc3eecbd50 + size: 2892485 + timestamp: 1789061577265 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libmamba-spdlog-2.9.0-hc368430_1.conda + sha256: 63b4deac2d417271a5bb027094db40c104e9809f9760ddc3e4162ec142188de3 + md5: 1b4a73468cb25fa5e27e176bccacca3b depends: - __glibc >=2.17,<3.0.a0 - - libstdcxx >=14 - - libgcc >=14 + - libstdcxx >=15 + - libgcc >=15 - libmamba >=2.9.0,<2.10.0a0 license: BSD-3-Clause license_family: BSD purls: [] run_exports: {} - size: 20529 - timestamp: 1786125663902 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libmambapy-2.9.0-py312h9266df1_0.conda - sha256: 4fe6ebcf06564927d372dd8f76eb8a8e68d5f9e8f99ae0e8581ca82844c8a07f - md5: df622382b1873ff09421d4276da78de8 + size: 20532 + timestamp: 1789061577265 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libmamba-spdlog-2.9.0-hc46a78c_1.conda + sha256: a0a349f5250a0d2320f88d649b1ebcfc1f5a9d0a1e0322d6712d6c6a03a9fa0c + md5: afbc088cf9d8ef2916c6b0e91223ad27 + depends: + - libstdcxx >=15 + - libgcc >=15 + - __glibc >=2.17,<3.0.a0 + - libmamba >=2.9.0,<2.10.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + run_exports: {} + size: 20528 + timestamp: 1789061577265 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libmambapy-2.9.0-py312h08f3bd4_1.conda + sha256: 8da16d4d30de11c7cf90d9c21a291550d57e60497e5ae8c284064e3cb4f3d4cf + md5: 9fdea5c31770852022baa83f91d03c87 depends: - python - - libmamba ==2.9.0 py314h3b59866_0 - - libmamba-spdlog ==2.9.0 hf1e253f_0 + - libmamba ==2.9.0 py312he3a525c_1 + - libmamba-spdlog ==2.9.0 hc368430_1 + - libstdcxx >=15 + - libgcc >=15 - __glibc >=2.17,<3.0.a0 - - libstdcxx >=14 - - libgcc >=14 - - openssl >=3.5.7,<4.0a0 - pybind11-abi ==11 + - fmt >=12.1.0,<12.2.0a0 - zstd >=1.5.7,<1.6.0a0 - - libmamba >=2.9.0,<2.10.0a0 + - spdlog >=1.17.0,<1.18.0a0 - python_abi 3.12.* *_cp312 - - yaml-cpp >=0.8.0,<0.9.0a0 - - fmt >=12.1.0,<12.2.0a0 + - libmamba >=2.9.0,<2.10.0a0 - nlohmann_json-abi ==3.12.0 - - spdlog >=1.17.0,<1.18.0a0 + - yaml-cpp >=0.8.0,<0.9.0a0 + - openssl >=3.5.8,<4.0a0 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/libmambapy?source=hash-mapping + - pkg:pypi/libmambapy?source=compressed-mapping run_exports: weak: - libmambapy >=2.9.0,<2.10.0a0 - size: 967299 - timestamp: 1786125663902 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libmambapy-2.9.0-py313ha4c4ee9_0.conda - sha256: 99a4c66a3ba083871c5a28014c114f125893c394db98a532382d624976c50d03 - md5: 8046444873b0b9527d083da09c7a5f40 + size: 993511 + timestamp: 1789061577265 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libmambapy-2.9.0-py313hf10c6ed_1.conda + sha256: a251a07a77df33a8558709a57c80f64063a4f082b012c62102d20fa540fa512c + md5: 8fc214614f58b76c3db52fb1b04863d1 depends: - python - - libmamba ==2.9.0 py314h3b59866_0 - - libmamba-spdlog ==2.9.0 hf1e253f_0 + - libmamba ==2.9.0 py313hc1bd57e_1 + - libmamba-spdlog ==2.9.0 hc46a78c_1 - __glibc >=2.17,<3.0.a0 - - libstdcxx >=14 - - libgcc >=14 - - spdlog >=1.17.0,<1.18.0a0 - - openssl >=3.5.7,<4.0a0 + - libstdcxx >=15 + - libgcc >=15 - pybind11-abi ==11 + - python_abi 3.13.* *_cp313 - yaml-cpp >=0.8.0,<0.9.0a0 - - nlohmann_json-abi ==3.12.0 - - libmamba >=2.9.0,<2.10.0a0 - zstd >=1.5.7,<1.6.0a0 - - python_abi 3.13.* *_cp313 - fmt >=12.1.0,<12.2.0a0 + - spdlog >=1.17.0,<1.18.0a0 + - libmamba >=2.9.0,<2.10.0a0 + - nlohmann_json-abi ==3.12.0 + - openssl >=3.5.8,<4.0a0 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/libmambapy?source=hash-mapping + - pkg:pypi/libmambapy?source=compressed-mapping run_exports: weak: - libmambapy >=2.9.0,<2.10.0a0 - size: 966941 - timestamp: 1786125663902 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libmicrohttpd-1.0.10-hc2fc477_0.conda - sha256: 2c27ceb7c159ee3d6ea8b333dfc8d7bede5d8bfd325df677d4c292e24a0dd7dc - md5: 4e01a1886e86ee32a5cbdb354d56d86f - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - gnutls >=3.8.13,<3.9.0a0 - license: LGPL-2.0-or-later - license_family: LGPL - purls: [] - run_exports: - weak: - - libmicrohttpd >=1.0.10,<1.1.0a0 - size: 303021 - timestamp: 1786366467972 + size: 993221 + timestamp: 1789061577265 - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_2.conda sha256: 46820b4a835e175940ae20bec00fdddaff804cda27a1408ab1b95e77a2196437 md5: fcfed1dc5053eb1901b66e7b1fc32588 @@ -5353,23 +5188,24 @@ packages: - libogg >=1.3.5,<1.4.0a0 size: 218500 timestamp: 1745825989535 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.34-pthreads_hcf972fe_1.conda - sha256: b2846ca0b00cc08d248589d289ba891856d4b42da4a3c823be6b2d660bd80a83 - md5: 25994250f54292352a82eb05ab4499ba +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.34-pthreads_hf13c14d_2.conda + sha256: 69a722751e14eab2eb3bfdcb9acb1187afbd962b0c49b48d829341e0f6787f60 + md5: 7e19fcd73d7f0997d3cb3326d2586a86 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=15 - - libgfortran - libgfortran5 >=15.3.0 + - libgfortran + - libgcc >=15 + - __glibc >=2.17,<3.0.a0 constrains: - openblas >=0.3.34,<0.3.35.0a0 license: BSD-3-Clause + license_family: BSD purls: [] run_exports: weak: - libopenblas >=0.3.34,<1.0a0 - size: 5994112 - timestamp: 1788056652715 + size: 6845411 + timestamp: 1789141490688 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-1.7.0-ha4b6fd6_5.conda sha256: 7bdca717c840e17d7dd050f925dd964da61086c2612b8579a4ff4147105f291f md5: d207a2e9bae9da476bc0a603215d5167 @@ -5381,23 +5217,6 @@ packages: run_exports: {} size: 50627 timestamp: 1787310045795 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-2026.0.0-hb56ce9e_1.conda - sha256: a396a2d1aa267f21c98717ac097138b32e41e4c40ae501729bded3801476eeb5 - md5: 9f0596e995efe372c470ff45c93131cb - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - pugixml >=1.15,<1.16.0a0 - - tbb >=2022.3.0 - license: Apache-2.0 - license_family: APACHE - purls: [] - run_exports: - weak: - - libopenvino >=2026.0.0,<2026.0.1.0a0 - size: 6582302 - timestamp: 1772727204779 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-2026.3.1-hf7e0547_0.conda sha256: 24245c736c5eef99659cdc6db8791029e27ecc404a12497839fd23c0b4915506 md5: 8ed292d0e780b85a5d20a5a0fb28a059 @@ -5408,27 +5227,13 @@ packages: - pugixml >=1.15,<1.16.0a0 - tbb >=2023.0.0 license: Apache-2.0 + license_family: APACHE purls: [] run_exports: weak: - libopenvino >=2026.3.1,<2026.3.2.0a0 size: 7010117 timestamp: 1787942833061 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-batch-plugin-2026.0.0-hd85de46_1.conda - sha256: 286de85805dc69ce0bd25367ae2a20c8096ddef35eb2483474eb246dacd5387e - md5: ee41df976413676f794af2785b291b0c - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libopenvino 2026.0.0 hb56ce9e_1 - - libstdcxx >=14 - - tbb >=2022.3.0 - license: Apache-2.0 - license_family: APACHE - purls: [] - run_exports: {} - size: 114431 - timestamp: 1772727230331 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-batch-plugin-2026.3.1-h202117f_0.conda sha256: 6a0a5fb41785e91fb343f565f9cec5e46bcc54a332c23966d4e8437ab03edb97 md5: 78221ffaac5f45905b32a4882f85c42d @@ -5439,25 +5244,11 @@ packages: - libstdcxx >=15 - tbb >=2023.0.0 license: Apache-2.0 + license_family: APACHE purls: [] run_exports: {} size: 116108 timestamp: 1787942855674 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-plugin-2026.0.0-hd85de46_1.conda - sha256: 9988ed6339a5eb044ae8d079e2b22f5a310c41e49a0cf716057f30b21ef9cec2 - md5: ca025fa5c42ba94453636a2ae333de6b - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libopenvino 2026.0.0 hb56ce9e_1 - - libstdcxx >=14 - - tbb >=2022.3.0 - license: Apache-2.0 - license_family: APACHE - purls: [] - run_exports: {} - size: 249056 - timestamp: 1772727247597 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-plugin-2026.3.1-h202117f_0.conda sha256: d54e388beb0187194cd9de1670e1ef62f03cef2f05e832260ec59a488672b1b0 md5: b92521d029afe25bbc59434ddbe107f5 @@ -5468,25 +5259,11 @@ packages: - libstdcxx >=15 - tbb >=2023.0.0 license: Apache-2.0 + license_family: APACHE purls: [] run_exports: {} size: 255667 timestamp: 1787942865726 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-hetero-plugin-2026.0.0-hd41364c_1.conda - sha256: c7db498aeda5b0f36b347f4211b93b66ba108faaf54157a08bae8fa3c3af5f81 - md5: 07a23e96db38f63d9763f666b2db66aa - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libopenvino 2026.0.0 hb56ce9e_1 - - libstdcxx >=14 - - pugixml >=1.15,<1.16.0a0 - license: Apache-2.0 - license_family: APACHE - purls: [] - run_exports: {} - size: 211582 - timestamp: 1772727264950 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-hetero-plugin-2026.3.1-hc0229a9_0.conda sha256: 7b24c735290baeab5d692f42ce47409b86c9d5c8b324067756a70d01bac1ecab md5: 76996545f632c1f8f1b6ba269b7efa78 @@ -5497,26 +5274,11 @@ packages: - libstdcxx >=15 - pugixml >=1.15,<1.16.0a0 license: Apache-2.0 + license_family: APACHE purls: [] run_exports: {} size: 226547 timestamp: 1787942875863 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-cpu-plugin-2026.0.0-hb56ce9e_1.conda - sha256: 01a28c0bd1f205b3800e7759e30bc8e8a75836e0d5a73a745b4da42837bbb174 - md5: b43b96578573ddbcc8d084ae6e44c964 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libopenvino 2026.0.0 hb56ce9e_1 - - libstdcxx >=14 - - pugixml >=1.15,<1.16.0a0 - - tbb >=2022.3.0 - license: Apache-2.0 - license_family: APACHE - purls: [] - run_exports: {} - size: 13173323 - timestamp: 1772727282718 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-cpu-plugin-2026.3.1-hf7e0547_0.conda sha256: 43043ef315c294214235cece17bf618132f12f575df825f3e6df0a79fab68842 md5: d8dd693c1a0ea3ec3e684831511b8d81 @@ -5528,27 +5290,11 @@ packages: - pugixml >=1.15,<1.16.0a0 - tbb >=2023.0.0 license: Apache-2.0 + license_family: APACHE purls: [] run_exports: {} size: 14112289 timestamp: 1787942886330 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-gpu-plugin-2026.0.0-hb56ce9e_1.conda - sha256: 720b87e1d5f1a10c577e040d4bf425072a978e925c6dfab8b1551bc848007c94 - md5: 26e8e92c90d1a22af6eac8e9507d9b8f - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libopenvino 2026.0.0 hb56ce9e_1 - - libstdcxx >=14 - - ocl-icd >=2.3.3,<3.0a0 - - pugixml >=1.15,<1.16.0a0 - - tbb >=2022.3.0 - license: Apache-2.0 - license_family: APACHE - purls: [] - run_exports: {} - size: 11402462 - timestamp: 1772727323957 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-gpu-plugin-2026.3.1-hf7e0547_0.conda sha256: 585be169dc07eb2e80f138e9bafec17000a90661b852c6b7050a31157adb4305 md5: c0833352f4c66f883f06f3895ac6e8f4 @@ -5561,27 +5307,11 @@ packages: - pugixml >=1.15,<1.16.0a0 - tbb >=2023.0.0 license: Apache-2.0 + license_family: APACHE purls: [] run_exports: {} size: 12169557 timestamp: 1787942925972 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-npu-plugin-2026.0.0-hb56ce9e_1.conda - sha256: df7eb2b23a1af38f2cd2281353309f2e2a04da1374ecedc7c6745c2a67ba617c - md5: 01ba8b179ac45b2b37fe2d4225dddcc7 - depends: - - __glibc >=2.17,<3.0.a0 - - level-zero >=1.28.2,<2.0a0 - - libgcc >=14 - - libopenvino 2026.0.0 hb56ce9e_1 - - libstdcxx >=14 - - pugixml >=1.15,<1.16.0a0 - - tbb >=2022.3.0 - license: Apache-2.0 - license_family: APACHE - purls: [] - run_exports: {} - size: 1994640 - timestamp: 1772727360780 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-npu-plugin-2026.3.1-hf7e0547_0.conda sha256: 20c79bfcf0e663dc780fd4a9b43f63f83911ded65f28829631aca4b6e128c48f md5: 8e2395729e3da9ae0333f6266b2e65c8 @@ -5594,27 +5324,11 @@ packages: - pugixml >=1.15,<1.16.0a0 - tbb >=2023.0.0 license: Apache-2.0 + license_family: APACHE purls: [] run_exports: {} size: 2848865 timestamp: 1787942959431 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-ir-frontend-2026.0.0-hd41364c_1.conda - sha256: 8e7356b0b80b3f180615e264694d6811d388b210155d419553ff64e42f78ffa0 - md5: aa002c4d343b01cdcc458c95cd071d1b - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libopenvino 2026.0.0 hb56ce9e_1 - - libstdcxx >=14 - - pugixml >=1.15,<1.16.0a0 - license: Apache-2.0 - license_family: APACHE - purls: [] - run_exports: - weak: - - libopenvino-ir-frontend >=2026.0.0,<2026.0.1.0a0 - size: 192778 - timestamp: 1772727380069 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-ir-frontend-2026.3.1-hc0229a9_0.conda sha256: b167b675ffcb14a5aacd7e9407161ce6af0d536fa3ee1cc8da3c72e5c191d1b4 md5: 84751393936b9d374e5d5f0e424bf162 @@ -5625,31 +5339,13 @@ packages: - libstdcxx >=15 - pugixml >=1.15,<1.16.0a0 license: Apache-2.0 + license_family: APACHE purls: [] run_exports: weak: - libopenvino-ir-frontend >=2026.3.1,<2026.3.2.0a0 size: 208005 timestamp: 1787942974327 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-onnx-frontend-2026.0.0-h7a07914_1.conda - sha256: 35a68214201e807bd9a31f94e618cb6a5385198e89eef46dde6c122cff77da58 - md5: 218084544c2e7e78e4b8877ec37b8cdb - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil * cxx17* - - libabseil >=20260107.1,<20260108.0a0 - - libgcc >=14 - - libopenvino 2026.0.0 hb56ce9e_1 - - libprotobuf >=6.33.5,<6.33.6.0a0 - - libstdcxx >=14 - license: Apache-2.0 - license_family: APACHE - purls: [] - run_exports: - weak: - - libopenvino-onnx-frontend >=2026.0.0,<2026.0.1.0a0 - size: 1860687 - timestamp: 1772727397981 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-onnx-frontend-2026.3.1-h09f0106_0.conda sha256: 5605cd2795cc8bba0cb9361c355be4957f31988677314fa566f3d39c86bc1631 md5: c0454189eadbc398ac8d758e1df348e1 @@ -5662,31 +5358,13 @@ packages: - libprotobuf >=7.35.1,<7.35.2.0a0 - libstdcxx >=15 license: Apache-2.0 + license_family: APACHE purls: [] run_exports: weak: - libopenvino-onnx-frontend >=2026.3.1,<2026.3.2.0a0 size: 2110112 timestamp: 1787942984929 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-paddle-frontend-2026.0.0-h7a07914_1.conda - sha256: cb37b717480207a66443a93d4342cf88210a74c0820fc0edd70e4fc791a64779 - md5: 74915e5e271ef76a89f711eff5959a75 - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil * cxx17* - - libabseil >=20260107.1,<20260108.0a0 - - libgcc >=14 - - libopenvino 2026.0.0 hb56ce9e_1 - - libprotobuf >=6.33.5,<6.33.6.0a0 - - libstdcxx >=14 - license: Apache-2.0 - license_family: APACHE - purls: [] - run_exports: - weak: - - libopenvino-paddle-frontend >=2026.0.0,<2026.0.1.0a0 - size: 684224 - timestamp: 1772727417276 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-paddle-frontend-2026.3.1-h09f0106_0.conda sha256: aed4f80e8049e1d887debfa7a202144614a735b72d123f0b65dde70bf19e5968 md5: c6217da00ade21420bf17b7763ad73ae @@ -5699,28 +5377,13 @@ packages: - libprotobuf >=7.35.1,<7.35.2.0a0 - libstdcxx >=15 license: Apache-2.0 + license_family: APACHE purls: [] run_exports: weak: - libopenvino-paddle-frontend >=2026.3.1,<2026.3.2.0a0 size: 691738 timestamp: 1787942997610 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-pytorch-frontend-2026.0.0-hecca717_1.conda - sha256: 086469e5cd8bfde48975fe8641a7d6924e3da00d75dd06c99e03a78df03a0568 - md5: 559ef86008749861a53025f669004f18 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libopenvino 2026.0.0 hb56ce9e_1 - - libstdcxx >=14 - license: Apache-2.0 - license_family: APACHE - purls: [] - run_exports: - weak: - - libopenvino-pytorch-frontend >=2026.0.0,<2026.0.1.0a0 - size: 1185558 - timestamp: 1772727435039 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-pytorch-frontend-2026.3.1-ha623fbf_0.conda sha256: 404db8ced216419411751def33c194809fea14e888f1e516cad1c148b870f22f md5: 1e50f2163f66ea9ccd07dc95856bad07 @@ -5730,32 +5393,13 @@ packages: - libopenvino 2026.3.1 hf7e0547_0 - libstdcxx >=15 license: Apache-2.0 + license_family: APACHE purls: [] run_exports: weak: - libopenvino-pytorch-frontend >=2026.3.1,<2026.3.2.0a0 size: 1246126 timestamp: 1787943008245 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-frontend-2026.0.0-h78e8023_1.conda - sha256: 3a9a404bc9fd39e7395d49f4bd8facb58a01a31aeceabe8723a9d4f8eb5cc381 - md5: fb20f4234bc0e29af1baa13d35e36785 - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil * cxx17* - - libabseil >=20260107.1,<20260108.0a0 - - libgcc >=14 - - libopenvino 2026.0.0 hb56ce9e_1 - - libprotobuf >=6.33.5,<6.33.6.0a0 - - libstdcxx >=14 - - snappy >=1.2.2,<1.3.0a0 - license: Apache-2.0 - license_family: APACHE - purls: [] - run_exports: - weak: - - libopenvino-tensorflow-frontend >=2026.0.0,<2026.0.1.0a0 - size: 1257870 - timestamp: 1772727453738 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-frontend-2026.3.1-h9a43043_0.conda sha256: 4b61c13dfe3e0112b44df2789c15d53d3f224c17b866f84db46140ac7b36e64a md5: c9352191bb377298f1d4eefa31529a6a @@ -5769,28 +5413,13 @@ packages: - libstdcxx >=15 - snappy >=1.2.2,<1.3.0a0 license: Apache-2.0 + license_family: APACHE purls: [] run_exports: weak: - libopenvino-tensorflow-frontend >=2026.3.1,<2026.3.2.0a0 size: 1301912 timestamp: 1787943019939 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-lite-frontend-2026.0.0-hecca717_1.conda - sha256: e7cee37c92ed0b62c0458c13937b6ad66319f1879f236a31c3a67391a999f429 - md5: 0f0281435478b981f672a44d0029018c - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libopenvino 2026.0.0 hb56ce9e_1 - - libstdcxx >=14 - license: Apache-2.0 - license_family: APACHE - purls: [] - run_exports: - weak: - - libopenvino-tensorflow-lite-frontend >=2026.0.0,<2026.0.1.0a0 - size: 456585 - timestamp: 1772727473378 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-lite-frontend-2026.3.1-ha623fbf_0.conda sha256: 007448445d4a54d6b049e8a0d118b26a5f18260fa469b28853b231623fe9c7cb md5: 3d137fc391f46e636ca606b442a46e11 @@ -5800,6 +5429,7 @@ packages: - libopenvino 2026.3.1 hf7e0547_0 - libstdcxx >=15 license: Apache-2.0 + license_family: APACHE purls: [] run_exports: weak: @@ -5834,24 +5464,6 @@ packages: - libpciaccess >=0.19,<0.20.0a0 size: 30070 timestamp: 1785971678815 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libplacebo-7.360.1-h9eeb4b2_0.conda - sha256: 26cbbd3d7b91801826c779c3f7e87d071856d5cbe3d55b22777ca0d984fb02ed - md5: e6324dfe6c02e0736bb9235f8ef3c8a6 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - libdovi >=3.3.2,<4.0a0 - - libvulkan-loader >=1.4.341.0,<2.0a0 - - lcms2 >=2.19,<3.0a0 - - shaderc >=2026.2,<2026.3.0a0 - license: LGPL-2.1-or-later - purls: [] - run_exports: - weak: - - libplacebo >=7.360.1,<7.361.0a0 - size: 549348 - timestamp: 1777835950707 - conda: https://conda.anaconda.org/conda-forge/linux-64/libplacebo-7.360.1-hc50b9dd_1.conda sha256: 7fa90c06b81559cb56ea7806a6696fb4902a1acc20bbaff1bd3a4a75b3ffa0d5 md5: 4a750e2ae0d52d003bb1e3421581585e @@ -5884,41 +5496,23 @@ packages: - libpng >=1.6.58,<1.7.0a0 size: 316643 timestamp: 1786616563127 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-18.6-h9d76c99_0.conda - sha256: b1eb210c180fda9c445b11cba1286ec250ce2c2a85ccb0551a4ed5423df51e68 - md5: 72e019c04ed02a179da38c56965802d1 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-18.6-h9d76c99_1.conda + sha256: f858ecc9bcca455449f95e12a61f01264c239e6a176d86e09ea3b85bf0be4ff7 + md5: 06b25748479ce9516502e28332707f11 depends: - __glibc >=2.17,<3.0.a0 - icu >=78.3,<79.0a0 - krb5 >=1.22.2,<1.23.0a0 - libgcc >=15 - openldap >=2.6.13,<2.7.0a0 - - openssl >=3.5.7,<4.0a0 - license: PostgreSQL - purls: [] - run_exports: - weak: - - libpq >=18.6,<19.0a0 - size: 2719680 - timestamp: 1786641133110 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-6.33.5-h538a264_2.conda - sha256: eb296398f05e3c1d0df2b616e7dd58b1d764540b5241ecf796480cdf82b29d2a - md5: 0f310965b9db4ef4ed9cd8a1672d9404 - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil * cxx17* - - libabseil >=20260107.1,<20260108.0a0 - - libgcc >=14 - - libstdcxx >=14 - - libzlib >=1.3.2,<2.0a0 - license: BSD-3-Clause - license_family: BSD + - openssl >=3.5.8,<4.0a0 + license: PostgreSQL purls: [] run_exports: weak: - - libprotobuf >=6.33.5,<6.33.6.0a0 - size: 3668552 - timestamp: 1783168697169 + - libpq >=18.6,<19.0a0 + size: 2726898 + timestamp: 1788538987316 - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-7.35.1-h622638d_3.conda sha256: 37c51fbc936a6bb8bf5f67c8f056edacaaa41e8603738bc8a4dee186292bb114 md5: fd307b61cceb36fdca38e1718bdb2893 @@ -5953,6 +5547,32 @@ packages: - libpsl >=0.23.1,<0.24.0a0 size: 72519 timestamp: 1786970753847 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpython-3.12.14-h0c77377_3_cpython.conda + build_number: 3 + sha256: 6be16a4906d83eb8e9e04375d524f339f426a847cffd294f1ceb0611988dc17a + md5: d247b7632f09324c11f24b5270361385 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=15 + - libstdcxx >=15 + license: Python-2.0 + purls: [] + run_exports: {} + size: 8770625 + timestamp: 1788392466381 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpython-3.13.15-hdc7f604_103_cp313.conda + build_number: 103 + sha256: a25db25aad6cbf53e523e1f310713f31372932d5db655f1f2d62a204c7cdf1d7 + md5: e64cd43bbd07afafbc458138e979c851 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=15 + - libstdcxx >=15 + license: Python-2.0 + purls: [] + run_exports: {} + size: 9711017 + timestamp: 1788387797958 - conda: https://conda.anaconda.org/conda-forge/linux-64/libraw-0.22.2-h074291d_0.conda sha256: fa3ccb18cf22f8ac94ec4f6bfcc9fd5805bf7af11cf56bf19c27fb051b36dd6a md5: a11f92bd6dd6721cce01564c7c9fdb25 @@ -6016,20 +5636,20 @@ packages: - librsvg >=2.62.2,<3.0a0 size: 3507905 timestamp: 1779414238375 -- conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.62.3-h4c96295_0.conda - sha256: 5571bd8239d71961d4e3ce972f865b3ea95a91ce0b53d5749fe2dd24254ddbda - md5: 492c8d9b1c564c2e948b6cb4ba0f8261 +- conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.62.3-ha427ee3_1.conda + sha256: 9cd8f95157cd442b463649117c4814f1d8488a8b70b31ac926860bc43eb3685a + md5: d357bae89810ca378fdc9e1cf02a7a54 depends: + - libgcc >=15 - __glibc >=2.17,<3.0.a0 - - cairo >=1.18.4,<2.0a0 - - fontconfig >=2.18.0,<3.0a0 + - fontconfig >=2.18.3,<3.0a0 - fonts-conda-ecosystem - - gdk-pixbuf >=2.44.6,<3.0a0 - - harfbuzz >=14.2.0 - - libgcc >=14 - - libglib >=2.88.1,<3.0a0 - - libxml2-16 >=2.14.6 - - pango >=1.56.4,<2.0a0 + - libxml2-16 >=2.15.4 + - pango >=1.58.2,<2.0a0 + - cairo >=1.18.6,<2.0a0 + - gdk-pixbuf >=2.44.8,<3.0a0 + - libharfbuzz >=14.5.0 + - libglib >=2.90.0,<3.0a0 constrains: - __glibc >=2.17 license: LGPL-2.1-or-later @@ -6037,8 +5657,8 @@ packages: run_exports: weak: - librsvg >=2.62.3,<3.0a0 - size: 3476570 - timestamp: 1780450632624 + size: 4688088 + timestamp: 1790093958697 - conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hbc6d301_3.conda sha256: 3503121a77d76e33f668916b69d4b20cb6a21f62aa4351d1506271ae9d184c61 md5: a2bc10137c845d9c45067f3c53aad6e5 @@ -6059,40 +5679,19 @@ packages: - libsndfile >=1.2.2,<1.3.0a0 size: 387942 timestamp: 1786538522787 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc7d488a_2.conda - sha256: 57cb5f92110324c04498b96563211a1bca6a74b2918b1e8df578bfed03cc32e4 - md5: 067590f061c9f6ea7e61e3b2112ed6b3 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.22-hebe6cf0_3.conda + sha256: 2f73c05a1ad07e5a2cb43f0b3759cb04505f0c8bef30b43c9db0caa50218bfd8 + md5: 2d14868d78e969226e4ba07444c0dd25 depends: - __glibc >=2.17,<3.0.a0 - - lame >=3.100,<3.101.0a0 - - libflac >=1.5.0,<1.6.0a0 - - libgcc >=14 - - libogg >=1.3.5,<1.4.0a0 - - libopus >=1.5.2,<2.0a0 - - libstdcxx >=14 - - libvorbis >=1.3.7,<1.4.0a0 - - mpg123 >=1.32.9,<1.33.0a0 - license: LGPL-2.1-or-later - license_family: LGPL - purls: [] - run_exports: - weak: - - libsndfile >=1.2.2,<1.3.0a0 - size: 355619 - timestamp: 1765181778282 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.22-hebe6cf0_2.conda - sha256: 7454c6a7cf27033757f2895bc5e3941fe27604506edd62cf6bc00e50ab015a43 - md5: 42c585f153c17b790cd01f01553d24a1 - depends: - libgcc >=15 - - __glibc >=2.17,<3.0.a0 license: ISC purls: [] run_exports: weak: - libsodium >=1.0.22,<1.0.23.0a0 - size: 269985 - timestamp: 1787225747011 + size: 270970 + timestamp: 1789425325397 - conda: https://conda.anaconda.org/conda-forge/linux-64/libsolv-0.7.39-h72ddc62_1.conda sha256: c55a7242db95609b6f0b56b49ef2f5c1796060c0a221bbca3d61fbe19bf05add md5: f5ac3845eb3e5a6c74100e3a7730c110 @@ -6140,58 +5739,45 @@ packages: - libssh2 >=1.11.1,<2.0a0 size: 306045 timestamp: 1786713107897 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-16.2.0-h934c35e_4.conda - sha256: 40b792b0186c1e8859280a1f6f19a54fc50a11b32724fc7b637009c1a9bd302b - md5: 2f2ef0d96de5bdd8c1270ff22fdf9352 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-16.2.0-h934c35e_5.conda + sha256: 38cadde30fad8f7c101f9eec79f60bf03fc99310c7195d23f8b30832516d666f + md5: 75b43a2912a0354204696708e4f34b8d depends: - __glibc >=2.17,<3.0.a0 - - libgcc 16.2.0 ha9f2e26_4 + - libgcc 16.2.0 ha9f2e26_5 constrains: - - libstdcxx-ng ==16.2.0=*_4 + - libstdcxx-ng ==16.2.0=*_5 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] run_exports: {} - size: 6613148 - timestamp: 1787618704262 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-16.2.0-hdf11a46_4.conda - sha256: 4cdebd87b76cf53a58a08ebd6d15336daa79c5f0aa34d83a895ac503c0203632 - md5: de0dceacf3e33c5fc88e167885dc8274 + size: 6618916 + timestamp: 1789485826390 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-16.2.0-hdf11a46_5.conda + sha256: 855cee8f4b7abe06dc5918a66e0009492964926d5f5d6a033438dd6cab4e91e4 + md5: c37fb00cb15b16cf1601914d68a509ea depends: - - libstdcxx 16.2.0 h934c35e_4 + - libstdcxx 16.2.0 h934c35e_5 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] run_exports: strong: - libstdcxx - size: 28459 - timestamp: 1787618737021 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.13-h084b8d7_1.conda - sha256: 2293884d59cf0436c37fc0a4bad71011a8de2a6913610d1c701a7703377c1f75 - md5: ea0da9c20bbb221b530810c3c68bbe62 + size: 28561 + timestamp: 1789485853984 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-261.3-h26e0ef7_1.conda + sha256: c98e646ae3807a04f2607cc61392d0b055e0d47cc10b78b4f5d3703b9350af07 + md5: 3b6703a55a108ba956a1813cb1b41931 depends: - __glibc >=2.17,<3.0.a0 - libcap >=2.78,<2.79.0a0 - - libgcc >=14 + - libgcc >=15 license: LGPL-2.1-or-later purls: [] run_exports: {} - size: 493022 - timestamp: 1780084748140 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libtasn1-4.21.0-hb03c661_1.conda - sha256: 566a9d39a9a89ee0ef7cb8ab36de0ab9f01b74039347cab727179da32fb44168 - md5: e9268f0d59cc7559d0e910b402cd437a - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - license: LGPL-2.1-or-later - purls: [] - run_exports: - weak: - - libtasn1 >=4.21.0,<5.0a0 - size: 119260 - timestamp: 1785905789773 + size: 587155 + timestamp: 1790045351740 - conda: https://conda.anaconda.org/conda-forge/linux-64/libtheora-1.1.1-h4ab18f5_1006.conda sha256: 50c8cd416ac8425e415264de167b41ae8442de22a91098dfdd993ddbf9f13067 md5: 553281a034e9cf8693c9df49f6c78ea1 @@ -6230,30 +5816,18 @@ packages: - libtiff >=4.7.2,<4.8.0a0 size: 459753 timestamp: 1787755584172 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libudev1-257.13-h084b8d7_1.conda - sha256: 287d05680e49eea51b8145fbf34bc213c0618b04f32e450e9da5d715e5134e38 - md5: 89e5671a076d99516a6acd72a35b1640 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libudev1-261.3-h26e0ef7_1.conda + sha256: 635057e7321d3204bd243c5db21d7265662479a563bc44031a6e6a777837f5b6 + md5: 5aba206dc07c6fc94300ddec22cc1323 depends: - __glibc >=2.17,<3.0.a0 - libcap >=2.78,<2.79.0a0 - - libgcc >=14 + - libgcc >=15 license: LGPL-2.1-or-later purls: [] run_exports: {} - size: 145969 - timestamp: 1780084753104 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libunistring-0.9.10-h7f98852_0.tar.bz2 - sha256: e88c45505921db29c08df3439ddb7f771bbff35f95e7d3103bf365d5d6ce2a6d - md5: 7245a044b4a1980ed83196176b78b73a - depends: - - libgcc-ng >=9.3.0 - license: GPL-3.0-only OR LGPL-3.0-only - purls: [] - run_exports: - weak: - - libunistring >=0,<1.0a0 - size: 1433436 - timestamp: 1626955018689 + size: 200833 + timestamp: 1790045358193 - conda: https://conda.anaconda.org/conda-forge/linux-64/libunwind-1.8.3-h65a8314_0.conda sha256: 71c8b9d5c72473752a0bb6e91b01dd209a03916cb71f36cc6a564e3a2a132d7a md5: e179a69edd30d75c0144d7a380b88f28 @@ -6298,20 +5872,20 @@ packages: - libusb >=1.0.29,<2.0a0 size: 89551 timestamp: 1748856210075 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.2-h5347b49_0.conda - sha256: 9b1bdce27a7e31f7d241aeecff67a1f3101d52a2b1e33ccc2cdf2613072bf81f - md5: 01bb81d12c957de066ea7362007df642 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.3-hcfc3c73_0.conda + sha256: aa58bbba56644ffd062a4a9b358782c5eb7560ccead2ab8f7c5c6ede0a7d33a6 + md5: 74a0a409d9f4561265d36b789d3f398a depends: - - libgcc >=14 - __glibc >=2.17,<3.0.a0 + - libgcc >=15 license: BSD-3-Clause license_family: BSD purls: [] run_exports: weak: - - libuuid >=2.42.2,<3.0a0 - size: 40017 - timestamp: 1781625522462 + - libuuid >=2.42.3,<3.0a0 + size: 39998 + timestamp: 1788347719520 - conda: https://conda.anaconda.org/conda-forge/linux-64/libva-2.24.1-hb83e432_1.conda sha256: ce7fbe2855257467196613b9fa2bdedb36d4fc3419c43804e52cfe9eb094a35e md5: c3e6df2790fff34ba708722052f02c0e @@ -6371,21 +5945,6 @@ packages: - libvpl >=2.16.0,<2.17.0a0 size: 287992 timestamp: 1772980546550 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libvpx-1.15.2-hd2095e1_1.conda - sha256: fa57017db022e72a4bf7f0136998340fff87a1f1304b4f6c91d9947ff2fdc9e4 - md5: dc42f5b888d93c7bbc6d0896be967e06 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=15 - - libstdcxx >=15 - license: BSD-3-Clause - license_family: BSD - purls: [] - run_exports: - weak: - - libvpx >=1.15.2,<1.16.0a0 - size: 1119517 - timestamp: 1787250109176 - conda: https://conda.anaconda.org/conda-forge/linux-64/libvpx-1.17.0-hd2095e1_0.conda sha256: 26ad2b8168d119f1bb0b1ecae0ed7a258acd09c06887168b31dc020e9eba58af md5: 8762883a9fae4c96eabcdfcec145149f @@ -6500,34 +6059,34 @@ packages: - libxkbfile >=1.2.0,<2.0a0 size: 87066 timestamp: 1778169480942 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.3-hca6bf5a_1.conda - sha256: 087d4de023f22d6a28b9e1b818961dd41e9bda6e9793590600ff16ca150bf9cb - md5: 20e4d67ec908f0405124f11612c48305 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.4-hf3af7cc_0.conda + sha256: 9a1685c8d8b8488cd7882a9cd6e673e687211ca763ebbcd1e91b6f594eeadc45 + md5: b7545c57a73a51d72aa6eee5695cf051 depends: - __glibc >=2.17,<3.0.a0 - icu >=78.3,<79.0a0 - - libgcc >=14 + - libgcc >=15 - libiconv >=1.18,<2.0a0 - liblzma >=5.8.3,<6.0a0 - libzlib >=1.3.2,<2.0a0 constrains: - - libxml2 2.15.3 + - libxml2 2.15.4 license: MIT license_family: MIT purls: [] run_exports: {} - size: 559721 - timestamp: 1787237579170 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.3-h49c6c72_1.conda - sha256: a16a576a5844a3a0e1cdfc5e162b9fe9c64dccf6a93f44c293bb42851aebe2b4 - md5: 2d34cdb31014cbc8f1e9384c89ede0a5 + size: 569196 + timestamp: 1788635197456 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.4-h7df9aa5_0.conda + sha256: 053d85821ce5e36b7ce03faea5930382f6af695df9e2cd68e5d8d273072d1551 + md5: ea192d1ef556bf1d55de4acb8c0f5b65 depends: - __glibc >=2.17,<3.0.a0 - icu >=78.3,<79.0a0 - - libgcc >=14 + - libgcc >=15 - libiconv >=1.18,<2.0a0 - liblzma >=5.8.3,<6.0a0 - - libxml2-16 2.15.3 hca6bf5a_1 + - libxml2-16 2.15.4 hf3af7cc_0 - libzlib >=1.3.2,<2.0a0 license: MIT license_family: MIT @@ -6535,42 +6094,42 @@ packages: run_exports: weak: - libxml2 - - libxml2-16 >=2.15.3 - size: 46203 - timestamp: 1787237584107 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.43-h711ed8c_1.conda - sha256: 0694760a3e62bdc659d90a14ae9c6e132b525a7900e59785b18a08bb52a5d7e5 - md5: 87e6096ec6d542d1c1f8b33245fe8300 + - libxml2-16 >=2.15.4 + size: 47077 + timestamp: 1788635202698 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.45-h8e12856_1.conda + sha256: 3beb51b5ce8d2e0690b8517d3d955972d502cfbe2899279cbb9cbb6ff134d360 + md5: 5c8ce6af1772fcfc2b86d17b825abc8e depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=14 + - libgcc >=15 - libxml2 - - libxml2-16 >=2.14.6 + - libxml2-16 >=2.15.3 license: MIT license_family: MIT purls: [] run_exports: weak: - - libxslt >=1.1.43,<2.0a0 - size: 245434 - timestamp: 1757963724977 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libzip-1.11.2-h6991a6a_0.conda - sha256: 991e7348b0f650d495fb6d8aa9f8c727bdf52dabf5853c0cc671439b160dce48 - md5: a7b27c075c9b7f459f1c022090697cba + - libxslt >=1.1.45,<2.0a0 + size: 250314 + timestamp: 1788534852474 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzip-1.11.4-h6008cf6_0.conda + sha256: d89ef092620b9bf4e82871870c5a08aecf2a7fc441b23b37cae9a62e30ed670c + md5: 05adf41813469e50f2103db6eba38edb depends: - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - libgcc >=15 + - libzlib >=1.3.2,<2.0a0 + - openssl >=3.5.8,<4.0a0 license: BSD-3-Clause license_family: BSD purls: [] run_exports: weak: - - libzip >=1.11.2,<2.0a0 - size: 109043 - timestamp: 1730442108429 + - libzip >=1.11.4,<2.0a0 + size: 112892 + timestamp: 1789913035799 - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_3.conda sha256: eb8a0db0aa570124f7d2a93d7c7f596e3390df5e047818d873baad32985fc736 md5: 0de0122d9570a8ab637c6b73db268389 @@ -6586,40 +6145,40 @@ packages: - libzlib >=1.3.2,<2.0a0 size: 63713 timestamp: 1785362952714 -- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-4.4.5-py312h3d67a73_1.conda - sha256: e8ae9141c7afcc95555fca7ff5f91d7a84f094536715211e750569fd4bb2caa4 - md5: a669145a2c834895bdf3fcba1f1e5b9c +- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-4.4.5-py312hc6a72db_2.conda + sha256: 3e840f3334eb0b73056c037d7e885c84dc6f1dd77d7130ac51fd51aa1fb33d88 + md5: a98e678cb247b751c1148fdc9deb5189 depends: - python - lz4-c + - libgcc >=15 - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - python_abi 3.12.* *_cp312 - lz4-c >=1.10.0,<1.11.0a0 + - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/lz4?source=hash-mapping + - pkg:pypi/lz4?source=compressed-mapping run_exports: {} - size: 44154 - timestamp: 1765026394687 -- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-4.4.5-py313h28739b2_1.conda - sha256: cbc82f4fa7587376c038d2f0471a73efa7ade4439857b04a0cc839262f1de6e5 - md5: e69ad33075938ba81e43311da86b809c + size: 43863 + timestamp: 1789242260635 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-4.4.5-py313h557dd98_2.conda + sha256: 676801cce09062d52c2fad82eaafb6e04fde55330803a81f0d91c363b4e6f396 + md5: de26b919ee6e2b485e455882eb84b99d depends: - python - lz4-c - - libgcc >=14 - __glibc >=2.17,<3.0.a0 - - python_abi 3.13.* *_cp313 + - libgcc >=15 - lz4-c >=1.10.0,<1.11.0a0 + - python_abi 3.13.* *_cp313 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/lz4?source=hash-mapping + - pkg:pypi/lz4?source=compressed-mapping run_exports: {} - size: 44861 - timestamp: 1765026393230 + size: 44532 + timestamp: 1789242268010 - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-hee9eb32_2.conda sha256: b8c0e930183e6b7f83cd35ace102f2b8c2f0faae41dc05255dc72f247dfc556a md5: e38a3253d72ab07d471483f24947e2a2 @@ -6816,21 +6375,6 @@ packages: run_exports: {} size: 201885 timestamp: 1788033935395 -- conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-h8142553_0.conda - sha256: 72393d525761389d0225534d20f4cd917e255704f337f84939b74464d9bc6acb - md5: 0dae03fd088c1ca13a8f6c9e5508e36c - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - license: LGPL-2.1-only - license_family: LGPL - purls: [] - run_exports: - weak: - - mpg123 >=1.32.9,<1.33.0a0 - size: 487458 - timestamp: 1786190190098 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.33.7-h877a99e_1.conda sha256: 5afc3265622de6663f4179bc9023e1c1cac06b9c8620a0bf54aa0a0c232cf15a md5: e7cc06dba8d5fb83d9ae033225ffa458 @@ -6846,24 +6390,25 @@ packages: - mpg123 >=1.33.7,<1.34.0a0 size: 491351 timestamp: 1787311495359 -- conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.2.2-py312h9be0db6_1.conda - sha256: 79266ea6c816d490d6b9f19beb14a683520d8f70df7113a5c18293c20c53fdbf - md5: 371a80205eebd8c13fcb0218c96a2d9c +- conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.2.2-py312h9be0db6_2.conda + sha256: 147ba1c9ebaeba03c95c1ac018523978c8a07387e2413799b09b69017e976b58 + md5: e9600e8080bf57f25ad2e9f78564c895 depends: - python + - __glibc >=2.17,<3.0.a0 - libstdcxx >=15 - libgcc >=15 - - __glibc >=2.17,<3.0.a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 + license_family: APACHE purls: - pkg:pypi/msgpack?source=compressed-mapping run_exports: {} - size: 114260 - timestamp: 1788170252387 -- conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.2.2-py313h2551ef2_1.conda - sha256: 8e05c6e9fd8d35896f109d1605a0335a1bd48580d0fe9d2e1a6c51ab8b9df6ed - md5: 24a1a51e4af587338f42ecc74c9c9e85 + size: 114404 + timestamp: 1788525103553 +- conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.2.2-py313h2551ef2_2.conda + sha256: 902cc244b567552538ca7817673f302c8000b75cb72a46c62f70ad4c05c32462 + md5: 10eabac2cb17d77ce66a2d46890127bf depends: - python - __glibc >=2.17,<3.0.a0 @@ -6871,11 +6416,12 @@ packages: - libgcc >=15 - python_abi 3.13.* *_cp313 license: Apache-2.0 + license_family: APACHE purls: - pkg:pypi/msgpack?source=compressed-mapping run_exports: {} - size: 114797 - timestamp: 1788170265724 + size: 114896 + timestamp: 1788525095321 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.7.1-py312h8a5da7c_0.conda sha256: 0da7e7f4e69bfd6c98eff92523e93a0eceeaec1c6d503d4a4cd0af816c3fe3dc md5: 17c77acc59407701b54404cfd3639cac @@ -6920,9 +6466,9 @@ packages: - muparser >=2.3.4,<2.4.0a0 size: 216720 timestamp: 1668542554576 -- conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-2.3.1-py312h89dfda2_0.conda - sha256: a847cc47340a05221f801c62327e6d75d5745caa6d5a9f922338b9d2177def39 - md5: ff6c8866bb34fa7c26ca9303fc2d5f3b +- conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-2.3.1-py312h1b36aeb_2.conda + sha256: b11e1af6e0dd18d4f31f61da627d9877cbf5b6edb1ed538e036b290219c5d34a + md5: 614f4a808b6c50516d423172d231dc10 depends: - ast-serialize >=0.6.0,<1.0.0 - mypy_extensions >=1.0.0 @@ -6939,11 +6485,11 @@ packages: purls: - pkg:pypi/mypy?source=compressed-mapping run_exports: {} - size: 23349566 - timestamp: 1786887238291 -- conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-2.3.1-py313h7f1de9a_0.conda - sha256: 08f6d8107c7f78464fc10aed7de881a1e15c5d22d4ff0339fa6c3c99d01f3c62 - md5: ce180eee4e4ab55a96a06644f9f35152 + size: 23349706 + timestamp: 1790009239088 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-2.3.1-py313hd42f317_2.conda + sha256: 47926e1a0566276964687f85b8cff3161e7955241c93fc2140d30f078e328558 + md5: cbcb9f9dde78754a0f20dcd58a7484e9 depends: - ast-serialize >=0.6.0,<1.0.0 - mypy_extensions >=1.0.0 @@ -6952,16 +6498,16 @@ packages: - python-librt >=0.13.0 - typing_extensions >=4.6.0 - psutil >=4.0 - - __glibc >=2.17,<3.0.a0 - libgcc >=15 + - __glibc >=2.17,<3.0.a0 - python_abi 3.13.* *_cp313 license: MIT license_family: MIT purls: - - pkg:pypi/mypy?source=hash-mapping + - pkg:pypi/mypy?source=compressed-mapping run_exports: {} - size: 23339534 - timestamp: 1786887272864 + size: 23339703 + timestamp: 1790009166852 - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_1.conda sha256: 5d46557214ed184381dafe835b7c94a474a1c3b307a08a250b1ea4779b44ffb3 md5: ee6c0cd80a60961a1f48aa3e0b91f986 @@ -6975,20 +6521,6 @@ packages: - ncurses >=6.6,<7.0a0 size: 911196 timestamp: 1786355078102 -- conda: https://conda.anaconda.org/conda-forge/linux-64/nettle-3.10.1-h5ef0d04_1.conda - sha256: 9f08df8a8d6660c4c5d8c810da2da2a5b099cd00ca30e1174be6d8df27a82120 - md5: 7b8f8d1226c95f61a51436a657c84770 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - gmp >=6.3.0,<7.0a0 - license: GPL-2.0-or-later OR LGPL-3.0-or-later - purls: [] - run_exports: - weak: - - nettle >=3.10.1,<3.11.0a0 - size: 1052171 - timestamp: 1787065085312 - conda: https://conda.anaconda.org/conda-forge/linux-64/nh3-0.3.7-py310h300b7de_0.conda noarch: python sha256: 407b70c464def7feb261a9ad79add3db6ea978b1508617adeab790ad571d1705 @@ -7187,24 +6719,24 @@ packages: - openh264 >=2.6.0,<2.6.1.0a0 size: 737036 timestamp: 1787273914103 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-h55fea9a_0.conda - sha256: 3900f9f2dbbf4129cf3ad6acf4e4b6f7101390b53843591c53b00f034343bc4d - md5: 11b3379b191f63139e29c0d19dee24cd +- conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-heb1ab33_2.conda + sha256: 131688a88bea8da92fe418c4558c5073435e2848911bc4c836c3a9dd5994b4aa + md5: a3f3ac7a68d01c198e276dbb99e62032 depends: + - libgcc >=15 - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libpng >=1.6.50,<1.7.0a0 - - libstdcxx >=14 - - libtiff >=4.7.1,<4.8.0a0 - - libzlib >=1.3.1,<2.0a0 + - libstdcxx >=15 + - libtiff >=4.7.2,<4.8.0a0 + - libzlib >=1.3.2,<2.0a0 + - libpng >=1.6.58,<1.7.0a0 license: BSD-2-Clause license_family: BSD purls: [] run_exports: weak: - openjpeg >=2.5.4,<3.0a0 - size: 355400 - timestamp: 1758489294972 + size: 391242 + timestamp: 1788425045145 - conda: https://conda.anaconda.org/conda-forge/linux-64/openjph-0.31.0-h8d634f6_0.conda sha256: 3c7a4118c678c43952ea10183388f175a4bcee16a1c61d90dab2fbdafddc45d7 md5: 49ca947333c62d5985a88cbdd8f59468 @@ -7254,32 +6786,17 @@ packages: - openssl >=3.6.4,<4.0a0 size: 3202955 timestamp: 1787698780103 -- conda: https://conda.anaconda.org/conda-forge/linux-64/p11-kit-0.26.5-h8d769aa_2.conda - sha256: 16bcb050de08f5423b0e898dea9eb08a66ff93c1b347233137ffc17b2ec7e66c - md5: aeb4e6fe52e15c22f44f73476510c005 - depends: - - __glibc >=2.17,<3.0.a0 - - libffi >=3.7.0,<3.8.0a0 - - libgcc >=15 - - libtasn1 >=4.21.0,<5.0a0 - license: MIT - purls: [] - run_exports: - weak: - - p11-kit >=0.26.5,<0.27.0a0 - size: 3945183 - timestamp: 1788196153960 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-3.0.5-py312h8ecdadd_1.conda - sha256: 393e529c0574c020a9b790275af10ff35e21cbb4e12740888bd3f214f2f07034 - md5: 85eb29ade84d1bd97be5ec55607efb00 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-3.0.6-np2py312h91ec553_0.conda + sha256: a4c045408aea6536148307158fb873d8d8f5f1295931ea12494997eae778b096 + md5: 2143c2cef115b49a934d526f7da91696 depends: - python - numpy >=1.26.0 - python-dateutil >=2.8.2 + - libgcc >=15 - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - numpy >=1.23,<3 + - libstdcxx >=15 + - numpy >=1.25,<3 - python_abi 3.12.* *_cp312 constrains: - adbc-driver-postgresql >=1.2.0 @@ -7323,21 +6840,21 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/pandas?source=hash-mapping + - pkg:pypi/pandas?source=compressed-mapping run_exports: {} - size: 14936796 - timestamp: 1785276227779 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-3.0.5-py313hbfd7664_1.conda - sha256: 3fc0e22d9c4338b2becb6a2cce230a57f94730dfb6d3be395089084411c458e3 - md5: a78866632a871f274cd2015bccdd2ca0 + size: 14976520 + timestamp: 1789803399961 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-3.0.6-np2py313h4900a6c_0.conda + sha256: 8a4ee0d733e2c4be00ad3c80a3bc97a28837f611e45e7f4384d061f392827841 + md5: 871596bf7cdadf8ccff03437e9b92173 depends: - python - numpy >=1.26.0 - python-dateutil >=2.8.2 - - libgcc >=14 - __glibc >=2.17,<3.0.a0 - - libstdcxx >=14 - - numpy >=1.23,<3 + - libgcc >=15 + - libstdcxx >=15 + - numpy >=1.25,<3 - python_abi 3.13.* *_cp313 constrains: - adbc-driver-postgresql >=1.2.0 @@ -7381,10 +6898,10 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/pandas?source=hash-mapping + - pkg:pypi/pandas?source=compressed-mapping run_exports: {} - size: 15049335 - timestamp: 1785276231848 + size: 15128892 + timestamp: 1789803430881 - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hda50119_1.conda sha256: 315b52bfa6d1a820f4806f6490d472581438a28e21df175290477caec18972b0 md5: d53ffc0edc8eabf4253508008493c5bc @@ -7409,21 +6926,21 @@ packages: - pango >=1.56.4,<2.0a0 size: 458036 timestamp: 1774281947855 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.58.2-hda50119_0.conda - sha256: 48f27a6c3e4062bc09dafe9c7f6b288c5de5655e81095ab7f1aad920b2163b7b - md5: 6a2822aaf9a34ac3708904a47ff3dd7e +- conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.58.2-h7bb47b9_1.conda + sha256: 47c3d25a0bdb0ae50627f9ef2a10345fabfabe0e6620cbcff04e589a644542d3 + md5: 0b889b1c6b472d215d6332c6b195589c depends: - __glibc >=2.17,<3.0.a0 - cairo >=1.18.4,<2.0a0 - - fontconfig >=2.18.2,<3.0a0 + - fontconfig >=2.18.3,<3.0a0 - fonts-conda-ecosystem - fribidi >=1.0.16,<2.0a0 - libexpat >=2.8.1,<3.0a0 - libfreetype >=2.14.3 - libfreetype6 >=2.14.3 - - libgcc >=14 + - libgcc >=15 - libglib >=2.88.3,<3.0a0 - - libharfbuzz >=14.3.0 + - libharfbuzz >=14.4.0 - libpng >=1.6.58,<1.7.0a0 - libzlib >=1.3.2,<2.0a0 license: LGPL-2.1-or-later @@ -7431,8 +6948,8 @@ packages: run_exports: weak: - pango >=1.58.2,<2.0a0 - size: 469916 - timestamp: 1786107384537 + size: 471814 + timestamp: 1788490377724 - conda: https://conda.anaconda.org/conda-forge/linux-64/patch-2.8-h280c20c_1003.conda sha256: 5d48e3826015befd1453f015870bd1db1cdcfe29e93001cb2d125b6f7c1da095 md5: 8d1a1da6a002b359af180dedd94a7a07 @@ -7474,54 +6991,54 @@ packages: - pcre2 >=10.47,<10.48.0a0 size: 1218833 timestamp: 1787294571916 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.3.0-py312h50c33e8_0.conda - sha256: 76b2e56c7a903a06be1210d35f35c2a8dcdc57912fda5c96b2e68acfd2b281fe - md5: d749d04e1965315078f29320565c595a +- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.3.0-py312h38079b3_4.conda + sha256: 057db21cb235e47a80f36ffbed86f4c4a11aec5d20505278a8f55142ea41e287 + md5: 87d8e4053a968e8b20937e6cdd945a18 depends: - python - - libgcc >=14 + - libgcc >=15 - __glibc >=2.17,<3.0.a0 - - libtiff >=4.7.1,<4.8.0a0 - - libxcb >=1.17.0,<2.0a0 - - tk >=8.6.13,<8.7.0a0 - - openjpeg >=2.5.4,<3.0a0 + - libtiff >=4.7.2,<4.8.0a0 + - libwebp-base >=1.6.0,<2.0a0 + - libjpeg-turbo >=3.2.0,<4.0a0 + - lcms2 >=2.19.1,<3.0a0 - zlib-ng >=2.3.3,<2.4.0a0 - python_abi 3.12.* *_cp312 - - libjpeg-turbo >=3.1.4.1,<4.0a0 - - lcms2 >=2.19.1,<3.0a0 + - openjpeg >=2.5.4,<3.0a0 + - libxcb >=1.17.0,<2.0a0 - libfreetype >=2.14.3 - libfreetype6 >=2.14.3 - - libwebp-base >=1.6.0,<2.0a0 + - tk >=8.6.13,<8.7.0a0 license: HPND purls: - - pkg:pypi/pillow?source=hash-mapping + - pkg:pypi/pillow?source=compressed-mapping run_exports: {} - size: 1064129 - timestamp: 1782912080163 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.3.0-py313h80991f8_0.conda - sha256: cb3e51a639d19e04d0ea197ff6f6805a40eeef92d762642f28fa1cd1d25f672a - md5: 730e462e7e141813192b606cf07ebdd0 + size: 1060052 + timestamp: 1789122647267 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.3.0-py313h3b26573_4.conda + sha256: 26d0fec97210b130c5d4299a0d648e78a7386be1cc90ae25618fa4b838f1627a + md5: 6739325f3022c709753d26fff83ae20e depends: - python - - libgcc >=14 + - libgcc >=15 - __glibc >=2.17,<3.0.a0 - - libwebp-base >=1.6.0,<2.0a0 - - lcms2 >=2.19.1,<3.0a0 + - python_abi 3.13.* *_cp313 - libfreetype >=2.14.3 - libfreetype6 >=2.14.3 + - libwebp-base >=1.6.0,<2.0a0 + - libtiff >=4.7.2,<4.8.0a0 - tk >=8.6.13,<8.7.0a0 - - libxcb >=1.17.0,<2.0a0 - zlib-ng >=2.3.3,<2.4.0a0 - - python_abi 3.13.* *_cp313 - - libjpeg-turbo >=3.1.4.1,<4.0a0 - - libtiff >=4.7.1,<4.8.0a0 - openjpeg >=2.5.4,<3.0a0 + - lcms2 >=2.19.1,<3.0a0 + - libxcb >=1.17.0,<2.0a0 + - libjpeg-turbo >=3.2.0,<4.0a0 license: HPND purls: - - pkg:pypi/pillow?source=hash-mapping + - pkg:pypi/pillow?source=compressed-mapping run_exports: {} - size: 1077037 - timestamp: 1782912080163 + size: 1072896 + timestamp: 1789122647267 - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_3.conda sha256: 829d8288764282de5a9f7b9169acb75cc7dc0b6c3fe2535cfe87dea3436bbc5d md5: 0ee5bb30034b081a1386c1e2c98ab0a7 @@ -7607,46 +7124,48 @@ packages: run_exports: {} size: 50526 timestamp: 1780037863138 -- conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.2-py312h1b36aeb_2.conda - sha256: 74522f28cf6b905f89771b5b3367966280285dca5b5b8cd09f69c3bfe95c637c - md5: e59300b9232e82a351a9390bfdfe72f9 +- conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.2-py312h1b36aeb_3.conda + sha256: 9b6f0247591f062a188cd42580916476c0d939a89d65f3ecefb37e84b5c17d7a + md5: 2f8faed6c111c9ed0c1d217bc1be75f2 depends: - python - __glibc >=2.17,<3.0.a0 - libgcc >=15 - python_abi 3.12.* *_cp312 license: BSD-3-Clause + license_family: BSD purls: - - pkg:pypi/psutil?source=hash-mapping + - pkg:pypi/psutil?source=compressed-mapping run_exports: {} - size: 225441 - timestamp: 1788189998857 -- conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.2-py313hd42f317_2.conda - sha256: 80035cd519badecc81b132ea15bdc1e4ee7380c0396b42d8d4daf1281c1d1ee1 - md5: 47dbb9ab8b049d1466806bdf987d0530 + size: 225549 + timestamp: 1789682039049 +- conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.2-py313hd42f317_3.conda + sha256: a7cffeba6c7957cc47f1f28576f39bd04aceb42ab962d5d8c91c3f60fedd304f + md5: 0bc97f7c2f4a6993798c004fd557e3a1 depends: - python - - libgcc >=15 - __glibc >=2.17,<3.0.a0 + - libgcc >=15 - python_abi 3.13.* *_cp313 license: BSD-3-Clause + license_family: BSD purls: - pkg:pypi/psutil?source=compressed-mapping run_exports: {} - size: 228664 - timestamp: 1788189989243 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb03c661_1003.conda - sha256: afc3b27b2cbb0487c1d0e963f96e71181ecfb623a24fb393bb19ff974a6382a1 - md5: df2c27f36bdb0dde779f55b5df76a352 + size: 228778 + timestamp: 1789682033076 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h7cc23a3_1004.conda + sha256: 4a44fd00ea73b79ca2c89b0727b9ccf61c506ead71e67a9abfa4c590042b5a4a + md5: bb66b610707b811e3c65181a6431e7a8 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=14 + - libgcc >=15 license: MIT license_family: MIT purls: [] run_exports: {} - size: 9115 - timestamp: 1786067714761 + size: 9630 + timestamp: 1788381877753 - conda: https://conda.anaconda.org/conda-forge/linux-64/pugixml-1.15-h3f63f65_0.conda sha256: 23c98a5000356e173568dc5c5770b53393879f946f3ace716bbdefac2a8b23d2 md5: b11a4c6bf6f6f44e5e143f759ffa2087 @@ -7684,44 +7203,50 @@ packages: - pulseaudio-client >=17.0,<17.1.0a0 size: 750785 timestamp: 1763148198088 -- conda: https://conda.anaconda.org/conda-forge/linux-64/py-lief-1.0.0-py312ha6a3dbb_1.conda - sha256: b36ad1597606da7c0d0284e39f1526450f67f9ba4a2e608fc563e356e217a3c7 - md5: 32a7996a1768168c5c3deb39c8787930 +- conda: https://conda.anaconda.org/conda-forge/linux-64/py-lief-1.0.0-py312ha985511_5.conda + sha256: f5984aeb0c0dacf8bf59f53d818599ffa4206810b372bd7194b158d8aec899ea + md5: be82fa0c6e88ce4662a336b8453f8e92 depends: + - liblief ==1.0.0 h45ba95f_5 + - python - __glibc >=2.17,<3.0.a0 - libgcc >=15 - - liblief 1.0.0 hd2095e1_1 - libstdcxx >=15 - - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + - fmt >=12.1.0,<12.2.0a0 + - spdlog >=1.17.0,<1.18.0a0 + - liblief >=1.0.0,<1.1.0a0 license: Apache-2.0 - license_family: Apache + license_family: APACHE purls: - - pkg:pypi/lief?source=hash-mapping + - pkg:pypi/lief?source=compressed-mapping run_exports: weak: - py-lief >=1.0.0,<1.1.0a0 - size: 1808803 - timestamp: 1788139159755 -- conda: https://conda.anaconda.org/conda-forge/linux-64/py-lief-1.0.0-py313hbdba758_1.conda - sha256: 2bd2200e02923cb08473f8266b6d2317ea29c4b654593d4af9c2f8950e878d7b - md5: 13a8d4a1c52c3661e5d82fedd39a4eeb + size: 2019316 + timestamp: 1789040612233 +- conda: https://conda.anaconda.org/conda-forge/linux-64/py-lief-1.0.0-py313h553f6f3_5.conda + sha256: 23e472d86b26208c110b93dd39dfcc7ef785ad1c96c27c67e70e368a4a3a8dcc + md5: 1883fe49900e6c10659e076cc4b8b931 depends: + - liblief ==1.0.0 h45ba95f_5 + - python - __glibc >=2.17,<3.0.a0 - - libgcc >=15 - - liblief 1.0.0 hd2095e1_1 - libstdcxx >=15 - - python >=3.13,<3.14.0a0 + - libgcc >=15 - python_abi 3.13.* *_cp313 + - spdlog >=1.17.0,<1.18.0a0 + - liblief >=1.0.0,<1.1.0a0 + - fmt >=12.1.0,<12.2.0a0 license: Apache-2.0 - license_family: Apache + license_family: APACHE purls: - - pkg:pypi/lief?source=hash-mapping + - pkg:pypi/lief?source=compressed-mapping run_exports: weak: - py-lief >=1.0.0,<1.1.0a0 - size: 1812694 - timestamp: 1788139616385 + size: 2019681 + timestamp: 1789040612233 - conda: https://conda.anaconda.org/conda-forge/linux-64/py-rattler-0.24.0-py310h70157a2_1.conda noarch: python sha256: f9d60c7f6451ec1e417faf76639aaa3268681d1d572c95b125a426ac1cb43c7a @@ -7742,26 +7267,26 @@ packages: run_exports: {} size: 12241384 timestamp: 1780417259708 -- conda: https://conda.anaconda.org/conda-forge/linux-64/py-rattler-build-0.72.2-py310h701b438_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/py-rattler-build-0.73.0-py311h30674b1_0.conda noarch: python - sha256: a5c057d0ae20b76896b721d7483c1b5b62ad21d678a149aa13466645b4cfa618 - md5: 27fb3c84b44c4580ccd497781a5dda27 + sha256: 20d345d91f4b8c22444a5e0cf1f748b6c43ff790537337806f599e5c311b3b7a + md5: 22094f8dc5212ee1269d7f8bf499d8ea depends: - python - libgcc >=15 - __glibc >=2.17,<3.0.a0 - openssl >=3.5.8,<4.0a0 - _python_abi3_support 1.* - - cpython >=3.10 + - cpython >=3.11 constrains: - __glibc >=2.17 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/py-rattler-build?source=hash-mapping + - pkg:pypi/py-rattler-build?source=compressed-mapping run_exports: {} - size: 17985937 - timestamp: 1787833245898 + size: 17985146 + timestamp: 1789639970798 - conda: https://conda.anaconda.org/conda-forge/linux-64/pycifrw-5.0.1-py312h4c3975b_0.conda sha256: 769fe4c5823a59950a450e8764e3ca2dc8b5d0bc8b1346d523cc7121dc6e649e md5: 810fdf8ea06c063579dcf1352af36712 @@ -7798,12 +7323,12 @@ packages: run_exports: {} size: 309209 timestamp: 1765508910450 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pycosat-0.6.6-py312h4c3975b_4.conda - sha256: a22b9eb8b40c5da7a558593d58d7d0466fcf3eef9b988a06691453bb7eee17df - md5: 38d35e6e72e474c839408831cfc61498 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pycosat-0.6.6-py312h5cc1888_5.conda + sha256: f6517eb7010faf8e01d7fac7b42adec549517a102808828fe23c65d3bf3c7ee7 + md5: 43f24f7f88e225577bd3824b9ba9a73f depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=14 + - libgcc >=15 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: MIT @@ -7811,14 +7336,14 @@ packages: purls: - pkg:pypi/pycosat?source=hash-mapping run_exports: {} - size: 88785 - timestamp: 1784146233459 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pycosat-0.6.6-py313h07c4f96_4.conda - sha256: 636c8b42b8ffede0a50bcdc6fa156edcfd81a2fd15cd54baa8ef850b902006cb - md5: 2b508061b3da4df9e81e395f161db9e8 + size: 88221 + timestamp: 1788489358032 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pycosat-0.6.6-py313h995f894_5.conda + sha256: cb822f2f3401d6921ce55f2160505d99c7ea4692116078cc3cb3395bc5f1bed7 + md5: bc92d7253895813b255f2c7b5d189585 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=14 + - libgcc >=15 - python >=3.13,<3.14.0a0 - python_abi 3.13.* *_cp313 license: MIT @@ -7826,11 +7351,11 @@ packages: purls: - pkg:pypi/pycosat?source=hash-mapping run_exports: {} - size: 87707 - timestamp: 1784146238190 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.46.5-py312hc767a74_1.conda - sha256: a805a64e0e7e5ed22e8f49f0038a5d8cab4b96cf094c8822da75d6823f2377e8 - md5: 2854d36e093d53d0cf81ec433ffd9c4c + size: 87525 + timestamp: 1788489316049 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.46.5-py312hc767a74_2.conda + sha256: 64ef841c88756f8d1ca9c241c0ab1585ad5a9cb8d0bfe0555c201c2ad0e3c701 + md5: f7a033135df967ea983fe4833856d2b1 depends: - python - typing-extensions >=4.6.0,!=4.7.0 @@ -7840,28 +7365,30 @@ packages: constrains: - __glibc >=2.17 license: MIT + license_family: MIT purls: - - pkg:pypi/pydantic-core?source=hash-mapping + - pkg:pypi/pydantic-core?source=compressed-mapping run_exports: {} - size: 1877711 - timestamp: 1787928982283 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.46.5-py313ha296275_1.conda - sha256: ba744cf30856ccda82fa4dca2058294fd3574c0f36e737b16411b49eaa5f24cd - md5: 41286094042803a6cd590db9d13f5aa1 + size: 1877770 + timestamp: 1789996105430 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.46.5-py313ha296275_2.conda + sha256: 45d77cd9afc4ec61192ecf97127d6afb56bd562692162ab13fe84f987206bf20 + md5: 02307b4e01607c72fab0f5726c96d3c2 depends: - python - typing-extensions >=4.6.0,!=4.7.0 - - libgcc >=15 - __glibc >=2.17,<3.0.a0 + - libgcc >=15 - python_abi 3.13.* *_cp313 constrains: - __glibc >=2.17 license: MIT + license_family: MIT purls: - - pkg:pypi/pydantic-core?source=hash-mapping + - pkg:pypi/pydantic-core?source=compressed-mapping run_exports: {} - size: 1877111 - timestamp: 1787928978287 + size: 1877183 + timestamp: 1789996106423 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.15.9-py312h949fe66_5.conda sha256: 22ccc59c03872fc680be597a1783d2c77e6b2d16953e2ec67df91f073820bebe md5: f6548a564e2d01b2a42020259503945b @@ -7900,46 +7427,6 @@ packages: run_exports: {} size: 85809 timestamp: 1695418132533 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyqt6-6.11.0-py312hdc4d070_2.conda - sha256: fe91e993114f898f8456c5303033dd0ab8c419850dbea088bdd47053d9d35bda - md5: 9c8bb4c652f4209a02e43f76a3c511df - depends: - - __glibc >=2.17,<3.0.a0 - - libegl >=1.7.0,<2.0a0 - - libgcc >=14 - - libgl >=1.7.0,<2.0a0 - - libopengl >=1.7.0,<2.0a0 - - libstdcxx >=14 - - libsystemd0 >=257.13 - - pyqt6-sip 13.10.0 py312h1289d80_2 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - qt6-main >=6.11.0,<6.12.0a0 - - qt6-multimedia >=6.11.0,<6.12.0a0 - - qt6-positioning >=6.11.0,<6.12.0a0 - - qt6-serialport >=6.11.0,<6.12.0a0 - - sip >=6.15.3,<6.16.0a0 - - xcb-util >=0.4.1,<0.5.0a0 - - xcb-util-image >=0.4.0,<0.5.0a0 - - xcb-util-keysyms >=0.4.1,<0.5.0a0 - - xcb-util-renderutil >=0.3.10,<0.4.0a0 - - xcb-util-wm >=0.4.2,<0.5.0a0 - - xorg-libice >=1.1.2,<2.0a0 - - xorg-libsm >=1.2.6,<2.0a0 - - xorg-libx11 >=1.8.13,<2.0a0 - - xorg-libxcomposite >=0.4.7,<1.0a0 - - xorg-libxdamage >=1.1.6,<2.0a0 - - xorg-libxext >=1.3.7,<2.0a0 - - xorg-libxxf86vm >=1.1.7,<2.0a0 - license: GPL-3.0-only - license_family: GPL - purls: - - pkg:pypi/pyqt6?source=hash-mapping - run_exports: - weak: - - pyqt6 >=6.11.0,<6.12.0a0 - size: 5018210 - timestamp: 1785110590725 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyqt6-6.11.0-py313h5860079_2.conda sha256: 9390411e1ae293177eff68449b7d964b8e37a97d81bb66e02d0f3c82218ae484 md5: d8946379faaf61a0e89b168f0a14773b @@ -7980,25 +7467,6 @@ packages: - pyqt6 >=6.11.0,<6.12.0a0 size: 5026502 timestamp: 1785110552558 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyqt6-sip-13.10.0-py312h1289d80_2.conda - sha256: eff42f8c6b35368ec899a49324e88b34953d36193ad6c14497572835744da5c5 - md5: b2ae7183749434eadacb9fdd6e40897b - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - packaging - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - sip - - toml - license: GPL-3.0-only - license_family: GPL - purls: - - pkg:pypi/pyqt6-sip?source=hash-mapping - run_exports: {} - size: 80770 - timestamp: 1770737344467 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyqt6-sip-13.10.0-py313h7033f15_2.conda sha256: eccab5859af95d15e9c6e6a9b6f55c473232b489a06fc6e052ffce53a18591af md5: 2a37820a463ce17fa56d23c426645e11 @@ -8072,58 +7540,60 @@ packages: run_exports: {} size: 13806964 timestamp: 1778933885371 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pystack-1.7.1-py312haf1912e_0.conda - sha256: 338f3598fca52de796896c3c1a3681e7204144abf571f44c77011e114c8267c2 - md5: 62e11301091b8de8a24300f255fc5f99 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pystack-1.7.1-py312hb1168fa_2.conda + sha256: 8409950f98a26f1bbae87ed815818c1e499e8c2aba8323e24c89cacd86d47383 + md5: b45ca99298775a0dd093711d47832a3b depends: - python - - libgcc >=14 - __glibc >=2.17,<3.0.a0 - - libstdcxx >=14 + - libgcc >=15 + - libstdcxx >=15 + - elfutils >=0.196,<0.197.0a0 - python_abi 3.12.* *_cp312 - - elfutils >=0.194,<0.195.0a0 license: Apache-2.0 license_family: APACHE purls: - - pkg:pypi/pystack?source=hash-mapping + - pkg:pypi/pystack?source=compressed-mapping run_exports: {} - size: 4101121 - timestamp: 1786285590283 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pystack-1.7.1-py313h5b59f99_0.conda - sha256: 99db22a87476ff42ef4bbcbe4236168027938a7daae33c26f1aaee1b246dba9e - md5: 996a971b0d5687d5e531cf4e27f2928c + size: 4149427 + timestamp: 1790063330732 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pystack-1.7.1-py313h8390439_2.conda + sha256: 8ed9e1df50b8c0a8e816b2b65f30506740187a6a8e044ca50ed37e4c4a22a7a6 + md5: 4266ba28cbe4a9ab38ec53d95e8d91d2 depends: - python - __glibc >=2.17,<3.0.a0 - - libstdcxx >=14 - - libgcc >=14 + - libgcc >=15 + - libstdcxx >=15 + - elfutils >=0.196,<0.197.0a0 - python_abi 3.13.* *_cp313 - - elfutils >=0.194,<0.195.0a0 license: Apache-2.0 license_family: APACHE purls: - - pkg:pypi/pystack?source=hash-mapping + - pkg:pypi/pystack?source=compressed-mapping run_exports: {} - size: 4102482 - timestamp: 1786285593273 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.14-h8ab3286_0_cpython.conda - sha256: ceb9c724de53ee3560f121dbfcb00fe8acb22c08691158fce7b6c32425855626 - md5: e9dcdd23a1c68738eb3257d23d5f7285 + size: 4148806 + timestamp: 1790063331183 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.14-h5f976f7_3_cpython.conda + build_number: 3 + sha256: 14c579b1016da04e4c9f1c5c857272d83ec447317d8c4074a07d59de3cef70ef + md5: 98be3cf76eca2e8871f907a03aed3b84 depends: - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - ld_impl_linux-64 >=2.36.1 - libexpat >=2.8.1,<3.0a0 - libffi >=3.7.0,<3.8.0a0 - - libgcc >=14 + - libgcc >=15 - liblzma >=5.8.3,<6.0a0 - libnsl >=2.0.1,<2.1.0a0 + - libpython 3.12.14 h0c77377_3_cpython - libsqlite >=3.53.4,<4.0a0 - - libuuid >=2.42.2,<3.0a0 + - libuuid >=2.42.3,<3.0a0 - libxcrypt >=4.4.38 - libzlib >=1.3.2,<2.0a0 - ncurses >=6.6,<7.0a0 - - openssl >=3.5.7,<4.0a0 + - openssl >=3.5.8,<4.0a0 - readline >=8.3,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata @@ -8136,26 +7606,27 @@ packages: - python_abi 3.12.* *_cp312 noarch: - python - size: 31590137 - timestamp: 1787353586056 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.15-hb101c97_101_cp313.conda - build_number: 101 - sha256: b7c23d7446502a267f341b27e6820d5e2d53e78c61e721f4af713168ee544cb2 - md5: ad58731521aa42f9e70f3fc6c898e134 + size: 23044161 + timestamp: 1788392496306 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.15-hf47f18c_103_cp313.conda + build_number: 103 + sha256: cc18ba39af0d591ac012c1334ac98aa59ec7be389719b4cd80cc0a58a53019de + md5: 641613f2d89da811bc29fa4cde88ef20 depends: - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - ld_impl_linux-64 >=2.36.1 - libexpat >=2.8.1,<3.0a0 - libffi >=3.7.0,<3.8.0a0 - - libgcc >=14 + - libgcc >=15 - liblzma >=5.8.3,<6.0a0 - libmpdec >=4.0.0,<5.0a0 + - libpython 3.13.15 hdc7f604_103_cp313 - libsqlite >=3.53.4,<4.0a0 - - libuuid >=2.42.2,<3.0a0 + - libuuid >=2.42.3,<3.0a0 - libzlib >=1.3.2,<2.0a0 - ncurses >=6.6,<7.0a0 - - openssl >=3.5.7,<4.0a0 + - openssl >=3.5.8,<4.0a0 - python_abi 3.13.* *_cp313 - readline >=8.3,<9.0a0 - tk >=8.6.13,<8.7.0a0 @@ -8167,15 +7638,15 @@ packages: - python_abi 3.13.* *_cp313 noarch: - python - size: 37485991 - timestamp: 1786368232136 + size: 24369771 + timestamp: 1788387840141 python_site_packages_path: lib/python3.13/site-packages -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-librt-0.15.0-py312h5253ce2_0.conda - sha256: 30b780a244bdf0f2c4377fbd72d69894610f0ff59930f6a864cccb59e03a5d38 - md5: e55bf557c514b966494b8c4a033b25c2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-librt-0.15.0-py312h1b36aeb_2.conda + sha256: 93eefb027858ef06d03e21560b704a4dd9f0a6e4fadeb332c601c16ff5bc54e8 + md5: e4b266d7f7ae5cce6071f51de9d13588 depends: - python - - libgcc >=14 + - libgcc >=15 - __glibc >=2.17,<3.0.a0 - python_abi 3.12.* *_cp312 license: MIT @@ -8183,14 +7654,14 @@ packages: purls: - pkg:pypi/librt?source=compressed-mapping run_exports: {} - size: 164831 - timestamp: 1786328838441 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-librt-0.15.0-py313h54dd161_0.conda - sha256: 648c88a819298b2c2575a29bb632a522b5b9c53922a45fb60ea7756edb78f560 - md5: c2b1c03ab66ab530a60cd1e05cc5167e + size: 169277 + timestamp: 1788524688833 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-librt-0.15.0-py313hd42f317_2.conda + sha256: d230f261c0ee89d1a5f8e908d43055a991d18c35545390142d50679153520f2f + md5: e5ef938813bee5b9cfff92fa34805b5c depends: - python - - libgcc >=14 + - libgcc >=15 - __glibc >=2.17,<3.0.a0 - python_abi 3.13.* *_cp313 license: MIT @@ -8198,8 +7669,8 @@ packages: purls: - pkg:pypi/librt?source=hash-mapping run_exports: {} - size: 164322 - timestamp: 1786328840804 + size: 169343 + timestamp: 1788524687512 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py312h8a5da7c_1.conda sha256: cb142bfd92f6e55749365ddc244294fa7b64db6d08c45b018ff1c658907bfcbf md5: 15878599a87992e44c059731771591cb @@ -8232,15 +7703,15 @@ packages: run_exports: {} size: 201616 timestamp: 1770223543730 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.2.0-py312h8a5ba0d_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.2.0-py312h8a5ba0d_2.conda noarch: python - sha256: 9e8b94a2c9b4479cac80def117178a1658b089b9e5d4ee64408d2e4ff89fdaba - md5: ceffbc006d87e8f81e750cebd63fd8c4 + sha256: d1323678d9403504d05cdf6a65bbd648f8667a89d9d5d4146ff96bae0e5311a7 + md5: 2186325469ffe83c7b8807d638a478d9 depends: - python - - libstdcxx >=15 - - libgcc >=15 - __glibc >=2.17,<3.0.a0 + - libgcc >=15 + - libstdcxx >=15 - zeromq >=4.3.5,<4.4.0a0 - _python_abi3_support 1.* - cpython >=3.12 @@ -8249,8 +7720,8 @@ packages: purls: - pkg:pypi/pyzmq?source=compressed-mapping run_exports: {} - size: 214050 - timestamp: 1787300896477 + size: 216556 + timestamp: 1789730121925 - conda: https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda sha256: 776363493bad83308ba30bcb88c2552632581b143e8ee25b1982c8c743e73abc md5: 353823361b1d27eb3960efb076dfcaf6 @@ -8265,41 +7736,6 @@ packages: - qhull >=2020.2,<2020.3.0a0 size: 552937 timestamp: 1720813982144 -- conda: https://conda.anaconda.org/conda-forge/linux-64/qscintilla2-2.14.1-py312h1289d80_4.conda - sha256: 7bad8720c35aebc457a6e52b06e702a0b5d889b0790e8b5939ad38e41e2c3fc9 - md5: 0e40495b0ff08c95cc6dcbd7666aa5e5 - depends: - - __glibc >=2.17,<3.0.a0 - - libegl >=1.7.0,<2.0a0 - - libgcc >=14 - - libgl >=1.7.0,<2.0a0 - - libglvnd - - libopengl >=1.7.0,<2.0a0 - - libstdcxx >=14 - - pyqt6 >=6.11.0,<6.12.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - qt6-main >=6.11.0,<6.12.0a0 - - sip >=6.15.3,<6.16.0a0 - - xcb-util >=0.4.1,<0.5.0a0 - - xcb-util-image >=0.4.0,<0.5.0a0 - - xcb-util-keysyms >=0.4.1,<0.5.0a0 - - xcb-util-renderutil >=0.3.10,<0.4.0a0 - - xcb-util-wm >=0.4.2,<0.5.0a0 - - xorg-libice >=1.1.2,<2.0a0 - - xorg-libsm >=1.2.6,<2.0a0 - - xorg-libx11 >=1.8.13,<2.0a0 - - xorg-libxcomposite >=0.4.7,<1.0a0 - - xorg-libxdamage >=1.1.6,<2.0a0 - - xorg-libxext >=1.3.7,<2.0a0 - - xorg-libxxf86vm >=1.1.7,<2.0a0 - license: GPL-3.0-or-later - license_family: GPL - purls: - - pkg:pypi/pyqt6-qscintilla?source=hash-mapping - run_exports: {} - size: 1765469 - timestamp: 1778228492794 - conda: https://conda.anaconda.org/conda-forge/linux-64/qscintilla2-2.14.1-py312hc23280e_0.conda sha256: fabd11ed7904a0356a1a7794be2160d639c119863b7555ba2c6e37cfd9e5243f md5: 6bad10e9a62c22dce10fcc0837178738 @@ -8446,27 +7882,6 @@ packages: - qt-main >=5.15.15,<5.16.0a0 size: 52674357 timestamp: 1773957808615 -- conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-gtk-platformtheme-6.11.1-hc54bc45_0.conda - sha256: b97072c5aa1b12c46c6705cca3fb1f2f9fbba22be7fe9dc39b31cf3f0811d65a - md5: 9e52cca279470f0945c243870c56fb12 - depends: - - __glibc >=2.17,<3.0.a0 - - adwaita-icon-theme - - gdk-pixbuf >=2.44.6,<3.0a0 - - gtk3 >=3.24.52,<4.0a0 - - libgcc >=14 - - libglib >=2.88.1,<3.0a0 - - libstdcxx >=14 - - pango >=1.56.4,<2.0a0 - - qt6-main 6.11.1.* - - qt6-main >=6.11.1,<6.12.0a0 - license: LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only - purls: [] - run_exports: - weak: - - qt6-gtk-platformtheme >=6.11.1,<6.12.0a0 - size: 135245 - timestamp: 1778889689281 - conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-gtk-platformtheme-6.11.1-hc54bc45_1.conda sha256: 3485e6e29e7557409c3c2da3ccf33393a2790a7c1e627a27f496cd6d90fb77c4 md5: a6dc2eccff09af3d9581b64501c6095c @@ -8674,40 +8089,6 @@ packages: - qt6-multimedia >=6.11.1,<6.12.0a0 size: 2365659 timestamp: 1786345139882 -- conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-multimedia-6.11.1-pl5321hb5f9c21_0.conda - sha256: f0b0fce663a4f6ff18e0bd8e0eb7450cf8b3cd416c2fc6d1360f13e3c7345361 - md5: 1b0391183faee0ad4d2b76330b0d5dbb - depends: - - qt6-main 6.11.1.* - - xorg-libx11 - - xorg-libxrandr - - libgcc >=14 - - __glibc >=2.17,<3.0.a0 - - libstdcxx >=14 - - libegl >=1.7.0,<2.0a0 - - xorg-libxxf86vm >=1.1.7,<2.0a0 - - libgl >=1.7.0,<2.0a0 - - libvulkan-loader >=1.4.341.0,<2.0a0 - - libglx >=1.7.0,<2.0a0 - - alsa-lib >=1.2.15.3,<1.3.0a0 - - libopengl >=1.7.0,<2.0a0 - - xorg-libxtst >=1.2.5,<2.0a0 - - xorg-libxext >=1.3.7,<2.0a0 - - xorg-libx11 >=1.8.13,<2.0a0 - - xorg-libxrandr >=1.5.5,<2.0a0 - - qt6-main >=6.11.1,<6.12.0a0 - - xorg-libxdamage >=1.1.6,<2.0a0 - - pulseaudio-client >=17.0,<17.1.0a0 - - xorg-libxcomposite >=0.4.7,<1.0a0 - - ffmpeg >=8.1.1,<9.0a0 - license: GPL-3.0-only - license_family: GPL - purls: [] - run_exports: - weak: - - qt6-multimedia >=6.11.1,<6.12.0a0 - size: 2374645 - timestamp: 1778676347171 - conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-positioning-6.11.1-hfd2156b_0.conda sha256: 94a372c3d4a3eebd4e9250a2e6fde9eeff9f907d9b04b2304332387193338b0f md5: 4beb750b07934027c17b3990c0b3b105 @@ -8794,6 +8175,7 @@ packages: - __glibc >=2.17,<3.0.a0 - libgcc >=15 license: MIT + license_family: MIT purls: [] run_exports: weak: @@ -8810,6 +8192,7 @@ packages: - libgcc >=15 - reproc >=14.2.8.post0,<14.3.0a0 license: MIT + license_family: MIT purls: [] run_exports: weak: @@ -8830,9 +8213,9 @@ packages: run_exports: {} size: 1899488 timestamp: 1787117633626 -- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-2026.6.3-py312hc767a74_0.conda - sha256: b189c45a480760097c0e8ad376be0c2467f436539097f7a12f8bb132930ad4ed - md5: 4c5bc78879aabba9ec582ef330109996 +- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-2026.6.3-py312hc767a74_2.conda + sha256: de56267c9c6e31e02eddd3239cce36154d500b325a6cbd83d57fb32bcc2ebe11 + md5: c5e7bd18dff14e8fdc74d6e623c5fe52 depends: - python - __glibc >=2.17,<3.0.a0 @@ -8843,13 +8226,13 @@ packages: license: MIT license_family: MIT purls: - - pkg:pypi/rpds-py?source=compressed-mapping + - pkg:pypi/rpds-py?source=hash-mapping run_exports: {} - size: 300808 - timestamp: 1787344306791 -- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-2026.6.3-py313ha296275_0.conda - sha256: 44fffe871fe2df29fabd98c5fa39c467cfd1f514aca3288cff84b6a8186763a9 - md5: 4f02ada1a38d9b96e0e1c2724a489c12 + size: 300882 + timestamp: 1788577343073 +- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-2026.6.3-py313ha296275_2.conda + sha256: 390121290b2931793671bb18b130a09e30e7758aabfb71962aba00f198acea72 + md5: 200755c9e086a1fc9d0f59dc0ed742c1 depends: - python - __glibc >=2.17,<3.0.a0 @@ -8862,8 +8245,8 @@ packages: purls: - pkg:pypi/rpds-py?source=compressed-mapping run_exports: {} - size: 300001 - timestamp: 1787344291397 + size: 300095 + timestamp: 1788577298075 - conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.18.17-py312h5253ce2_2.conda sha256: 3f1137747c99d79d82fe76a5ab72ed56b85ad1412f809cb721bd330095770f40 md5: f7ddc4a83cdcceb34c851e51ea64c903 @@ -8896,34 +8279,36 @@ packages: run_exports: {} size: 290182 timestamp: 1766175790621 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.15-py312h1b36aeb_3.conda - sha256: d75e2e9636284d23712daf259b48b95ddc8569c7d0e114f24f41505221f328e8 - md5: 701a162927037ed5c7a27dbaa70d9a53 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.15-py312h1b36aeb_5.conda + sha256: aa66c32c339873a147da91adc07c7f09fb818dc4c9d86d1173bbef00ad136f5d + md5: 47553dd4725a43ef82aadf8f74f6f89c depends: - python - libgcc >=15 - __glibc >=2.17,<3.0.a0 - python_abi 3.12.* *_cp312 license: MIT + license_family: MIT purls: - pkg:pypi/ruamel-yaml-clib?source=compressed-mapping run_exports: {} - size: 158535 - timestamp: 1788170287387 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.15-py313hd42f317_3.conda - sha256: 01b1b532bb84d1a556e7877b7759e758569041a2d5d671e54d5391a63730d2be - md5: 47b9a5ca08e4574106f83447a3b7c50e + size: 158648 + timestamp: 1788881211578 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.15-py313hd42f317_5.conda + sha256: ea9e3ae828778bfd24e1f07db18d830df4c1f41ca5eb57084028967d43bb0cf0 + md5: 7a7dad94a0a34355c38ecef6b6ebeae8 depends: - python - - libgcc >=15 - __glibc >=2.17,<3.0.a0 + - libgcc >=15 - python_abi 3.13.* *_cp313 license: MIT + license_family: MIT purls: - pkg:pypi/ruamel-yaml-clib?source=compressed-mapping run_exports: {} - size: 160315 - timestamp: 1788170299826 + size: 160419 + timestamp: 1788881219721 - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.16.3-py312h54fa4ab_2.conda sha256: 2f73242ca3164b4f305becb535a8245ff25839a42d4e62b222f866a5bf58b989 md5: e82683871cbc4bb257b7694f31a91327 @@ -8989,88 +8374,39 @@ packages: - sdl2 >=2.32.56,<3.0a0 size: 589145 timestamp: 1757842881000 -- conda: https://conda.anaconda.org/conda-forge/linux-64/sdl3-3.4.14-hdeec2a5_0.conda - sha256: b7f4a338074d0daa5086d6d7f319dd79b277c47a761abd8ebac72c0253f4c6ad - md5: 1ef39a7b42a06e262723fa7937210639 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sdl3-3.4.16-h5330f5c_0.conda + sha256: 174a62a3994b205213b0667cfe7ea3d26407403b929e9f111256b29694234fb0 + md5: 1d4b9d45cd87da449d9f7c5c3b9ad6a4 depends: + - libstdcxx >=15 + - libgcc >=15 - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - libvulkan-loader >=1.4.357.0,<2.0a0 - - liburing >=2.14,<2.15.0a0 - - libudev1 >=257.13 - xorg-libxcursor >=1.2.3,<2.0a0 - - xorg-libxtst >=1.2.5,<2.0a0 + - libegl >=1.7.0,<2.0a0 - dbus >=1.16.2,<2.0a0 + - xorg-libxext >=1.3.7,<2.0a0 + - libxkbcommon >=1.13.2,<2.0a0 - libunwind >=1.8.3,<1.9.0a0 - - libusb >=1.0.29,<2.0a0 - - libegl >=1.7.0,<2.0a0 - - pulseaudio-client >=17.0,<17.1.0a0 - libgl >=1.7.0,<2.0a0 - - xorg-libxext >=1.3.7,<2.0a0 - - xorg-libxfixes >=6.0.2,<7.0a0 - - libdrm >=2.4.127,<2.5.0a0 - - xorg-libxi >=1.8.3,<2.0a0 + - liburing >=2.14,<2.15.0a0 + - libvulkan-loader >=1.4.357.0,<2.0a0 + - libusb >=1.0.29,<2.0a0 + - xorg-libxtst >=1.2.5,<2.0a0 - wayland >=1.26.0,<2.0a0 + - xorg-libxi >=1.8.3,<2.0a0 + - libdrm >=2.4.129,<2.5.0a0 - xorg-libxscrnsaver >=1.2.4,<2.0a0 - - libxkbcommon >=1.13.2,<2.0a0 + - xorg-libxfixes >=6.0.2,<7.0a0 - xorg-libx11 >=1.8.13,<2.0a0 + - libudev1 >=257.13 + - pulseaudio-client >=17.0,<17.1.0a0 license: Zlib purls: [] run_exports: weak: - - sdl3 >=3.4.14,<4.0a0 - size: 2158268 - timestamp: 1785816103164 -- conda: https://conda.anaconda.org/conda-forge/linux-64/secretstorage-3.5.0-py312h7900ff3_0.conda - sha256: 0d07e47cf5de6035e724b64d7f315473b8f7b7dbe8297f4b8d563c8710ea6dd8 - md5: a2a3a7d918348b77688e2ed98519a9d5 - depends: - - cryptography >=2.0 - - dbus - - jeepney >=0.6 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/secretstorage?source=hash-mapping - run_exports: {} - size: 33068 - timestamp: 1780858489957 -- conda: https://conda.anaconda.org/conda-forge/linux-64/secretstorage-3.5.0-py313h78bf25f_0.conda - sha256: f9dfaf76745306d78f73aaff483faf9d0ba1144aae6f1326b01a67af457b35bf - md5: b127d964bb31b39d3431a063caf91e97 - depends: - - cryptography >=2.0 - - dbus - - jeepney >=0.6 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/secretstorage?source=hash-mapping - run_exports: {} - size: 33486 - timestamp: 1780858508391 -- conda: https://conda.anaconda.org/conda-forge/linux-64/shaderc-2026.2-h718be3e_0.conda - sha256: c6e3280867e54c97996a4fedda0ab72c92d48d1d69258bddf910130df72c169d - md5: 6438976979721e2f60ec47327d8d38df - depends: - - __glibc >=2.17,<3.0.a0 - - glslang >=16,<17.0a0 - - libgcc >=14 - - libstdcxx >=14 - - spirv-tools >=2026,<2027.0a0 - license: Apache-2.0 - license_family: Apache - purls: [] - run_exports: - weak: - - shaderc >=2026.2,<2026.3.0a0 - size: 113684 - timestamp: 1777360595361 + - sdl3 >=3.4.16,<4.0a0 + size: 2151582 + timestamp: 1788377993602 - conda: https://conda.anaconda.org/conda-forge/linux-64/shaderc-2026.3-hcebf71c_1.conda sha256: 2fa613c823868ef6e05c2e756b1767269f24796564ea9cf4efde61abaae2816e md5: 8f3979185375f21da886fb6cc2630005 @@ -9088,9 +8424,9 @@ packages: - shaderc >=2026.3,<2026.4.0a0 size: 113803 timestamp: 1787710995114 -- conda: https://conda.anaconda.org/conda-forge/linux-64/simdjson-4.6.9-h4dbf13b_0.conda - sha256: 58d3bd2face0c19f8680c9da0cd7df4bcbc5e32439f00f133986238783d0e26a - md5: 53a8ff86f8bd6f5d2ea089df06836fdc +- conda: https://conda.anaconda.org/conda-forge/linux-64/simdjson-4.6.11-h4dbf13b_0.conda + sha256: e313740ff17c7912994225ad62c795ef0fdc19d7e6a08a4e6bff3e597205f79c + md5: a65fbdd7742df8c2e87304a988889e4f depends: - __glibc >=2.17,<3.0.a0 - libstdcxx >=15 @@ -9100,31 +8436,9 @@ packages: purls: [] run_exports: weak: - - simdjson >=4.6.9,<4.7.0a0 - size: 357796 - timestamp: 1787803683470 -- conda: https://conda.anaconda.org/conda-forge/linux-64/sip-6.15.3-py312h1289d80_0.conda - sha256: 9de74b65d34db1b35ee77b09ec0013c37056c2ab15f4fcb4d04badb30baa820b - md5: f37dbdfa48ea4f6c879c97aed9d04abe - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - - packaging - - ply - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - setuptools - - tomli - license: BSD-2-Clause - license_family: BSD - purls: - - pkg:pypi/sip?source=hash-mapping - run_exports: - weak: - - sip >=6.15.3,<6.16.0a0 - size: 733625 - timestamp: 1774374003339 + - simdjson >=4.6.11,<4.7.0a0 + size: 358626 + timestamp: 1788630509372 - conda: https://conda.anaconda.org/conda-forge/linux-64/sip-6.15.3-py313h7033f15_0.conda sha256: 613a2a9e198895055e7df5ebd145bdb39d80758c24c3a5834d87993b2ff6c14d md5: 945222a4ff7b653c74a3d75ca3884ba5 @@ -9167,22 +8481,21 @@ packages: - sip >=6.7.12,<6.8.0a0 size: 576283 timestamp: 1697300599736 -- conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.2-h03e3b7b_1.conda - sha256: 48f3f6a76c34b2cfe80de9ce7f2283ecb55d5ed47367ba91e8bb8104e12b8f11 - md5: 98b6c9dc80eb87b2519b97bcf7e578dd +- conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.2-h34e00bb_2.conda + sha256: 8635d10c7f127808b09c0c8e77b21a255829e0934e49326548c949f7e0551f09 + md5: 2b7e31ffbd476eecf33b3b833692339c depends: - - libgcc >=14 + - libgcc >=15 + - libstdcxx >=15 - __glibc >=2.17,<3.0.a0 - - libstdcxx >=14 - - libgcc >=14 license: BSD-3-Clause license_family: BSD purls: [] run_exports: weak: - snappy >=1.2.2,<1.3.0a0 - size: 45829 - timestamp: 1762948049098 + size: 45695 + timestamp: 1790063285616 - conda: https://conda.anaconda.org/conda-forge/linux-64/spdlog-1.17.0-hb6aa676_2.conda sha256: 5fca627690d56c6f87a9dabafceee54cb75d7da392309bb080333948c048365a md5: 5e32ceeb7b9514ce4730565052829dbd @@ -9199,52 +8512,52 @@ packages: - spdlog >=1.17.0,<1.18.0a0 size: 197438 timestamp: 1785924346496 -- conda: https://conda.anaconda.org/conda-forge/linux-64/spglib-2.7.0-py312h6eeef32_1.conda - sha256: cc0e3388269d7ca70ace368de8a7d1e99c42d688187bfd6ecd1bfbcb87b536f9 - md5: ca3e57503402d69871aa3f2650b44677 +- conda: https://conda.anaconda.org/conda-forge/linux-64/spglib-2.7.0-py312h90b849e_2.conda + sha256: 52974c092a57fa3e5da1025c6bab7c7898ad8d314aa2818e8985210beb0986b1 + md5: 1eac5caca3ecc0166d397a52152214c8 depends: - __glibc >=2.17,<3.0.a0 - importlib-resources - - libgcc >=14 + - libgcc >=15 - libgfortran - - libgfortran5 >=14.3.0 - - libstdcxx >=14 - - numpy >=1.23,<3 + - libgfortran5 >=15.3.0 + - libstdcxx >=15 + - numpy >=1.25,<3 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - typing-extensions license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/spglib?source=hash-mapping + - pkg:pypi/spglib?source=compressed-mapping run_exports: weak: - spglib - size: 466144 - timestamp: 1767104453613 -- conda: https://conda.anaconda.org/conda-forge/linux-64/spglib-2.7.0-py313h37f3353_1.conda - sha256: f1a1545781200724299872c93d59841b5053b81acf674adbfed6019e95addeea - md5: 27085bb9c66cde687f9b69278368d2ea + size: 485677 + timestamp: 1789178646997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/spglib-2.7.0-py313h12dc443_2.conda + sha256: f863a79864316d08ec4577a3d3346ba37846e7a51ffb6872f98d432bd9d61699 + md5: b950fe877ef630950f9a83c679a39838 depends: - __glibc >=2.17,<3.0.a0 - importlib-resources - - libgcc >=14 + - libgcc >=15 - libgfortran - - libgfortran5 >=14.3.0 - - libstdcxx >=14 - - numpy >=1.23,<3 + - libgfortran5 >=15.3.0 + - libstdcxx >=15 + - numpy >=1.25,<3 - python >=3.13,<3.14.0a0 - python_abi 3.13.* *_cp313 - typing-extensions license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/spglib?source=hash-mapping + - pkg:pypi/spglib?source=compressed-mapping run_exports: weak: - spglib - size: 467635 - timestamp: 1767104625644 + size: 488938 + timestamp: 1789178628316 - conda: https://conda.anaconda.org/conda-forge/linux-64/spirv-tools-2026.3-h7148c6a_1.conda sha256: 1ff7cdc2e65d3980f977a898d07f4e2b1b6f50dbf7e2fed88b3b4221faf34365 md5: ac9adda1573683c31a8c58850e911273 @@ -9280,21 +8593,6 @@ packages: - libsqlite >=3.53.4,<4.0a0 size: 205686 timestamp: 1787051150973 -- conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-4.0.1-hecca717_0.conda - sha256: 4a1d2005153b9454fc21c9bad1b539df189905be49e851ec62a6212c2e045381 - md5: 2a2170a3e5c9a354d09e4be718c43235 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libstdcxx >=14 - license: BSD-2-Clause - license_family: BSD - purls: [] - run_exports: - weak: - - svt-av1 >=4.0.1,<4.0.2.0a0 - size: 2619743 - timestamp: 1769664536467 - conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-4.2.0-hd2095e1_1.conda sha256: 09c242d480632acca31f2a510c9a9f65bb8cca1e82b73d2d0261ec837fff48be md5: 3bd5f5f3f6f6431b9f19b35ad4a8ed21 @@ -9310,20 +8608,20 @@ packages: - svt-av1 >=4.2.0,<4.2.1.0a0 size: 2750545 timestamp: 1787256261632 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2023.0.0-hab88423_2.conda - sha256: 30cb9355c2fefc20ff1a3d6566b9714d5614086a2524c07721fc344eb20515ae - md5: 7073b15f9364ebc118998601ac6ca6a6 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2023.1.0-hfd44327_0.conda + sha256: ea35780ec77e2431bcfc193e75ddcc3ec1ae79a34464469b0b2186d93035c9e7 + md5: b17ef6c181922df16e9b1330fd00fe85 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=14 + - libgcc >=15 - libhwloc >=2.13.0,<2.13.1.0a0 - - libstdcxx >=14 + - libstdcxx >=15 license: Apache-2.0 license_family: APACHE purls: [] run_exports: {} - size: 182331 - timestamp: 1778673758649 + size: 187290 + timestamp: 1788879077075 - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h1df4ec4_4.conda build_number: 104 sha256: a1a241d172c1ccab067ba245206dd048bc3c2d1b84504b53c9468e99adfc16a1 @@ -9341,12 +8639,12 @@ packages: - tk >=8.6.13,<8.7.0a0 size: 3566806 timestamp: 1787272857910 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.8-py312h4c3975b_0.conda - sha256: 2ea8f8b10e869b675d2fba157b387eaf4eed1696bfc924bb7b28e67d7aa0a947 - md5: 5423c2b8f82d60320e65b9ff30babbdf +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.10-py312h5cc1888_0.conda + sha256: f895c3ce9ca97435f08b376a4978df10815d0f3c3531feabbe668858b41e250f + md5: b0414832500d750321eddce3822bea7b depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=14 + - libgcc >=15 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 @@ -9354,23 +8652,23 @@ packages: purls: - pkg:pypi/tornado?source=compressed-mapping run_exports: {} - size: 869730 - timestamp: 1786226754702 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.8-py313h07c4f96_0.conda - sha256: c78036a36559cc76b11a9ccb8f64c1293f78d7f2ef0570f486cce26eb58096b6 - md5: 0c8fd5b50c36b6da9b5c57189f65a869 + size: 895392 + timestamp: 1789911035492 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.10-py313h995f894_0.conda + sha256: 66d85753b02254ae528eed5c1908829c685f1c33fb3b58b023bf2bc7557a7cd0 + md5: 94985bd39e52fedc2270adb00e4779e6 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=14 + - libgcc >=15 - python >=3.13,<3.14.0a0 - python_abi 3.13.* *_cp313 license: Apache-2.0 license_family: Apache purls: - - pkg:pypi/tornado?source=hash-mapping + - pkg:pypi/tornado?source=compressed-mapping run_exports: {} - size: 891364 - timestamp: 1786226759492 + size: 924176 + timestamp: 1789911065267 - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.1.0-py313h7037e92_0.conda sha256: 7f2e4f38e57c17858c644259a1be868d6e98780239fd93bfa057cb5cfc24a928 md5: cb423e0853b3dde2b3738db4dedf5ba2 @@ -9388,21 +8686,21 @@ packages: run_exports: {} size: 14910 timestamp: 1769438729201 -- conda: https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-17.0.1-py312h4c3975b_0.conda - sha256: 895bbfe9ee25c98c922799de901387d842d7c01cae45c346879865c6a907f229 - md5: 0b6c506ec1f272b685240e70a29261b8 +- conda: https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-18.0.0-py312h5cc1888_0.conda + sha256: 3b0c8ea41cd161043eb774bcb653e497811e4e6307e5149da7072c4fd70d356e + md5: 070e15c0fbb80b2f2fe405419b763f68 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=14 + - libgcc >=15 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache purls: - - pkg:pypi/unicodedata2?source=hash-mapping + - pkg:pypi/unicodedata2?source=compressed-mapping run_exports: {} - size: 410641 - timestamp: 1770909099497 + size: 419998 + timestamp: 1789928085789 - conda: https://conda.anaconda.org/conda-forge/linux-64/unixodbc-2.3.14-h69e2008_0.conda sha256: dd5fe5cdd5538e253116b67323ce3024dd42a5b0f161b5201380ed1736abd334 md5: c6c242d6c61f6fc3ee50f64c4771d8d7 @@ -9427,20 +8725,22 @@ packages: run_exports: {} size: 14226 timestamp: 1767012219987 -- conda: https://conda.anaconda.org/conda-forge/linux-64/uv-0.12.7-h86a270d_0.conda - sha256: fdd3fc7b02dfcf0a357cd5596910e6f2696d27873f8bcac2f83d2c4db365b6e9 - md5: 14a917c8e21f3faa2fabb8a761b793dc +- conda: https://conda.anaconda.org/conda-forge/linux-64/uv-0.12.17-h841d291_0.conda + sha256: aa738ebe975460d704145538752047f1b660944bce23472ee6908f506ff67a68 + md5: 59ce6897b85483cb667bc9b59c9f3a42 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=15 - libstdcxx >=15 + - __glibc >=2.17,<3.0.a0 + - zstd >=1.5.7,<1.6.0a0 + - liblzma >=5.8.3,<6.0a0 constrains: - __glibc >=2.17 license: Apache-2.0 OR MIT purls: [] run_exports: {} - size: 17514479 - timestamp: 1787888308931 + size: 17839971 + timestamp: 1789929235507 - conda: https://conda.anaconda.org/conda-forge/linux-64/viskores-1.1.1-cpu_hc82bd48_1.conda sha256: 8b46803c96a9d3ee5757372e03e80aed20563b3bd13ddb6bb121dbfd356057e0 md5: 2a0d0433bed3e7f5caa3e0705cf17f3b @@ -9597,33 +8897,35 @@ packages: - wayland >=1.26.0,<2.0a0 size: 340058 timestamp: 1787793849093 -- conda: https://conda.anaconda.org/conda-forge/linux-64/x264-1!164.3095-h166bdaf_2.tar.bz2 - sha256: 175315eb3d6ea1f64a6ce470be00fa2ee59980108f246d3072ab8b977cb048a5 - md5: 6c99772d483f566d59e25037fea2c4b1 +- conda: https://conda.anaconda.org/conda-forge/linux-64/x264-1!164.3095-h7cc23a3_3.conda + sha256: 1c34c63ba591982d438b844e2487a3f04e47f7274bfa88f87943bbb8326c8edc + md5: 45246ea280bd334e4413ec0125ce6797 depends: - - libgcc-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=15 license: GPL-2.0-or-later license_family: GPL purls: [] run_exports: weak: - x264 >=1!164.3095,<1!165 - size: 897548 - timestamp: 1660323080555 -- conda: https://conda.anaconda.org/conda-forge/linux-64/x265-3.5-h924138e_3.tar.bz2 - sha256: 76c7405bcf2af639971150f342550484efac18219c0203c5ee2e38b8956fe2a0 - md5: e7f6ed84d4623d52ee581325c1587a6b - depends: - - libgcc-ng >=10.3.0 - - libstdcxx-ng >=10.3.0 + size: 707139 + timestamp: 1788934679384 +- conda: https://conda.anaconda.org/conda-forge/linux-64/x265-3.5-h73f68a7_4.conda + sha256: fbf129786d8ed8949bddad9959c5edae25dc968efbe43a6567625f66d4bcf3b2 + md5: 5b049cd7e2149701a5e4e7dc90f00075 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=15 + - libstdcxx >=15 license: GPL-2.0-or-later license_family: GPL purls: [] run_exports: weak: - x265 >=3.5,<3.6.0a0 - size: 3357188 - timestamp: 1646609687141 + size: 2237095 + timestamp: 1788446524175 - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.1-h4f16b4b_2.conda sha256: ad8cab7e07e2af268449c2ce855cbb51f43f4664936eff679b1f3862e6e4b01d md5: fdc27cb255a7a2cc73b7919a968b48f0 @@ -9772,20 +9074,20 @@ packages: - xorg-libx11 >=1.8.13,<2.0a0 size: 839578 timestamp: 1787087012372 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_2.conda - sha256: cbf891f6cc1a859347680af1c8562bc6b033bf182a2a3bb536016932be3206de - md5: f06ef439c280a5f90b8bf62355008dbc +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-h7cc23a3_2.conda + sha256: 3ec065b94554dc48a4ca582a960a5484bc166b26e83ce0954653e08d17e8bd53 + md5: da33efee1a93603d92e06d4a2b68def6 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=14 + - libgcc >=15 license: MIT license_family: MIT purls: [] run_exports: weak: - xorg-libxau >=1.0.12,<2.0a0 - size: 16419 - timestamp: 1786381001122 + size: 18793 + timestamp: 1788960512381 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.7-hb03c661_0.conda sha256: 048c103000af9541c919deef03ae7c5e9c570ffb4024b42ecb58dbde402e373a md5: f2ba4192d38b6cef2bb2c25029071d90 @@ -9836,20 +9138,20 @@ packages: - xorg-libxdamage >=1.1.6,<2.0a0 size: 13217 timestamp: 1727891438799 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_2.conda - sha256: c50a16c05ccd7fe7dd6d6cfb539f4e9a491d50f9ed7a5c902fec638f7d0d27be - md5: 2e66c929f3d879708335b6ea4557c838 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-h7cc23a3_2.conda + sha256: 8a095df9bc1d2e50f2504ce8858a047ae29ea634aad6cc0b43298c63361da6d9 + md5: eabfc45786244de252090cf8d55128a8 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=14 + - libgcc >=15 license: MIT license_family: MIT purls: [] run_exports: weak: - xorg-libxdmcp >=1.1.5,<2.0a0 - size: 21120 - timestamp: 1786381006369 + size: 22606 + timestamp: 1789676943335 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.7-h7cc23a3_1.conda sha256: aa9bbe8b278aacc194e280ff5037f9f9a1f2c5b33ed97de8e7f01cfbe90dda43 md5: e5b6b28536b81b3f4cb20db4668a4642 @@ -10026,18 +9328,18 @@ packages: - xorg-libxxf86vm >=1.1.7,<2.0a0 size: 18701 timestamp: 1769434732453 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2025.1-h280c20c_1.conda - sha256: 051c6088bf2381840fcf8764737b829cc6c5f793718d2417d097d6e3b153eba9 - md5: 3b51576511038b50fdbd05245e22e4b1 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2025.1-hebe6cf0_3.conda + sha256: 8e9c7ca4fcfe9f0c300e4aa853b79c25411fc4e470decfe8f909b74f60dfb6dd + md5: c3d0a6f03ba3aa312777b41b20a71ec0 depends: + - libgcc >=15 - __glibc >=2.17,<3.0.a0 - - libgcc >=14 license: MIT license_family: MIT purls: [] run_exports: {} - size: 594844 - timestamp: 1786114408394 + size: 596340 + timestamp: 1788874111132 - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-hebe6cf0_3.conda sha256: d164dfa75ecd538f6fd68765defcc06aa875bc697b9b215362d79a2a73125dd0 md5: e741576fb8f89821ac7c1c537322a33d @@ -10103,39 +9405,39 @@ packages: run_exports: {} size: 170888 timestamp: 1784526556187 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h09e67af_11.conda - sha256: dc9f28dedcb5f35a127fad2d847674d2833369dd616d294e423b8997df31d8a8 - md5: 96b08867e21d4694fa5c2c226e6581b0 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h901266b_12.conda + sha256: 37dc9a5ff564fdce07c5ad002ee572057cf41dedda274d7abc154e77094d981a + md5: 292a05f1436b98e17055090b5ef07746 depends: - - libgcc >=14 - __glibc >=2.17,<3.0.a0 - - libstdcxx >=14 - - krb5 >=1.22.2,<1.23.0a0 + - libgcc >=15 + - libstdcxx >=15 - libsodium >=1.0.22,<1.0.23.0a0 + - krb5 >=1.22.2,<1.23.0a0 license: MPL-2.0 license_family: MOZILLA purls: [] run_exports: weak: - zeromq >=4.3.5,<4.4.0a0 - size: 311184 - timestamp: 1779123989774 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zfp-1.0.1-h909a3a2_5.conda - sha256: 5fabe6cccbafc1193038862b0b0d784df3dae84bc48f12cac268479935f9c8b7 - md5: 6a0eb48e58684cca4d7acc8b7a0fd3c7 + size: 321839 + timestamp: 1789076548604 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zfp-1.0.1-h79e284d_6.conda + sha256: 2da8a7b7225e42721e249286d4762df1dbdb68a77b632f5ff52b4112e5356273 + md5: 9d7141ec747a9ede5da83e864fcc8213 depends: - __glibc >=2.17,<3.0.a0 - _openmp_mutex >=4.5 - - libgcc >=14 - - libstdcxx >=14 + - libgcc >=15 + - libstdcxx >=15 license: BSD-3-Clause license_family: BSD purls: [] run_exports: weak: - zfp >=1.0.1,<2.0a0 - size: 277694 - timestamp: 1766549572069 + size: 263275 + timestamp: 1789150032771 - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.2-h25fd6f3_3.conda sha256: 16080a1c7724f7d25727cdc23c7658e0cec2db52448c1dc0c33467ee2c6e1c62 md5: 6acb86426229f96f93e5468d1df3a5e8 @@ -10165,9 +9467,9 @@ packages: - zlib-ng >=2.3.3,<2.4.0a0 size: 123959 timestamp: 1786736890973 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.25.0-py312h1b36aeb_3.conda - sha256: 7c2b7d721ae03896f4ac7d0d806567ba92786de94efc79e14512f355552bcdca - md5: b71258304496a49e77c66650459089d1 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.25.0-py312h1b36aeb_4.conda + sha256: a3183adc689cfafdaa7e6a21a2c9174894125fc838cb538955246c6543e5b8da + md5: 03519133f60c8fab1268a64887b518c2 depends: - python - cffi >=1.11 @@ -10177,14 +9479,15 @@ packages: - zstd >=1.5.7,<1.6.0a0 - python_abi 3.12.* *_cp312 license: BSD-3-Clause + license_family: BSD purls: - pkg:pypi/zstandard?source=compressed-mapping run_exports: {} - size: 466734 - timestamp: 1787896527572 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.25.0-py313hd42f317_3.conda - sha256: 0c6f09056ee53abafefe1fc70c3e8396574f569fa892511b3c5b38b2037dcda6 - md5: c1904f9fe6bfdb904eb9ec47f5fbb231 + size: 466862 + timestamp: 1788604308908 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.25.0-py313hd42f317_4.conda + sha256: b183c9ff528c0454d2de07d16840e4514ecd79e404c2ebd0a3256563aab9f5da + md5: 49592828b02c30c46778c2bd6afb9710 depends: - python - cffi >=1.11 @@ -10194,11 +9497,12 @@ packages: - python_abi 3.13.* *_cp313 - zstd >=1.5.7,<1.6.0a0 license: BSD-3-Clause + license_family: BSD purls: - pkg:pypi/zstandard?source=compressed-mapping run_exports: {} - size: 472574 - timestamp: 1787896529106 + size: 472702 + timestamp: 1788604307981 - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_7.conda sha256: 47d682b9f6d6ec9eb1a6e6c3e75ea6273e899e78fb7fc59f81d39745009fbc60 md5: aa459086047c0e5e27023ab19f8cb86a @@ -10225,19 +9529,18 @@ packages: run_exports: {} size: 8144 timestamp: 1784221492234 -- conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-49.0-unix_0.conda - sha256: a362b4f5c96a0bf4def96be1a77317e2730af38915eb9bec85e2a92836501ed7 - md5: b3f0179590f3c0637b7eb5309898f79e +- conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-51.0-unix_0.conda + sha256: def01b148aa54d4de29b7d4bf58d941c8699582201db14cf78c6c89fa1666434 + md5: 6f62266fb2bfc35a5071cfa1d6ffdcc9 depends: - __unix - hicolor-icon-theme - librsvg license: LGPL-3.0-or-later OR CC-BY-SA-3.0 - license_family: LGPL purls: [] run_exports: {} - size: 631452 - timestamp: 1758743294412 + size: 687517 + timestamp: 1790100765464 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.7.1-pyhd8ed1ab_0.conda sha256: 5ef589e5fd3736439781a9d48e68ce1e723b7081a471c02169908198eba4f448 md5: e51e09bf3b91c62b7461a9f94e92c2c9 @@ -10276,9 +9579,9 @@ packages: run_exports: {} size: 18684 timestamp: 1733750512696 -- conda: https://conda.anaconda.org/conda-forge/noarch/anaconda-auth-0.15.2-pyhd8ed1ab_0.conda - sha256: 43fc84df40e96c199a4ff37686b3382fde8bf51fddd32090bf211cc30eb83adc - md5: fd7f3c9839a53e98919ea57403894764 +- conda: https://conda.anaconda.org/conda-forge/noarch/anaconda-auth-0.15.3-pyhd8ed1ab_0.conda + sha256: 716c49bff4925a99e1026cc2a4c9119557b10c0de4cf218a985368f5b1c172d0 + md5: ab4f25feabb575beca1f40e7f6a0f1be depends: - anaconda-cli-base >=0.8.1 - cryptography >=3.4.0 @@ -10287,7 +9590,7 @@ packages: - pkce - pydantic - pyjwt - - python >=3.10 + - python >=3.11 - python-dotenv - requests - semver <4 @@ -10298,10 +9601,10 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/anaconda-auth?source=hash-mapping + - pkg:pypi/anaconda-auth?source=compressed-mapping run_exports: {} - size: 54842 - timestamp: 1787012607494 + size: 54857 + timestamp: 1789060090642 - conda: https://conda.anaconda.org/conda-forge/noarch/anaconda-cli-base-0.8.2-pyhc364b38_0.conda sha256: a15e57650690f37bbe54f18e4ff429530b3bb54aa582ff9e3a9155921fec2804 md5: af12e48f4d16dce2d160e3067930ad93 @@ -10384,14 +9687,13 @@ packages: run_exports: {} size: 19461 timestamp: 1784935220549 -- conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.14.2-pyhcf101f3_0.conda - sha256: e36998c5e860e26b22e5dbcd5726dd0c4eabad949c84d383cad8512757bbf6a1 - md5: fb568fbae6908ba86a090a85a089d11f +- conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.15.1-pyh5ded981_1.conda + sha256: fc25a84c9c1ad4b48c136ad2363100e8b0faa3b0ab8985e61c9c8fa0b3431945 + md5: 33cdc5ba7c481b371f08f88e6c048c55 depends: - - exceptiongroup >=1.0.2 - idna >=2.8 - - python >=3.10 - - typing_extensions >=4.5 + - python >=3.11 + - typing_extensions >=4.16.0 - python constrains: - trio >=0.32.0 @@ -10400,10 +9702,10 @@ packages: license: MIT license_family: MIT purls: - - pkg:pypi/anyio?source=hash-mapping + - pkg:pypi/anyio?source=compressed-mapping run_exports: {} - size: 164465 - timestamp: 1783889660383 + size: 175600 + timestamp: 1788612816954 - conda: https://conda.anaconda.org/conda-forge/noarch/archspec-0.2.5-pyhd8ed1ab_0.conda sha256: eb68e1ce9e9a148168a4b1e257a8feebffdb0664b557bb526a1e4853f2d2fc00 md5: 845b38297fca2f2d18a29748e2ece7fa @@ -10496,18 +9798,18 @@ packages: run_exports: {} size: 92704 timestamp: 1780853175566 -- conda: https://conda.anaconda.org/conda-forge/noarch/boltons-26.1.0-pyhd8ed1ab_0.conda - sha256: ca44f906756aaa908645c9bcef31a132fc82e7934777aa6bb45c12edada6a58c - md5: 92c88d22e52af7b672605b12a31bf0bb +- conda: https://conda.anaconda.org/conda-forge/noarch/boltons-26.2.0-pyhd8ed1ab_0.conda + sha256: 8fd76dc72d31a8688159039cfbb17eabe21c65792a96b5245be04e5887c2291c + md5: 52f3c30dbe025efb8050021f35648949 depends: - - python >=3.10 + - python >=3.11 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/boltons?source=hash-mapping run_exports: {} - size: 309453 - timestamp: 1784706150046 + size: 321343 + timestamp: 1788865918329 - conda: https://conda.anaconda.org/conda-forge/noarch/boolean.py-5.0-pyhd8ed1ab_0.conda sha256: 6195e09f7d8a3a5e2fc0dddd6d1e87198e9c3d2a1982ff04624957a6c6466e54 md5: 26c3480f80364e9498a48bb5c3e35f85 @@ -10604,20 +9906,19 @@ packages: run_exports: {} size: 64487 timestamp: 1786835648298 -- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.4.2-pyhc90fa1f_0.conda - sha256: ccc4787f511964f9a1f2d2d2859c91c5d571fb60f7f09d4c4e092c9b7a94e671 - md5: 2c4bd6aeb90bb157456841c3270a0d92 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.5.0-pyh5ded981_0.conda + sha256: 9afb0c2c089330321a219c7ee5a25313bd574d4024be606cbb33e7a5735df662 + md5: dea5b13a211bbf99876deb980b408a66 depends: - - __unix + - python >=3.11 - python - - python >=3.10 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/click?source=hash-mapping + - pkg:pypi/click?source=compressed-mapping run_exports: {} - size: 107155 - timestamp: 1783085363526 + size: 112341 + timestamp: 1788802215348 - conda: https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.1.2-pyhcf101f3_1.conda sha256: 4c287c2721d8a34c94928be8fe0e9a85754e90189dd4384a31b1806856b50a67 md5: 61b8078a0905b12529abc622406cb62c @@ -10695,25 +9996,25 @@ packages: run_exports: {} size: 327184 timestamp: 1787344479632 -- conda: https://conda.anaconda.org/conda-forge/noarch/conda-index-0.12.1-pyhd8ed1ab_0.conda - sha256: 39f8f4b24e6c6b701679949950af3220bcf42bd634a68d63f7d39f64752b79a6 - md5: 1b8035639db6b74dcdc6b5412ae89011 +- conda: https://conda.anaconda.org/conda-forge/noarch/conda-index-0.13.0-pyh5ded981_0.conda + sha256: 3629dea4698cf120bb62ac9b6908c9182902a62d743f7d81bb8ecfb42d45fcbe + md5: 2f36e8e974c0c8a889870669c96a93c5 depends: + - python >=3.11 + - backports.zstd >=1.3.0 - conda >=25 - conda-package-streaming >=0.12.0 - - filelock - jinja2 - - msgpack-python >=1.0.2 - - python >=3.10 + - msgpack-python >=1.1.1 - ruamel.yaml - - zstandard + - python license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/conda-index?source=hash-mapping run_exports: {} - size: 210538 - timestamp: 1782239750810 + size: 214539 + timestamp: 1788522660257 - conda: https://conda.anaconda.org/conda-forge/noarch/conda-libmamba-solver-26.7.0-pyhcf101f3_0.conda sha256: b7cc67470a361330edd8d9e331cafd4807dd77bc766ca197a3783ed3db66dfeb md5: 49592004caf4336815fd5282bbb72172 @@ -10746,22 +10047,22 @@ packages: run_exports: {} size: 20633 timestamp: 1783438353470 -- conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.5.0-pyhcf101f3_0.conda - sha256: 63d5b510644a01b4c93738304cb0dc8a336542fc335b0b77f3b355ba7d119260 - md5: 3f1854f1ec2090538fb49b7078dbb9de +- conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.6.0-pyh5ded981_0.conda + sha256: 34b3c276e8426d851c62b905014ef4c05cfcc090f052d7ec4da1dda53e10bc57 + md5: 412f13a9700d4455dfca5c5e23be9404 depends: - - python >=3.10 - - conda-package-streaming >=0.12.0 + - python >=3.11 + - conda-package-streaming >=0.13.0 + - backports.zstd >=1.1.0 - requests - - zstandard >=0.15 - python license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/conda-package-handling?source=hash-mapping run_exports: {} - size: 256182 - timestamp: 1781015592350 + size: 257896 + timestamp: 1788438543851 - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.13.0-pyhd8ed1ab_0.conda sha256: af3b666ea6043a146901cd151d6201126bbe19af8307b58fb175015e3710064c md5: b4e3dcace82b486f69bc693f30120205 @@ -10775,43 +10076,64 @@ packages: run_exports: {} size: 23954 timestamp: 1781293054998 -- conda: https://conda.anaconda.org/conda-forge/noarch/conda-self-0.2.1-pyhd8ed1ab_0.conda - sha256: efd3b7b79a0e3993a174ab0140794479e2479b59fd053605acaaa25718f0f013 - md5: ac705504abf28bb924a021a3d5f4b55f +- conda: https://conda.anaconda.org/conda-forge/noarch/conda-pypi-0.12.0-pyh5ded981_0.conda + sha256: 5c41f9946b00966e1c216697ed34219bf054cb1c2fc9a41d2934bdce0c15c48c + md5: e294f0e16705c5678d8faf71636a5455 + depends: + - python >=3.11 + - packaging + - unearth + - python-build + - python-installer >=1.0 + - platformdirs + - conda-index >=0.12.0 + - conda-package-streaming >=0.11 + - python + constrains: + - conda >=26.1.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/conda-pypi?source=compressed-mapping + run_exports: {} + size: 252688 + timestamp: 1788892743969 +- conda: https://conda.anaconda.org/conda-forge/noarch/conda-self-0.3.0-pyhd8ed1ab_0.conda + sha256: ba6e0a634471934a5d2e4ef264c0ff012c8be9c4d0e9dafb5ad7abdf57fa199a + md5: f041b3104d0b01d187d72b1a71af79d3 depends: - conda >=26.1.1 - - python >=3.10 + - python >=3.11 license: BSD-3-Clause - license_family: BSD purls: - - pkg:pypi/conda-self?source=hash-mapping + - pkg:pypi/conda-self?source=compressed-mapping run_exports: {} - size: 22510 - timestamp: 1784724984642 -- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.14-py312hd8ed1ab_0.conda + size: 24528 + timestamp: 1790101731648 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.14-py312hd8ed1ab_3.conda noarch: generic - sha256: 2311eaabe48d48d03c9c4569ba6c789cb190a005805983fae7d16eb0c0c0c60c - md5: c602a908e40a3ae4431b162695a8ba8b + sha256: 1052869d599008850098c033f9568a2e28bb31238705969719be69a87474cc93 + md5: adee9213d9a98d7f8b5627209c8b4ae0 depends: - python >=3.12,<3.13.0a0 - python_abi * *_cp312 license: Python-2.0 purls: [] run_exports: {} - size: 45988 - timestamp: 1787351886793 -- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.15-py313hd8ed1ab_101.conda + size: 47172 + timestamp: 1788391292962 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.15-py313hd8ed1ab_103.conda noarch: generic - sha256: 1015448e0fb319fa8bb23148dd6ea34181cbcdc8f1880df61626db1999533a99 - md5: 128ab71e26d605b5d93e058dc7d563cc + sha256: c46fe2993a44cfa59e2d7673d77ce29c5bbc72b73e2597d58536eff7c196e57c + md5: 23f5019df9a1d2287cb99af4c81ca8d2 depends: - python >=3.13,<3.14.0a0 - python_abi * *_cp313 license: Python-2.0 purls: [] run_exports: {} - size: 48329 - timestamp: 1786366745175 + size: 49553 + timestamp: 1788386188585 - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda sha256: bb47aec5338695ff8efbddbc669064a3b10fe34ad881fb8ad5d64fbfa6910ed1 md5: 4c2a8fef270f6c69591889b93f9f55c1 @@ -10843,11 +10165,11 @@ packages: run_exports: {} size: 195368 timestamp: 1786708469836 -- conda: https://conda.anaconda.org/conda-forge/noarch/cyclopts-4.23.1-pyhcf101f3_0.conda - sha256: ee1d73b43df5843a6edc650d2fa52eb6b61228264bd79cc07e1488db84dda9a9 - md5: 252497d51f0133ecc9e68fc6eaa01a79 +- conda: https://conda.anaconda.org/conda-forge/noarch/cyclopts-4.25.2-pyh5ded981_0.conda + sha256: 5fb707e970054e52d68df3d1f7258e1fc6223d799866772ebec3f169dcffa7a0 + md5: c7bfc175bc91fe7d900d1ba0e1e8b361 depends: - - python >=3.10 + - python >=3.11 - attrs >=23.1.0 - rich >=13.6.0 - docstring_parser >=0.15,<4.0 @@ -10860,8 +10182,8 @@ packages: purls: - pkg:pypi/cyclopts?source=compressed-mapping run_exports: {} - size: 188507 - timestamp: 1787353459914 + size: 193877 + timestamp: 1788965111531 - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 sha256: 9717a059677553562a8f38ff07f3b9f61727bd614f505658b0a5ecbcf8df89be md5: 961b3a227b437d82ad7054484cfa71b2 @@ -10972,44 +10294,46 @@ packages: run_exports: {} size: 30753 timestamp: 1756729456476 -- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.32.4-pyhd8ed1ab_0.conda - sha256: c2c2527101fea8d2fbae3883d3328a4cd225e8fc3f133b49504acb7a8cecf6fe - md5: 0171dc5d54fdbb3f6e55f285f805e0fe +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.32.6-pyhd8ed1ab_0.conda + sha256: f20f0d74a3e31131ec02e24dc555bcf1446bd275c968fc601ec86a8633f7608d + md5: 42afc06f6512975dc9ee5afc15dcc3ee depends: - - python >=3.10 + - python >=3.11 license: Unlicense purls: - pkg:pypi/filelock?source=compressed-mapping run_exports: {} - size: 78622 - timestamp: 1787521663311 -- conda: https://conda.anaconda.org/conda-forge/noarch/flexcache-0.3-pyhd8ed1ab_1.conda - sha256: acdb7b73d84268773fcc8192965994554411edc488ec3447925a62154e9d3baa - md5: f1e618f2f783427019071b14a111b30d + size: 78889 + timestamp: 1788940924870 +- conda: https://conda.anaconda.org/conda-forge/noarch/flexcache-0.3-pyh5ded981_2.conda + sha256: fc30fd32ab60300e5ea6c15e3a39b3f3124a9236211fbb8bdb99708d3fbfed33 + md5: 9ed9902b7f19311ba0836f9dd0b4d7e0 depends: - - python >=3.9 + - python >=3.11 - typing-extensions + - python license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/flexcache?source=hash-mapping + - pkg:pypi/flexcache?source=compressed-mapping run_exports: {} - size: 16674 - timestamp: 1733663669958 -- conda: https://conda.anaconda.org/conda-forge/noarch/flexparser-0.4-pyhd8ed1ab_1.conda - sha256: 9bdad0cd9fb6d67e48798c03930d634ea2d33a894d30439d3d7bdffd3c21af7b - md5: 6dc4e43174cd552452fdb8c423e90e69 + size: 18768 + timestamp: 1788605834431 +- conda: https://conda.anaconda.org/conda-forge/noarch/flexparser-0.4-pyh5ded981_2.conda + sha256: 0a9caab09609fed3a84c3594b62751b3cd7b0d953a7a631175aa3f2c4052765a + md5: 5960ecf63e2d46f99dbfafa851c2206b depends: - - python >=3.9 - - typing-extensions - typing_extensions + - python >=3.11 + - typing-extensions + - python license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/flexparser?source=hash-mapping + - pkg:pypi/flexparser?source=compressed-mapping run_exports: {} - size: 28686 - timestamp: 1733663636245 + size: 30745 + timestamp: 1788605800152 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b md5: 0c96522c6bdaed4b1566d11387caaf45 @@ -11171,16 +10495,15 @@ packages: run_exports: {} size: 228050 timestamp: 1783803962833 -- conda: https://conda.anaconda.org/conda-forge/noarch/hatchling-1.32.0-pyhcf101f3_0.conda - sha256: 8a66f14a879572644b2fbd6d1357af7892961997a14c25cb17bd082d8360a67a - md5: 5d151f6743d58dfe2555ab8201a1b09d +- conda: https://conda.anaconda.org/conda-forge/noarch/hatchling-1.32.4-pyh5ded981_0.conda + sha256: 7c26a93ef28b1bebadd012ca403b338e716c378485de783cee1a490d15d409a8 + md5: 29f56fdb658cdccdda59fd575765a19f depends: - packaging >=24.2 - pathspec >=0.10.1 - pluggy >=1.0.0 - - python >=3.10 + - python >=3.11 - tomlkit >=0.11.1 - - tomli >=1.2.2 - trove-classifiers - editables >=0.3 - python @@ -11189,8 +10512,8 @@ packages: purls: - pkg:pypi/hatchling?source=compressed-mapping run_exports: {} - size: 62794 - timestamp: 1786711084570 + size: 63070 + timestamp: 1789948339002 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.2.0-pyhd8ed1ab_0.conda sha256: fdcea5d7cb314485d3907192ef024c704311548c5b0cbeb390cd1951051e29d2 md5: b395909221b9bd1df066e5930e18855b @@ -11247,26 +10570,26 @@ packages: run_exports: {} size: 49483 timestamp: 1745602916758 -- conda: https://conda.anaconda.org/conda-forge/noarch/httpcore2-2.12.0-pyhcf101f3_1.conda - sha256: c723a21068ef61cb15baf794ddda94e96b7c5eda88c0d031abcfe394b774487e - md5: b7fc5a329682f8270032c76120d4829e +- conda: https://conda.anaconda.org/conda-forge/noarch/httpcore2-2.13.0-pyh5ded981_0.conda + sha256: 132fce6628d35041aa11cf46a5a43b0a8f456243071eb4a4ae3b9b399bf57bf1 + md5: c5bfd4f82e7fad96a7cf3b8fd121414c depends: - h11 >=0.16 - - python >=3.10 + - python >=3.11 - truststore >=0.10 - python constrains: - anyio >=4.5.0,<5.0 - h2 >=3,<5 - socksio 1.* - - trio >=0.22.0,<1.0 + - trio >=0.34.0,<1.0 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/httpcore2?source=hash-mapping + - pkg:pypi/httpcore2?source=compressed-mapping run_exports: {} - size: 54269 - timestamp: 1787264227700 + size: 54529 + timestamp: 1789563565354 - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 md5: d6989ead454181f4f9bc987d3dc4e285 @@ -11283,32 +10606,32 @@ packages: run_exports: {} size: 63082 timestamp: 1733663449209 -- conda: https://conda.anaconda.org/conda-forge/noarch/httpx2-2.12.0-pyhe5d96d1_1.conda - sha256: e95824aac9632523d68e3d837d32bf3886783f094d078f54c9aba5741b78c462 - md5: 652310ec7393c2f5c80692659d41c401 +- conda: https://conda.anaconda.org/conda-forge/noarch/httpx2-2.13.0-pyhcd62e61_0.conda + sha256: f7954e89c7a055ea3805bb0d2001d9bc464ef5ec4da170a217ac4cf379ca22fe + md5: 86f74572069b6f105df4517c40aa44ce depends: - - httpcore2 ==2.12.0 pyhcf101f3_1 - - anyio + - httpcore2 ==2.13.0 pyh5ded981_0 + - anyio >=4.10 - idna >=3.18 - - python >=3.10 + - python >=3.11 - truststore >=0.10 - typing_extensions >=4.5.0 - python constrains: - backports.zstd >=1.0.0 - - click >=8.4 + - click >=8.4.2 + - h2 >=3,<5 - pygments 2.* - rich >=10,<16 - - h2 >=3,<5 - socksio 1.* - wsproto >=1.2 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/httpx2?source=hash-mapping + - pkg:pypi/httpx2?source=compressed-mapping run_exports: {} - size: 86352 - timestamp: 1787264227700 + size: 86456 + timestamp: 1789563565354 - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 md5: 8e6923fc12f1fe8f8c4e5c9f343256ac @@ -11362,19 +10685,19 @@ packages: run_exports: {} size: 79757 timestamp: 1776455344188 -- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.19-pyhcf101f3_0.conda - sha256: 1c35a59c1545ad0fdaddf1fbde7bcfa6ef41a8d68c3a2b0b4a291be00676163e - md5: a39ae05027e9b707742e41b30d296b75 +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.20-pyh5ded981_0.conda + sha256: e044b1ec829e2e24f971fa3f3408eb26f1db836e521a58f08b0fd9a03fee47be + md5: ee73be987f9de9ea5c2fdaeefa7b6491 depends: - - python >=3.10 + - python >=3.11 - python license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/idna?source=compressed-mapping run_exports: {} - size: 177433 - timestamp: 1787059857580 + size: 178572 + timestamp: 1790020377150 - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-2.0.1-pyhd8ed1ab_0.conda sha256: 4e787f9ccc31053ccea56d98ecd284a4f788988a3f9c4627db72fdd0b127529b md5: ebc56022e4ef7e74a829be94c53797ca @@ -11395,6 +10718,7 @@ packages: - zipp >=3.20 - python license: Apache-2.0 + license_family: APACHE purls: - pkg:pypi/importlib-metadata?source=compressed-mapping run_exports: {} @@ -11467,9 +10791,9 @@ packages: run_exports: {} size: 138635 timestamp: 1781101665847 -- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.17.0-pyh53cf698_0.conda - sha256: 8165024016181bf7d32a027180239cf15c4447ec02080b31dcae731809c0b3e2 - md5: 6ebd34681d8bc56e474fac76999de45a +- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.17.1-pyh53cf698_0.conda + sha256: 0fb38e0685e5065064ac007cf8317ee24b329373c9f80c31eb74c1bfcb0cfe24 + md5: 0e28933e51c1d05c179bfd595ead8aee depends: - __unix - ipython_pygments_lexers >=1.0.0 @@ -11485,11 +10809,12 @@ packages: - pexpect >4.6 - python license: BSD-3-Clause + license_family: BSD purls: - pkg:pypi/ipython?source=compressed-mapping run_exports: {} - size: 730292 - timestamp: 1787921913409 + size: 730678 + timestamp: 1788260388285 - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda sha256: 894682a42a7d659ae12878dbcb274516a7031bbea9104e92f8e88c1f2765a104 md5: bd80ba060603cc228d9d81c257093119 @@ -11592,6 +10917,7 @@ packages: - cloudpickle >=3.0 - python license: BSD-3-Clause + license_family: BSD purls: - pkg:pypi/joblib?source=compressed-mapping run_exports: {} @@ -11667,6 +10993,7 @@ packages: - typing_extensions >=4.13.0 - python license: BSD-3-Clause + license_family: BSD purls: - pkg:pypi/jupyter-client?source=compressed-mapping run_exports: {} @@ -11960,25 +11287,25 @@ packages: run_exports: {} size: 53561 timestamp: 1733302019362 -- conda: https://conda.anaconda.org/conda-forge/noarch/pint-0.25.3-pyhc364b38_0.conda - sha256: f58a03dd2908c15dc65fab7e03a0212c69043466f7f85a4e345470492841782f - md5: 293c4719f6d62778ffecd18e024a8fcd +- conda: https://conda.anaconda.org/conda-forge/noarch/pint-0.26.1-pyhc364b38_0.conda + sha256: b429c457fd9b838f8abce08f8171c06615c0b53d956e9ce2428f0581060803e0 + md5: efb8cc09053e36fe613b69f747a12543 depends: - - python >=3.11 + - python >=3.12 - platformdirs >=2.1.0 - flexcache >=0.3 - flexparser >=0.4 - typing_extensions >=4.0.0 - python constrains: - - numpy >=1.23 + - numpy >=2.0.0 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/pint?source=hash-mapping + - pkg:pypi/pint?source=compressed-mapping run_exports: {} - size: 245230 - timestamp: 1773969991837 + size: 260473 + timestamp: 1789769966127 - conda: https://conda.anaconda.org/conda-forge/noarch/pip-26.2.1-pyh145f28c_0.conda sha256: 0f7021cfb3ff454c91a5e28e1f5060906a52c6d1cde3f879a7d03ac33c28b1c3 md5: 573cb3ed111004230ed3de650653cd4d @@ -12080,18 +11407,19 @@ packages: run_exports: {} size: 30536 timestamp: 1739984682585 -- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.11.5-pyhcf101f3_0.conda - sha256: 4496a7e0b584a388b3580ab594a4f384696ab7d702282588fd33a7ee38af983c - md5: 152ec36401f710145a7db03475594410 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.11.11-pyh5ded981_0.conda + sha256: ba9e3a7ba041b569fb1c369ad5d16e47d79a0768b7a3a9bf469a5730c1c90cd8 + md5: 8fbbcac647ae8d387f011d2f0fe9041c depends: - - python >=3.10 + - python >=3.11 - python license: MIT + license_family: MIT purls: - pkg:pypi/platformdirs?source=compressed-mapping run_exports: {} - size: 27461 - timestamp: 1787881635603 + size: 28536 + timestamp: 1789914745574 - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda sha256: e14aafa63efa0528ca99ba568eaf506eb55a0371d12e6250aaaa61718d2eb62e md5: d7585b6550ad04c8c5e21097ada2888e @@ -12190,18 +11518,18 @@ packages: run_exports: {} size: 19457 timestamp: 1733302371990 -- conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - sha256: 71bd24600d14bb171a6321d523486f6a06f855e75e547fa0cb2a0953b02047f0 - md5: 3bfdfb8dbcdc4af1ae3f9a8eb3948f04 +- conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.4-pyhd8ed1ab_0.conda + sha256: 2151e981a422ef57031482b28df9c8432d54c1f44996e7760774813f167be863 + md5: 35993ea8ef5e76333e6efb6a0ffb3771 depends: - - python >=3.9 + - python >=3.11 license: MIT license_family: MIT purls: - - pkg:pypi/pure-eval?source=hash-mapping + - pkg:pypi/pure-eval?source=compressed-mapping run_exports: {} - size: 16668 - timestamp: 1733569518868 + size: 18473 + timestamp: 1789159440378 - conda: https://conda.anaconda.org/conda-forge/noarch/py-serializable-2.1.0-pyhe01879c_0.conda sha256: 4ffd89066e900ce4dd46d1c0be0df301a93c05e98dc30bb1367b7b2900997af5 md5: 3370ce91eb2bf86619891d1c1ee23420 @@ -12264,6 +11592,7 @@ packages: - pydantic-core ==2.46.5 - python license: MIT + license_family: MIT purls: - pkg:pypi/pydantic?source=compressed-mapping run_exports: {} @@ -12298,22 +11627,21 @@ packages: run_exports: {} size: 959376 timestamp: 1786995678795 -- conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.13.0-pyhcf101f3_0.conda - sha256: 58cda7489477fecb859ec95bf73cba7e4634db1a517e29e0d3086d7ec71733ae - md5: edb808d7f7396478ab6e457e697b8ec5 +- conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.14.0-pyh5ded981_0.conda + sha256: c4837529b9e8b7c6a6937893ea914a49440f06d5c28445ed80bf1adab2a3d37b + md5: 94360433faf8b6d7933de4e8af4f1b36 depends: - - python >=3.10 - - typing_extensions >=4.0 + - python >=3.11 - python constrains: - cryptography >=3.4.0 license: MIT license_family: MIT purls: - - pkg:pypi/pyjwt?source=hash-mapping + - pkg:pypi/pyjwt?source=compressed-mapping run_exports: {} - size: 33417 - timestamp: 1779400286454 + size: 35169 + timestamp: 1789935742612 - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.5-pyhcf101f3_0.conda sha256: 6814b61b94e95ffc45ec539a6424d8447895fef75b0fec7e1be31f5beee883fb md5: 6c8979be6d7a17692793114fa26916e8 @@ -12406,6 +11734,19 @@ packages: run_exports: {} size: 38968 timestamp: 1751412452245 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-timeout-2.4.0-pyhd8ed1ab_0.conda + sha256: 25afa7d9387f2aa151b45eb6adf05f9e9e3f58c8de2bc09be7e85c114118eeb9 + md5: 52a50ca8ea1b3496fbd3261bea8c5722 + depends: + - pytest >=7.0.0 + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pytest-timeout?source=hash-mapping + run_exports: {} + size: 20137 + timestamp: 1746533140824 - conda: https://conda.anaconda.org/conda-forge/noarch/python-build-1.6.0-pyhc364b38_0.conda sha256: d5bad775346fbd21cce7922b29cab2587fe599517654de65c3d2fe50a7126279 md5: 1e696c762d003f8f4af971b6dccb8c1e @@ -12420,6 +11761,7 @@ packages: constrains: - build <0 license: MIT + license_family: MIT purls: - pkg:pypi/build?source=compressed-mapping run_exports: {} @@ -12439,19 +11781,20 @@ packages: run_exports: {} size: 233310 timestamp: 1751104122689 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.6.0-pyhcf101f3_0.conda - sha256: e48089f2927811994b916d31953563097bc7e8d856965fbdeea3b4d407e3b89f - md5: e87738e32eaf5dfa98a5d49f611d6312 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.6.1-pyh5ded981_0.conda + sha256: 396bf7b5a62eb3a12d20e16962acf36f9018332b2842d29548399df03b9deaa4 + md5: ae0feb6a3f297952bd4f4270fe77f530 depends: - - python >=3.10 + - python >=3.11 - filelock >=3.15.4 - python license: MIT + license_family: MIT purls: - pkg:pypi/python-discovery?source=compressed-mapping run_exports: {} - size: 38928 - timestamp: 1787953569064 + size: 39252 + timestamp: 1789811798811 - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.3-pyhcf101f3_0.conda sha256: ad7b2dd059c1b693a09f799cbaf4b9d06ec7677c02c9447be98e0b33a49bc04c md5: b55edb60d527ce56226a1026abcb3e2c @@ -12478,28 +11821,28 @@ packages: run_exports: {} size: 254446 timestamp: 1786892280524 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.12.14-hd8ed1ab_0.conda - sha256: d006a720b5ff306e5d58f5ceeeb11ecae6d0b071200fb014ab6e2d2c3be65733 - md5: 3b084ff55bd64d09178194042f50f6ba +- conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.12.14-hd8ed1ab_3.conda + sha256: 7096d98d7dd0cdb9256c5714d7228a8ce7aca3bd014304ea5c1673c259df72ef + md5: 7fafcd204183cfa7c1ae4ad9c2d8d414 depends: - cpython 3.12.14.* - python_abi * *_cp312 license: Python-2.0 purls: [] run_exports: {} - size: 45973 - timestamp: 1787351908212 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.15-h4df99d1_101.conda - sha256: bc9fcc5c7bf80a382fc2b38a22db3549b39dc5ae114537c32fe610be005d16ba - md5: c5e565a020c31fd7aba0a87dc2fc29d0 + size: 47142 + timestamp: 1788391303150 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.15-h4df99d1_103.conda + sha256: ce01f8f3c9fde229b26e0d37b85e1566bb32fcf26750af95d6313b4a369775c3 + md5: 86d251460e192368d2982e5b0dcad798 depends: - cpython 3.13.15.* - python_abi * *_cp313 license: Python-2.0 purls: [] run_exports: {} - size: 48362 - timestamp: 1786366765154 + size: 49529 + timestamp: 1788386202638 - conda: https://conda.anaconda.org/conda-forge/noarch/python-installer-1.0.1-pyh332efcf_0.conda sha256: 9c18fa1ebd0c839b6ea12e99d510a0968c2288cc423185cb34bf7332b97684e9 md5: 5cc7e2e78962dc902cae9e29c2aa4b2f @@ -12525,30 +11868,30 @@ packages: run_exports: {} size: 29627 timestamp: 1754663558440 -- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda - build_number: 8 - sha256: 80677180dd3c22deb7426ca89d6203f1c7f1f256f2d5a94dc210f6e758229809 - md5: c3efd25ac4d74b1584d2f7a57195ddf1 +- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-9_cp312.conda + build_number: 9 + sha256: ee9c2922e07afc85fc82d5fa82c9ac2c79da3be3283a5e17bf2f2ae38dbd02fb + md5: 4c32076993e6270825441d059ab5c18b constrains: - python 3.12.* *_cpython license: BSD-3-Clause license_family: BSD purls: [] run_exports: {} - size: 6958 - timestamp: 1752805918820 -- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - build_number: 8 - sha256: 210bffe7b121e651419cb196a2a63687b087497595c9be9d20ebe97dd06060a7 - md5: 94305520c52a4aa3f6c2b1ff6008d9f8 + size: 6751 + timestamp: 1788302823694 +- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-9_cp313.conda + build_number: 9 + sha256: 9dc0cb6a20ebc7e9bcd8c6868f2bec083c114b0ba20b7118405c036533d5c522 + md5: c5abc97af551bc12d71305852392f75c constrains: - python 3.13.* *_cp313 license: BSD-3-Clause license_family: BSD purls: [] run_exports: {} - size: 7002 - timestamp: 1752805902938 + size: 6769 + timestamp: 1788302828005 - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2026.3.post1-pyhcf101f3_0.conda sha256: ad774abda71c759baef515983bfedbba34d56d6227974c23715c04612f812a90 md5: eb2fb9070c0232e96ae5515d8b28e4f9 @@ -12562,26 +11905,42 @@ packages: run_exports: {} size: 201126 timestamp: 1785077087428 -- conda: https://conda.anaconda.org/conda-forge/noarch/pyvista-0.48.4-pyhd8ed1ab_1.conda - sha256: a4d31eefa4afda2928968c2ad12f6ebad2cc3187c11011f69daa0378e9c0aec3 - md5: 7688fc6ae896d8fc848776f9ba60d716 +- conda: https://conda.anaconda.org/conda-forge/noarch/pyvista-0.49.0-pyhd8ed1ab_0.conda + sha256: 41ed015b823fe75b706afa95be1666ca222d83a9465badfb4363ab338edf6904 + md5: 7db86fc002edd5ba88dc13902801b1d5 depends: - cyclopts >=4.0.0 - matplotlib-base >=3.0.1 - numpy - pillow - pooch - - python >=3.10 + - python >=3.11 + - pyvista-validation 0.2.2 - scooby >=0.5.1 - typing-extensions - - vtk-base !=9.4.0,!=9.4.1,<9.7.0 + - vtk-base !=9.4.0,!=9.4.1,<9.8.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyvista?source=compressed-mapping + run_exports: {} + size: 2332487 + timestamp: 1790023231927 +- conda: https://conda.anaconda.org/conda-forge/noarch/pyvista-validation-0.2.2-pyh5ded981_0.conda + sha256: d3f75c3a2004b969db2099a18031349447925a91f01479a1d7667fcb1a9d7ba7 + md5: e06843d2fd3ed2b0472c7f11b52e7f3e + depends: + - python >=3.11 + - numpy >=1.21.0 + - typing_extensions >=4.4 + - python license: MIT license_family: MIT purls: - - pkg:pypi/pyvista?source=hash-mapping + - pkg:pypi/pyvista-validation run_exports: {} - size: 2261167 - timestamp: 1784682351083 + size: 40640 + timestamp: 1789614540757 - conda: https://conda.anaconda.org/conda-forge/noarch/pyvistaqt-0.12.0-pyhd8ed1ab_0.conda sha256: 3fb2b909accf080739b737146feac2917ad4395053b184bb1c2f7c68c4b44be5 md5: 3952200a91675ac653bbeca2e48d5168 @@ -12596,6 +11955,20 @@ packages: run_exports: {} size: 138350 timestamp: 1783014785311 +- conda: https://conda.anaconda.org/conda-forge/noarch/pyvistaqt-0.13.1-pyhd8ed1ab_0.conda + sha256: af55f8a59a40f9b8cf9d025c2ef5f6d595f7a8713fbc035e831c7a01b9195acf + md5: 1ed689c33e8704c47d10cfe4c891da7c + depends: + - python >=3.11 + - pyvista >=0.43.7 + - qtpy >=1.9.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyvistaqt?source=hash-mapping + run_exports: {} + size: 144405 + timestamp: 1788904530966 - conda: https://conda.anaconda.org/conda-forge/noarch/qtconsole-5.7.2-pyhd8ed1ab_0.conda sha256: 890fdf416cb1cb29bfe502fb1b038b60a87a6cdffc0a78db6b9688d8ae75f0c8 md5: 506f8b95ef2554db6160f0e8b8994313 @@ -12680,6 +12053,7 @@ packages: - python >=3.10 - python license: Apache-2.0 + license_family: APACHE purls: - pkg:pypi/readme-renderer?source=hash-mapping run_exports: {} @@ -12786,18 +12160,35 @@ packages: run_exports: {} size: 13814 timestamp: 1766003022813 -- conda: https://conda.anaconda.org/conda-forge/noarch/scooby-0.11.2-pyhd8ed1ab_0.conda - sha256: f9c82b8e992963b8c61e20536d7009a6675d3136fcdd737dfc6b60e000d57d3f - md5: c5b13fecbbd3984f12a70599973c6551 +- conda: https://conda.anaconda.org/conda-forge/noarch/scooby-0.12.0-pyhd8ed1ab_0.conda + sha256: 09ed2efa8a107164e2724392408db48e0d7388251e57be73dd02d13669c5240d + md5: 820b402968e73e94ae47ff322c3206a5 depends: - - python >=3.10 + - python >=3.11 license: MIT license_family: MIT purls: - - pkg:pypi/scooby?source=hash-mapping + - pkg:pypi/scooby?source=compressed-mapping + run_exports: {} + size: 26786 + timestamp: 1789130327740 +- conda: https://conda.anaconda.org/conda-forge/noarch/secretstorage-3.5.0-pyhc9edb4d_3.conda + sha256: 8737d5470befc491447e8ec9f8d9eb486cee3c536190609f71dcfc38d07304b1 + md5: 0792c92f542eaa716b6f2331e25f0027 + depends: + - __linux + - cryptography >=2.0 + - dbus + - jeepney >=0.6 + - python >=3.11 + - python + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/secretstorage?source=compressed-mapping run_exports: {} - size: 24816 - timestamp: 1776995060561 + size: 20124 + timestamp: 1790028131640 - conda: https://conda.anaconda.org/conda-forge/noarch/seekpath-2.2.1-pyhcf101f3_2.conda sha256: 0c31fc514e782eb67fa9e7100389466994773ac0431d35e86c5629151abf9500 md5: 910e60de5711de260de6b00a3b4e6be5 @@ -12814,19 +12205,19 @@ packages: run_exports: {} size: 57143 timestamp: 1777477135226 -- conda: https://conda.anaconda.org/conda-forge/noarch/semver-3.0.4-pyhcf101f3_1.conda - sha256: bea67173ed67c73cf16691ef72e58059492ac1ed1c880cfbeb6f1295c5add7d6 - md5: 8e7be844ccb9706a999a337e056606ab +- conda: https://conda.anaconda.org/conda-forge/noarch/semver-3.1.0-pyh5ded981_0.conda + sha256: 982fe22d9c84d32fd0c87f6651b4013917ad381b640e93376a5c311b84c0dd7c + md5: 82ad3c5449650f22625ee569fe61c518 depends: - - python >=3.10 + - python >=3.11 - python license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/semver?source=hash-mapping + - pkg:pypi/semver?source=compressed-mapping run_exports: {} - size: 22532 - timestamp: 1767294175877 + size: 23394 + timestamp: 1789890356943 - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.1-pyh332efcf_0.conda sha256: 82088a6e4daa33329a30bc26dc19a98c7c1d3f05c0f73ce9845d4eab4924e9e1 md5: 8e194e7b992f99a5015edbd4ebd38efd @@ -12839,18 +12230,6 @@ packages: run_exports: {} size: 639697 timestamp: 1773074868565 -- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-83.0.0-pyh332efcf_0.conda - sha256: 48a9f96016505debadfc67f06de7ac548decbc38d327409b24b0432ef6f16335 - md5: 6bf6acbab2499830180ec88c3aff2fa4 - depends: - - python >=3.10 - license: MIT - license_family: MIT - purls: - - pkg:pypi/setuptools?source=hash-mapping - run_exports: {} - size: 642081 - timestamp: 1783619174976 - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-84.0.0-pyh332efcf_0.conda sha256: 9e200ee5f9ff19a4d94e4b51c4856d53dec849f91032f345cf0c6bc3d51a7183 md5: 62ac906f1cd582c6c264c95625cb9d6f @@ -13044,20 +12423,21 @@ packages: run_exports: {} size: 10462 timestamp: 1733753857224 -- conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-mermaid-2.1.0-pyhd8ed1ab_0.conda - sha256: 58e54c286e2e885eae55160dedae76b137ce1485c2423d33775504a309cbab55 - md5: 63ca20d1a1a641533bc65b6b9a330448 +- conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-mermaid-2.1.1-pyh5ded981_1.conda + sha256: ff1ab95f8221fc6a9a550c0891cdccc4239f1515b347824320cb18aec5a8dc5e + md5: e0f40dce19f248bd466e2251bf1c7803 depends: - - python >=3.10 + - python >=3.11 - pyyaml - sphinx + - python license: BSD-2-Clause license_family: BSD purls: - pkg:pypi/sphinxcontrib-mermaid?source=hash-mapping run_exports: {} - size: 22396 - timestamp: 1784466936166 + size: 23782 + timestamp: 1788294362671 - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-programoutput-0.20-pyhc364b38_0.conda sha256: 5fe93ad381f85a46b3236ac258c834def99c58d1a12a6a63c0e8cba5793c69c0 md5: 446ccfca577da018891f291af093c592 @@ -13130,18 +12510,18 @@ packages: run_exports: {} size: 82389 timestamp: 1782583538546 -- conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda - sha256: 6016672e0e72c4cf23c0cf7b1986283bd86a9c17e8d319212d78d8e9ae42fdfd - md5: 9d64911b31d57ca443e9f1e36b04385f +- conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.7.0-pyhc455866_0.conda + sha256: a32d17fe979e59fe1295875b5d4f0431a76dfbbfcee5b01e657a8aa3c4a1b5d1 + md5: 8c05910e780502e362d658f00f5ec10f depends: - - python >=3.9 + - python >=3.11 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/threadpoolctl?source=hash-mapping + - pkg:pypi/threadpoolctl?source=compressed-mapping run_exports: {} - size: 23869 - timestamp: 1741878358548 + size: 31829 + timestamp: 1789547529761 - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhcf101f3_3.conda sha256: fd30e43699cb22ab32ff3134d3acf12d6010b5bbaa63293c37076b50009b91f8 md5: d0fc809fa4c4d85e959ce4ab6e1de800 @@ -13205,11 +12585,11 @@ packages: run_exports: {} size: 53978 timestamp: 1760707830681 -- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.70.0-pyh8f84b5b_0.conda - sha256: a4d9e9da15b13f1ab047e7db412e2ed564bc615832e80213cf129b973c3abf4a - md5: 00953c3b729e03b0ae21f49fdf3441bb +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.70.1-pyhfa0c392_0.conda + sha256: 7c40c84de3de3624c2a753496122dbb880903c796d183e9d4be6c15c310c4bab + md5: ffc91f29264eeb8d3ba96fdc897316c3 depends: - - python >=3.10 + - python >=3.11 - __unix - python constrains: @@ -13217,10 +12597,10 @@ packages: - ipywidgets >=6.0 license: MPL-2.0 and MIT purls: - - pkg:pypi/tqdm?source=hash-mapping + - pkg:pypi/tqdm?source=compressed-mapping run_exports: {} - size: 98184 - timestamp: 1785172528905 + size: 95977 + timestamp: 1789187326570 - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.16.1-pyhcf101f3_0.conda sha256: 03dba5917f944c6684ab44c81daacac1624cd148e4b2cae215dcec594a210c48 md5: a79bf97561232a31447b6246c2153ab5 @@ -13298,18 +12678,18 @@ packages: run_exports: {} size: 188056 timestamp: 1787921102267 -- conda: https://conda.anaconda.org/conda-forge/noarch/types-pyyaml-6.0.12.20260815-pyhcf101f3_0.conda - sha256: 9790e34c023c33e3cebf9c9eeed411d468803eb6edbab3bc61116522fdaa32aa - md5: cd5c2725760ce602617c80a2b4c26d6d +- conda: https://conda.anaconda.org/conda-forge/noarch/types-pyyaml-6.0.12.20260906-pyh5ded981_0.conda + sha256: f03e3fd7c700ae031261a1c63ff9936f94b182cfd31b425692432f924b2fc1b6 + md5: a7974f6a351b4a33cf188dd50d72dc63 depends: - - python >=3.10 + - python >=3.11 - python license: Apache-2.0 AND MIT purls: - - pkg:pypi/types-pyyaml?source=compressed-mapping + - pkg:pypi/types-pyyaml?source=hash-mapping run_exports: {} - size: 27436 - timestamp: 1786859675692 + size: 27677 + timestamp: 1788690143833 - conda: https://conda.anaconda.org/conda-forge/noarch/types-six-1.17.0.20260724-pyhcf101f3_0.conda sha256: a9d4abb680ac9ddab671a63866ee7500ca516f6ee323076633bf86452525294a md5: e2913d70cf4a2daab0034748e7438b7f @@ -13398,22 +12778,22 @@ packages: run_exports: {} size: 288616 timestamp: 1786845009822 -- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.7.0-pyhd8ed1ab_0.conda - sha256: feff959a816f7988a0893201aa9727bbb7ee1e9cec2c4f0428269b489eb93fb4 - md5: cbb88288f74dbe6ada1c6c7d0a97223e +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.8.0-pyhd8ed1ab_0.conda + sha256: c5511c190ab55168ca412f3c54592fbf677ae6250784cb72b227a7cf3f538f7d + md5: 407a3d3778570bae8e8fcf554e803e43 depends: - backports.zstd >=1.0.0 - brotli-python >=1.2.0 - h2 >=4,<5 - pysocks >=1.5.6,<2.0,!=1.5.7 - - python >=3.10 + - python >=3.11 license: MIT license_family: MIT purls: - - pkg:pypi/urllib3?source=hash-mapping + - pkg:pypi/urllib3?source=compressed-mapping run_exports: {} - size: 103560 - timestamp: 1778188657149 + size: 107485 + timestamp: 1789566710244 - conda: https://conda.anaconda.org/conda-forge/noarch/userpath-1.9.2-pyhd8ed1ab_0.conda sha256: 26e53b42f7fa1127e6115a35b91c20e15f75984648b88f115136f27715d4a440 md5: 946e3571aaa55e0870fec0dea13de3bf @@ -13442,23 +12822,22 @@ packages: run_exports: {} size: 167034 timestamp: 1751113901223 -- conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.7.7-pyhcf101f3_0.conda - sha256: c6a9206ef4b8dfbbb1e6199f06d7db602e041d4948247d2eac3a07f9ce5a5ad5 - md5: 768a861e1491dc8ee2a93fa8b7ee4317 +- conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.10.0-pyh5ded981_0.conda + sha256: 5888d7ad6ae4bb62372aedb735bc3226ff7f671544072c0e8dddad50f93cc0f3 + md5: 80fb14ea4b5d8a6068f88766cd6ec0a5 depends: - - python >=3.10 + - python >=3.11 - distlib >=0.3.7,<1 - filelock >=3.24.2,<4 - platformdirs >=3.9.1,<5 - python-discovery >=1.6 - - typing_extensions >=4.13.2 - python license: MIT purls: - - pkg:pypi/virtualenv?source=hash-mapping + - pkg:pypi/virtualenv?source=compressed-mapping run_exports: {} - size: 3895295 - timestamp: 1787973126029 + size: 3995940 + timestamp: 1790104180809 - conda: https://conda.anaconda.org/conda-forge/noarch/wayland-protocols-1.49-hd8ed1ab_0.conda sha256: 04ce686cd187d379344f9b2be7b4da5f431b265dc0944a6b764fab9da9171948 md5: 0839a3421140d4a9ba93fb988698fc00 @@ -13468,18 +12847,19 @@ packages: run_exports: {} size: 147954 timestamp: 1780946721169 -- conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.8.3-pyhcf101f3_0.conda - sha256: 3b0599d59d70bbe792702d1b5404ac501c9c25bd7b2fd9ccbb5da8ad6587a703 - md5: f62991f907a9830ab003b12d07dd3478 +- conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.8.4-pyh5ded981_0.conda + sha256: cfd36e1495feebbe2b9dfae35989fea057913160c0e94ffb836c146b3e34e683 + md5: cc58f30689ed64810d19777174d877f4 depends: - - python >=3.10 + - python >=3.11 - python license: MIT + license_family: MIT purls: - pkg:pypi/wcwidth?source=compressed-mapping run_exports: {} - size: 146490 - timestamp: 1788174996551 + size: 141589 + timestamp: 1789858677424 - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda sha256: 19ff205e138bb056a46f9e3839935a2e60bd1cf01c8241a5e172a422fed4f9c6 md5: 2841eb5bfc75ce15e9a0054b98dcd64d @@ -13532,9 +12912,9 @@ packages: run_exports: {} size: 24190 timestamp: 1779159948016 -- conda: https://conda.anaconda.org/mantid-ornl/label/rc/linux-64/mantid-6.16.1.2rc1-np21py312h02a82f0_0.conda - sha256: ba3dc33598c4075aaabcdcbf9b6ed31c00971cc3fcbca55724b1956f5418b938 - md5: 41d7a6d49102fb2cbf68eb40dc39c2af +- conda: https://conda.anaconda.org/mantid-ornl/label/rc/linux-64/mantid-6.16.1.2rc2-np21py313he1c858e_0.conda + sha256: aa457cf8520bef3288984bf042bdfb0b979a887f61feb39a46db24a7ec6132ab + md5: bb3c41ee175af67310c94fe7be610411 depends: - gsl 2.8.* - hdf4 4.2.* @@ -13544,7 +12924,7 @@ packages: - occt 7.* novtk* - pycifrw - pydantic >=2.11.4,<3 - - python + - python 3.13.* - pyyaml >=5.4.1 - scipy >=1.16.0,<1.17 - euphonic >=1.6.0,<2.0 @@ -13557,96 +12937,94 @@ packages: - libboost 1.88.* - libboost-python 1.88.* - libglu >=9.0 - - libgcc >=13 - libstdcxx >=13 - - _openmp_mutex >=4.5 + - libgcc >=13 - __glibc >=2.17,<3.0.a0 - - libgl >=1.7.0,<2.0a0 - - occt >=7.9.3,<7.9.4.0a0 - - libboost-python >=1.88.0,<1.89.0a0 + - _openmp_mutex >=4.5 + - libglu >=9.0.3,<9.1.0a0 - gtest >=1.17.0,<1.17.1.0a0 - - xorg-libxxf86vm >=1.1.7,<2.0a0 + - libzlib >=1.3.2,<2.0a0 + - python_abi 3.13.* *_cp313 + - hdf5 >=1.14.6,<1.14.7.0a0 + - gsl >=2.8,<2.9.0a0 + - muparser >=2.3.4,<2.4.0a0 + - jsoncpp >=1.9.6,<1.9.7.0a0 + - libboost-python >=1.88.0,<1.89.0a0 + - librdkafka >=2.13.2,<2.14.0a0 + - occt >=7.9.3,<7.9.4.0a0 - tbb >=2023.0.0 - xorg-libx11 >=1.8.13,<2.0a0 - - libglu >=9.0.3,<9.1.0a0 - - librdkafka >=2.13.2,<2.14.0a0 + - xorg-libxxf86vm >=1.1.7,<2.0a0 + - libopenblas >=0.3.27,<1.0a0 - hdf4 >=4.2.15,<4.2.16.0a0 - - muparser >=2.3.4,<2.4.0a0 - - libzlib >=1.3.2,<2.0a0 - libboost >=1.88.0,<1.89.0a0 - - python_abi 3.12.* *_cp312 - - jsoncpp >=1.9.6,<1.9.7.0a0 - - poco >=1.15.3,<1.15.4.0a0 - - libopenblas >=0.3.27,<1.0a0 - - gsl >=2.8,<2.9.0a0 - numpy >=1.21,<3 - - hdf5 >=1.14.6,<1.14.7.0a0 + - libgl >=1.7.0,<2.0a0 + - poco >=1.15.3,<1.15.4.0a0 constrains: - matplotlib-base 3.10.* - pyparsing <3.3.0 - pystog >=0.6.3 license: GPL-3.0-or-later - size: 38724655 - timestamp: 1785510871227 -- conda: https://conda.anaconda.org/mantid-ornl/label/rc/linux-64/mantidqt-6.16.1.2rc1-py312h5be7155_0.conda - sha256: 76fa5354d19b0fd1464bae4de19c53bd7cd813164790cbeafba5040880795d19 - md5: 55b60f08d821b5ec5b4cd9f1026ccd1f + size: 38866434 + timestamp: 1788875777583 +- conda: https://conda.anaconda.org/mantid-ornl/label/rc/linux-64/mantidqt-6.16.1.2rc2-py313h4e5e0ba_0.conda + sha256: e996c4c427ba3a7a2fb89d134a7629d74a715c186a5ab4c40dafb7a4a1c80490 + md5: c725f951ae71c679d18c29b33e0da649 depends: - - mantid ==6.16.1.2rc1 + - mantid ==6.16.1.2rc2 - matplotlib 3.10.* - qscintilla2 >=2.14.1 - qtpy >=2.4,!=2.4.2 - - python + - python 3.13.* - qt6-main >=6.11.1,<6.12.0a0 - qt6-gtk-platformtheme - - libgcc >=13 - __glibc >=2.17,<3.0.a0 - libstdcxx >=13 + - libgcc >=13 - _openmp_mutex >=4.5 - - libgl >=1.7.0,<2.0a0 - - tbb >=2023.0.0 - - xorg-libxxf86vm >=1.1.7,<2.0a0 - - pyqt6 >=6.11.0,<6.12.0a0 - - python_abi 3.12.* *_cp312 - - fontconfig >=2.17.1,<3.0a0 - - fonts-conda-ecosystem - - mantid ==6.16.1.2rc1 np21py312h02a82f0_0 - - libopenblas >=0.3.27,<1.0a0 + - qt6-gtk-platformtheme >=6.11.1,<6.12.0a0 - libboost >=1.88.0,<1.89.0a0 + - pyqt6 >=6.11.0,<6.12.0a0 + - qt6-main >=6.11.1,<7.0a0 - libboost-python >=1.88.0,<1.89.0a0 + - libgl >=1.7.0,<2.0a0 + - mantid ==6.16.1.2rc2 np21py313he1c858e_0 + - libopenblas >=0.3.27,<1.0a0 + - tbb >=2023.0.0 + - python_abi 3.13.* *_cp313 - xorg-libx11 >=1.8.13,<2.0a0 + - xorg-libxxf86vm >=1.1.7,<2.0a0 license: GPL-3.0-or-later - size: 10953212 - timestamp: 1785511310034 -- conda: https://conda.anaconda.org/mantid-ornl/label/rc/linux-64/mantidworkbench-6.16.1.2rc1-py312h6bd2d32_0.conda - sha256: 255a0572ff4f3ea435e139fcad47b6e485059f6f55cc27d29ac44556ff9e190a - md5: dd82d96be1c07f407f959c0638849a74 + size: 11074171 + timestamp: 1788876218620 +- conda: https://conda.anaconda.org/mantid-ornl/label/rc/linux-64/mantidworkbench-6.16.1.2rc2-py313h6f496a1_0.conda + sha256: 0c9db56fbdac05e0004701d19353dc418a3221662dc66495d629095efc1aa156 + md5: f442f2eda9bbce1a7668f5e366ddf969 depends: - - fontconfig 2.17.* - ipykernel - - mantidqt ==6.16.1.2rc1 + - mantidqt ==6.16.1.2rc2 - psutil >=5.8.0 - - python >=3.12.13,<3.13.0a0 + - python 3.13.* - matplotlib 3.10.* - pyvista >=0.46 - pyvistaqt >=0.11.3 - superqt - - setuptools >=83.0.0,<83.1.0a0 - qtconsole-base >5.5.0 - pystack - lz4 - xorg-libx11 >=1.8.13,<2.0a0 - - xorg-libxxf86vm >=1.1.7,<2.0a0 - libgl >=1.7.0,<2.0a0 - - tbb >=2023.0.0 - - mantidqt ==6.16.1.2rc1 py312h5be7155_0 - - python_abi 3.12.* *_cp312 + - python_abi 3.13.* *_cp313 + - mantidqt ==6.16.1.2rc2 py313h4e5e0ba_0 + - tbb >=2023.1.0 + - xorg-libxxf86vm >=1.1.7,<2.0a0 constrains: - mslice >=2.15 - - mantiddocs ==6.16.1.2rc1 + - mantiddocs ==6.16.1.2rc2 license: GPL-3.0-or-later - size: 1436680 - timestamp: 1785520713845 + size: 1447277 + timestamp: 1788883060848 - conda: https://conda.anaconda.org/mantid/label/main/linux-64/mantid-6.16.1-np21py312h68643e6_0.conda sha256: 0df68afbc5f0b7590e0fef0392a78d04bc975260331d189a9aaccbc82928ed3e md5: 0c3622ab2727a3d0b8f51045f6f40c66 @@ -13766,9 +13144,9 @@ packages: license: GPL-3.0-or-later size: 2804028 timestamp: 1782951515896 -- conda: https://conda.anaconda.org/mantid/label/nightly/linux-64/mantid-6.16.20260828.1750-np21py313he1c858e_0.conda - sha256: afa5bf6f019e14cfba86ebe7119d6650cec99d908793047cf2c0391d1e79f491 - md5: 1b75f7bb4d15c92b4e99639c280039e7 +- conda: https://conda.anaconda.org/mantid/label/nightly/linux-64/mantid-6.16.20260918.1225-np21py313h00d128e_0.conda + sha256: 342b1cf39f65082ec4432e6432b36c3515ea1f178e4f96e4b57e99f9b0d79f24 + md5: 13b06d6bb5f65ec5eb2330ededc4798e depends: - gsl 2.8.* - hdf4 4.2.* @@ -13791,94 +13169,106 @@ packages: - libboost 1.88.* - libboost-python 1.88.* - libglu >=9.0 - - libgcc >=13 - __glibc >=2.17,<3.0.a0 - _openmp_mutex >=4.5 - libstdcxx >=13 + - libgcc >=13 + - gtest >=1.17.0,<1.17.1.0a0 + - libzlib >=1.3.2,<2.0a0 + - occt >=7.9.3,<7.9.4.0a0 + - hdf4 >=4.2.15,<4.2.16.0a0 + - numpy >=1.21,<3 + - libboost-python >=1.88.0,<1.89.0a0 - hdf5 >=1.14.6,<1.14.7.0a0 - python_abi 3.13.* *_cp313 - - libopenblas >=0.3.27,<1.0a0 - - librdkafka >=2.13.2,<2.14.0a0 - - libboost-python >=1.88.0,<1.89.0a0 - - libglu >=9.0.3,<9.1.0a0 - - tbb >=2023.0.0 - - gsl >=2.8,<2.9.0a0 - - muparser >=2.3.4,<2.4.0a0 - xorg-libxxf86vm >=1.1.7,<2.0a0 + - muparser >=2.3.4,<2.4.0a0 - libgl >=1.7.0,<2.0a0 - - occt >=7.9.3,<7.9.4.0a0 - - gtest >=1.17.0,<1.17.1.0a0 - - hdf4 >=4.2.15,<4.2.16.0a0 - - poco >=1.15.3,<1.15.4.0a0 - - libzlib >=1.3.2,<2.0a0 - libboost >=1.88.0,<1.89.0a0 - - jsoncpp >=1.9.6,<1.9.7.0a0 - - numpy >=1.21,<3 + - tbb >=2023.0.0 + - libopenblas >=0.3.27,<1.0a0 - xorg-libx11 >=1.8.13,<2.0a0 + - libglu >=9.0.3,<9.1.0a0 + - librdkafka >=2.13.2,<2.14.0a0 + - poco >=1.15.3,<1.15.4.0a0 + - gsl >=2.8,<2.9.0a0 + - jsoncpp >=1.9.6,<1.9.7.0a0 constrains: - matplotlib-base 3.10.* - pyparsing <3.3.0 - pystog >=0.6.3 + - plotly >=5.0.0 license: GPL-3.0-or-later - size: 38819412 - timestamp: 1787962964438 -- conda: https://conda.anaconda.org/mantid/label/nightly/linux-64/mantidqt-6.16.20260828.1750-py313h4e5e0ba_0.conda - sha256: 1e8f17eba6ac2981c606e3caf3813b007148e1e99e3da8b8e99e22d43be74bfc - md5: a7710e90de33df0e9db2715b02e559bd + size: 39128115 + timestamp: 1789770099182 +- conda: https://conda.anaconda.org/mantid/label/nightly/linux-64/mantidqt-6.16.20260918.1225-py313hf47c1b5_0.conda + sha256: 4ea4c632c11e062b6972dc4a28943cdccd6ba842ac2cf142af31990d4f548b9b + md5: 353721fa875134bd3b23d62a5256af85 depends: - - mantid ==6.16.20260828.1750 + - mantid ==6.16.20260918.1225 - matplotlib 3.10.* - qscintilla2 >=2.14.1 - qtpy >=2.4,!=2.4.2 - python 3.13.* - qt6-main >=6.11.1,<6.12.0a0 - qt6-gtk-platformtheme - - __glibc >=2.17,<3.0.a0 - _openmp_mutex >=4.5 + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 - - python_abi 3.13.* *_cp313 - - libopenblas >=0.3.27,<1.0a0 + - qt6-main >=6.11.1,<7.0a0 + - xorg-libxxf86vm >=1.1.7,<2.0a0 + - qt6-gtk-platformtheme >=6.11.1,<6.12.0a0 - tbb >=2023.0.0 - pyqt6 >=6.11.0,<6.12.0a0 - - mantid ==6.16.20260828.1750 np21py313he1c858e_0 - - xorg-libxxf86vm >=1.1.7,<2.0a0 + - mantid ==6.16.20260918.1225 np21py313h00d128e_0 + - python_abi 3.13.* *_cp313 - libboost >=1.88.0,<1.89.0a0 - - qt6-gtk-platformtheme >=6.11.1,<6.12.0a0 - - libgl >=1.7.0,<2.0a0 - xorg-libx11 >=1.8.13,<2.0a0 + - libgl >=1.7.0,<2.0a0 - libboost-python >=1.88.0,<1.89.0a0 - - qt6-main >=6.11.1,<7.0a0 + - libopenblas >=0.3.27,<1.0a0 license: GPL-3.0-or-later - size: 11052828 - timestamp: 1787963405661 -- conda: https://conda.anaconda.org/mantid/label/nightly/linux-64/mantidworkbench-6.16.20260828.1750-py313h6f496a1_0.conda - sha256: bca887877e93d31b51febedc7bbc60771e6a286907bb7090d22afc9b52598de4 - md5: 4206d1916d5c6bb2075834b783e3df32 + size: 11344665 + timestamp: 1789770535926 +- conda: https://conda.anaconda.org/mantid/label/nightly/linux-64/mantidworkbench-6.16.20260918.1225-py313h97147f1_0.conda + sha256: 5ebccc6190e9823d71b73400c378d1983b41b5361bac97c940de6a66b8a5c3ef + md5: 7b987f9f749d07309d12553fd84a8970 depends: - ipykernel - - mantidqt ==6.16.20260828.1750 + - mantidqt ==6.16.20260918.1225 - psutil >=5.8.0 - python 3.13.* - matplotlib 3.10.* - pyvista >=0.46 - - pyvistaqt >=0.11.3 + - pyvistaqt >=0.11.3,<0.13.0 - superqt - qtconsole-base >5.5.0 - pystack - lz4 - - python_abi 3.13.* *_cp313 - - libgl >=1.7.0,<2.0a0 - - mantidqt ==6.16.20260828.1750 py313h4e5e0ba_0 - - xorg-libx11 >=1.8.13,<2.0a0 - xorg-libxxf86vm >=1.1.7,<2.0a0 + - xorg-libx11 >=1.8.13,<2.0a0 + - libgl >=1.7.0,<2.0a0 - tbb >=2023.0.0 + - mantidqt ==6.16.20260918.1225 py313hf47c1b5_0 + - python_abi 3.13.* *_cp313 constrains: - mslice >=2.15 - - mantiddocs ==6.16.20260828.1750 + - mantiddocs ==6.16.20260918.1225 license: GPL-3.0-or-later - size: 1444444 - timestamp: 1787977417488 + size: 1455007 + timestamp: 1789784257539 +- conda: https://conda.anaconda.org/neutrons/noarch/neutrons_standard-0.1.0-pyh4616a5c_0.conda + sha256: 6c5e79f414ecec0da2d3d5ff5f770f61cce38b1abc57565cf3c99ba8d8f3dfa9 + md5: b793e56fd15b67cb438e371bae8ef373 + depends: + - python >=3.10 + - python * + - numpy + - ruamel.yaml + license: MIT + size: 12817 + timestamp: 1775759207724 - pypi: ./ name: pyrs requires_python: '>=3.12' @@ -13887,10 +13277,15 @@ packages: version: 1.1.0 sha256: a5663118de4908c91729bea0acadca56526eb2698e83de10cd116ae0f4e97c64 requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/b7/5e/4516280c9680e2e417fbb6c9f5c519de9d1d824b46a9feb134fdac3f47c8/regex-2026.8.31-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl +- pypi: https://files.pythonhosted.org/packages/20/3b/000c79c3f9c06b7542225a5d3a7f9a85405da7224b3b9af94a491d07abea/regex-2026.9.10-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl name: regex - version: 2026.8.31 - sha256: 15e9e862c6e905ef66ea5f019deb5ac5fdeebf8fc134ea4c7b5d5c2eb7bdcdd8 + version: 2026.9.10 + sha256: bafa41b0dd63669e5c0f8adf3d24819efeb73c847f492eb011212eb352e69041 + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/cb/f5/dcdf5e0d898024005cfcce631e3e934d111dfbe177ca0b7f253ae8a735a2/regex-2026.9.10-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + name: regex + version: 2026.9.10 + sha256: 2e67f8843f0e4b931f1fa860bf3bbe4134b714c0155cc5c7c0d7ea450230aae0 requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/d2/b8/f0b9b880c03a3db8eaff63d76ca751ac7d8e45483fb7a0bb9f8e5c6ce433/toml_cli-0.8.2-py3-none-any.whl name: toml-cli @@ -13902,8 +13297,3 @@ packages: - tomlkit>=0.13.3 - typer>=0.16.0 requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/ea/83/7f51ce519cab3f44e026122afed7fb27f9cd06e37eeff421888cbf88e50a/regex-2026.8.31-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - name: regex - version: 2026.8.31 - sha256: 9fe2540d8da1bbf12f7c1b909a9ae47c2b343fa2a2084280c21ead1c9fb0e6f7 - requires_python: '>=3.10' diff --git a/pyproject.toml b/pyproject.toml index b9918470d..3e3f2ddbb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -69,6 +69,7 @@ channels = [ "mantid-ornl/label/nightly", # ORNL-specific nightly builds "mantid/label/main", # Primary source for stable Mantid releases "mantid/label/nightly", # Upstream nightly builds + "neutrons", # neutrons_standard (shared Config/Singleton/time utilities) "https://prefix.dev/pixi-build-backends", ] platforms = ["linux-64"] @@ -88,6 +89,7 @@ nexusformat = ">=1.0.8,<2" pydantic = ">=2.7.3,<3" h5glance = ">=0.9,<0.10" py-rattler = "==0.24.0" +neutrons_standard = "*" [tool.pixi.pypi-dependencies] # PyPI dependencies, including this package to allow local editable installs @@ -108,6 +110,7 @@ pandas = "*" types-six = "*" nexusformat = ">=1.0.8,<2" pydantic = ">=2.7.3,<3" +neutrons_standard = "*" # ------------------------------- # @@ -117,6 +120,7 @@ pydantic = ">=2.7.3,<3" pytest = "*" pytest-qt = "*" pytest-cov = "*" +pytest-timeout = "*" mypy = "*" [tool.pixi.feature.package.dependencies] @@ -304,6 +308,9 @@ docs-autobuild = { cmd = "sphinx-autobuild docs/user/source docs/_build/user --h # Testing tasks test = { cmd = "python scripts/development/run_tests.py --cov=pyrs --cov-report=xml --cov-report=term ./tests", description = "Run the tests with coverage" } +test-unit = { cmd = "python scripts/development/run_tests.py -m 'not integration and not gui' ./tests", description = "Run fast tests only: no file I/O, no GUI" } +test-integration = { cmd = "python scripts/development/run_tests.py -m 'integration and not gui' ./tests", description = "Run tests that read/write real data" } +test-gui = { cmd = "python scripts/development/run_tests.py -m gui ./tests", env = { QT_QPA_PLATFORM = "offscreen" }, description = "Run tests that drive Qt widgets (offscreen; no windows appear)" } test-import-framework = { cmd = "python -c 'import pyrs'; python -c 'import qtpy'; python -c 'import mantidqt'", description = "Test import of main dependencies" } # MISC @@ -321,7 +328,19 @@ ignore_missing_imports = true namespace_packages = true [tool.pytest.ini_options] -norecursedirs = ["tests/scripts/cis_tests"] +# By-hand smoke-test scripts, never collected -- see tests/scripts/cis_tests/README.rst +norecursedirs = ["tests/scripts"] +addopts = "--strict-markers" +# No test may hang. `thread` (not the `signal` default) is required: a test blocked +# inside Qt's C++ event loop never returns to the interpreter, so SIGALRM would never +# be delivered -- the watchdog thread dumps every thread's stack and exits instead. +# 300s is ~7x the slowest test observed (41.8s), so it leaves ample room on slow CI. +timeout = 300 +timeout_method = "thread" +markers = [ + "integration: exercises real file I/O (tests/data, /HFIR archive) or a multi-component workflow", + "gui: constructs or drives Qt widgets; requires a display (xvfb or offscreen)", +] [tool.ruff] line-length = 119 @@ -333,7 +352,7 @@ select = ["E4", "E7", "E9", "F"] [tool.ruff.lint.per-file-ignores] # WARNING: there are multiple `conftest.py` files! -"**/conftest.py" = ["F401"] +"**/conftest.py" = ["F401", "F811"] [tool.ruff.format] line-ending = "lf" diff --git a/pyrs/core/workspaces.py b/pyrs/core/workspaces.py index 729485fd5..bdedec493 100644 --- a/pyrs/core/workspaces.py +++ b/pyrs/core/workspaces.py @@ -1,5 +1,6 @@ # Data manager import numpy as np +from mantid.kernel import Logger from pyrs.dataobjects import HidraConstants, SampleLogs # type: ignore from pyrs.projectfile import HidraProjectFile # type: ignore from pyrs.utilities import checkdatatypes @@ -24,6 +25,8 @@ def __init__(self, name="hidradata"): # workspace name self._name = name + self._log = Logger(__name__) + # raw counts self._raw_counts = dict() # dict [sub-run] = count vector @@ -120,11 +123,11 @@ def _load_reduced_diffraction_data(self, hidra_file): try: vec_2theta = hidra_file.read_diffraction_2theta_array() except KeyError as key_err: - print( - "[INFO] Unable to load 2theta vector from HidraProject file due to {}." - "It is very likely that no reduced data is recorded." - "".format(key_err) - ) + # read_diffraction_2theta_array only raises a bare KeyError for the + # legitimate "no REDUCED_DATA group at all" case -- an unrecognized/ + # unsupported schema instead raises RuntimeError, which is deliberately + # NOT caught here, so it propagates instead of being silently swallowed. + self._log.information("No reduced-diffraction data recorded in this project file ({}).".format(key_err)) return # TRY-CATCH @@ -171,10 +174,8 @@ def _load_reduced_diffraction_data(self, hidra_file): if self._var_data_set[mask_name] is None: self._var_data_set[mask_name] = np.sqrt(self._diff_data_set[mask_name]) - print( - "[INFO] Loaded diffraction data from {} includes : {}".format( - self._project_file_name, self._diff_data_set.keys() - ) + self._log.information( + "Loaded diffraction data from {} includes : {}".format(self._project_file_name, self._diff_data_set.keys()) ) def _append_reduced_diffraction_data(self, hidra_file): @@ -189,11 +190,11 @@ def _append_reduced_diffraction_data(self, hidra_file): try: vec_2theta = hidra_file.read_diffraction_2theta_array() except KeyError as key_err: - print( - "[INFO] Unable to load 2theta vector from HidraProject file due to {}." - "It is very likely that no reduced data is recorded." - "".format(key_err) - ) + # read_diffraction_2theta_array only raises a bare KeyError for the + # legitimate "no REDUCED_DATA group at all" case -- an unrecognized/ + # unsupported schema instead raises RuntimeError, which is deliberately + # NOT caught here, so it propagates instead of being silently swallowed. + self._log.information("No reduced-diffraction data recorded in this project file ({}).".format(key_err)) return # TRY-CATCH @@ -239,10 +240,8 @@ def _append_reduced_diffraction_data(self, hidra_file): if self._var_data_set[mask_name] is None: self._var_data_set[mask_name] = np.sqrt(self._diff_data_set[mask_name]) - print( - "[INFO] Loaded diffraction data from {} includes : {}".format( - self._project_file_name, self._diff_data_set.keys() - ) + self._log.information( + "Loaded diffraction data from {} includes : {}".format(self._project_file_name, self._diff_data_set.keys()) ) def _load_instrument(self, hidra_file): @@ -1048,7 +1047,7 @@ def save_experimental_data(self, hidra_project, sub_runs=None, ignore_raw_counts if sub_runs is None or sub_run_i in sub_runs: hidra_project.append_raw_counts(sub_run_i, self._raw_counts[sub_run_i]) else: - print("[WARNING] sub run {} is not exported to {}".format(sub_run_i, hidra_project.name)) + self._log.warning("sub run {} is not exported to {}".format(sub_run_i, hidra_project.name)) # END-IF-ELSE # END-FOR diff --git a/pyrs/dataobjects/fields.py b/pyrs/dataobjects/fields.py index 462a3b67f..b6a0dc8fe 100644 --- a/pyrs/dataobjects/fields.py +++ b/pyrs/dataobjects/fields.py @@ -1549,7 +1549,7 @@ class StrainField(_StrainField): @staticmethod def fuse_strains( - *args: "StrainField", resolution: float = DEFAULT_POINT_RESOLUTION, criterion: str = "min_error" + *args: "_StrainField", resolution: float = DEFAULT_POINT_RESOLUTION, criterion: str = "min_error" ) -> "_StrainField": r""" Bring in together several strains measured along the same direction. Overlaps are resolved @@ -1874,8 +1874,14 @@ def get(direction): return Direction.Z try: return Direction(str(direction).upper()) - except KeyError: # give clearer error message - raise KeyError('Cannot determine direction type from "{}"'.format(direction)) + except ValueError: + # `Enum.__call__` raises `ValueError` (not `KeyError`) on a bad value, so `ValueError` + # is what this lookup must both catch and re-raise. `from None` suppresses exception + # chaining: the caught exception ("'FOO' is not a valid Direction") says nothing this + # message does not, so chaining would only bury the actionable message under a + # "During handling of the above exception..." traceback. Where a caught exception + # *does* add context, use `raise ... from ` instead -- see `convertdatatypes.py`. + raise ValueError('Cannot determine direction type from "{}"'.format(direction)) from None @property def ii(self) -> str: @@ -1971,7 +1977,9 @@ def __init__( poisson_ratio: float, stress_type: Union[StressType, str] = StressType.DIAGONAL, ) -> None: - self.stress11, self.stress22, self.stress33 = None, None, None + self.stress11: Optional[ScalarFieldSample] = None + self.stress22: Optional[ScalarFieldSample] = None + self.stress33: Optional[ScalarFieldSample] = None self._youngs_modulus = youngs_modulus self._poisson_ratio = poisson_ratio diff --git a/pyrs/projectfile/file_object.py b/pyrs/projectfile/file_object.py index 706e91735..efac5615c 100644 --- a/pyrs/projectfile/file_object.py +++ b/pyrs/projectfile/file_object.py @@ -418,14 +418,31 @@ def read_diffraction_2theta_array(self): 1D vector for unified 2theta vector for all sub runs 2D array for possibly various 2theta vector for each + Raises + ------ + KeyError + If this project file's "REDUCED_DATA" group is empty -- a legitimate, + common case (no reduction step was ever run/saved; the group itself is + always created up front, regardless of whether reduction ever happens). + RuntimeError + If "REDUCED_DATA" is non-empty (e.g. has intensity datasets) but has no + "TWO_THETA" coordinate dataset -- the file was written with an older, + unsupported schema (e.g. a legacy capitalized "2Theta" key) and must be + re-reduced/migrated. """ - if HidraConstants.TWO_THETA not in self._project_h5[HidraConstants.REDUCED_DATA]: - # FIXME - This is a patch for 'legacy' data. It will be removed after codes are stable - tth_key = "2Theta" - else: - tth_key = HidraConstants.TWO_THETA - - two_theta_vec = self._project_h5[HidraConstants.REDUCED_DATA][tth_key][()] + try: + two_theta_vec = self._project_h5[HidraConstants.REDUCED_DATA][HidraConstants.TWO_THETA][()] + except KeyError as key_err: + if len(self._project_h5[HidraConstants.REDUCED_DATA].keys()) == 0: + # REDUCED_DATA group exists (always created up front) but is empty: + # legitimately no reduced data has ever been written to this file. + raise + err_msg = ( + 'Project file {} has a non-empty "{}" entry but no "{}" coordinate dataset within it. ' + "Its format is not up-to-date and must be re-reduced before it can be read " + "by this version of PyRS." + ).format(self._file_name, HidraConstants.REDUCED_DATA, HidraConstants.TWO_THETA) + raise RuntimeError("{}\nFYI: {}".format(err_msg, key_err)) return two_theta_vec @@ -506,15 +523,10 @@ def read_diffraction_masks(self): """ masks = list(self._project_h5[HidraConstants.REDUCED_DATA].keys()) - # Clean up data entry '2theta' (or '2Theta') + # Clean up TWO_THETA from the data entry if HidraConstants.TWO_THETA in masks: masks.remove(HidraConstants.TWO_THETA) - # FIXME - Remove when Hidra-16_Log.h5 is fixed with correction entry name as '2theta' - # (aka HidraConstants.TWO_THETA) - if "2Theta" in masks: - masks.remove("2Theta") - # Variance datasets are stored alongside intensity datasets with a '_var' suffix # (e.g. 'main_var' alongside 'main'). They are not masks and must be excluded so # that _load_reduced_diffraction_data does not treat them as intensity entries. diff --git a/tests/integration/pyrs/__init__.py b/pyrs/resources/__init__.py similarity index 100% rename from tests/integration/pyrs/__init__.py rename to pyrs/resources/__init__.py diff --git a/pyrs/resources/application.yml b/pyrs/resources/application.yml new file mode 100644 index 000000000..820ce450a --- /dev/null +++ b/pyrs/resources/application.yml @@ -0,0 +1,18 @@ +# Default PyRS application configuration, loaded via `neutrons_standard.Config`. +# +# Override an individual value by setting the `env` OS environment variable to the +# name (or path) of a `.yml` file whose contents will be deep-merged on top of this +# file -- see `pyrs/utilities/config.py` for how PyRS loads this. + +nxstress: + # Whether NXstress-format (.nxs) output is written. + enable: true + extension: ".nxs" + # Set to true once the nexusformat validator bug affecting production-case field + # names is resolved. + use_production_names: false + +legacy_io: + # Whether legacy HidraProject (.h5) output is written. + enable: true + extension: ".h5" diff --git a/pyrs/utilities/config.py b/pyrs/utilities/config.py new file mode 100644 index 000000000..a4877aa48 --- /dev/null +++ b/pyrs/utilities/config.py @@ -0,0 +1,55 @@ +""" +NXstress / legacy-IO output configuration, backed by `neutrons_standard.Config`. + +Import `Config` from *this* module -- never `from neutrons_standard...import Config` +directly anywhere else in this codebase. `neutrons_standard.init("pyrs")` must run +before `neutrons_standard.config` is first imported (that module captures its +`package_name` once, at that moment, from `neutrons_standard.Spec.client_package_name`); +this module is the only place that ordering is guaranteed. A stray direct import +elsewhere would race `init()` and silently pin `package_name` to `None` for the rest of +the process (confirmed: this raises `ModuleNotFoundError: No module named 'None'` in +practice, from the `_Config` singleton's constructor). + +The default configuration ships at `pyrs/resources/application.yml` -- this exact +filename and location (a genuine `pyrs.resources` subpackage) is a hard requirement of +`neutrons_standard`, not a PyRS convention. Override a value by setting the `env` OS +environment variable to a `.yml` file name or path; its contents are deep-merged on top +of the shipped default. See `neutrons_standard.config._Config.refresh` for the merge +mechanics. + +`neutrons_standard.Config` provides no schema validation of its own (`_Config.validate` +is a no-op) -- `validate_config` below is PyRS's own rule. +""" + +import neutrons_standard + +neutrons_standard.init("pyrs") +from neutrons_standard.config import Config # noqa: E402 (import must follow init()) + + +def validate_config() -> None: + """Raise RuntimeError unless both format-enable flags are actual booleans, then + raise ValueError unless at least one output format is enabled. + + `neutrons_standard.Config` performs no schema validation of its own -- a + malformed override (e.g. `enable: "false"`, a YAML string rather than a real + boolean) would otherwise be silently truthy and pass the check below undetected. + + Raises: + RuntimeError: If `nxstress.enable` or `legacy_io.enable` is not a bool. + ValueError: If both `nxstress.enable` and `legacy_io.enable` are false -- + PyRS must be able to write at least one output format. + """ + nxstress_enable = Config["nxstress.enable"] + legacy_io_enable = Config["legacy_io.enable"] + for key, value in (("nxstress.enable", nxstress_enable), ("legacy_io.enable", legacy_io_enable)): + if not isinstance(value, bool): + raise RuntimeError('Config["{}"] must be a bool, got {} ({})'.format(key, value, type(value).__name__)) + + if not (nxstress_enable or legacy_io_enable): + raise ValueError("At least one of nxstress.enable or legacy_io.enable must be true") + + +# Fail fast at import time, rather than at the first NXstress-I/O callsite that +# happens to need a valid config. +validate_config() diff --git a/tests/integration/test_batch_reduction.py b/tests/integration/test_batch_reduction.py index 8e239c9a7..008690cde 100644 --- a/tests/integration/test_batch_reduction.py +++ b/tests/integration/test_batch_reduction.py @@ -14,11 +14,7 @@ import numpy as np import pytest -from pyrs.interface.manual_reduction.manual_reduction_model import ( - ManualReductionModel, - is_run_specification, - parse_run_numbers, -) +from pyrs.interface.manual_reduction.manual_reduction_model import ManualReductionModel NEXUS_DIR = "/HFIR/HB2B/IPTS-22731/nexus" RUN_A = 1017 @@ -34,33 +30,14 @@ def hfir_available(): pytestmark = pytest.mark.skipif(not hfir_available(), reason="HFIR archive not accessible") -# --------------------------------------------------------------------------- -# parse_run_numbers / is_run_specification — pure-logic tests, no HFIR needed -# --------------------------------------------------------------------------- - - -def test_parse_run_numbers_range(): - """A dash range is expanded to inclusive list.""" - assert parse_run_numbers("1017-1019") == [1017, 1018, 1019] - - -def test_parse_run_numbers_comma_and_range(): - """Mixed comma and range parses correctly.""" - assert parse_run_numbers("1017,1019-1021") == [1017, 1019, 1020, 1021] - - -def test_is_run_specification_run_numbers(): - assert is_run_specification("1017") - assert is_run_specification("1017-1019") - assert is_run_specification("1017, 1019") - - -def test_is_run_specification_rejects_path(): - assert not is_run_specification(NEXUS_A) - - # --------------------------------------------------------------------------- # reduce_runs — integration tests against real HB2B data +# +# The pure-logic tests for parse_run_numbers / is_run_specification that used to +# live here moved to tests/unit/pyrs/interface/test_manual_reduction_runspec.py, +# joining the near-duplicate tests of those same two functions that lived in +# tests/ui/. They need neither HFIR access nor a Qt display, so the whole module +# skip below (and the `gui` tier) was hiding them for no reason. # --------------------------------------------------------------------------- @@ -77,6 +54,7 @@ def model(): return ManualReductionModel() +@pytest.mark.integration def test_reduce_runs_two_files_returns_two_labels(model, output_dir): """reduce_runs on two NeXus files returns exactly two labels.""" jobs = [(str(RUN_A), NEXUS_A), (str(RUN_B), NEXUS_B)] @@ -84,6 +62,7 @@ def test_reduce_runs_two_files_returns_two_labels(model, output_dir): assert labels == [str(RUN_A), str(RUN_B)] +@pytest.mark.integration def test_reduce_runs_stores_both_workspaces(model, output_dir): """Both workspaces are stored and accessible via set_current_run.""" jobs = [(str(RUN_A), NEXUS_A), (str(RUN_B), NEXUS_B)] @@ -96,6 +75,7 @@ def test_reduce_runs_stores_both_workspaces(model, output_dir): assert len(sub_runs) > 0, f"Run {label} has no sub-runs after reduction" +@pytest.mark.integration def test_reduce_runs_first_run_is_current_after_reduction(model, output_dir): """After reduce_runs, the first run's workspace is active.""" jobs = [(str(RUN_A), NEXUS_A), (str(RUN_B), NEXUS_B)] @@ -106,6 +86,7 @@ def test_reduce_runs_first_run_is_current_after_reduction(model, output_dir): assert len(sub_runs) > 0 +@pytest.mark.integration def test_reduce_runs_output_files_created(model, output_dir): """A .h5 project file is written for each reduced run.""" jobs = [(str(RUN_A), NEXUS_A), (str(RUN_B), NEXUS_B)] @@ -115,6 +96,7 @@ def test_reduce_runs_output_files_created(model, output_dir): assert len(h5_files) == 2, f"Expected 2 .h5 files, found: {h5_files}" +@pytest.mark.integration def test_reduce_runs_powder_pattern_is_sensible(model, output_dir): """Reduced powder pattern has finite intensities in a plausible 2theta range.""" jobs = [(str(RUN_A), NEXUS_A)] @@ -130,6 +112,7 @@ def test_reduce_runs_powder_pattern_is_sensible(model, output_dir): assert vec_2theta.min() > 40 and vec_2theta.max() < 140 +@pytest.mark.integration def test_reduce_runs_single_run_succeeds(model, output_dir): """reduce_runs works with a single-item job list.""" jobs = [(str(RUN_A), NEXUS_A)] @@ -138,6 +121,7 @@ def test_reduce_runs_single_run_succeeds(model, output_dir): assert len(model.get_sub_runs()) > 0 +@pytest.mark.integration def test_reduce_runs_empty_job_list(model, output_dir): """reduce_runs with no jobs returns an empty list and leaves no workspaces.""" labels = model.reduce_runs([], output_dir, progressbar=None) diff --git a/tests/unit/pyrs/core/test_d0_grid.py b/tests/integration/test_d0_grid.py similarity index 98% rename from tests/unit/pyrs/core/test_d0_grid.py rename to tests/integration/test_d0_grid.py index 790d5e755..b6bb331ef 100644 --- a/tests/unit/pyrs/core/test_d0_grid.py +++ b/tests/integration/test_d0_grid.py @@ -1,10 +1,13 @@ import numpy as np +import pytest from pyrs.dataobjects.fields import StressField from pyrs.dataobjects.fields import StrainField from pyrs.interface.strainstressviewer.model import Model +pytestmark = pytest.mark.integration + d0_default = 1.0828 d0e_default = 0 diff --git a/tests/integration/test_fields.py b/tests/integration/test_fields.py index b63e23b90..7c2449059 100644 --- a/tests/integration/test_fields.py +++ b/tests/integration/test_fields.py @@ -478,6 +478,7 @@ def test_interpolate_volume_scan(data_interpolate_volume_scan, allclose_with_sor ####################################### +@pytest.mark.integration def test_combine_strains_1(test_data_dir): r"""Combine strains along the same direction with StrainField.fuse_strains""" # @@ -533,6 +534,7 @@ def data_stack_strains_1(test_data_dir): return strains, strain11, strain22, strain33 +@pytest.mark.integration def test_stack_strains_1(data_stack_strains_1): strains, strain11, strain22, strain33 = data_stack_strains_1 # @@ -570,6 +572,7 @@ def data_create_stress_1(test_data_dir): return strain11, strain22, strain33 +@pytest.mark.integration def test_create_stress_1(data_create_stress_1): strain11, strain22, strain33 = data_create_stress_1 # diff --git a/tests/integration/test_fields_from_files.py b/tests/integration/test_fields_from_files.py new file mode 100644 index 000000000..2f8c90282 --- /dev/null +++ b/tests/integration/test_fields_from_files.py @@ -0,0 +1,425 @@ +""" +Integration tests for pyrs.dataobjects.fields — split out of test_fields.py. + +These tests all depend on real HB2B project files via `test_data_dir` (directly, or +via the `strain_field_samples` fixture below). See tests/unit/pyrs/dataobjects/test_fields.py +for the in-memory unit tests of the same classes. +""" + +# Standard and third party libraries +from collections.abc import Callable +import copy +import numpy as np +import os +import pytest + +# PyRs libraries +from pyrs.core.peak_profile_utility import EFFECTIVE_PEAK_PARAMETERS, get_parameter_dtype +from pyrs.core.workspaces import HidraWorkspace +from pyrs.dataobjects.constants import DEFAULT_POINT_RESOLUTION +from pyrs.dataobjects.fields import ( + StrainField, + StrainFieldSingle, + StressField, +) +from pyrs.peaks import PeakCollection # type: ignore +from tests.conftest import assert_allclose_with_sorting + +to_megapascal = StressField.to_megapascal + +DIRECTIONS = ("11", "22", "33") # directions for the StrainField + + +@pytest.fixture(scope="module") +def strain_field_samples(test_data_dir: str) -> dict[str, StrainFieldSingle]: + r"""Build a set of named `StrainFieldSingle` samples, from mock and real data. + + Args: + test_data_dir: Path to the `tests/data` directory (session fixture). + + Returns: + A dict mapping a descriptive sample name to a `StrainFieldSingle` instance. + Keys used elsewhere in this module: + - "strain with two points per direction": a synthetic sample built from + an in-memory `HidraWorkspace` (no file I/O), 8 sub-runs. + - "HB2B_1320_peak0": read from `HB2B_1320.h5` with peak tag "peak0". + - "HB2B_1320_": read from `HB2B_1320.h5` with the default (empty) peak tag. + """ + sample_fields = {} + ##### + # The first sample has 2 points in each direction + ##### + subruns = np.arange(1, 9, dtype=int) + + # create the test peak collection - d-refernce is 1 to make checks easier + # uncertainties are all zero + peaks_array = np.zeros(subruns.size, dtype=get_parameter_dtype("gaussian", "Linear")) + peaks_array["PeakCentre"][:] = 180.0 # position of two-theta in degrees + peaks_array["Height"][:] = 1.0 # position of two-theta in degrees + peaks_error = np.zeros(subruns.size, dtype=get_parameter_dtype("gaussian", "Linear")) + peak_collection = PeakCollection( + "dummy", "gaussian", "linear", wavelength=2.0, d_reference=1.0, d_reference_error=0.0 + ) + peak_collection.set_peak_fitting_values( + subruns, peaks_array, parameter_errors=peaks_error, fit_costs=np.zeros(subruns.size, dtype=float) + ) + + # create the test workspace - only sample logs are needed + workspace = HidraWorkspace() + workspace.set_sub_runs(subruns) + # arbitray points in space + workspace.set_sample_log("vx", subruns, np.arange(1, 9, dtype=int)) + workspace.set_sample_log("vy", subruns, np.arange(11, 19, dtype=int)) + workspace.set_sample_log("vz", subruns, np.arange(21, 29, dtype=int)) + + strain = StrainFieldSingle(hidraworkspace=workspace, peak_collection=peak_collection) + + assert strain + assert not strain.filenames + assert len(strain) == subruns.size + assert strain.peak_collections == [peak_collection] + np.testing.assert_almost_equal(strain.values, 0.0) + np.testing.assert_equal(strain.errors, np.zeros(subruns.size, dtype=float)) + sample_fields["strain with two points per direction"] = strain + + ##### + # Create StrainField samples from two files and different peak tags + ##### + # TODO: substitute/fix HB2B_1628.h5 with other data, because reported vx, vy, and vz are all 'nan' + # filename_tags_pairs = [('HB2B_1320.h5', ('', 'peak0')), ('HB2B_1628.h5', ('peak0', 'peak1', 'peak2'))] + filename_tags_pairs = [("HB2B_1320.h5", ("", "peak0"))] + for filename, tags in filename_tags_pairs: + file_path = os.path.join(test_data_dir, filename) + prefix = filename.split(".")[0] + "_" + for tag in tags: + sample_fields[prefix + tag] = StrainFieldSingle(filename=file_path, peak_tag=tag) + assert sample_fields[prefix + tag].filenames == [filename] + + return sample_fields + + +class TestStrainFieldSingle: + """Tests for `StrainFieldSingle` backed by real and synthetic HB2B data.""" + + @pytest.mark.integration + def test_get_peak_param_invalid_name_raises(self, strain_field_samples: dict[str, StrainFieldSingle]) -> None: + """Test that `get_effective_peak_parameter` raises `ValueError` for an unknown parameter name.""" + strain = strain_field_samples["strain with two points per direction"] # mock object + + with pytest.raises(ValueError) as exception_info: + strain.get_effective_peak_parameter("impossible") + assert "impossible" in str(exception_info.value) + + @pytest.mark.integration + def test_get_peak_param_supported_name(self, strain_field_samples: dict[str, StrainFieldSingle]) -> None: + """Test that `get_effective_peak_parameter` returns a per-point field for every known parameter name.""" + strain = strain_field_samples["strain with two points per direction"] # mock object + + num_values = len(strain) + for name in EFFECTIVE_PEAK_PARAMETERS: + scalar_field = strain.get_effective_peak_parameter(name) + assert scalar_field, f"Failed to get {name}" + assert len(scalar_field) == num_values, f"{name} does not have correct length" + + +class Test_StrainField: + """Tests for `StrainField` equality, using a minimal mock subclass.""" + + class StrainFieldMock(StrainField): + r"""Mocks a StrainField object overloading the initialization""" + + def __init__(self, *strains: StrainFieldSingle) -> None: + """Store `strains` directly, bypassing `StrainField`'s normal file/fuse-based init.""" + for s in strains: + assert isinstance(s, StrainFieldSingle) + self._strains = list(strains) + + @pytest.mark.integration + def test_eq_matching_and_differing_strains_returns_expected_bool( + self, strain_field_samples: dict[str, StrainFieldSingle] + ) -> None: + """Test `==` for both single-scan `StrainFieldSingle` and multi-scan `StrainField` objects.""" + strains_single_scan = copy.deepcopy(list(strain_field_samples.values())) + # single-scan strains + assert strains_single_scan[0] == strains_single_scan[0] + assert (strains_single_scan[0] == strains_single_scan[1]) is False + + # multi-scan scans + strain_multi = self.StrainFieldMock(*strains_single_scan) + assert strain_multi == strain_multi + assert (strain_multi == strains_single_scan[0]) is False + strain_multi_2 = self.StrainFieldMock(*strains_single_scan[:-1]) # all except the last one + assert (strain_multi == strain_multi_2) is False + + +class TestStrainField: + """Tests for `StrainField` fuse/stack/export behavior, backed by real HB2B project files.""" + + @pytest.mark.integration + def test_peak_collections_property_returns_single_element_list( + self, strain_field_samples: dict[str, StrainFieldSingle] + ) -> None: + """Test that `peak_collections` returns a one-element list of `PeakCollection`.""" + strain = strain_field_samples["strain with two points per direction"] + assert isinstance(strain.peak_collections, list) + assert len(strain.peak_collections) == 1 + assert isinstance(strain.peak_collections[0], PeakCollection) + + @pytest.mark.integration + def test_coordinates_property_matches_sample_log_positions( + self, strain_field_samples: dict[str, StrainFieldSingle] + ) -> None: + """Test that `coordinates` matches the (vx, vy, vz) sample logs used to build the strain.""" + strain = strain_field_samples["strain with two points per direction"] + coordinates = np.array( + [ + [1.0, 11.0, 21.0], + [2.0, 12.0, 22.0], + [3.0, 13.0, 23.0], + [4.0, 14.0, 24.0], + [5.0, 15.0, 25.0], + [6.0, 16.0, 26.0], + [7.0, 17.0, 27.0], + [8.0, 18.0, 28.0], + ] + ) + assert np.allclose(strain.coordinates, coordinates) + + @pytest.mark.integration + def test_fuse_with_two_strains_returns_merged_strain( + self, strain_field_samples: dict[str, StrainFieldSingle] + ) -> None: + """Test that `fuse_with` concatenates peak collections and coordinates from both strains.""" + strain1 = strain_field_samples["HB2B_1320_peak0"] + strain2 = strain_field_samples["strain with two points per direction"] + strain = strain1.fuse_with(strain2) + assert strain.peak_collections == [strain1.peak_collections[0], strain2.peak_collections[0]] + assert np.allclose(strain.coordinates, np.concatenate((strain1.coordinates, strain2.coordinates))) + assert strain.field # should return something + + # fusing a scan with itself creates a new copy of the strain + assert strain.peak_collections[0] == strain1.peak_collections[0] + + @pytest.mark.integration + def test_fuse_with_invalid_criterion_raises_value_error( + self, strain_field_samples: dict[str, StrainFieldSingle] + ) -> None: + """Test that `fuse_with` rejects an unrecognized `criterion` value.""" + strain1 = strain_field_samples["HB2B_1320_peak0"] + strain2 = strain_field_samples["strain with two points per direction"] + with pytest.raises(ValueError, match="Unallowed value of criterion"): + strain1.fuse_with(strain2, criterion="bogus") + + @pytest.mark.integration + def test_add_operator_two_strains_returns_merged_strain( + self, strain_field_samples: dict[str, StrainFieldSingle] + ) -> None: + """Test that `+` is equivalent to `fuse_with` for two single-scan strains.""" + strain1 = strain_field_samples["HB2B_1320_peak0"] + strain2 = strain_field_samples["strain with two points per direction"] + strain = strain1 + strain2 + assert strain.peak_collections == [strain1.peak_collections[0], strain2.peak_collections[0]] + assert np.allclose(strain.coordinates, np.concatenate((strain1.coordinates, strain2.coordinates))) + + @pytest.mark.integration + def test_strain_field_init_file_without_peaks_raises_io_error(self, test_data_dir: str) -> None: + """Test that loading a project file with no fitted peaks raises `IOError`.""" + # this project file doesn't have peaks in it + file_path = os.path.join(test_data_dir, "HB2B_1060_first3_subruns.h5") + with pytest.raises(IOError): + StrainField(file_path) + + @pytest.mark.integration + def test_strain_field_init_from_file_returns_populated_field(self, test_data_dir: str) -> None: + """Test that a `StrainField` can be built directly from a project file and peak tag.""" + file_path = os.path.join(test_data_dir, "HB2B_1320.h5") + strain = StrainField(filename=file_path, peak_tag="peak0") + + assert strain + assert strain.field + assert strain.get_effective_peak_parameter("Center") + + @pytest.mark.integration + def test_fuse_strains_classmethod_matches_sequential_addition( + self, strain_field_samples: dict[str, StrainFieldSingle] + ) -> None: + """Test that `StrainField.fuse_strains` matches summing the same strains with `+`.""" + # TODO HB2B_1320_peak0 and HB2B_1320_ are the same scan. We need two different scans + strain1 = strain_field_samples["HB2B_1320_peak0"] + strain2 = strain_field_samples["HB2B_1320_"] + strain3 = strain_field_samples["strain with two points per direction"] + # Use fuse_strains(). + strain_fused = StrainField.fuse_strains( + strain1, strain2, strain3, resolution=DEFAULT_POINT_RESOLUTION, criterion="min_error" + ) + # the sum should give the same, since we passed default resolution and criterion options + strain_sum = strain1 + strain2 + strain3 + for strain in (strain_fused, strain_sum): + assert len(strain) == 312 + 8 # strain1 and strain2 give strain1 because they contain the same data + assert strain.peak_collections == [s.peak_collections[0] for s in (strain1, strain2, strain3)] + values = np.concatenate((strain1.values, strain3.values)) # no strain2 because it's the same as strain1 + assert_allclose_with_sorting(strain.values, values) + + @pytest.mark.integration + def test_stack_overlapping_and_disjoint_strains( + self, strain_field_samples: dict[str, StrainFieldSingle], allclose_with_sorting: Callable[..., bool] + ) -> None: + """Test `*` (stacking) for strains with overlapping, and with disjoint, evaluation points.""" + strain1 = strain_field_samples["HB2B_1320_peak0"] + strain2 = strain_field_samples["HB2B_1320_"] + + # Stack two strains having the same evaluation points. + strain1_stacked, strain2_stacked = strain1 * strain2 # default resolution and stacking mode + for strain in (strain1_stacked, strain2_stacked): + assert len(strain) == len(strain1) + assert bool(np.all(np.isfinite(strain.values))) is True # all points are common to strain1 and strain2 + + # Stack two strains having completely different evaluation points. + strain3 = strain_field_samples["strain with two points per direction"] + strain2_stacked, strain3_stacked = strain2 * strain3 # default resolution and stacking mode + # The common list of points is the sum of the points from each strain + for strain in (strain2_stacked, strain3_stacked): + assert len(strain) == len(strain2) + len(strain3) + + # verify the filenames got copied over + for strain_stacked, original_strain in ((strain2_stacked, strain2), (strain3_stacked, strain3)): + assert strain_stacked.filenames == original_strain.filenames + + # There's no common point that is common to both strain2 and strain3 + # Each stacked strain only have finite measurements on points coming from the un-stacked strain + for strain_stacked, original_strain in ((strain2_stacked, strain2), (strain3_stacked, strain3)): + finite_measurements_count = len(np.where(np.isfinite(strain_stacked.values))[0]) + assert finite_measurements_count == len(original_strain) + + # The points evaluated as 'nan' must come from the other scan + for strain_stacked, strain_other in ((strain2_stacked, strain3), (strain3_stacked, strain2)): + nan_measurements_count = len(np.where(np.isnan(strain_stacked.values))[0]) + assert nan_measurements_count == len(strain_other) + + @pytest.mark.integration + def test_stack_strains_unimplemented_mode_raises(self, strain_field_samples: dict[str, StrainFieldSingle]) -> None: + """Test that `StrainField.stack_strains` rejects the recognized-but-not-yet-implemented + `stack_mode="intersection"` value. + + Requires two strains with genuinely different point lists: `stack_strains` has + a "trivial case" early return when all input point lists are already equal, + which would otherwise skip the mode check entirely before it's ever reached. + `*` (`__mul__`) always hardcodes `mode="union"`, so this path can only be + reached by calling the classmethod directly. A wholly unrecognized `stack_mode` + string (e.g. `"bogus"`) instead raises `ValueError` at an earlier validation + step -- a different, narrower error than this one. + """ + strain1 = strain_field_samples["HB2B_1320_peak0"] + strain3 = strain_field_samples["strain with two points per direction"] + with pytest.raises(NotImplementedError, match="is not currently supported"): + StrainField.stack_strains(strain1, strain3, stack_mode="intersection") + + @pytest.mark.integration + def test_fuse_then_stack_strains( + self, strain_field_samples: dict[str, StrainFieldSingle], allclose_with_sorting: Callable[..., bool] + ) -> None: + """Test that stacking a strain against a fused pair matches fusing then stacking, point-for-point.""" + # TODO HB2B_1320_peak0 and HB2B_1320_ are the same scan. We need two different scans + strain1 = strain_field_samples["HB2B_1320_peak0"] + strain2 = strain_field_samples["HB2B_1320_"] + strain3 = strain_field_samples["strain with two points per direction"] + strain1_stacked, strain23_stacked = strain1 * (strain2 + strain3) # default resolution and stacking mode + # Check number of points with finite strains measuments + for strain_stacked in (strain1_stacked, strain23_stacked): + assert len(strain_stacked) == len(strain2) + len(strain3) + for strain_stacked, finite_count, nan_count in zip((strain1_stacked, strain23_stacked), (312, 320), (8, 0)): + finite_measurements_count = len(np.where(np.isfinite(strain_stacked.values))[0]) + assert finite_measurements_count == finite_count + nan_measurements_count = len(np.where(np.isnan(strain_stacked.values))[0]) + assert nan_measurements_count == nan_count + # Check peak collections carry-over + assert strain1_stacked.peak_collections[0] == strain1.peak_collections[0] + assert strain23_stacked.peak_collections == [strain2.peak_collections[0], strain3.peak_collections[0]] + + @pytest.mark.integration + def test_to_md_histo_workspace_returns_expected_bin_geometry( + self, strain_field_samples: dict[str, StrainFieldSingle] + ) -> None: + """Test that `to_md_histo_workspace` produces an MDHistoWorkspace with the expected bin geometry.""" + strain = strain_field_samples["HB2B_1320_peak0"] + histo = strain.to_md_histo_workspace(method="linear", resolution=DEFAULT_POINT_RESOLUTION) + assert histo.id() == "MDHistoWorkspace" + minimum_values = (-31.76, -7.20, -15.00) # bin boundary with the smallest coordinate along X, Y, and Z + maximum_values = (31.76, 7.20, 15.00) # bin boundary with the largest coordinate along X, Y, and Z + bin_counts = (18, 6, 3) # number of bins along X, Y, and Z + for i, (min_value, max_value, bin_count) in enumerate(zip(minimum_values, maximum_values, bin_counts)): + dimension = histo.getDimension(i) + assert dimension.getUnits() == "mm" + assert dimension.getMinimum() == pytest.approx(min_value, abs=0.01) + assert dimension.getMaximum() == pytest.approx(max_value, abs=0.01) + assert dimension.getNBins() == bin_count + + +@pytest.mark.integration +def test_stress_field_identical_strains(test_data_dir: str) -> None: + """Test `StressField` computed from three identical strains loaded from a real project file.""" + HB2B_1320_PROJECT = os.path.join(test_data_dir, "HB2B_1320.h5") + YOUNG = 200.0 + POISSON = 0.3 + + # create 3 strain objects + sample11 = StrainField(HB2B_1320_PROJECT) + sample22 = StrainField(HB2B_1320_PROJECT) + sample33 = StrainField(HB2B_1320_PROJECT) + # create the stress field (with very uninteresting values + stress = StressField(sample11, sample22, sample33, YOUNG, POISSON) + + # confirm the strains are unchanged + for direction in DIRECTIONS: + stress.select(direction) + assert stress.strain is not None # guaranteed non-None immediately after select() + np.testing.assert_allclose( + stress.strain.values, + sample11.peak_collections[0].get_strain(units="microstrain")[0], + atol=1, + err_msg=f"strain direction {direction}", + ) + + # calculate the values for stress + strains = sample11.peak_collections[0].get_strain(units="microstrain")[0] + stress_exp = strains + POISSON * (strains + strains + strains) / (1.0 - 2.0 * POISSON) + stress_exp *= YOUNG / (1.0 + POISSON) + + # since all of the contributing strains are identical, everything else should match + for direction in DIRECTIONS: + stress.select(direction) + np.testing.assert_equal(stress.point_list.coordinates, sample11.point_list.coordinates) + np.testing.assert_allclose( + stress.values, to_megapascal(stress_exp), atol=1, err_msg=f"stress direction {direction}" + ) + + assert stress.stress11 is not None # populated by StressField.__init__ + stress11 = stress.stress11.values + print(stress11) + assert np.all(np.logical_not(np.isnan(stress11))) # confirm something was set + + # redo the calculation - this should change nothing + stress.update_stress_calculation() + assert stress.stress11 is not None + np.testing.assert_equal(stress.stress11.values, stress11) + + # set the d-reference and see that the values are changed + stress.set_d_reference((42.0, 0.0)) + assert stress.stress11 is not None + assert np.all(stress.stress11.values != stress11) + + +@pytest.mark.integration +def test_stress_field_select_invalid_direction(test_data_dir: str) -> None: + """Test that `StressField.select` rejects an unrecognized direction string.""" + HB2B_1320_PROJECT = os.path.join(test_data_dir, "HB2B_1320.h5") + YOUNG = 200.0 + POISSON = 0.3 + + sample11 = StrainField(HB2B_1320_PROJECT) + sample22 = StrainField(HB2B_1320_PROJECT) + sample33 = StrainField(HB2B_1320_PROJECT) + stress = StressField(sample11, sample22, sample33, YOUNG, POISSON) + + with pytest.raises(ValueError, match="Cannot determine direction type"): + stress.select("bogus") diff --git a/tests/unit/pyrs/projectfile/test_file_object.py b/tests/integration/test_file_object.py similarity index 86% rename from tests/unit/pyrs/projectfile/test_file_object.py rename to tests/integration/test_file_object.py index 3918f17e9..1e1c2cce6 100644 --- a/tests/unit/pyrs/projectfile/test_file_object.py +++ b/tests/integration/test_file_object.py @@ -10,6 +10,8 @@ from pyrs.peaks import PeakCollection # type: ignore from pyrs.projectfile import HidraProjectFile, HidraProjectFileMode # type: ignore +pytestmark = pytest.mark.integration + def assert_allclose_structured_numpy_arrays(expected, calculated): if expected.dtype.names != calculated.dtype.names: @@ -223,6 +225,70 @@ def test_reduced_diffraction_masks_excludes_variance_datasets(self, tmpdir): "Variance readback matches sqrt(intensity) -- the stored variance was not used" ) + def test_read_2theta_empty_group_raises_key_error(self, tmpdir): + """A project file with no reduced-diffraction data at all is a legitimate, + common case (e.g. saved before any reduction step) -- read_diffraction_2theta_array + must still raise KeyError for it, and loading such a file into a HidraWorkspace + must succeed silently (no reduced-diffraction data populated), not raise. + """ + from pyrs.core.workspaces import HidraWorkspace + + test_file = str(tmpdir.join("test_no_reduced_data.h5")) + + pf_write = HidraProjectFile(test_file, HidraProjectFileMode.OVERWRITE) + pf_write.append_raw_counts(1, np.zeros(4)) + pf_write.append_experiment_log(HidraConstants.SUB_RUNS, np.array([1])) + # note: write_reduced_diffraction_data_set is deliberately never called + pf_write.save(verbose=False) + + pf_read = HidraProjectFile(test_file, HidraProjectFileMode.READONLY) + with pytest.raises(KeyError): + pf_read.read_diffraction_2theta_array() + + # loading into a workspace must not raise -- this is the legitimate "no data" case + ws = HidraWorkspace("test") + ws.load_hidra_project(pf_read, load_raw_counts=False, load_reduced_diffraction=True) + assert ws._diff_data_set == {} + + def test_read_2theta_bad_schema_raises_runtime_error(self, tmpdir): + """A REDUCED_DATA group present without a TWO_THETA coordinate dataset (e.g. an + older, unsupported schema) must fail clearly, not be silently treated as "no + reduced data" -- regression test for the bug where a raw KeyError from either + cause was caught identically by the HidraWorkspace loader. + """ + import h5py + + from pyrs.core.workspaces import HidraWorkspace + + test_file = str(tmpdir.join("test_unrecognized_schema.h5")) + + n_subruns = 1 + n_bins = 10 + two_theta = np.tile(np.linspace(80.0, 95.0, n_bins), (n_subruns, 1)) + intensity = np.random.default_rng(0).uniform(0.0, 1000.0, (n_subruns, n_bins)) + + pf_write = HidraProjectFile(test_file, HidraProjectFileMode.OVERWRITE) + pf_write.append_raw_counts(1, np.zeros(4)) + pf_write.append_experiment_log(HidraConstants.SUB_RUNS, np.arange(1, n_subruns + 1)) + pf_write.write_reduced_diffraction_data_set(two_theta, {None: intensity}, None) + pf_write.save(verbose=False) + + # simulate an older/unsupported schema by removing the TWO_THETA coordinate + # dataset directly, leaving the rest of REDUCED_DATA (the intensity dataset) intact + with h5py.File(test_file, "r+") as raw_h5: + del raw_h5[HidraConstants.REDUCED_DATA][HidraConstants.TWO_THETA] + + pf_read = HidraProjectFile(test_file, HidraProjectFileMode.READONLY) + with pytest.raises(RuntimeError, match="not up-to-date"): + pf_read.read_diffraction_2theta_array() + + # loading into a workspace must propagate the same clear error, not silently + # report "no reduced data" while actually dropping real (unreadable) data + pf_read2 = HidraProjectFile(test_file, HidraProjectFileMode.READONLY) + ws = HidraWorkspace("test") + with pytest.raises(RuntimeError, match="not up-to-date"): + ws.load_hidra_project(pf_read2, load_raw_counts=False, load_reduced_diffraction=True) + def test_wave_length_rw(self): """Test writing and reading for wave length diff --git a/tests/integration/test_load_split.py b/tests/integration/test_load_split.py index c59c2bccb..b55accc2f 100644 --- a/tests/integration/test_load_split.py +++ b/tests/integration/test_load_split.py @@ -6,6 +6,8 @@ import os import pytest +pytestmark = pytest.mark.integration + FILE_1017 = "/HFIR/HB2B/IPTS-22731/nexus/HB2B_1017.ORIG.nxs.h5" diff --git a/tests/integration/test_manual_reduction_ui.py b/tests/integration/test_manual_reduction_ui.py index 7ef6dba3a..02bcfbe1f 100644 --- a/tests/integration/test_manual_reduction_ui.py +++ b/tests/integration/test_manual_reduction_ui.py @@ -9,6 +9,7 @@ import h5py +@pytest.mark.integration def test_default_calibration_file(): """Test to find current/latest calibration file @@ -46,6 +47,7 @@ def test_default_calibration_file(): ], ids=("HB2B_1017_NoCal_NoMask", "HB2B_1017_NoCal_Mask", "HB2B_1017_Cal_Mask"), ) +@pytest.mark.integration def test_manual_reduction(nexus_file, calibration_file, mask_file, gold_file): """Test the workflow to do manual reduction. @@ -103,6 +105,7 @@ def test_manual_reduction(nexus_file, calibration_file, mask_file, gold_file): os.remove(filename) +@pytest.mark.integration def test_reduction_with_vanadium(): """Test manual reduction workflow with vanadium correction @@ -136,6 +139,7 @@ def test_reduction_with_vanadium(): assert test_ws +@pytest.mark.integration def test_load_split(): """Test method to load, split, convert to powder pattern and save @@ -183,6 +187,7 @@ def test_load_split(): assert abs(controller.get_sample_log_value("2theta", 3) - 97.50225) < 1e-5 +@pytest.mark.integration def test_diffraction_pattern_geometry_shift(): """ diff --git a/tests/integration/test_peak_fitting.py b/tests/integration/test_peak_fitting.py index a87193241..b114f4b5b 100644 --- a/tests/integration/test_peak_fitting.py +++ b/tests/integration/test_peak_fitting.py @@ -15,6 +15,8 @@ import os import shutil +pytestmark = pytest.mark.integration + # Named tuple for peak information PeakInfo = namedtuple("PeakInfo", "center left_bound right_bound tag") @@ -451,7 +453,7 @@ def test_write_csv(): ",311_chisq", ), ( - "data/HB2B_938_peak.h5", + "tests/data/HB2B_938_peak.h5", "HB2B_938.csv", EXPECTED_HEADER_938, 1, diff --git a/tests/unit/pyrs/calibration/test_peakfit_calibration.py b/tests/integration/test_peakfit_calibration.py similarity index 99% rename from tests/unit/pyrs/calibration/test_peakfit_calibration.py rename to tests/integration/test_peakfit_calibration.py index c9a9a3e99..0d97a1357 100644 --- a/tests/unit/pyrs/calibration/test_peakfit_calibration.py +++ b/tests/integration/test_peakfit_calibration.py @@ -13,6 +13,8 @@ except ImportError as e: least_squares = str(e) # import failed exception explains why +pytestmark = pytest.mark.integration + def are_equivalent_jsons(test_json_name, gold_json_name, atol): """Print out the difference of two JSON files diff --git a/tests/integration/test_powder_pattern.py b/tests/integration/test_powder_pattern.py index 386db6dc3..c95d94a38 100644 --- a/tests/integration/test_powder_pattern.py +++ b/tests/integration/test_powder_pattern.py @@ -11,6 +11,8 @@ from pyrs.core.reduction_manager import HB2BReductionManager import pytest +pytestmark = pytest.mark.integration + def parse_gold_file(file_name): """ diff --git a/tests/integration/test_project_file_rw.py b/tests/integration/test_project_file_rw.py index 955e15762..c93236b43 100644 --- a/tests/integration/test_project_file_rw.py +++ b/tests/integration/test_project_file_rw.py @@ -4,6 +4,8 @@ import os import pytest +pytestmark = pytest.mark.integration + def test_read_write_merged_project_file(): """ diff --git a/tests/unit/pyrs/core/test_pyrscore.py b/tests/integration/test_pyrscore.py similarity index 96% rename from tests/unit/pyrs/core/test_pyrscore.py rename to tests/integration/test_pyrscore.py index ac2b7c285..33fa7ab40 100644 --- a/tests/unit/pyrs/core/test_pyrscore.py +++ b/tests/integration/test_pyrscore.py @@ -3,6 +3,8 @@ from pyrs.core import pyrscore import pytest +pytestmark = pytest.mark.integration + def broken_test_pole_figure_calculation(): """ @@ -26,6 +28,15 @@ def broken_test_pole_figure_calculation(): assert test_data_set +@pytest.mark.xfail( + reason="tests/data/Hidra_16-1_cor_log.h5 uses the legacy capitalized '2Theta' " + "coordinate key, which read_diffraction_2theta_array() no longer supports (it now " + "raises a clear 'unsupported schema' RuntimeError instead of silently skipping " + "reduced-diffraction data). This file needs migration to the current '2theta' " + "schema -- deferred to a separate follow-up.", + raises=RuntimeError, + strict=True, +) def test_main(): """ test main diff --git a/tests/integration/test_reduction.py b/tests/integration/test_reduction.py index e1a4fe40f..af23f0769 100644 --- a/tests/integration/test_reduction.py +++ b/tests/integration/test_reduction.py @@ -1,5 +1,6 @@ import json import os +from pathlib import Path from mantid.simpleapi import LoadEventNexus from pyrs.core.nexus_conversion import NeXusConvertingApp, DEFAULT_KEEP_LOGS from pyrs.core.powder_pattern import ReductionApp @@ -10,6 +11,8 @@ import numpy as np import pytest +pytestmark = pytest.mark.integration + DIAGNOSTIC_PLOTS = False @@ -268,7 +271,12 @@ def test_reduce_data(mask_file_name, filtered_counts, histogram_counts): ], ids=("HB2B_1017_Masked", "HB2B_1017_NoMask"), ) -def test_reduce_method_data(mask_file_name, filtered_counts, histogram_counts): +def test_reduce_method_data_valid_nexus_writes_diffraction_files( + mask_file_name: str | None, + filtered_counts: tuple[int, int, int], + histogram_counts: tuple[float, float, float], + tmp_path: Path, +) -> None: """Verify NeXus converters including counts and sample log values""" SUBRUNS = (1, 2, 3) CENTERS = (69.99525, 80.0, 97.50225) @@ -327,22 +335,27 @@ def test_reduce_method_data(mask_file_name, filtered_counts, histogram_counts): live_reducer.reduce_data(sub_runs=None, instrument_file=None, calibration_file=None, mask=None, num_bins=1000) # check ranges and total counts - for sub_run, angle, total_counts in zip(SUBRUNS, CENTERS, histogram_counts): + for sub_run, angle, total_intensity in zip(SUBRUNS, CENTERS, histogram_counts): assert_label = "mismatch in subrun={} for histogrammed data".format(sub_run) x, y, e = reducer.get_diffraction_data(sub_run) assert x[0] < angle < x[-1], assert_label # assert np.isnan(np.sum(y[1:])), assert_label - np.testing.assert_almost_equal(np.nansum(y), total_counts, decimal=1, err_msg=assert_label) + np.testing.assert_almost_equal(np.nansum(y), total_intensity, decimal=1, err_msg=assert_label) # check ranges and total counts - for sub_run, angle, total_counts in zip(SUBRUNS, CENTERS, histogram_counts): + for sub_run, angle, total_intensity in zip(SUBRUNS, CENTERS, histogram_counts): assert_label = "mismatch in subrun={} for histogrammed data".format(sub_run) x, y, e = live_reducer.get_diffraction_data(sub_run) assert x[0] < angle < x[-1], assert_label # assert np.isnan(np.sum(y[1:])), assert_label - np.testing.assert_almost_equal(np.nansum(y), total_counts, decimal=1, err_msg=assert_label) - reducer.save_diffraction_data("testing.h5") - live_reducer.save_diffraction_data("testing2.h5") + np.testing.assert_almost_equal(np.nansum(y), total_intensity, decimal=1, err_msg=assert_label) + testing_file = tmp_path / "testing.h5" + reducer.save_diffraction_data(str(testing_file)) + assert testing_file.exists(), "reducer.save_diffraction_data did not write a file" + + testing2_file = tmp_path / "testing2.h5" + live_reducer.save_diffraction_data(str(testing2_file)) + assert testing2_file.exists(), "live_reducer.save_diffraction_data did not write a file" def test_split_log_time_average(): diff --git a/tests/integration/test_texture_reduction.py b/tests/integration/test_texture_reduction.py index 68592f365..36ad30508 100644 --- a/tests/integration/test_texture_reduction.py +++ b/tests/integration/test_texture_reduction.py @@ -9,6 +9,8 @@ import pytest import os +pytestmark = pytest.mark.integration + DATA_DIR = "tests/data/" diff --git a/tests/integration/test_write_stress_csv.py b/tests/integration/test_write_stress_csv.py index 8641e28cd..392d7dfaa 100644 --- a/tests/integration/test_write_stress_csv.py +++ b/tests/integration/test_write_stress_csv.py @@ -3,8 +3,6 @@ import pandas as pd from pandas.testing import assert_frame_equal -from pyrs.peaks import PeakCollectionLite # type: ignore -from pyrs.dataobjects.sample_logs import PointList from pyrs.dataobjects.fields import StressField from pyrs.dataobjects.fields import StrainField from pyrs.core.stress_facade import StressFacade @@ -18,57 +16,14 @@ def compare_csv(file1, file2): assert_frame_equal(df1, df2, check_exact=False, rtol=1e-5) -def strain_instantiator(name, values, errors, x, y, z): - return StrainField( - name, - peak_collection=PeakCollectionLite(name, strain=values, strain_error=errors), - point_list=PointList([x, y, z]), - ) - - -def test_write_csv_empty_strain_filenames(): - with pytest.raises(RuntimeError) as exception_info: - # strain that doesn't come from a project file - X = [0.000, 1.000, 2.000, 3.000, 4.000, 5.000, 6.000, 7.000, 8.000, 9.000] - Y = [0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000] - Z = [0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000] - - strain11 = strain_instantiator( - "strain", - [0.000, 0.001, 0.002, 0.003, 0.004, 0.005, 0.006, 0.007, 0.080, 0.009], - [0.000, 0.001, 0.002, 0.003, 0.004, 0.005, 0.006, 0.007, 0.008, 0.009], - X, - Y, - Z, - ) - strain22 = strain_instantiator( - "strain", - [0.000, 0.001, 0.002, 0.003, 0.004, 0.005, 0.006, 0.007, 0.080, 0.009], - [0.000, 0.001, 0.002, 0.003, 0.004, 0.005, 0.006, 0.007, 0.008, 0.009], - X, - Y, - Z, - ) - strain33 = strain_instantiator( - "strain", - [0.000, 0.001, 0.002, 0.003, 0.004, 0.005, 0.006, 0.007, 0.080, 0.009], - [0.000, 0.001, 0.002, 0.003, 0.004, 0.005, 0.006, 0.007, 0.008, 0.009], - X, - Y, - Z, - ) - - stress = StressField(strain11, strain22, strain33, 200, 0.3) - SummaryGeneratorStress("dummy.csv", stress) - assert "StrainField filenames in direction " in str(exception_info.value) - - -def test_write_csv_none_stress(): - with pytest.raises(RuntimeError) as exception_info: - SummaryGeneratorStress("dummy.csv", None) - assert "Error: stress input must be of type StressField" in str(exception_info.value) +# test_write_csv_empty_strain_filenames and test_write_csv_none_stress moved to +# tests/unit/pyrs/core/test_summary_generator_stress.py. Both build their strains +# from in-memory PeakCollectionLite objects and only assert that +# SummaryGeneratorStress.__init__ rejects bad input, so they read no project file +# and do not belong in the `integration` tier. +@pytest.mark.integration def test_write_csv_incorrect_filename(test_data_dir: str): with pytest.raises(RuntimeError) as exception_info: sample11 = StrainField(test_data_dir + "/HB2B_1320.h5") @@ -87,6 +42,7 @@ def test_write_csv_incorrect_filename(test_data_dir: str): [([1320, 1320, 1320], EXPECTED_FILE_SUMMARY_CSV_1320)], ids=["HB2B_1320_SUMMARY_CSV"], ) +@pytest.mark.integration def test_write_summary_csv(test_data_dir: str, project_tags: str, expected_file: str): sample11 = StrainField(test_data_dir + "/HB2B_{}.h5".format(project_tags[0])) sample22 = StrainField(test_data_dir + "/HB2B_{}.h5".format(project_tags[1])) @@ -115,6 +71,7 @@ def test_write_summary_csv(test_data_dir: str, project_tags: str, expected_file: [([1320, 1320], EXPECTED_FILE_SUMMARY_CSV_1320_33Calculated)], ids=["HB2B_1320_SUMMARY_CSV_33INPLAINSTRAIN"], ) +@pytest.mark.integration def test_write_summary_33calculated_csv(test_data_dir: str, project_tags: str, expected_file: str): sample11 = StrainField(test_data_dir + "/HB2B_" + str(project_tags[0]) + ".h5") sample22 = StrainField(test_data_dir + "/HB2B_" + str(project_tags[1]) + ".h5") @@ -141,6 +98,7 @@ def test_write_summary_33calculated_csv(test_data_dir: str, project_tags: str, e [([1320, 1320], EXPECTED_FILE_SUMMARY_CSV_1320_33Calculated)], ids=["HB2B_1320_SUMMARY_CSV_33INPLAINSTRESS"], ) +@pytest.mark.integration def test_write_summary_33inplanestress_csv(test_data_dir: str, project_tags: str, expected_file: str): sample11 = StrainField(test_data_dir + "/HB2B_" + str(project_tags[0]) + ".h5") sample22 = StrainField(test_data_dir + "/HB2B_" + str(project_tags[1]) + ".h5") @@ -157,6 +115,7 @@ def test_write_summary_33inplanestress_csv(test_data_dir: str, project_tags: str remove(stress_csv_filename) +@pytest.mark.integration def test_write_summary_33calculated_nan_csv(test_data_dir: str): sample11 = StrainField(test_data_dir + "/HB2B_1331.h5", peak_tag="peak0") sample22 = StrainField(test_data_dir + "/HB2B_1332.h5", peak_tag="peak0") @@ -178,6 +137,7 @@ def test_write_summary_33calculated_nan_csv(test_data_dir: str): @pytest.mark.parametrize( "project_tags, expected_file", [([1320, 1320, 1320], EXPECTED_FILE_FULL_CSV_1320)], ids=["HB2B_1320_FULL_CSV"] ) +@pytest.mark.integration def test_write_full_csv(test_data_dir: str, project_tags: str, expected_file: str): sample11 = StrainField(test_data_dir + "/HB2B_{}.h5".format(project_tags[0])) sample22 = StrainField(test_data_dir + "/HB2B_{}.h5".format(project_tags[1])) @@ -204,6 +164,7 @@ def test_write_full_csv(test_data_dir: str, project_tags: str, expected_file: st [([1320, 1320], EXPECTED_FILE_FULL_CSV_1320_33Calculated)], ids=["HB2B_1320_FULL_CSV_33Calculated"], ) +@pytest.mark.integration def test_write_full_33calculated_csv(test_data_dir: str, project_tags: str, expected_file: str): sample11 = StrainField(test_data_dir + "/HB2B_" + str(project_tags[0]) + ".h5") sample22 = StrainField(test_data_dir + "/HB2B_" + str(project_tags[1]) + ".h5") @@ -228,6 +189,7 @@ def test_write_full_33calculated_csv(test_data_dir: str, project_tags: str, expe [([1320, 1320], EXPECTED_FILE_FULL_CSV_1320_33Calculated)], ids=["HB2B_1320_FULL_CSV_33INPLAINSTRESS"], ) +@pytest.mark.integration def test_write_full_33inplanestress_csv(test_data_dir: str, project_tags: str, expected_file: str): sample11 = StrainField(test_data_dir + "/HB2B_" + str(project_tags[0]) + ".h5") sample22 = StrainField(test_data_dir + "/HB2B_" + str(project_tags[1]) + ".h5") @@ -244,6 +206,7 @@ def test_write_full_33inplanestress_csv(test_data_dir: str, project_tags: str, e remove(stress_csv_filename) +@pytest.mark.integration def test_write_full_33calculated_nan_csv(test_data_dir: str): sample11 = StrainField(test_data_dir + "/HB2B_1331.h5", peak_tag="peak0") sample22 = StrainField(test_data_dir + "/HB2B_1332.h5", peak_tag="peak0") diff --git a/tests/plot_sample_points.py b/tests/plot_sample_points.py deleted file mode 100644 index 032e4b186..000000000 --- a/tests/plot_sample_points.py +++ /dev/null @@ -1,24 +0,0 @@ -from mpl_toolkits.mplot3d import Axes3D # noqa: F401 -import matplotlib.pyplot as plt -import os -from pyrs.dataobjects.fields import StrainField - -test_data_dir = "/home/jbq/repositories/pyrs/pyrs1/tests/data" - - -def plot_sample_points(*files): - fig = plt.figure() - ax = fig.add_subplot(111, projection="3d") - - for file in files: - strain = StrainField(filename=os.path.join(test_data_dir, file), peak_tag="peak0") - ax.scatter(strain.x, strain.y, strain.z) - - ax.set_xlabel("X Label") - ax.set_ylabel("Y Label") - ax.set_zlabel("Z Label") - plt.legend(files) - plt.show() - - -plot_sample_points("HB2B_1327.h5", "HB2B_1328.h5", "HB2B_1331.h5", "HB2B_1332.h5") diff --git a/tests/scripts/cis_tests/plot_sample_points.py b/tests/scripts/cis_tests/plot_sample_points.py new file mode 100644 index 000000000..a9e7c2597 --- /dev/null +++ b/tests/scripts/cis_tests/plot_sample_points.py @@ -0,0 +1,46 @@ +""" +tests/scripts/cis_tests/plot_sample_points.py + +Smoke-test / "by hand" script for visually inspecting the sample-point +coordinates stored in HiDRA project files. + +Loads one ``StrainField`` per project file from ``tests/data`` and plots each +file's (x, y, z) sample positions as a 3-D scatter, so that overlapping and +disjoint scans can be compared at a glance. + +Usage +----- + python tests/scripts/cis_tests/plot_sample_points.py + +Edit the file list in the ``__main__`` block below to plot a different set. +""" + +import os +from pathlib import Path + +from mpl_toolkits.mplot3d import Axes3D # noqa: F401 +import matplotlib.pyplot as plt + +from pyrs.dataobjects.fields import StrainField + +# tests/scripts/cis_tests/ -> tests/data +test_data_dir = str(Path(__file__).resolve().parents[2] / "data") + + +def plot_sample_points(*files): + fig = plt.figure() + ax = fig.add_subplot(111, projection="3d") + + for file in files: + strain = StrainField(filename=os.path.join(test_data_dir, file), peak_tag="peak0") + ax.scatter(strain.x, strain.y, strain.z) + + ax.set_xlabel("X Label") + ax.set_ylabel("Y Label") + ax.set_zlabel("Z Label") + plt.legend(files) + plt.show() + + +if __name__ == "__main__": + plot_sample_points("HB2B_1327.h5", "HB2B_1328.h5", "HB2B_1331.h5", "HB2B_1332.h5") diff --git a/tests/ui/test_calibration_ui.py b/tests/ui/test_calibration_ui.py index bc4632a76..2887845ad 100644 --- a/tests/ui/test_calibration_ui.py +++ b/tests/ui/test_calibration_ui.py @@ -9,6 +9,8 @@ # import json import pytest +pytestmark = [pytest.mark.gui, pytest.mark.integration] + wait = 200 plot_wait = 100 diff --git a/tests/ui/test_manual_reduction.py b/tests/ui/test_manual_reduction.py index c245442e5..bda36f6b8 100644 --- a/tests/ui/test_manual_reduction.py +++ b/tests/ui/test_manual_reduction.py @@ -6,6 +6,7 @@ matplotlib.use("Agg") from pyrs.interface.manual_reduction import manualreductionwindow # noqa E402 +pytestmark = [pytest.mark.gui, pytest.mark.integration] wait = 100 diff --git a/tests/ui/test_manual_reduction_runspec.py b/tests/ui/test_manual_reduction_runspec.py deleted file mode 100644 index 61873ef9e..000000000 --- a/tests/ui/test_manual_reduction_runspec.py +++ /dev/null @@ -1,50 +0,0 @@ -"""Unit tests for the manual-reduction run-number specification parser.""" - -import pytest - -from pyrs.interface.manual_reduction.manual_reduction_model import is_run_specification, parse_run_numbers - - -def test_parse_run_numbers_single(): - """A single run number parses to a one-element list.""" - assert parse_run_numbers("938") == [938] - - -def test_parse_run_numbers_dash_range_is_inclusive(): - """A dash range includes both endpoints.""" - assert parse_run_numbers("938-940") == [938, 939, 940] - - -def test_parse_run_numbers_comma_list(): - """Comma-separated runs parse in order.""" - assert parse_run_numbers("938,945,950") == [938, 945, 950] - - -def test_parse_run_numbers_mixed_range_and_list(): - """Ranges and individual runs can be combined and spaces are ignored.""" - assert parse_run_numbers("938-940, 945") == [938, 939, 940, 945] - - -def test_parse_run_numbers_trailing_comma_ignored(): - """Empty tokens from stray commas are skipped.""" - assert parse_run_numbers("938,,940") == [938, 940] - - -def test_parse_run_numbers_invalid_raises(): - """A non-integer token raises ValueError.""" - with pytest.raises(ValueError): - parse_run_numbers("938-abc") - - -def test_is_run_specification_accepts_run_specs(): - """Digit/dash/comma strings are recognized as run specs.""" - assert is_run_specification("938") - assert is_run_specification("938-940,945") - assert is_run_specification(" 938 - 940 ") - - -def test_is_run_specification_rejects_paths_and_empty(): - """File paths and empty input are not run specs.""" - assert not is_run_specification("tests/data/HB2B_938.nxs.h5") - assert not is_run_specification("") - assert not is_run_specification(" ") diff --git a/tests/ui/test_merge_projectfiles.py b/tests/ui/test_merge_projectfiles.py index 068b56237..839891e31 100644 --- a/tests/ui/test_merge_projectfiles.py +++ b/tests/ui/test_merge_projectfiles.py @@ -7,6 +7,8 @@ import os import pytest +pytestmark = [pytest.mark.gui, pytest.mark.integration] + wait = 500 plot_wait = 100 diff --git a/tests/ui/test_peak_fitting.py b/tests/ui/test_peak_fitting.py index ae88ab65d..81f71c100 100644 --- a/tests/ui/test_peak_fitting.py +++ b/tests/ui/test_peak_fitting.py @@ -6,6 +6,8 @@ import pytest import os +pytestmark = [pytest.mark.gui, pytest.mark.integration] + wait = 300 diff --git a/tests/ui/test_pyrslauncher.py b/tests/ui/test_pyrslauncher.py index d71aaad2e..ce624e8c5 100644 --- a/tests/ui/test_pyrslauncher.py +++ b/tests/ui/test_pyrslauncher.py @@ -2,6 +2,8 @@ from qtpy import QtCore import pytest +pytestmark = [pytest.mark.gui, pytest.mark.integration] + wait = 100 diff --git a/tests/ui/test_stress_strain_viewer.py b/tests/ui/test_stress_strain_viewer.py index 3bc446953..353b958a4 100644 --- a/tests/ui/test_stress_strain_viewer.py +++ b/tests/ui/test_stress_strain_viewer.py @@ -19,6 +19,7 @@ # This is a test of the model component of the strain/stress viewer +@pytest.mark.integration def test_model(tmpdir, test_data_dir): model = Model() @@ -335,6 +336,7 @@ def test_model(tmpdir, test_data_dir): model.e11 is not None +@pytest.mark.integration def test_model_multiple_files(tmpdir, test_data_dir): model = Model() @@ -501,6 +503,7 @@ def test_model_multiple_files(tmpdir, test_data_dir): assert len(open(filename).readlines()) == 318 +@pytest.mark.integration def test_model_from_json(tmpdir, test_data_dir): model_json = dict() model_json["stress_case"] = "in-plane-stress" @@ -616,6 +619,8 @@ def strain_stress_window(my_qtbot): # changes to SliceViewer from Mantid in the version 5.1 is needed for the stress/strain viewer to run @pytest.mark.skipif(old_mantid, reason="Need mantid version >= 5.1") +@pytest.mark.gui +@pytest.mark.integration def test_stress_strain_viewer(strain_stress_window): window, qtbot = strain_stress_window diff --git a/tests/ui/test_texture_fitting.py b/tests/ui/test_texture_fitting.py index a6553b4a7..6e8424a71 100644 --- a/tests/ui/test_texture_fitting.py +++ b/tests/ui/test_texture_fitting.py @@ -12,6 +12,8 @@ from tests.conftest import ON_GITHUB_ACTIONS # set to True when running on build servers +pytestmark = [pytest.mark.gui, pytest.mark.integration] + wait = 200 plot_wait = 100 diff --git a/tests/unit/pyrs/core/test_live_conversion.py b/tests/unit/pyrs/core/test_live_conversion.py index ddd77909b..55fdd4820 100644 --- a/tests/unit/pyrs/core/test_live_conversion.py +++ b/tests/unit/pyrs/core/test_live_conversion.py @@ -23,6 +23,8 @@ def converter_HB2B_938(test_data_dir): class TestNeXusConvertingApp: + pytestmark = pytest.mark.integration + def test_split_sample_logs(self, converter_HB2B_938): converter_HB2B_938.split_sample_logs(subruns=np.zeros(1, dtype=int)) sample_logs = converter_HB2B_938._hidra_workspace._sample_logs diff --git a/tests/unit/pyrs/core/test_nexus_conversion.py b/tests/unit/pyrs/core/test_nexus_conversion.py index c025db2bf..623ee7656 100644 --- a/tests/unit/pyrs/core/test_nexus_conversion.py +++ b/tests/unit/pyrs/core/test_nexus_conversion.py @@ -14,6 +14,8 @@ def converter_HB2B_938(test_data_dir): class TestNeXusConvertingApp: + pytestmark = pytest.mark.integration + def test_split_sample_logs(self, converter_HB2B_938): converter_HB2B_938.split_sample_logs(subruns=np.zeros(1, dtype=int)) sample_logs = converter_HB2B_938._hidra_workspace._sample_logs diff --git a/tests/unit/pyrs/core/test_summary_generator_stress.py b/tests/unit/pyrs/core/test_summary_generator_stress.py new file mode 100644 index 000000000..0480e87ee --- /dev/null +++ b/tests/unit/pyrs/core/test_summary_generator_stress.py @@ -0,0 +1,107 @@ +""" +Unit tests for pyrs.core.summary_generator_stress — split out of +tests/integration/test_write_stress_csv.py. + +These two tests exercise SummaryGeneratorStress's input-validation error paths and +need no real project file. See tests/integration/test_write_stress_csv.py for the +CSV-writing tests that do (gold-file comparisons against real HB2B project files). +""" + +import pytest + +from pyrs.peaks import PeakCollectionLite # type: ignore +from pyrs.dataobjects.sample_logs import PointList +from pyrs.dataobjects.fields import StressField +from pyrs.dataobjects.fields import StrainField +from pyrs.core.summary_generator_stress import SummaryGeneratorStress + + +def strain_instantiator( + name: str, + values: list[float], + errors: list[float], + x: list[float], + y: list[float], + z: list[float], +) -> StrainField: + """Build a minimal `StrainField` directly from strain values, with no backing project file. + + Pairs a `PeakCollectionLite` (strain values/errors only, no full peak-fit profile) + with a `PointList` built from the given coordinates. Used by this module's + `SummaryGeneratorStress` input-validation tests, which need a `StrainField` whose + `filenames` is empty (i.e. not loaded from a real project file). + + Args: + name: Tag identifying the strain. Passed through as `StrainField`'s `filename` + argument and `PeakCollectionLite`'s `peak_tag` -- despite the parameter + name, no file is read; supplying `peak_collection`/`point_list` directly + means this string is used only as a label. + values: Strain value at each sample point. + errors: Strain uncertainty at each sample point, same length as `values`. + x: X coordinate of each sample point. + y: Y coordinate of each sample point. + z: Z coordinate of each sample point. + + Returns: + A `StrainField` built from the given values, with no backing project file. + """ + return StrainField( + name, + peak_collection=PeakCollectionLite(name, strain=values, strain_error=errors), + point_list=PointList([x, y, z]), + ) + + +def test_init_strain_without_filenames_raises() -> None: + """Test that `SummaryGeneratorStress` rejects strains with no `filenames`. + + Strains built directly from values via `strain_instantiator` (not loaded from a + real project file) have empty `filenames`; the "11"/"22" directions require a + non-empty `filenames`, so construction must raise `RuntimeError` naming the + affected direction. + """ + # strain that doesn't come from a project file + X = [0.000, 1.000, 2.000, 3.000, 4.000, 5.000, 6.000, 7.000, 8.000, 9.000] + Y = [0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000] + Z = [0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000] + + strain11 = strain_instantiator( + "strain", + [0.000, 0.001, 0.002, 0.003, 0.004, 0.005, 0.006, 0.007, 0.080, 0.009], + [0.000, 0.001, 0.002, 0.003, 0.004, 0.005, 0.006, 0.007, 0.008, 0.009], + X, + Y, + Z, + ) + strain22 = strain_instantiator( + "strain", + [0.000, 0.001, 0.002, 0.003, 0.004, 0.005, 0.006, 0.007, 0.080, 0.009], + [0.000, 0.001, 0.002, 0.003, 0.004, 0.005, 0.006, 0.007, 0.008, 0.009], + X, + Y, + Z, + ) + strain33 = strain_instantiator( + "strain", + [0.000, 0.001, 0.002, 0.003, 0.004, 0.005, 0.006, 0.007, 0.080, 0.009], + [0.000, 0.001, 0.002, 0.003, 0.004, 0.005, 0.006, 0.007, 0.008, 0.009], + X, + Y, + Z, + ) + + stress = StressField(strain11, strain22, strain33, 200, 0.3) + with pytest.raises(RuntimeError) as exception_info: + SummaryGeneratorStress("dummy.csv", stress) + assert "StrainField filenames in direction " in str(exception_info.value) + + +def test_init_none_stress_raises() -> None: + """Test that `SummaryGeneratorStress` rejects `stress_input=None`. + + `None` is neither a `StressField` nor a `StressFacade`, so construction must raise + `RuntimeError`. + """ + with pytest.raises(RuntimeError) as exception_info: + SummaryGeneratorStress("dummy.csv", None) + assert "stress input must be of type StressField or StressFacade" in str(exception_info.value) diff --git a/tests/unit/pyrs/core/test_workspaces.py b/tests/unit/pyrs/core/test_workspaces.py index 98a27fd09..f1724e28b 100644 --- a/tests/unit/pyrs/core/test_workspaces.py +++ b/tests/unit/pyrs/core/test_workspaces.py @@ -1,4 +1,5 @@ import numpy as np +import pytest from pyrs.core.workspaces import HidraWorkspace from pyrs.projectfile import HidraProjectFile # type: ignore @@ -13,6 +14,7 @@ def test_set_sample_log(self): workspace.set_sample_log("vx", subruns, vx, "mm") assert workspace.get_sample_log_units("vx") == "mm" + @pytest.mark.integration def test_append_projectfiels(self): # import data file: detector ID and file name test_data = [ diff --git a/tests/unit/pyrs/dataobjects/test_fields.py b/tests/unit/pyrs/dataobjects/test_fields.py index 9eb1baf93..3544167ca 100644 --- a/tests/unit/pyrs/dataobjects/test_fields.py +++ b/tests/unit/pyrs/dataobjects/test_fields.py @@ -1,18 +1,14 @@ # Standard and third party libraries from collections import namedtuple from copy import deepcopy -import copy import numpy as np from numpy.testing import assert_allclose, assert_equal -import os import pytest import random import warnings from uncertainties import unumpy # PyRs libraries -from pyrs.core.peak_profile_utility import EFFECTIVE_PEAK_PARAMETERS, get_parameter_dtype -from pyrs.core.workspaces import HidraWorkspace from pyrs.dataobjects.constants import DEFAULT_POINT_RESOLUTION from pyrs.dataobjects.fields import ( aggregate_scalar_field_samples, @@ -20,14 +16,12 @@ ScalarFieldSample, _StrainField, StrainField, - StrainFieldSingle, StressField, stack_scalar_field_samples, ) from pyrs.dataobjects.sample_logs import PointList -from pyrs.peaks import PeakCollection, PeakCollectionLite # type: ignore +from pyrs.peaks import PeakCollectionLite # type: ignore from pyrs.peaks.peak_collection import to_microstrain -from tests.conftest import assert_allclose_with_sorting to_megapascal = StressField.to_megapascal SampleMock = namedtuple("SampleMock", "name values errors x y z") @@ -588,66 +582,6 @@ def test_extend_to_point_list(self, strain_object_1, strain_object_2): assert_allclose(field_extended.values, to_microstrain([nan, nan, nan, 0.045, 0.05, 0.06, 0.07, 0.08]), atol=1) -@pytest.fixture(scope="module") -def strain_field_samples(test_data_dir): - r""" - A number of StrainField objects from mock and real data - """ - sample_fields = {} - ##### - # The first sample has 2 points in each direction - ##### - subruns = np.arange(1, 9, dtype=int) - - # create the test peak collection - d-refernce is 1 to make checks easier - # uncertainties are all zero - peaks_array = np.zeros(subruns.size, dtype=get_parameter_dtype("gaussian", "Linear")) - peaks_array["PeakCentre"][:] = 180.0 # position of two-theta in degrees - peaks_array["Height"][:] = 1.0 # position of two-theta in degrees - peaks_error = np.zeros(subruns.size, dtype=get_parameter_dtype("gaussian", "Linear")) - peak_collection = PeakCollection( - "dummy", "gaussian", "linear", wavelength=2.0, d_reference=1.0, d_reference_error=0.0 - ) - peak_collection.set_peak_fitting_values( - subruns, peaks_array, parameter_errors=peaks_error, fit_costs=np.zeros(subruns.size, dtype=float) - ) - - # create the test workspace - only sample logs are needed - workspace = HidraWorkspace() - workspace.set_sub_runs(subruns) - # arbitray points in space - workspace.set_sample_log("vx", subruns, np.arange(1, 9, dtype=int)) - workspace.set_sample_log("vy", subruns, np.arange(11, 19, dtype=int)) - workspace.set_sample_log("vz", subruns, np.arange(21, 29, dtype=int)) - - # call the function - strain = StrainFieldSingle(hidraworkspace=workspace, peak_collection=peak_collection) - - # test the result - assert strain - assert not strain.filenames - assert len(strain) == subruns.size - assert strain.peak_collections == [peak_collection] - np.testing.assert_almost_equal(strain.values, 0.0) - np.testing.assert_equal(strain.errors, np.zeros(subruns.size, dtype=float)) - sample_fields["strain with two points per direction"] = strain - - ##### - # Create StrainField samples from two files and different peak tags - ##### - # TODO: substitute/fix HB2B_1628.h5 with other data, because reported vx, vy, and vz are all 'nan' - # filename_tags_pairs = [('HB2B_1320.h5', ('', 'peak0')), ('HB2B_1628.h5', ('peak0', 'peak1', 'peak2'))] - filename_tags_pairs = [("HB2B_1320.h5", ("", "peak0"))] - for filename, tags in filename_tags_pairs: - file_path = os.path.join(test_data_dir, filename) - prefix = filename.split(".")[0] + "_" - for tag in tags: - sample_fields[prefix + tag] = StrainFieldSingle(filename=file_path, peak_tag=tag) - assert sample_fields[prefix + tag].filenames == [filename] - - return sample_fields - - class TestStrainFieldSingle: def test_overlapping_list(self): x = [0.0, 0.5, 0.0, 0.5, 0.0, 0.5, 0.0, 0.0] # x @@ -691,43 +625,8 @@ def test_set_d_reference(self, strain_single_object_0): # There should be no strain, since the observed lattice plane spacings are the reference spacings assert_allclose(strain_single_object_0.values, np.zeros(8), atol=1.0e-5) - def test_get_peak_params(self, strain_field_samples): - strain = strain_field_samples["strain with two points per direction"] # mock object - - # test that getting non-existant parameter works - with pytest.raises(ValueError) as exception_info: - strain.get_effective_peak_parameter("impossible") - assert "impossible" in str(exception_info.value) - - num_values = len(strain) - for name in EFFECTIVE_PEAK_PARAMETERS: - scalar_field = strain.get_effective_peak_parameter(name) - assert scalar_field, f"Failed to get {name}" - assert len(scalar_field) == num_values, f"{name} does not have correct length" - class Test_StrainField: - class StrainFieldMock(StrainField): - r"""Mocks a StrainField object overloading the initialization""" - - def __init__(self, *strains): - for s in strains: - assert isinstance(s, StrainFieldSingle) - self._strains = strains - - def test_eq(self, strain_field_samples): - strains_single_scan = copy.deepcopy(list(strain_field_samples.values())) - # single-scan strains - assert strains_single_scan[0] == strains_single_scan[0] - assert (strains_single_scan[0] == strains_single_scan[1]) is False - - # multi-scan scans - strain_multi = self.StrainFieldMock(*strains_single_scan) - assert strain_multi == strain_multi - assert (strain_multi == strains_single_scan[0]) is False - strain_multi_2 = self.StrainFieldMock(*strains_single_scan[:-1]) # all except the last one - assert (strain_multi == strain_multi_2) is False - def test_stack_with(self, strain_stress_object_0, strain_stress_object_1): r""" Stack pair of strains. @@ -860,51 +759,16 @@ def test_rmul(self, strain_stress_object_1): class TestStrainField: - def test_peak_collection(self, strain_field_samples): - strain = strain_field_samples["strain with two points per direction"] - assert isinstance(strain.peak_collections, list) - assert len(strain.peak_collections) == 1 - assert isinstance(strain.peak_collections[0], PeakCollection) - # TODO: test the RuntimeError when the strain is a composite - - def test_peak_collections(self, strain_field_samples): - strain = strain_field_samples["strain with two points per direction"] - assert len(strain.peak_collections) == 1 - assert isinstance(strain.peak_collections[0], PeakCollection) - - def test_coordinates(self, strain_field_samples): - strain = strain_field_samples["strain with two points per direction"] - coordinates = np.array( - [ - [1.0, 11.0, 21.0], - [2.0, 12.0, 22.0], - [3.0, 13.0, 23.0], - [4.0, 14.0, 24.0], - [5.0, 15.0, 25.0], - [6.0, 16.0, 26.0], - [7.0, 17.0, 27.0], - [8.0, 18.0, 28.0], - ] - ) - assert np.allclose(strain.coordinates, coordinates) - - def test_fuse_with(self, strain_field_samples): - strain1 = strain_field_samples["HB2B_1320_peak0"] - strain2 = strain_field_samples["strain with two points per direction"] - strain = strain1.fuse_with(strain2) - assert strain.peak_collections == [strain1.peak_collections[0], strain2.peak_collections[0]] - assert np.allclose(strain.coordinates, np.concatenate((strain1.coordinates, strain2.coordinates))) - assert strain.field # should return something - - # fusing a scan with itself creates a new copy of the strain - assert strain.peak_collections[0] == strain1.peak_collections[0] - - def test_add(self, strain_field_samples): - strain1 = strain_field_samples["HB2B_1320_peak0"] - strain2 = strain_field_samples["strain with two points per direction"] - strain = strain1 + strain2 - assert strain.peak_collections == [strain1.peak_collections[0], strain2.peak_collections[0]] - assert np.allclose(strain.coordinates, np.concatenate((strain1.coordinates, strain2.coordinates))) + # NOTE: `StrainField` used to expose a singular `.peak_collection` property that + # raised RuntimeError for a composite (multi-scan) strain ("There is more than one + # peak collection associated to this strain field") -- removed in commit d340cccb + # (2020) in favor of the plural `.peak_collections`, which returns all of them for + # a composite strain with no restriction today. No current operation on + # `StrainField` raises RuntimeError specifically because the strain is composite. + # TODO: please verify that this is the expected behavior! Was dropping that + # restriction intentional, or should some accessor still reject/flag a composite + # strain for certain callers? Needs sign-off from someone who owns the physics/ + # data model here, not just an engineering call. def test_create_strain_field_from_scalar_field_sample(self): values = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0] # values @@ -1009,40 +873,6 @@ def test_small_stack(self): assert stacked.point_list == orig.point_list """ - def test_create_strain_field_from_file_no_peaks(self, test_data_dir): - # this project file doesn't have peaks in it - file_path = os.path.join(test_data_dir, "HB2B_1060_first3_subruns.h5") - try: - _ = StrainField(file_path) # noqa F841 - assert False, "Should not be able to read " + file_path - except IOError: - pass # this is what should happen - - def test_from_file(self, test_data_dir): - file_path = os.path.join(test_data_dir, "HB2B_1320.h5") - strain = StrainField(filename=file_path, peak_tag="peak0") - - assert strain - assert strain.field - assert strain.get_effective_peak_parameter("Center") - - def test_fuse_strains(self, strain_field_samples): - # TODO HB2B_1320_peak0 and HB2B_1320_ are the same scan. We need two different scans - strain1 = strain_field_samples["HB2B_1320_peak0"] - strain2 = strain_field_samples["HB2B_1320_"] - strain3 = strain_field_samples["strain with two points per direction"] - # Use fuse_strains(). - strain_fused = StrainField.fuse_strains( - strain1, strain2, strain3, resolution=DEFAULT_POINT_RESOLUTION, criterion="min_error" - ) - # the sum should give the same, since we passed default resolution and criterion options - strain_sum = strain1 + strain2 + strain3 - for strain in (strain_fused, strain_sum): - assert len(strain) == 312 + 8 # strain1 and strain2 give strain1 because they contain the same data - assert strain.peak_collections == [s.peak_collections[0] for s in (strain1, strain2, strain3)] - values = np.concatenate((strain1.values, strain3.values)) # no strain2 because it's the same as strain1 - assert_allclose_with_sorting(strain.values, values) - def test_d_reference(self): # create two strains x = np.array([0.0, 0.5, 0.0, 0.5]) @@ -1141,70 +971,6 @@ def test_set_d_reference( assert_allclose(strain.get_d_reference().values[:-3], d_reference_old.values[:-3]) assert_allclose(strain.get_d_reference().values[-3:], [9, 9, 9]) - def test_stack_strains(self, strain_field_samples, allclose_with_sorting): - strain1 = strain_field_samples["HB2B_1320_peak0"] - strain2 = strain_field_samples["HB2B_1320_"] - - # Stack two strains having the same evaluation points. - strain1_stacked, strain2_stacked = strain1 * strain2 # default resolution and stacking mode - for strain in (strain1_stacked, strain2_stacked): - assert len(strain) == len(strain1) - assert bool(np.all(np.isfinite(strain.values))) is True # all points are common to strain1 and strain2 - - # Stack two strains having completely different evaluation points. - strain3 = strain_field_samples["strain with two points per direction"] - strain2_stacked, strain3_stacked = strain2 * strain3 # default resolution and stacking mode - # The common list of points is the sum of the points from each strain - for strain in (strain2_stacked, strain3_stacked): - assert len(strain) == len(strain2) + len(strain3) - - # verify the filenames got copied over - for strain_stacked, strain in ((strain2_stacked, strain2), (strain3_stacked, strain3)): - assert strain_stacked.filenames == strain.filenames - - # There's no common point that is common to both strain2 and strain3 - # Each stacked strain only have finite measurements on points coming from the un-stacked strain - for strain_stacked, strain in ((strain2_stacked, strain2), (strain3_stacked, strain3)): - finite_measurements_count = len(np.where(np.isfinite(strain_stacked.values))[0]) - assert finite_measurements_count == len(strain) - - # The points evaluated as 'nan' must come from the other scan - for strain_stacked, strain_other in ((strain2_stacked, strain3), (strain3_stacked, strain2)): - nan_measurements_count = len(np.where(np.isnan(strain_stacked.values))[0]) - assert nan_measurements_count == len(strain_other) - - def test_fuse_and_stack_strains(self, strain_field_samples, allclose_with_sorting): - # TODO HB2B_1320_peak0 and HB2B_1320_ are the same scan. We need two different scans - strain1 = strain_field_samples["HB2B_1320_peak0"] - strain2 = strain_field_samples["HB2B_1320_"] - strain3 = strain_field_samples["strain with two points per direction"] - strain1_stacked, strain23_stacked = strain1 * (strain2 + strain3) # default resolution and stacking mode - # Check number of points with finite strains measuments - for strain_stacked in (strain1_stacked, strain23_stacked): - assert len(strain_stacked) == len(strain2) + len(strain3) - for strain_stacked, finite_count, nan_count in zip((strain1_stacked, strain23_stacked), (312, 320), (8, 0)): - finite_measurements_count = len(np.where(np.isfinite(strain_stacked.values))[0]) - assert finite_measurements_count == finite_count - nan_measurements_count = len(np.where(np.isnan(strain_stacked.values))[0]) - assert nan_measurements_count == nan_count - # Check peak collections carry-over - assert strain1_stacked.peak_collections[0] == strain1.peak_collections[0] - assert strain23_stacked.peak_collections == [strain2.peak_collections[0], strain3.peak_collections[0]] - - def test_to_md_histo_workspace(self, strain_field_samples): - strain = strain_field_samples["HB2B_1320_peak0"] - histo = strain.to_md_histo_workspace(method="linear", resolution=DEFAULT_POINT_RESOLUTION) - assert histo.id() == "MDHistoWorkspace" - minimum_values = (-31.76, -7.20, -15.00) # bin boundary with the smallest coordinate along X, Y, and Z - maximum_values = (31.76, 7.20, 15.00) # bin boundary with the largest coordinate along X, Y, and Z - bin_counts = (18, 6, 3) # number of bins along X, Y, and Z - for i, (min_value, max_value, bin_count) in enumerate(zip(minimum_values, maximum_values, bin_counts)): - dimension = histo.getDimension(i) - assert dimension.getUnits() == "mm" - assert dimension.getMinimum() == pytest.approx(min_value, abs=0.01) - assert dimension.getMaximum() == pytest.approx(max_value, abs=0.01) - assert dimension.getNBins() == bin_count - def test_calculated_strain(): SIZE = 10 @@ -1823,53 +1589,5 @@ def test_stack_scalar_field_samples( assert allclose_with_sorting(sample3.values, sample3_values, equal_nan=True) -def test_stress_field_from_files(test_data_dir): - HB2B_1320_PROJECT = os.path.join(test_data_dir, "HB2B_1320.h5") - YOUNG = 200.0 - POISSON = 0.3 - - # create 3 strain objects - sample11 = StrainField(HB2B_1320_PROJECT) - sample22 = StrainField(HB2B_1320_PROJECT) - sample33 = StrainField(HB2B_1320_PROJECT) - # create the stress field (with very uninteresting values - stress = StressField(sample11, sample22, sample33, YOUNG, POISSON) - - # confirm the strains are unchanged - for direction in DIRECTIONS: - stress.select(direction) - np.testing.assert_allclose( - stress.strain.values, - sample11.peak_collections[0].get_strain(units="microstrain")[0], - atol=1, - err_msg=f"strain direction {direction}", - ) - - # calculate the values for stress - strains = sample11.peak_collections[0].get_strain(units="microstrain")[0] - stress_exp = strains + POISSON * (strains + strains + strains) / (1.0 - 2.0 * POISSON) - stress_exp *= YOUNG / (1.0 + POISSON) - - # since all of the contributing strains are identical, everything else should match - for direction in DIRECTIONS: - stress.select(direction) - np.testing.assert_equal(stress.point_list.coordinates, sample11.point_list.coordinates) - np.testing.assert_allclose( - stress.values, to_megapascal(stress_exp), atol=1, err_msg=f"stress direction {direction}" - ) - - stress11 = stress.stress11.values - print(stress11) - assert np.all(np.logical_not(np.isnan(stress11))) # confirm something was set - - # redo the calculation - this should change nothing - stress.update_stress_calculation() - np.testing.assert_equal(stress.stress11.values, stress11) - - # set the d-reference and see that the values are changed - stress.set_d_reference((42.0, 0.0)) - assert np.all(stress.stress11.values != stress11) - - if __name__ == "__main__": pytest.main() diff --git a/tests/unit/pyrs/interface/test_manual_reduction_runspec.py b/tests/unit/pyrs/interface/test_manual_reduction_runspec.py new file mode 100644 index 000000000..ebf9ec245 --- /dev/null +++ b/tests/unit/pyrs/interface/test_manual_reduction_runspec.py @@ -0,0 +1,107 @@ +"""Unit tests for the manual-reduction run-number specification parser. + +These tests exercise `parse_run_numbers`/`is_run_specification` directly, with no +file I/O or HFIR archive access needed -- kept out of the HFIR-gated integration +suite for exactly that reason. They consolidate two previously separate, partly +overlapping sets of tests for the same two functions: one in +tests/integration/test_batch_reduction.py (skipped whenever the HFIR archive was +unreachable) and one in tests/ui/test_manual_reduction_runspec.py (which touched +no Qt widget at all). +""" + +import pytest + +from pyrs.interface.manual_reduction.manual_reduction_model import is_run_specification, parse_run_numbers + + +def test_parse_run_numbers_single_run_returns_one_element_list() -> None: + """Test that a single run number parses to a one-element list.""" + # Arrange + text = "938" + + # Act + result = parse_run_numbers(text) + + # Assert + assert result == [938] + + +def test_parse_run_numbers_dash_range_returns_inclusive_list() -> None: + """Test that a dash range expands to an inclusive list of run numbers.""" + # Arrange + text = "938-940" + + # Act + result = parse_run_numbers(text) + + # Assert + assert result == [938, 939, 940] + + +def test_parse_run_numbers_comma_separated_returns_ordered_list() -> None: + """Test that comma-separated runs parse in the order given.""" + # Arrange + text = "938,945,950" + + # Act + result = parse_run_numbers(text) + + # Assert + assert result == [938, 945, 950] + + +def test_parse_run_numbers_mixed_range_and_list() -> None: + """Test that ranges and individual runs can be combined, with spaces ignored.""" + # Arrange + text = "938-940, 945" + + # Act + result = parse_run_numbers(text) + + # Assert + assert result == [938, 939, 940, 945] + + +def test_parse_run_numbers_stray_comma_skipped() -> None: + """Test that empty tokens from stray commas are skipped.""" + # Arrange + text = "938,,940" + + # Act + result = parse_run_numbers(text) + + # Assert + assert result == [938, 940] + + +def test_parse_run_numbers_non_integer_token_raises_value_error() -> None: + """Test that a non-integer token raises `ValueError`.""" + # Arrange + text = "938-abc" + + # Act / Assert + with pytest.raises(ValueError): + parse_run_numbers(text) + + +def test_parse_run_numbers_blank_returns_empty() -> None: + """Test that blank and whitespace-only input return an empty list, not an error.""" + # Arrange / Act / Assert + assert parse_run_numbers("") == [] + assert parse_run_numbers(" ") == [] + + +def test_is_run_specification_accepts_run_specs() -> None: + """Test that digit/dash/comma strings (including spaced dash ranges) are recognized as run specs.""" + # Arrange / Act / Assert + assert is_run_specification("938") + assert is_run_specification("938-940,945") + assert is_run_specification(" 938 - 940 ") + + +def test_is_run_specification_path_or_blank_returns_false() -> None: + """Test that file paths, blank input, and whitespace-only input are not run specs.""" + # Arrange / Act / Assert + assert not is_run_specification("tests/data/HB2B_938.nxs.h5") + assert not is_run_specification("") + assert not is_run_specification(" ") diff --git a/tests/ui/test_plot_data_preparer.py b/tests/unit/pyrs/interface/test_plot_data_preparer.py similarity index 100% rename from tests/ui/test_plot_data_preparer.py rename to tests/unit/pyrs/interface/test_plot_data_preparer.py diff --git a/tests/unit/pyrs/peaks/test_peak_fit_engine.py b/tests/unit/pyrs/peaks/test_peak_fit_engine.py index 0b2f98202..41d7aa5f3 100644 --- a/tests/unit/pyrs/peaks/test_peak_fit_engine.py +++ b/tests/unit/pyrs/peaks/test_peak_fit_engine.py @@ -788,6 +788,19 @@ def test_calculate_effective_parameters_pv(): } ], ) +@pytest.mark.integration +@pytest.mark.xfail( + reason="tests/data/HB2B_1060_first3_subruns.h5's '2theta' dataset raises a " + "pre-existing, unrelated HDF5-level error on read -- h5py.KeyError: 'Unable to " + "synchronously open object (invalid dataset size, likely file corruption)'. " + "Reproducible with bare h5py, independent of any PyRS code. Was previously " + "silently swallowed by a blanket except-KeyError in read_diffraction_2theta_array's " + "caller; now surfaces loudly since that catch was tightened to only cover " + "legitimately-empty reduced-diffraction data. Root cause (file corruption or an " + "hdf5/h5py version incompatibility) is a separate follow-up, not a schema issue.", + raises=RuntimeError, + strict=True, +) def test_pseudovoigt_HB2B_1060(target_values): """This is a test of Pseudovoigt peak fitting for HB2B 1060. diff --git a/tests/unit/pyrs/utilities/NXstress/conftest.py b/tests/unit/pyrs/utilities/NXstress/conftest.py index 9d6b8027a..882a94722 100644 --- a/tests/unit/pyrs/utilities/NXstress/conftest.py +++ b/tests/unit/pyrs/utilities/NXstress/conftest.py @@ -1,17 +1,158 @@ +""" +Shared fixtures for the NXstress test suite. + +Fixture conventions +-------------------- +- `minimal_HidraWorkspace` — build a small, entirely synthetic (no disk I/O) + `HidraWorkspace`, via its public setters. This is the default choice for new + NXstress tests: it lets a test's assertions be judged purely on the code under + test, not on incidental facts about whichever real HB2B run happens to be on + disk. Toggle `with_instrument`/`with_masks`/`with_raw_counts` for the specific + structure your test needs. +- `minimal_PeakCollection` — a thin convenience wrapper around `createPeakCollection` + (see tests/util/peak_collection_helpers.py) that fills in sensible defaults; + still fully overridable. +- `.nxs` files written by a test must land under pytest's built-in `tmp_path` + fixture and need no separate cleanup — this is already the convention every + test in this directory follows. +- `load_HidraWorkspace` — legacy: reads a real HidraProject file from disk. Kept + for a test that genuinely needs real project-file content (e.g. testing + `HidraProjectFile`'s own I/O); prefer `minimal_HidraWorkspace` for anything else. +- `default_config` — see `tests/unit/pyrs/utilities/conftest.py` (one directory up): + it lives there, not here, since `pyrs/utilities/config.py` isn't itself + NXstress-specific code, and a fixture defined there is visible down into this + directory too. +""" + from collections.abc import Callable, Generator from pathlib import Path +import numpy as np +from pyrs.core.instrument_geometry import DENEXDetectorGeometry, DENEXDetectorShift from pyrs.core.workspaces import HidraWorkspace from pyrs.projectfile.file_object import HidraProjectFile, HidraProjectFileMode import pytest -from tests.util.peak_collection_helpers import createPeakCollection +from tests.util.peak_collection_helpers import createPeakCollection # noqa: F401 + + +@pytest.fixture +def minimal_HidraWorkspace() -> Generator[Callable[..., HidraWorkspace]]: + # Factory fixture: builds a small but valid `HidraWorkspace` entirely from + # synthetic in-memory data -- no project file is read from disk. + + def _init( + *, + name: str = "test_workspace", + n_subruns: int = 3, + with_instrument: bool = True, + with_masks: bool = False, + mask_names: tuple = (), + with_raw_counts: bool = False, + with_reduced_diffraction: bool = True, + n_two_theta: int = 20, + ) -> HidraWorkspace: + ws = HidraWorkspace(name) + + subruns = np.arange(1, n_subruns + 1, dtype=int) + ws.set_sub_runs(subruns) + + # Minimal sample logs: coordinates, timestamps, sample rotation. + ws.set_sample_log("vx", subruns, np.arange(n_subruns, dtype=float)) + ws.set_sample_log("vy", subruns, np.zeros(n_subruns, dtype=float)) + ws.set_sample_log("vz", subruns, np.zeros(n_subruns, dtype=float)) + ws.set_sample_log( + "start_time", subruns, np.array([f"2024-01-15T10:{n:02d}:00".encode("utf-8") for n in range(n_subruns)]) + ) + ws.set_sample_log( + "end_time", subruns, np.array([f"2024-01-15T10:{n:02d}:30".encode("utf-8") for n in range(n_subruns)]) + ) + ws.set_sample_log("mrot", subruns, np.zeros(n_subruns, dtype=float)) + # `NXstress._init`/`_Fit._init` read `start_time`/`end_time`/`Filename` sample-log + # values as bytes (`t.decode("utf-8")`) -- matching what comes back from a real + # h5py-backed string dataset. A synthetic workspace needs to match that, not a + # plain numpy unicode string. + ws.set_sample_log("Filename", subruns, np.array([f"{name}.h5".encode("utf-8")] * n_subruns)) + + ws.set_wavelength(1.486, calibrated=True) + + n_pixels = 16 # small synthetic detector -- no test asserts a specific pixel count + if with_instrument: + geometry = DENEXDetectorGeometry( + num_rows=4, + num_columns=4, + pixel_size_x=0.001, + pixel_size_y=0.001, + arm_length=2.0, + calibrated=True, + ) + ws.set_instrument_geometry(geometry) + shift = DENEXDetectorShift( + shift_x=0.01, shift_y=0.02, shift_z=0.03, rotation_x=1.0, rotation_y=2.0, rotation_z=3.0, tth_0=0.5 + ) + ws.set_detector_shift(shift) + + if with_masks: + default_mask = np.ones(n_pixels, dtype=np.int64) + ws.set_detector_mask(default_mask, True) + for mask_name in mask_names: + ws.set_detector_mask(np.ones(n_pixels, dtype=np.int64), False, mask_name) + + if with_raw_counts: + for subrun in subruns: + ws.set_raw_counts(int(subrun), np.arange(n_pixels, dtype=np.int64)) + + if with_reduced_diffraction: + two_theta_matrix = np.tile(np.linspace(60.0, 120.0, n_two_theta), (n_subruns, 1)) + intensities = np.ones((n_subruns, n_two_theta), dtype=float) + variances = np.ones((n_subruns, n_two_theta), dtype=float) + ws.set_reduced_diffraction_data_set(two_theta_matrix, {None: intensities}, {None: variances}) + + return ws + + yield _init + + # teardown follows + pass + + +@pytest.fixture +def minimal_PeakCollection(createPeakCollection): + # Convenience wrapper around `createPeakCollection` with defaults suited to + # `minimal_HidraWorkspace` -- still fully overridable. + + def _init( + *, + N_subrun: int, + peak_tag: str = "Fe 110", + peak_profile: str = "Gaussian", + background_type: str = "Linear", + wavelength: float = 1.486, + projectfilename: str = "/does/not/exist.h5", + runnumber: int = 1, + **kwargs, + ): + return createPeakCollection( + peak_tag=peak_tag, + peak_profile=peak_profile, + background_type=background_type, + wavelength=wavelength, + projectfilename=projectfilename, + runnumber=runnumber, + N_subrun=N_subrun, + **kwargs, + ) + + return _init @pytest.fixture def load_HidraWorkspace(test_data_dir) -> Generator[Callable[..., HidraWorkspace]]: - # This fixture loads a `HidraWorkspace` instance from a `HidraProject`-format file. + # Legacy: loads a `HidraWorkspace` instance from a real `HidraProject`-format + # file on disk. Prefer `minimal_HidraWorkspace` for new tests -- this fixture + # is kept for a test that genuinely needs real project-file content (e.g. + # testing `HidraProjectFile`'s own I/O). def _init(*, file_name: str, name: str, load_raw_counts=True, load_reduced_diffraction=True) -> HidraWorkspace: file_path = Path(test_data_dir) / file_name diff --git a/tests/unit/pyrs/utilities/NXstress/test_NXstress.py b/tests/unit/pyrs/utilities/NXstress/test_NXstress.py index 39bb5e0d9..263696b4a 100644 --- a/tests/unit/pyrs/utilities/NXstress/test_NXstress.py +++ b/tests/unit/pyrs/utilities/NXstress/test_NXstress.py @@ -31,15 +31,6 @@ class TestNXstress: - # instrument, input data, reduced data, no mask - PROJECT_FILE_A = "HB2B_1017.h5" - - # instrument, mask, reduced data, but no input data - PROJECT_FILE_B = "HB2B_1628.h5" - - # instrument, mask (from '1628'), input data, reduced data - PROJECT_FILE_C = "HB2B_1017_w_mask.h5" - @pytest.fixture(autouse=True) def setUp(self, load_HidraWorkspace, createPeakCollection): """ @@ -77,16 +68,10 @@ def setUp(self, load_HidraWorkspace, createPeakCollection): def test_NXstress_context_manager( self, tmp_path: Path, - load_HidraWorkspace: Callable[..., HidraWorkspace], + minimal_HidraWorkspace: Callable[..., HidraWorkspace], createPeakCollection: Callable[..., PeakCollection], ): - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_C, - name="test_workspace", - # raw-counts load => instrument load - load_raw_counts=True, - load_reduced_diffraction=True, - ) + ws = minimal_HidraWorkspace(with_instrument=True, with_masks=True, with_raw_counts=True) sampleLogs = ws._sample_logs subruns = sampleLogs.subruns.raw_copy() @@ -111,18 +96,12 @@ def test_NXstress_context_manager( def test_NXentry_fields( self, - load_HidraWorkspace: Callable[..., HidraWorkspace], + minimal_HidraWorkspace: Callable[..., HidraWorkspace], ): # Verify that all required datasets, and attributes are present # on the `NXentry` - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_C, - name="test_workspace", - # raw-counts load => instrument load - load_raw_counts=True, - load_reduced_diffraction=True, - ) + ws = minimal_HidraWorkspace(with_instrument=True, with_masks=True, with_raw_counts=True) required_datasets = ("definition", "start_time", "end_time", "processing_type") @@ -132,18 +111,14 @@ def test_NXentry_fields( assert key in entry def test_NXentry_subgroups( - self, load_HidraWorkspace: Callable[..., HidraWorkspace], createPeakCollection: Callable[..., PeakCollection] + self, + minimal_HidraWorkspace: Callable[..., HidraWorkspace], + createPeakCollection: Callable[..., PeakCollection], ): # Verify that all required subgroups are present # on the `NXentry` - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_C, - name="test_workspace", - # raw-counts load => instrument load - load_raw_counts=True, - load_reduced_diffraction=True, - ) + ws = minimal_HidraWorkspace(with_instrument=True, with_masks=True, with_raw_counts=True) sampleLogs = ws._sample_logs subruns = sampleLogs.subruns.raw_copy() @@ -171,18 +146,14 @@ def test_NXentry_subgroups( assert isinstance(entry[key], NXclass_) def test_NXentry_input_data( - self, load_HidraWorkspace: Callable[..., HidraWorkspace], createPeakCollection: Callable[..., PeakCollection] + self, + minimal_HidraWorkspace: Callable[..., HidraWorkspace], + createPeakCollection: Callable[..., PeakCollection], ): # Verify that an optional `input_data` `NXdata` group will be created on the `NXentry` # when detector-counts data is attached to the source workspace. - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_C, - name="test_workspace", - # raw-counts load => instrument load - load_raw_counts=True, - load_reduced_diffraction=True, - ) + ws = minimal_HidraWorkspace(with_instrument=True, with_masks=True, with_raw_counts=True) sampleLogs = ws._sample_logs subruns = sampleLogs.subruns.raw_copy() @@ -204,7 +175,9 @@ def test_NXentry_input_data( assert isinstance(entry[key], NXclass_) def test_NXentry_input_data_optional( - self, load_HidraWorkspace: Callable[..., HidraWorkspace], createPeakCollection: Callable[..., PeakCollection] + self, + minimal_HidraWorkspace: Callable[..., HidraWorkspace], + createPeakCollection: Callable[..., PeakCollection], ): # When no input data is attached to the source workspace: # verify that an empty (i.e. no scan-points) `input_data` `NXdata` group is created on the `NXentry`. @@ -212,15 +185,7 @@ def test_NXentry_input_data_optional( # Notes: # -- A successful instrument load is required; this is keyed to detector-counts data load. # So we need to fudge the workspace after the load in order to _remove_ the attached input data. - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_C, - name="test_workspace", - # raw-counts load => instrument load - load_raw_counts=True, - load_reduced_diffraction=True, - ) - # remove the input data: - ws._raw_counts = dict() + ws = minimal_HidraWorkspace(with_instrument=True, with_masks=True, with_raw_counts=False) sampleLogs = ws._sample_logs subruns = sampleLogs.subruns.raw_copy() @@ -246,16 +211,10 @@ def test_NXentry_input_data_optional( def test_NXentry_multiple( self, tmp_path: Path, - load_HidraWorkspace: Callable[..., HidraWorkspace], + minimal_HidraWorkspace: Callable[..., HidraWorkspace], createPeakCollection: Callable[..., PeakCollection], ): - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_C, - name="test_workspace", - # raw-counts load => instrument load - load_raw_counts=True, - load_reduced_diffraction=True, - ) + ws = minimal_HidraWorkspace(with_instrument=True, with_masks=True, with_raw_counts=True) sampleLogs = ws._sample_logs subruns = sampleLogs.subruns.raw_copy() @@ -297,15 +256,9 @@ def test_NXentry_multiple( def test__Instrument_fields_and_subgroups( self, - load_HidraWorkspace: Callable[..., HidraWorkspace], + minimal_HidraWorkspace: Callable[..., HidraWorkspace], ): - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_A, - name="test_workspace", - # raw-counts load => instrument load - load_raw_counts=True, - load_reduced_diffraction=True, - ) + ws = minimal_HidraWorkspace(with_instrument=True, with_raw_counts=True) required_fields = ("name",) required_subgroups = ( @@ -327,15 +280,9 @@ def test__Instrument_fields_and_subgroups( def test__Masks_fields_and_subgroups( self, - load_HidraWorkspace: Callable[..., HidraWorkspace], + minimal_HidraWorkspace: Callable[..., HidraWorkspace], ): - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_A, - name="test_workspace", - # raw-counts load => instrument load - load_raw_counts=True, - load_reduced_diffraction=True, - ) + ws = minimal_HidraWorkspace(with_instrument=True, with_raw_counts=True) required_fields = ("names",) required_subgroups = (("detector", NXcollection), ("solid_angle", NXcollection)) @@ -350,11 +297,9 @@ def test__Masks_fields_and_subgroups( def test__Sample_fields_and_subgroups( self, - load_HidraWorkspace: Callable[..., HidraWorkspace], + minimal_HidraWorkspace: Callable[..., HidraWorkspace], ): - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_B, name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=False) required_fields = ( "name", @@ -375,11 +320,11 @@ def test__Sample_fields_and_subgroups( assert isinstance(sample[key], NXclass_) def test__Fit_fields_and_subgroups( - self, load_HidraWorkspace: Callable[..., HidraWorkspace], createPeakCollection: Callable[..., PeakCollection] + self, + minimal_HidraWorkspace: Callable[..., HidraWorkspace], + createPeakCollection: Callable[..., PeakCollection], ): - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_B, name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=False) sampleLogs = ws._sample_logs subruns = sampleLogs.subruns.raw_copy() @@ -414,13 +359,11 @@ def test__Fit_fields_and_subgroups( def test_write_without_context_manager( self, tmp_path: Path, - load_HidraWorkspace: Callable[..., HidraWorkspace], + minimal_HidraWorkspace: Callable[..., HidraWorkspace], createPeakCollection: Callable[..., PeakCollection], ): """Verify RuntimeError when write() is called without context manager""" - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_C, name="test_workspace", load_raw_counts=True, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=True, with_masks=True, with_raw_counts=True) sampleLogs = ws._sample_logs subruns = sampleLogs.subruns.raw_copy() @@ -443,13 +386,11 @@ def test_write_without_context_manager( def test_NXentry_init_fallback_timestamps( self, - load_HidraWorkspace: Callable[..., HidraWorkspace], + minimal_HidraWorkspace: Callable[..., HidraWorkspace], ): """Verify NXstress._init succeeds when timestamps are not valid ISO-8601""" # Load workspace and deliberately corrupt the timestamps - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_C, name="test_workspace", load_raw_counts=True, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=True, with_masks=True, with_raw_counts=True) # Corrupt the timestamps to trigger the fallback path bad_timestamps = [b"not-valid-iso8601" for _ in ws._sample_logs.subruns] @@ -463,12 +404,12 @@ def test_NXentry_init_fallback_timestamps( assert "end_time" in entry def test_validateWorkspaceAndPeaksData_valid( - self, load_HidraWorkspace: Callable[..., HidraWorkspace], createPeakCollection: Callable[..., PeakCollection] + self, + minimal_HidraWorkspace: Callable[..., HidraWorkspace], + createPeakCollection: Callable[..., PeakCollection], ): """Verify _validateWorkspaceAndPeaksData completes without error for valid data""" - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_C, name="test_workspace", load_raw_counts=True, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=True, with_masks=True, with_raw_counts=True) sampleLogs = ws._sample_logs subruns = sampleLogs.subruns.raw_copy() @@ -488,24 +429,22 @@ def test_validateWorkspaceAndPeaksData_valid( def test_NXentry_definition_value( self, - load_HidraWorkspace: Callable[..., HidraWorkspace], + minimal_HidraWorkspace: Callable[..., HidraWorkspace], ): """Verify entry['definition'] is 'NXstress' and processing_type is 'd-spacing'""" - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_C, name="test_workspace", load_raw_counts=True, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=True, with_masks=True, with_raw_counts=True) entry = NXstress._init(ws) assert entry["definition"] == "NXstress" assert entry["processing_type"] == "d-spacing" def test__PeakParameters_fields_and_subgroups( - self, load_HidraWorkspace: Callable[..., HidraWorkspace], createPeakCollection: Callable[..., PeakCollection] + self, + minimal_HidraWorkspace: Callable[..., HidraWorkspace], + createPeakCollection: Callable[..., PeakCollection], ): # Load a workspace in order to get a realistic axis. - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_B, name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=False) sampleLogs = ws._sample_logs subruns = sampleLogs.subruns.raw_copy() @@ -546,12 +485,12 @@ def test__PeakParameters_fields_and_subgroups( ) def test__BackgroundParameters_fields_and_subgroups( - self, load_HidraWorkspace: Callable[..., HidraWorkspace], createPeakCollection: Callable[..., PeakCollection] + self, + minimal_HidraWorkspace: Callable[..., HidraWorkspace], + createPeakCollection: Callable[..., PeakCollection], ): # Load a workspace in order to get a realistic axis. - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_B, name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=False) sampleLogs = ws._sample_logs subruns = sampleLogs.subruns.raw_copy() @@ -585,11 +524,11 @@ def test__BackgroundParameters_fields_and_subgroups( assert key in background_parameters def test__Diffractogram_fields_and_subgroups( - self, load_HidraWorkspace: Callable[..., HidraWorkspace], createPeakCollection: Callable[..., PeakCollection] + self, + minimal_HidraWorkspace: Callable[..., HidraWorkspace], + createPeakCollection: Callable[..., PeakCollection], ): - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_B, name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=False) sampleLogs = ws._sample_logs subruns = sampleLogs.subruns.raw_copy() @@ -629,12 +568,10 @@ def test__Diffractogram_fields_and_subgroups( def test__Peaks_fields_and_subgroups( self, tmp_path: Path, - load_HidraWorkspace: Callable[..., HidraWorkspace], + minimal_HidraWorkspace: Callable[..., HidraWorkspace], createPeakCollection: Callable[..., PeakCollection], ): - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_B, name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=False) sampleLogs = ws._sample_logs subruns = sampleLogs.subruns.raw_copy() @@ -708,11 +645,9 @@ def test__parse_peak_tag(self): def test__InputData_fields_and_subgroups( self, - load_HidraWorkspace: Callable[..., HidraWorkspace], + minimal_HidraWorkspace: Callable[..., HidraWorkspace], ): - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_A, name="test_workspace", load_raw_counts=True, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=True, with_raw_counts=True) required_attributes = ("axes", "signal") required_fields = ("scan_point", "detector_counts") @@ -731,17 +666,11 @@ def test__InputData_fields_and_subgroups( def test__InputData_omitted( self, - load_HidraWorkspace: Callable[..., HidraWorkspace], + minimal_HidraWorkspace: Callable[..., HidraWorkspace], ): # When input-data is not attached to the source workspace, # the structure of the input-data group should still be filled in. - ws = load_HidraWorkspace( - # PROJECT_B doesn't include any raw-counts data. - file_name=self.PROJECT_FILE_B, - name="test_workspace", - load_raw_counts=False, - load_reduced_diffraction=True, - ) + ws = minimal_HidraWorkspace(with_instrument=False, with_raw_counts=False) required_attributes = ("axes", "signal") required_fields = ("scan_point", "detector_counts") diff --git a/tests/unit/pyrs/utilities/NXstress/test_fit.py b/tests/unit/pyrs/utilities/NXstress/test_fit.py index ebfb10459..15634c745 100644 --- a/tests/unit/pyrs/utilities/NXstress/test_fit.py +++ b/tests/unit/pyrs/utilities/NXstress/test_fit.py @@ -16,16 +16,13 @@ class TestFit: """Test suite for _fit.py""" - PROJECT_FILE_B = "HB2B_1628.h5" # instrument, mask, reduced data, but no input data - PROJECT_FILE_C = "HB2B_1017_w_mask.h5" # instrument, mask, input data, reduced data - def test_PeakParameters_data_values( - self, load_HidraWorkspace: Callable[..., HidraWorkspace], createPeakCollection: Callable[..., PeakCollection] + self, + minimal_HidraWorkspace: Callable[..., HidraWorkspace], + createPeakCollection: Callable[..., PeakCollection], ): """Verify numeric values in peak parameters match get_effective_params()""" - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_B, name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=False) subruns = ws._sample_logs.subruns.raw_copy() N_subrun = len(subruns) @@ -66,12 +63,12 @@ def test_PeakParameters_data_values( np.testing.assert_array_almost_equal(peak_params["form_factor"].nxdata, expected_form_factor) def test_PeakParameters_multiple_peaks( - self, load_HidraWorkspace: Callable[..., HidraWorkspace], createPeakCollection: Callable[..., PeakCollection] + self, + minimal_HidraWorkspace: Callable[..., HidraWorkspace], + createPeakCollection: Callable[..., PeakCollection], ): """Verify two PeakCollections create 2×N_scan rows in sort order""" - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_B, name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=False) subruns = ws._sample_logs.subruns.raw_copy() N_subrun = len(subruns) @@ -102,12 +99,12 @@ def test_PeakParameters_multiple_peaks( assert peak_params["center"].shape[0] == 2 * N_subrun def test_PeakParameters_mismatched_profile_raises( - self, load_HidraWorkspace: Callable[..., HidraWorkspace], createPeakCollection: Callable[..., PeakCollection] + self, + minimal_HidraWorkspace: Callable[..., HidraWorkspace], + createPeakCollection: Callable[..., PeakCollection], ): """Verify ValueError when PeakCollections have different peak_profile""" - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_B, name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=False) subruns = ws._sample_logs.subruns.raw_copy() N_subrun = len(subruns) @@ -136,12 +133,12 @@ def test_PeakParameters_mismatched_profile_raises( _PeakParameters.init_group([peak0, peak1]) def test_BackgroundParameters_data_values( - self, load_HidraWorkspace: Callable[..., HidraWorkspace], createPeakCollection: Callable[..., PeakCollection] + self, + minimal_HidraWorkspace: Callable[..., HidraWorkspace], + createPeakCollection: Callable[..., PeakCollection], ): """Verify A0, A1, A2 (and errors) match get_effective_params()""" - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_B, name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=False) subruns = ws._sample_logs.subruns.raw_copy() N_subrun = len(subruns) @@ -173,12 +170,12 @@ def test_BackgroundParameters_data_values( ) def test_BackgroundParameters_multiple_peaks( - self, load_HidraWorkspace: Callable[..., HidraWorkspace], createPeakCollection: Callable[..., PeakCollection] + self, + minimal_HidraWorkspace: Callable[..., HidraWorkspace], + createPeakCollection: Callable[..., PeakCollection], ): """Verify two PeakCollections create 2×N_scan rows""" - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_B, name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=False) subruns = ws._sample_logs.subruns.raw_copy() N_subrun = len(subruns) @@ -209,12 +206,12 @@ def test_BackgroundParameters_multiple_peaks( assert bg_params["A0"].shape[0] == 2 * N_subrun def test_BackgroundParameters_mismatched_type_raises( - self, load_HidraWorkspace: Callable[..., HidraWorkspace], createPeakCollection: Callable[..., PeakCollection] + self, + minimal_HidraWorkspace: Callable[..., HidraWorkspace], + createPeakCollection: Callable[..., PeakCollection], ): """Verify ValueError when PeakCollections have different background_type""" - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_B, name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=False) subruns = ws._sample_logs.subruns.raw_copy() N_subrun = len(subruns) @@ -256,12 +253,10 @@ def test_Diffractogram_data_keys_named(self): def test_Diffractogram_init_no_reduced_data_raises( self, - load_HidraWorkspace: Callable[..., HidraWorkspace], + minimal_HidraWorkspace: Callable[..., HidraWorkspace], ): """Verify RuntimeError when workspace._2theta_matrix is None""" - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_B, name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=False) # Set _2theta_matrix to None to simulate no reduced data ws._2theta_matrix = None @@ -270,12 +265,12 @@ def test_Diffractogram_init_no_reduced_data_raises( _Diffractogram._init(ws) def test_Diffractogram_init_group_missing_mask_raises( - self, load_HidraWorkspace: Callable[..., HidraWorkspace], createPeakCollection: Callable[..., PeakCollection] + self, + minimal_HidraWorkspace: Callable[..., HidraWorkspace], + createPeakCollection: Callable[..., PeakCollection], ): """Verify RuntimeError when mask data not in workspace""" - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_B, name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=False) subruns = ws._sample_logs.subruns.raw_copy() N_subrun = len(subruns) @@ -295,12 +290,12 @@ def test_Diffractogram_init_group_missing_mask_raises( _Diffractogram.init_group(ws, "non_existent_mask", [peak0]) def test_Diffractogram_data_values( - self, load_HidraWorkspace: Callable[..., HidraWorkspace], createPeakCollection: Callable[..., PeakCollection] + self, + minimal_HidraWorkspace: Callable[..., HidraWorkspace], + createPeakCollection: Callable[..., PeakCollection], ): """Verify diffractogram/diffractogram_errors match workspace arrays""" - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_B, name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=False) subruns = ws._sample_logs.subruns.raw_copy() N_subrun = len(subruns) @@ -339,12 +334,10 @@ def test_Diffractogram_data_values( def test_Fit_init_fields( self, - load_HidraWorkspace: Callable[..., HidraWorkspace], + minimal_HidraWorkspace: Callable[..., HidraWorkspace], ): """Verify _Fit._init creates fields: date, program, raw_data_file, DESCRIPTION""" - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_B, name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=False) logs = ws._sample_logs fit = _Fit._init(logs, processing_description="Test description", processing_time="2024-01-15T10:30:00") @@ -360,16 +353,32 @@ def test_Fit_init_fields( assert isinstance(fit["DESCRIPTION"], NXnote) def test_Fit_multiple_masks( - self, load_HidraWorkspace: Callable[..., HidraWorkspace], createPeakCollection: Callable[..., PeakCollection] + self, + minimal_HidraWorkspace: Callable[..., HidraWorkspace], + createPeakCollection: Callable[..., PeakCollection], ): - """Verify workspace with multiple masks creates one DIFFRACTOGRAM per mask""" - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_B, name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) + """Verify a workspace with multiple named reduced-diffraction masks creates exactly + one DIFFRACTOGRAM per configured mask, plus the always-present default. + """ + ws = minimal_HidraWorkspace(with_instrument=False, with_reduced_diffraction=False) subruns = ws._sample_logs.subruns.raw_copy() N_subrun = len(subruns) + # `_Fit.init_group` counts one DIFFRACTOGRAM per key in `ws._diff_data_set` (plus + # the always-present default, keyed `None`) -- `minimal_HidraWorkspace`'s own + # `with_reduced_diffraction` only ever creates that single default entry, so the + # extra named masks are configured here directly. + n_two_theta = 20 + two_theta_matrix = np.tile(np.linspace(60.0, 120.0, n_two_theta), (N_subrun, 1)) + mask_names = ("mask1", "mask2") + diff_data_set: dict[str | None, np.ndarray] = {None: np.ones((N_subrun, n_two_theta))} + var_data_set: dict[str | None, np.ndarray] = {None: np.ones((N_subrun, n_two_theta))} + for mask_name in mask_names: + diff_data_set[mask_name] = np.ones((N_subrun, n_two_theta)) + var_data_set[mask_name] = np.ones((N_subrun, n_two_theta)) + ws.set_reduced_diffraction_data_set(two_theta_matrix, diff_data_set, var_data_set) + peak0 = createPeakCollection( peak_tag="Al 111", peak_profile="Gaussian", @@ -385,11 +394,13 @@ def test_Fit_multiple_masks( # Count NXdata groups (diffractograms) diffractogram_count = sum(1 for key in fit.keys() if isinstance(fit[key], NXdata)) - # Should have at least one diffractogram - assert diffractogram_count >= 1 + # One diffractogram per configured mask, plus the always-present default. + assert diffractogram_count == len(mask_names) + 1 def test_Fit_duplicate_diffractogram_raises( - self, load_HidraWorkspace: Callable[..., HidraWorkspace], createPeakCollection: Callable[..., PeakCollection] + self, + minimal_HidraWorkspace: Callable[..., HidraWorkspace], + createPeakCollection: Callable[..., PeakCollection], ): """Verify RuntimeError when diffractogram name collision occurs""" # This test checks the internal logic - would need to manipulate @@ -398,12 +409,12 @@ def test_Fit_duplicate_diffractogram_raises( pass def test_validateWorkspaceAndPeaksData_valid( - self, load_HidraWorkspace: Callable[..., HidraWorkspace], createPeakCollection: Callable[..., PeakCollection] + self, + minimal_HidraWorkspace: Callable[..., HidraWorkspace], + createPeakCollection: Callable[..., PeakCollection], ): """Verify validation passes for matching workspace and peaks data""" - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_B, name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=False) subruns = ws._sample_logs.subruns.raw_copy() N_subrun = len(subruns) @@ -422,12 +433,12 @@ def test_validateWorkspaceAndPeaksData_valid( _Fit.validateWorkspaceAndPeaksData(ws, [peak0]) def test_validateWorkspaceAndPeaksData_missing_scan_points( - self, load_HidraWorkspace: Callable[..., HidraWorkspace], createPeakCollection: Callable[..., PeakCollection] + self, + minimal_HidraWorkspace: Callable[..., HidraWorkspace], + createPeakCollection: Callable[..., PeakCollection], ): """Verify ValueError when PeakCollection references missing scan points""" - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_B, name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=False) subruns = ws._sample_logs.subruns.raw_copy() N_subrun = len(subruns) @@ -454,12 +465,12 @@ def test_validateWorkspaceAndPeaksData_missing_scan_points( _Fit.validateWorkspaceAndPeaksData(ws, [peak0]) def test_validateWorkspaceAndPeaksData_missing_mask_data( - self, load_HidraWorkspace: Callable[..., HidraWorkspace], createPeakCollection: Callable[..., PeakCollection] + self, + minimal_HidraWorkspace: Callable[..., HidraWorkspace], + createPeakCollection: Callable[..., PeakCollection], ): """Verify ValueError when PeakCollection references missing mask data""" - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_B, name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=False) subruns = ws._sample_logs.subruns.raw_copy() N_subrun = len(subruns) @@ -481,7 +492,9 @@ def test_validateWorkspaceAndPeaksData_missing_mask_data( _Fit.validateWorkspaceAndPeaksData(ws, [peak0]) def test_peakParametersForRange_intensity_error_roundtrip( - self, load_HidraWorkspace: Callable[..., HidraWorkspace], createPeakCollection: Callable[..., PeakCollection] + self, + minimal_HidraWorkspace: Callable[..., HidraWorkspace], + createPeakCollection: Callable[..., PeakCollection], ): """σ_Intensity survives a write→read round-trip for PseudoVoigt; Gaussian does not crash. @@ -493,9 +506,7 @@ def test_peakParametersForRange_intensity_error_roundtrip( peakParametersForRange. For Gaussian we verify that the call succeeds and that Height and Sigma (the actual native parameters) round-trip correctly. """ - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_B, name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=False) subruns = ws._sample_logs.subruns.raw_copy() N_subrun = len(subruns) @@ -519,10 +530,21 @@ def test_peakParametersForRange_intensity_error_roundtrip( # For PseudoVoigt, Intensity is a native parameter — verify exact round-trip. # A factor-of-two over-count would produce errors ~√2× too large and fail here. + # + # rtol=1e-4, not 1e-6: this recovery subtracts comparable-magnitude terms derived from + # a float32-quantized sigma_Height (the only lossy step; the algebraic inversion itself + # is exact -- verified in float128 with no float32 anywhere, median rel. error 1e-19). + # That subtraction amplifies the float32 rounding noise by a factor that depends on the + # ratio between the three input uncertainties' relative sizes. createPeakCollection now + # bounds every parameter's fractional uncertainty to [error_fraction_min, error_fraction_max] + # (0.5%-5%), which caps that ratio at max/min=10 and, per a 2,000,000-draw Monte Carlo + # against this exact formula, caps the resulting relative error at ~9.3e-6 -- rtol=1e-4 + # keeps roughly a 10x margin over that observed worst case. Do not tighten this back + # toward 1e-6 without re-deriving the bound; it will flake again. np.testing.assert_allclose( native_errors_pv["Intensity"].astype(np.float64), sigma_I_orig, - rtol=1e-6, + rtol=1e-4, err_msg="PseudoVoigt σ_Intensity round-trip failed: check peakParametersForRange", ) diff --git a/tests/unit/pyrs/utilities/NXstress/test_helper_util.py b/tests/unit/pyrs/utilities/NXstress/test_helper_util.py index 1b68318b7..4ed28786d 100644 --- a/tests/unit/pyrs/utilities/NXstress/test_helper_util.py +++ b/tests/unit/pyrs/utilities/NXstress/test_helper_util.py @@ -1,8 +1,9 @@ # ruff: noqa: F841 from pathlib import Path -from pyrs.projectfile.file_object import HidraProjectFile +import pytest +from pyrs.projectfile.file_object import HidraProjectFile PROJECT_FILE = "HB2B_1628.h5" @@ -19,6 +20,7 @@ def test_createPeakCollection(createPeakCollection): ) +@pytest.mark.integration def test_load_HidraWorkspace(load_HidraWorkspace): ws = load_HidraWorkspace( file_name=PROJECT_FILE, name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True @@ -26,6 +28,7 @@ def test_load_HidraWorkspace(load_HidraWorkspace): assert ws.name == "test_workspace" +@pytest.mark.integration def test_HidraProjectFile_context_manager(test_data_dir): project_file_path = Path(test_data_dir) / PROJECT_FILE with HidraProjectFile(project_file_path) as project_file: diff --git a/tests/unit/pyrs/utilities/NXstress/test_input_data.py b/tests/unit/pyrs/utilities/NXstress/test_input_data.py index 1d9a2ba84..58c62f84a 100644 --- a/tests/unit/pyrs/utilities/NXstress/test_input_data.py +++ b/tests/unit/pyrs/utilities/NXstress/test_input_data.py @@ -15,17 +15,12 @@ class TestInputData: """Test suite for _input_data.py""" - PROJECT_FILE_A = "HB2B_1017.h5" # instrument, input data, reduced data, no mask - PROJECT_FILE_C = "HB2B_1017_w_mask.h5" # instrument, mask, input data, reduced data - def test_InputData_init_group_raises_on_existing_data( self, - load_HidraWorkspace: Callable[..., HidraWorkspace], + minimal_HidraWorkspace: Callable[..., HidraWorkspace], ): """Verify RuntimeError when trying to append detector_counts data""" - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_A, name="test_workspace", load_raw_counts=True, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=True, with_raw_counts=True) # Create an existing NXdata group existing_data = NXdata() @@ -35,12 +30,10 @@ def test_InputData_init_group_raises_on_existing_data( def test_InputData_init_group_data_values( self, - load_HidraWorkspace: Callable[..., HidraWorkspace], + minimal_HidraWorkspace: Callable[..., HidraWorkspace], ): """Verify detector_counts shape and scan_point values match workspace""" - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_A, name="test_workspace", load_raw_counts=True, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=True, with_raw_counts=True) data = _InputData.init_group(ws) @@ -66,16 +59,11 @@ def test_InputData_init_group_data_values( def test_InputData_readSubruns( self, tmp_path: Path, - load_HidraWorkspace: Callable[..., HidraWorkspace], + minimal_HidraWorkspace: Callable[..., HidraWorkspace], ): """Verify readSubruns round-trip: write then read back""" - # Load workspace with raw counts - ws_write = load_HidraWorkspace( - file_name=self.PROJECT_FILE_A, - name="test_workspace_write", - load_raw_counts=True, - load_reduced_diffraction=True, - ) + # Build workspace with raw counts + ws_write = minimal_HidraWorkspace(name="test_workspace_write", with_instrument=True, with_raw_counts=True) # Create input data data = _InputData.init_group(ws_write) @@ -100,7 +88,7 @@ def test_InputData_readSubruns( # Check that all scan points are present original_scan_points = list(ws_write._raw_counts.keys()) - read_scan_points = list(ws_write._raw_counts.keys()) + read_scan_points = list(ws_read._raw_counts.keys()) for scan_point in original_scan_points: assert scan_point in read_scan_points @@ -111,13 +99,11 @@ def test_InputData_readSubruns( def test_InputData_readSubruns_raises_on_scanpoint_mismatch( self, tmp_path: Path, - load_HidraWorkspace: Callable[..., HidraWorkspace], + minimal_HidraWorkspace: Callable[..., HidraWorkspace], ): """Verify RuntimeError when workspace has subruns that don't match those from input data""" - # Load workspace with data - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_A, name="test_workspace", load_raw_counts=True, load_reduced_diffraction=True - ) + # Build workspace with data + ws = minimal_HidraWorkspace(with_instrument=True, with_raw_counts=True) # Create input data and write to file data = _InputData.init_group(ws) diff --git a/tests/unit/pyrs/utilities/NXstress/test_instrument.py b/tests/unit/pyrs/utilities/NXstress/test_instrument.py index ef25ca45b..e35ec46e9 100644 --- a/tests/unit/pyrs/utilities/NXstress/test_instrument.py +++ b/tests/unit/pyrs/utilities/NXstress/test_instrument.py @@ -17,10 +17,6 @@ class TestInstrument: """Test suite for _instrument.py""" - PROJECT_FILE_A = "HB2B_1017.h5" # instrument, input data, reduced data, no mask - PROJECT_FILE_B = "HB2B_1628.h5" # instrument, mask, reduced data, but no input data - PROJECT_FILE_C = "HB2B_1017_w_mask.h5" # instrument, mask, input data, reduced data - def test_Masks_init(self): """Verify _Masks._init creates empty NXcollection with required fields""" masks = _Masks._init() @@ -37,12 +33,10 @@ def test_Masks_init(self): def test_Masks_init_group_with_default_mask( self, - load_HidraWorkspace: Callable[..., HidraWorkspace], + minimal_HidraWorkspace: Callable[..., HidraWorkspace], ): """Verify default mask appears in masks with DEFAULT_TAG name""" - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_C, name="test_workspace", load_raw_counts=True, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=True, with_masks=True) masks = _Masks.init_group(ws) @@ -52,12 +46,10 @@ def test_Masks_init_group_with_default_mask( def test_Masks_init_group_append( self, - load_HidraWorkspace: Callable[..., HidraWorkspace], + minimal_HidraWorkspace: Callable[..., HidraWorkspace], ): """Verify calling init_group twice (detector then solid_angle) populates both""" - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_C, name="test_workspace", load_raw_counts=True, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=True, with_masks=True) # First call for detector masks masks = _Masks.init_group(ws) @@ -82,7 +74,7 @@ def test_Masks_init_group_append( def test_Masks_init_group_duplicate_raises( self, - load_HidraWorkspace: Callable[..., HidraWorkspace], + minimal_HidraWorkspace: Callable[..., HidraWorkspace], ): """Verify behavior when attempting to add duplicate masks @@ -90,9 +82,7 @@ def test_Masks_init_group_duplicate_raises( `init_group` writes it; the second call must raise because the same name is already present in the masks group. """ - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_C, name="test_workspace", load_raw_counts=True, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=True) # Add a non-default named mask so that `mask_keys(ws)` contains a # name other than DEFAULT_TAG. The first `init_group` call will write @@ -115,12 +105,10 @@ def test_Instrument_init(self): def test_Instrument_detector_module_fields( self, - load_HidraWorkspace: Callable[..., HidraWorkspace], + minimal_HidraWorkspace: Callable[..., HidraWorkspace], ): """Verify NXdetector_module contains required fields""" - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_A, name="test_workspace", load_raw_counts=True, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=True) inst = _Instrument.init_group(ws) @@ -143,12 +131,10 @@ def test_Instrument_detector_module_fields( def test_Instrument_transformations_chain( self, - load_HidraWorkspace: Callable[..., HidraWorkspace], + minimal_HidraWorkspace: Callable[..., HidraWorkspace], ): """Verify all 8 transformations exist and depends_on chain is correct""" - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_A, name="test_workspace", load_raw_counts=True, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=True) inst = _Instrument.init_group(ws) diff --git a/tests/unit/pyrs/utilities/NXstress/test_peaks.py b/tests/unit/pyrs/utilities/NXstress/test_peaks.py index 7d025f102..2a4ef0e2c 100644 --- a/tests/unit/pyrs/utilities/NXstress/test_peaks.py +++ b/tests/unit/pyrs/utilities/NXstress/test_peaks.py @@ -15,16 +15,12 @@ class TestPeaks: """Test suite for _peaks.py""" - PROJECT_FILE_B = "HB2B_1628.h5" # instrument, mask, reduced data, but no input data - def test_Peaks_init_empty( self, - load_HidraWorkspace: Callable[..., HidraWorkspace], + minimal_HidraWorkspace: Callable[..., HidraWorkspace], ): """Verify _Peaks._init creates empty datasets with correct dtypes/units""" - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_B, name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=False) logs = ws._sample_logs peaks = _Peaks._init(logs) @@ -58,12 +54,12 @@ def test_Peaks_init_empty( assert peaks["center_type"].nxdata == "d-spacing" def test_Peaks_init_group_data_values( - self, load_HidraWorkspace: Callable[..., HidraWorkspace], createPeakCollection: Callable[..., PeakCollection] + self, + minimal_HidraWorkspace: Callable[..., HidraWorkspace], + createPeakCollection: Callable[..., PeakCollection], ): """Verify one PeakCollection creates N_scan rows with correct values""" - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_B, name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=False) subruns = ws._sample_logs.subruns.raw_copy() N_subrun = len(subruns) @@ -108,12 +104,12 @@ def test_Peaks_init_group_data_values( np.testing.assert_array_equal(peaks["scan_point"].nxdata, subruns) def test_Peaks_init_group_multiple_peaks( - self, load_HidraWorkspace: Callable[..., HidraWorkspace], createPeakCollection: Callable[..., PeakCollection] + self, + minimal_HidraWorkspace: Callable[..., HidraWorkspace], + createPeakCollection: Callable[..., PeakCollection], ): """Verify two PeakCollections create 2×N_scan rows in lexicographic sort order""" - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_B, name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=False) subruns = ws._sample_logs.subruns.raw_copy() N_subrun = len(subruns) @@ -168,12 +164,12 @@ def test_Peaks_init_group_multiple_peaks( assert all(peaks["l"].nxdata[:N_subrun] == l) def test_PeakIndex_sort_key( - self, load_HidraWorkspace: Callable[..., HidraWorkspace], createPeakCollection: Callable[..., PeakCollection] + self, + minimal_HidraWorkspace: Callable[..., HidraWorkspace], + createPeakCollection: Callable[..., PeakCollection], ): """Verify PeakIndex.sort_key returns correct tuple for sorting""" - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_B, name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=False) subruns = ws._sample_logs.subruns.raw_copy() N_subrun = len(subruns) @@ -211,12 +207,12 @@ def test_PeakIndex_sort_key( assert (key0 < key1) or (key0 > key1) def test_Peaks_qxyz_nan( - self, load_HidraWorkspace: Callable[..., HidraWorkspace], createPeakCollection: Callable[..., PeakCollection] + self, + minimal_HidraWorkspace: Callable[..., HidraWorkspace], + createPeakCollection: Callable[..., PeakCollection], ): """Verify qx, qy, qz fields exist but remain empty after init_group since implementation doesn't populate them""" - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_B, name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=False) subruns = ws._sample_logs.subruns.raw_copy() N_subrun = len(subruns) @@ -243,12 +239,12 @@ def test_Peaks_qxyz_nan( assert peaks["qz"].shape[0] == 0 def test_Peaks_sxyz_nan( - self, load_HidraWorkspace: Callable[..., HidraWorkspace], createPeakCollection: Callable[..., PeakCollection] + self, + minimal_HidraWorkspace: Callable[..., HidraWorkspace], + createPeakCollection: Callable[..., PeakCollection], ): """Verify sx, sy, sz are filled with NaN after init_group""" - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_B, name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=False) subruns = ws._sample_logs.subruns.raw_copy() N_subrun = len(subruns) diff --git a/tests/unit/pyrs/utilities/NXstress/test_peaks_read.py b/tests/unit/pyrs/utilities/NXstress/test_peaks_read.py index ec292cbf6..ecfce4b7a 100644 --- a/tests/unit/pyrs/utilities/NXstress/test_peaks_read.py +++ b/tests/unit/pyrs/utilities/NXstress/test_peaks_read.py @@ -18,11 +18,9 @@ class TestPeakCollectionRanges: """Test suite for _Peaks.peakCollectionRanges""" - def test_peakCollectionRanges_happy_path(self, load_HidraWorkspace, createPeakCollection): + def test_peakCollectionRanges_happy_path(self, minimal_HidraWorkspace, createPeakCollection): """Write 3 PeakCollections with distinct keys, read ranges, verify count and span""" - ws = load_HidraWorkspace( - file_name="HB2B_1628.h5", name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=False) subruns = ws._sample_logs.subruns.raw_copy() N_subrun = len(subruns) @@ -77,11 +75,9 @@ def test_peakCollectionRanges_happy_path(self, load_HidraWorkspace, createPeakCo assert start == expected_start expected_start = end - def test_peakCollectionRanges_interleaved_blocks(self, load_HidraWorkspace): + def test_peakCollectionRanges_interleaved_blocks(self, minimal_HidraWorkspace): """Construct NXreflections with non-contiguous blocks for same key → RuntimeError""" - ws = load_HidraWorkspace( - file_name="HB2B_1628.h5", name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=False) # Manually create NXreflections with interleaved blocks peaks = _Peaks._init(ws._sample_logs) @@ -117,11 +113,9 @@ def test_peakCollectionRanges_interleaved_blocks(self, load_HidraWorkspace): with pytest.raises(RuntimeError, match="Interleaved blocks detected"): _Peaks.peakCollectionRanges(peaks) - def test_peakCollectionRanges_scan_point_order_violation(self, load_HidraWorkspace): + def test_peakCollectionRanges_scan_point_order_violation(self, minimal_HidraWorkspace): """Non-increasing scan points within block → RuntimeError""" - ws = load_HidraWorkspace( - file_name="HB2B_1628.h5", name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=False) # Manually create NXreflections with non-increasing scan_point peaks = _Peaks._init(ws._sample_logs) @@ -326,14 +320,9 @@ def test_backgroundParametersForRange(self): class TestPeakCollectionsFromNexus: """Test suite for full round-trip read/write""" - def test_peakCollectionsFromNexus_roundtrip(self, load_HidraWorkspace, createPeakCollection): + def test_peakCollectionsFromNexus_roundtrip(self, minimal_HidraWorkspace, createPeakCollection): """Write PeakCollections via NXstress.write(), read back via peakCollectionsFromNexus, verify match""" - ws = load_HidraWorkspace( - file_name="HB2B_1017_w_mask.h5", - name="test_workspace", - load_raw_counts=True, # Required to load instrument geometry - load_reduced_diffraction=True, - ) + ws = minimal_HidraWorkspace(with_instrument=True, with_masks=True, with_raw_counts=True) subruns = ws._sample_logs.subruns.raw_copy() N_subrun = len(subruns) @@ -426,14 +415,9 @@ def test_peakCollectionsFromNexus_roundtrip(self, load_HidraWorkspace, createPea orig_eff_errs[field], recon_eff_errs[field], atol=1e-5, err_msg=f"Mismatch in {field} errors" ) - def test_peak_tag_roundtrip_multidigit_miller(self, load_HidraWorkspace, createPeakCollection): + def test_peak_tag_roundtrip_multidigit_miller(self, minimal_HidraWorkspace, createPeakCollection): """PeakCollection with peak_tag='Fe120100' (h=12,k=1,l=0) round-trips correctly""" - ws = load_HidraWorkspace( - file_name="HB2B_1017_w_mask.h5", - name="test_workspace", - load_raw_counts=True, # Required to load instrument geometry - load_reduced_diffraction=True, - ) + ws = minimal_HidraWorkspace(with_instrument=True, with_masks=True, with_raw_counts=True) subruns = ws._sample_logs.subruns.raw_copy() N_subrun = len(subruns) @@ -480,11 +464,9 @@ def test_peak_tag_roundtrip_multidigit_miller(self, load_HidraWorkspace, createP class TestValidateNoDuplicatePeaksIntegration: """Test validateNoDuplicatePeaks integration in NXstress.write()""" - def test_validateNoDuplicatePeaks_integration_in_write(self, load_HidraWorkspace, createPeakCollection): + def test_validateNoDuplicatePeaks_integration_in_write(self, minimal_HidraWorkspace, createPeakCollection): """NXstress.write() with duplicates → ValueError before any file content written""" - ws = load_HidraWorkspace( - file_name="HB2B_1628.h5", name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=False) subruns = ws._sample_logs.subruns.raw_copy() N_subrun = len(subruns) diff --git a/tests/unit/pyrs/utilities/NXstress/test_sample.py b/tests/unit/pyrs/utilities/NXstress/test_sample.py index 0a966eb87..2e81991ae 100644 --- a/tests/unit/pyrs/utilities/NXstress/test_sample.py +++ b/tests/unit/pyrs/utilities/NXstress/test_sample.py @@ -16,18 +16,12 @@ class TestSample: """Test suite for _sample.py""" - PROJECT_FILE_A = "HB2B_1017.h5" # instrument, input data, reduced data, no mask - PROJECT_FILE_B = "HB2B_1628.h5" # instrument, mask, reduced data, but no input data - PROJECT_FILE_C = "HB2B_1017_w_mask.h5" # instrument, mask, input data, reduced data - def test_Sample_scan_point_and_coordinates( self, - load_HidraWorkspace: Callable[..., HidraWorkspace], + minimal_HidraWorkspace: Callable[..., HidraWorkspace], ): """Verify scan_point matches subruns and vx,vy,vz have correct shape/dtype""" - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_B, name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=False) sample = _Sample.init_group(ws._sample_logs) @@ -50,12 +44,10 @@ def test_Sample_scan_point_and_coordinates( def test_Sample_chemical_formula_present( self, - load_HidraWorkspace: Callable[..., HidraWorkspace], + minimal_HidraWorkspace: Callable[..., HidraWorkspace], ): """Verify chemical_formula field when CHEMICAL_FORMULA log is present""" - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_B, name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=False) # Add chemical formula to logs - must match number of subruns subruns = ws._sample_logs.subruns.raw_copy() @@ -70,12 +62,10 @@ def test_Sample_chemical_formula_present( def test_Sample_chemical_formula_absent( self, - load_HidraWorkspace: Callable[..., HidraWorkspace], + minimal_HidraWorkspace: Callable[..., HidraWorkspace], ): """Verify chemical_formula defaults to 'unknown' when not in logs""" - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_B, name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=False) # Ensure chemical formula is not in logs if HidraConstants.CHEMICAL_FORMULA in ws._sample_logs: @@ -86,11 +76,9 @@ def test_Sample_chemical_formula_absent( assert "chemical_formula" in sample assert sample["chemical_formula"] == "unknown" - def test_Sample_temperature_present(self, load_HidraWorkspace: Callable[..., HidraWorkspace]): + def test_Sample_temperature_present(self, minimal_HidraWorkspace: Callable[..., HidraWorkspace]): """Verify temperature field and units when TEMPERATURE log is present""" - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_B, name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=False) # Add temperature data to logs with units using tuple syntax subruns = ws._sample_logs.subruns.raw_copy() @@ -109,12 +97,10 @@ def test_Sample_temperature_present(self, load_HidraWorkspace: Callable[..., Hid def test_Sample_temperature_absent( self, - load_HidraWorkspace: Callable[..., HidraWorkspace], + minimal_HidraWorkspace: Callable[..., HidraWorkspace], ): """Verify no temperature field when TEMPERATURE log is absent""" - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_B, name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=False) # Ensure temperature is not in logs if HidraConstants.TEMPERATURE in ws._sample_logs: @@ -126,17 +112,17 @@ def test_Sample_temperature_absent( def test_Sample_stress_field_present( self, - load_HidraWorkspace: Callable[..., HidraWorkspace], + minimal_HidraWorkspace: Callable[..., HidraWorkspace], ): """Verify stress_field field, shape, and direction attr when present""" - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_B, name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=False) # Add stress field data to logs subruns = ws._sample_logs.subruns.raw_copy() N_scan = len(subruns) - stress_values = np.random.randn(N_scan, 3) + # Local, freshly-seeded generator -- not the implicit global numpy RNG state, which is + # shared process-wide and would couple this test's values to unrelated tests' draws. + stress_values = np.random.default_rng(seed=0).standard_normal((N_scan, 3)) ws._sample_logs[HidraConstants.STRESS_FIELD] = stress_values # Direction is stored as array with same value for each subrun @@ -155,16 +141,15 @@ def test_Sample_stress_field_present( else: assert direction_val == "z" - def test_Sample_stress_field_shape_mismatch(self, load_HidraWorkspace: Callable[..., HidraWorkspace]): + def test_Sample_stress_field_shape_mismatch(self, minimal_HidraWorkspace: Callable[..., HidraWorkspace]): """Verify RuntimeError when stress_field first axis != N_scan""" - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_B, name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=False) # Add stress field with wrong shape subruns = ws._sample_logs.subruns.raw_copy() N_scan = len(subruns) - wrong_shape_stress = np.random.randn(N_scan + 5, 3) # Wrong first dimension + # Local, freshly-seeded generator -- see test_Sample_stress_field_present for why. + wrong_shape_stress = np.random.default_rng(seed=0).standard_normal((N_scan + 5, 3)) # Wrong first dimension # Set `_data` dict directly, otherwise `SampleLogs.__setitem__` itself will raise an exception. ws._sample_logs._data[HidraConstants.STRESS_FIELD] = wrong_shape_stress @@ -174,12 +159,10 @@ def test_Sample_stress_field_shape_mismatch(self, load_HidraWorkspace: Callable[ def test_Sample_coordinate_shape_mismatch( self, - load_HidraWorkspace: Callable[..., HidraWorkspace], + minimal_HidraWorkspace: Callable[..., HidraWorkspace], ): """Verify RuntimeError when coordinate array axis != N_scan""" - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_B, name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=False) # Corrupt vx to have wrong size by directly manipulating the logs subruns = ws._sample_logs.subruns.raw_copy() @@ -196,12 +179,10 @@ def test_Sample_coordinate_shape_mismatch( def test_Sample_extra_logs( self, - load_HidraWorkspace: Callable[..., HidraWorkspace], + minimal_HidraWorkspace: Callable[..., HidraWorkspace], ): """Verify logs not in NXstress_logs go to logs NXcollection with local_name""" - ws = load_HidraWorkspace( - file_name=self.PROJECT_FILE_B, name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) + ws = minimal_HidraWorkspace(with_instrument=False) # Add a custom log with ':' in the name and units using tuple syntax custom_log_name = "HB2B:CS:CustomValue" diff --git a/tests/unit/pyrs/utilities/NXstress/test_workspace_read.py b/tests/unit/pyrs/utilities/NXstress/test_workspace_read.py index bf0d54818..1cb67c1f9 100644 --- a/tests/unit/pyrs/utilities/NXstress/test_workspace_read.py +++ b/tests/unit/pyrs/utilities/NXstress/test_workspace_read.py @@ -27,38 +27,13 @@ @pytest.fixture -def roundtrip_nxstress(load_HidraWorkspace, createPeakCollection, tmp_path): +def roundtrip_nxstress(minimal_HidraWorkspace, createPeakCollection, tmp_path): """Fixture that writes and reads back a workspace with peaks""" - # Load a workspace with instrument geometry - ws_original = load_HidraWorkspace( - file_name="HB2B_1017_w_mask.h5", name="test_workspace", load_raw_counts=True, load_reduced_diffraction=True + ws_original = minimal_HidraWorkspace( + with_instrument=True, with_masks=True, with_raw_counts=True, with_reduced_diffraction=True ) - # Set up instrument geometry if not present - if ws_original._instrument_setup is None: - from pyrs.core.instrument_geometry import DENEXDetectorGeometry, DENEXDetectorShift - - geometry = DENEXDetectorGeometry( - num_rows=512, - num_columns=512, - pixel_size_x=0.001, # 1 mm in meters - pixel_size_y=0.001, # 1 mm in meters - arm_length=2.0, # 2 meters - calibrated=True, - ) - ws_original.set_instrument_geometry(geometry) - - # Set detector shift for calibrated geometry - shift = DENEXDetectorShift( - shift_x=0.01, shift_y=0.02, shift_z=0.03, rotation_x=1.0, rotation_y=2.0, rotation_z=3.0, tth_0=0.5 - ) - ws_original.set_detector_shift(shift) - - # Set wavelength if not present (test data may lack monochromator settings) - if ws_original.get_wavelength(calibrated=True, throw_if_not_set=False) is None: - ws_original.set_wavelength(1.486, calibrated=True) - # Create 2 PeakCollection objects subruns = ws_original._sample_logs.subruns.raw_copy() N_subrun = len(subruns) @@ -250,20 +225,9 @@ def test_full_roundtrip(self, roundtrip_nxstress): class TestReadErrors: """Test error handling in read operations""" - def test_read_nonexistent_entry(self, load_HidraWorkspace, tmp_path): + def test_read_nonexistent_entry(self, minimal_HidraWorkspace, tmp_path): """Attempt to read non-existent entry → KeyError""" - ws = load_HidraWorkspace( - file_name="HB2B_1017.h5", name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) - - # Set up instrument geometry if not present - if ws._instrument_setup is None: - from pyrs.core.instrument_geometry import DENEXDetectorGeometry - - geometry = DENEXDetectorGeometry( - num_rows=512, num_columns=512, pixel_size_x=0.001, pixel_size_y=0.001, arm_length=2.0, calibrated=False - ) - ws.set_instrument_geometry(geometry) + ws = minimal_HidraWorkspace(with_instrument=True) nxstress_file = tmp_path / "test_nonexistent.nxs" with NXstress(nxstress_file, mode="w") as nxs: @@ -273,21 +237,10 @@ def test_read_nonexistent_entry(self, load_HidraWorkspace, tmp_path): with NXstress(nxstress_file, mode="r") as nxs: nxs.read(entry_number=99) - def test_read_outside_context_manager(self, load_HidraWorkspace, tmp_path): + def test_read_outside_context_manager(self, minimal_HidraWorkspace, tmp_path): """Call read() outside context manager → RuntimeError""" - # First create a valid NXstress file - ws = load_HidraWorkspace( - file_name="HB2B_1017.h5", name="test_workspace", load_raw_counts=False, load_reduced_diffraction=True - ) - - # Set up instrument geometry if not present - if ws._instrument_setup is None: - from pyrs.core.instrument_geometry import DENEXDetectorGeometry - - geometry = DENEXDetectorGeometry( - num_rows=512, num_columns=512, pixel_size_x=0.001, pixel_size_y=0.001, arm_length=2.0, calibrated=False - ) - ws.set_instrument_geometry(geometry) + # Build a valid NXstress file + ws = minimal_HidraWorkspace(with_instrument=True) nxstress_file = tmp_path / "test_outside_context.nxs" with NXstress(nxstress_file, mode="w") as nxs: diff --git a/tests/unit/pyrs/utilities/conftest.py b/tests/unit/pyrs/utilities/conftest.py new file mode 100644 index 000000000..553f86583 --- /dev/null +++ b/tests/unit/pyrs/utilities/conftest.py @@ -0,0 +1,93 @@ +""" +Shared fixtures for tests of `pyrs/utilities/`. + +Fixture conventions +-------------------- +- `default_config` — a test-isolated `neutrons_standard.Config` singleton (see + `pyrs/utilities/config.py`). Every test that requests it gets a genuinely fresh + instance (`reset_Singletons()`) loaded against a `HOME` pointed at `tmp_path`, so + a test can never write into (or accidentally read an override from) the real + user's `~/.pyrs/` directory, and one test's config changes can never leak into + the next. Required for any test that touches `pyrs.utilities.config.Config` -- + importing that module unconditionally writes a backup file to `~/.pyrs/` as a + side effect of loading, real home directory included, if not for this fixture. + Defined here (rather than under `NXstress/`) since `pyrs/utilities/config.py` + isn't itself NXstress-specific code; being one directory up, it's visible to + `NXstress/` tests as well as siblings of this file (e.g. `test_config.py`). +""" + +from collections.abc import Generator +from pathlib import Path +from typing import TYPE_CHECKING + +import pytest + +if TYPE_CHECKING: + # Only for type-checking -- a real runtime import here would race + # neutrons_standard.init("pyrs") exactly like importing it anywhere else in this + # codebase would (see pyrs/utilities/config.py's module docstring). TYPE_CHECKING + # guards this from ever executing. + from neutrons_standard.config import _Config + + +@pytest.fixture +def default_config(tmp_path: Path, monkeypatch: pytest.MonkeyPatch) -> Generator["_Config"]: + """Yield a `neutrons_standard.Config` singleton, fully isolated from the real environment. + + Setup: monkeypatches `HOME` to `tmp_path` and clears any `env` override, then + resets and reloads the singleton (both `neutrons_standard.config` and + `pyrs.utilities.config`) so it picks up the redirected `HOME` -- `reset_Singletons()` + alone only clears the `Singleton` decorator's internal state; it does not change + what an already-imported module's `Config` name refers to. + + Cleanup: resets and reloads the singleton again after the test, so the next test + (or any later code importing `pyrs.utilities.config.Config`) gets a clean instance + rather than one still holding this test's `tmp_path`-scoped `HOME` or `env` + override. + + Args: + tmp_path: Pytest's built-in per-test temporary directory; used as the fake + `HOME` so `neutrons_standard.Config`'s real side effects (writing a backup + file to `~/.{package_name}/`) never touch the real user's home. + monkeypatch: Pytest's built-in fixture for reversible env-var patching. + + Yields: + The live `neutrons_standard.Config` singleton (via + `pyrs.utilities.config.Config`), loaded against the isolated `HOME`. + """ + # `neutrons_standard.Config` is a process-wide singleton: every `reload()` writes a + # backup to `~/.{package_name}/application.yml.bak`, and it may auto-swap onto a + # pre-existing `~/.{package_name}/{package_name}-user.yml` override -- both against + # the REAL home directory, unless we redirect `HOME` first. `reset_Singletons()` + # alone only clears the Singleton decorator's internal `instance`/`initialized` + # state; it does not change what an *already-imported* module's `Config` name + # refers to, so the modules that bind it must also be reloaded. + # + # Import order matters and is easy to get backwards: `pyrs.utilities.config` must + # be imported (or already have been) *before* `neutrons_standard.config` is ever + # directly touched, because its module body calls `neutrons_standard.init("pyrs")` + # before importing `Config` -- `neutrons_standard.config`'s own module-level + # `package_name = Spec.client_package_name` line is captured once, at whichever + # import happens first. Importing `neutrons_standard.config` here ourselves, ahead + # of `pyrs.utilities.config`, would reproduce that exact bug. + import importlib + import sys + + from neutrons_standard.decorators.singleton import reset_Singletons + + monkeypatch.setenv("HOME", str(tmp_path)) + monkeypatch.delenv("env", raising=False) + + reset_Singletons() + import pyrs.utilities.config # first-ever import correctly calls init() before Config + + importlib.reload(sys.modules["neutrons_standard.config"]) + importlib.reload(pyrs.utilities.config) + + yield pyrs.utilities.config.Config + + # Leave a clean, freshly-reset singleton behind for the next test, rather than one + # holding this test's `tmp_path`-scoped `HOME` and any `env` override it applied. + reset_Singletons() + importlib.reload(sys.modules["neutrons_standard.config"]) + importlib.reload(pyrs.utilities.config) diff --git a/tests/unit/pyrs/utilities/test_calibration_file_io.py b/tests/unit/pyrs/utilities/test_calibration_file_io.py index 0afb42e09..dbe07fda0 100644 --- a/tests/unit/pyrs/utilities/test_calibration_file_io.py +++ b/tests/unit/pyrs/utilities/test_calibration_file_io.py @@ -28,6 +28,7 @@ def test_check_calibration_status_nonnegative_status_ok(status): # Assert - no exception raised +@pytest.mark.integration def test_calibration_json_io(): """Test the calibration file (in Json format) I/O methods diff --git a/tests/unit/pyrs/utilities/test_config.py b/tests/unit/pyrs/utilities/test_config.py new file mode 100644 index 000000000..53ae97b8a --- /dev/null +++ b/tests/unit/pyrs/utilities/test_config.py @@ -0,0 +1,111 @@ +""" +Tests for `pyrs/utilities/config.py`. + +Every test here requests the `default_config` fixture (see +`tests/unit/pyrs/utilities/conftest.py`) and imports `pyrs.utilities.config` only +*inside* the test body -- never at module level. A module-level import would run +`pyrs.utilities.config`'s side effects (writing a backup file under `~/.pyrs/`) +against the real home directory at test-collection time, before the fixture has had +a chance to redirect `HOME` to a `tmp_path`. +""" + +from pathlib import Path +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + # Only for type-checking -- see tests/unit/pyrs/utilities/conftest.py's + # `default_config` fixture for why a real runtime import here is unsafe. + from neutrons_standard.config import _Config + + +def test_default_config_loads_shipped_defaults(default_config: "_Config") -> None: + """Test that the shipped `pyrs/resources/application.yml` values load unmodified.""" + # Arrange / Act + config = default_config + + # Assert + assert config["nxstress.enable"] is True + assert config["nxstress.extension"] == ".nxs" + assert config["nxstress.use_production_names"] is False + assert config["legacy_io.enable"] is True + assert config["legacy_io.extension"] == ".h5" + + +def test_default_config_env_override_merges_on_top_of_default(default_config: "_Config", tmp_path: Path) -> None: + """Test that an `env`-named override file deep-merges onto the shipped default. + + Only `nxstress.enable` is overridden; `legacy_io.*` (untouched by the override + file) must still come through from the shipped default -- confirming a merge, + not a wholesale replacement. + """ + # Arrange + override_file = tmp_path / "override.yml" + override_file.write_text("nxstress:\n enable: false\n") + + # Act + config = default_config + config.loadEnv(str(override_file)) + + # Assert + assert config["nxstress.enable"] is False + assert config["legacy_io.enable"] is True # unaffected key survives the merge + + +def test_validate_config_passes_with_shipped_defaults(default_config: "_Config") -> None: + """Test that `validate_config()` raises nothing when both formats are enabled.""" + # Arrange + import pyrs.utilities.config as config_module + + # Act / Assert + config_module.validate_config() # no exception + + +def test_validate_config_raises_when_both_formats_disabled(default_config: "_Config", tmp_path: Path) -> None: + """Test that `validate_config()` rejects a config with no output format enabled.""" + # Arrange + import pytest + + import pyrs.utilities.config as config_module + + override_file = tmp_path / "override.yml" + override_file.write_text("nxstress:\n enable: false\nlegacy_io:\n enable: false\n") + default_config.loadEnv(str(override_file)) + + # Act / Assert + with pytest.raises(ValueError, match="At least one of nxstress.enable or legacy_io.enable must be true"): + config_module.validate_config() + + +def test_validate_nxstress_enable_not_bool(default_config: "_Config", tmp_path: Path) -> None: + """Test that a non-bool `nxstress.enable` (e.g. a quoted YAML string) is rejected + up front, rather than silently passing the truthiness check (`bool("false")` is + `True` in Python). + """ + # Arrange + import pytest + + import pyrs.utilities.config as config_module + + override_file = tmp_path / "override.yml" + override_file.write_text('nxstress:\n enable: "false"\n') # quoted -- stays a str, not a bool + default_config.loadEnv(str(override_file)) + + # Act / Assert + with pytest.raises(RuntimeError, match='Config\\["nxstress.enable"\\] must be a bool'): + config_module.validate_config() + + +def test_validate_legacy_io_enable_not_bool(default_config: "_Config", tmp_path: Path) -> None: + """Test that a non-bool `legacy_io.enable` (e.g. an int) is rejected up front.""" + # Arrange + import pytest + + import pyrs.utilities.config as config_module + + override_file = tmp_path / "override.yml" + override_file.write_text("legacy_io:\n enable: 1\n") # int, not a bool + default_config.loadEnv(str(override_file)) + + # Act / Assert + with pytest.raises(RuntimeError, match='Config\\["legacy_io.enable"\\] must be a bool'): + config_module.validate_config() diff --git a/tests/unit/pyrs/utilities/test_file_util.py b/tests/unit/pyrs/utilities/test_file_util.py index 02c198c7e..6260e2444 100644 --- a/tests/unit/pyrs/utilities/test_file_util.py +++ b/tests/unit/pyrs/utilities/test_file_util.py @@ -27,6 +27,7 @@ def test_parse_integers(): @pytest.mark.skipif(not os.path.exists("/HFIR/HB2B/shared/"), reason="HFIR data archive is not mounted") +@pytest.mark.integration def test_get_ipts_dir(): """Test to get IPTS directory from run number @@ -57,6 +58,7 @@ def test_get_ipts_dir(): @pytest.mark.skipif(not os.path.exists("/HFIR/HB2B/shared/"), reason="HFIR data archive is not mounted") +@pytest.mark.integration def test_get_default_output_dir(): assert get_default_output_dir(1060) == "/HFIR/HB2B/IPTS-22731/shared/manualreduce", ( "Output directory is not correct for run 1060" @@ -68,6 +70,7 @@ def test_get_default_output_dir(): @pytest.mark.skipif(not os.path.exists("/HFIR/HB2B/shared/"), reason="HFIR data archive is not mounted") +@pytest.mark.integration def test_get_input_project_file(): assert get_input_project_file(1060) == "/HFIR/HB2B/IPTS-22731/shared/manualreduce", ( "Output directory is not correct for run 1060" @@ -83,6 +86,7 @@ def test_get_input_project_file(): @pytest.mark.skipif(not os.path.exists("/HFIR/HB2B/shared/"), reason="HFIR data archive is not mounted") +@pytest.mark.integration def test_get_nexus_file(): assert get_nexus_file(1060) == "/HFIR/HB2B/IPTS-22731/nexus/HB2B_1060.nxs.h5" assert get_nexus_file(1017) == "/HFIR/HB2B/IPTS-22731/nexus/HB2B_1017.nxs.h5" diff --git a/tests/util/peak_collection_helpers.py b/tests/util/peak_collection_helpers.py index 53eeebe8d..fd54d79b2 100644 --- a/tests/util/peak_collection_helpers.py +++ b/tests/util/peak_collection_helpers.py @@ -9,12 +9,20 @@ import pytest -RNG = np.random.default_rng(seed=0x923F109B1D944AF5) +# Fixed literal seed for full reproducibility: +# Each consuming RNG is re-instantiated fresh inside the fixture +# below (not held at module scope) so that no test's random draws depend on how many draws +# earlier tests happened to consume from a shared stream. +_SEED = 0x923F109B1D944AF5 @pytest.fixture def createPeakCollection() -> Generator[Callable[..., PeakCollection]]: # This fixture generates a `PeakCollection` instance initialized using random values. + # A fresh, identically-seeded RNG is created per test invocation (see `_SEED` above): + # every test that requests this fixture gets the same deterministic sequence of draws, + # regardless of what other tests ran before it in the same session. + rng = np.random.default_rng(seed=_SEED) def _init( *, @@ -28,8 +36,16 @@ def _init( exclude_list=None, N_counts=1000, # range for random counts N_span=10000.0, # domain for random axes - error_fraction=0.01, # fractional error for various initializations + error_fraction_min=0.005, # minimum fractional error (0.5%), as a fraction of the value drawn + error_fraction_max=0.05, # maximum fractional error (5%), as a fraction of the value drawn ) -> PeakCollection: + if not (0 < error_fraction_min <= error_fraction_max): + raise ValueError( + "createPeakCollection: invalid error_fraction bounds " + f"(error_fraction_min={error_fraction_min}, error_fraction_max={error_fraction_max}); " + "require 0 < error_fraction_min <= error_fraction_max" + ) + peaks = PeakCollection( peak_tag, peak_profile, @@ -49,6 +65,15 @@ def _init( # Ensure that the parameter values are somewhat physically meaningful: # for example, no negative peak widths or out-of-range mixing fractions. + # Uncertainties are drawn as a bounded, non-degenerate *fraction of the value itself* + # (never as an absolute range independent of the value): this keeps the ratio between + # any two parameters' relative uncertainties bounded by error_fraction_max/error_fraction_min, + # which is what actually bounds the condition number of downstream error-propagation + # formulas that recombine several parameters' uncertainties (see e.g. + # pyrs/utilities/NXstress/_fit.py's PseudoVoigt Intensity-from-Height inversion, which + # subtracts comparable-magnitude terms and would otherwise amplify float32 rounding + # noise without bound whenever a draw happened to make one parameter's absolute + # uncertainty tiny relative to its value). params = peaks._peak_profile.native_parameters dtypes = dict(get_parameter_dtype(peaks._peak_profile, peaks._background_type)) param_values = np.zeros(N_subrun, list(dtypes.items())) @@ -57,24 +82,23 @@ def _init( dtype = dtypes[param] match param: case "Height" | "Intensity": - vs = RNG.uniform(0.0, N_counts, size=(N_subrun,)).astype(dtype) - es = RNG.uniform(0.0, error_fraction * N_counts, size=(N_subrun,)).astype(dtype) + vs = rng.uniform(0.0, N_counts, size=(N_subrun,)).astype(dtype) case "PeakCentre": - vs = RNG.uniform(0.0, N_span, size=(N_subrun,)).astype(dtype) - es = RNG.uniform(0.0, error_fraction * N_span, size=(N_subrun,)).astype(dtype) + vs = rng.uniform(0.0, N_span, size=(N_subrun,)).astype(dtype) case "Sigma" | "FWHM": - vs = RNG.uniform(0.0, N_span / 10.0, size=(N_subrun,)).astype(dtype) - es = RNG.uniform(0.0, error_fraction * N_span / 10.0, size=(N_subrun,)).astype(dtype) + vs = rng.uniform(0.0, N_span / 10.0, size=(N_subrun,)).astype(dtype) case "Mixing": - vs = RNG.uniform(0.0, 1.0, size=(N_subrun,)).astype(dtype) - es = RNG.uniform(0.0, error_fraction * 1.0, size=(N_subrun,)).astype(dtype) + vs = rng.uniform(0.0, 1.0, size=(N_subrun,)).astype(dtype) case _: raise RuntimeError(f"`createPeakCollection`: unexpected param '{param}'") + fraction = rng.uniform(error_fraction_min, error_fraction_max, size=(N_subrun,)) + es = (fraction * vs).astype(dtype) + param_values[param] = vs param_errors[param] = es - fit_costs = RNG.uniform(0.0, 100.0, size=(N_subrun,)).astype(dtype) + fit_costs = rng.uniform(0.0, 100.0, size=(N_subrun,)).astype(dtype) peaks.set_peak_fitting_values(subruns, param_values, param_errors, fit_costs, exclude_list) return peaks diff --git a/tests/util/test_peak_collection_helpers.py b/tests/util/test_peak_collection_helpers.py new file mode 100644 index 000000000..ca9be36f8 --- /dev/null +++ b/tests/util/test_peak_collection_helpers.py @@ -0,0 +1,37 @@ +"""Tests for tests/util/peak_collection_helpers.py.""" + +import pytest + +from tests.util.peak_collection_helpers import createPeakCollection # noqa: F401 + + +def test_inverted_error_fraction_bounds_raises(createPeakCollection) -> None: # noqa: F811 + """Test that createPeakCollection rejects error_fraction_min > error_fraction_max.""" + with pytest.raises(ValueError, match="invalid error_fraction bounds"): + createPeakCollection( + peak_tag="t", + peak_profile="Gaussian", + background_type="Linear", + wavelength=1.0, + projectfilename="/does/not/exist.h5", + runnumber=1, + N_subrun=1, + error_fraction_min=0.05, + error_fraction_max=0.005, # inverted + ) + + +def test_zero_error_fraction_min_raises(createPeakCollection) -> None: # noqa: F811 + """Test that createPeakCollection rejects a non-positive error_fraction_min.""" + with pytest.raises(ValueError, match="invalid error_fraction bounds"): + createPeakCollection( + peak_tag="t", + peak_profile="Gaussian", + background_type="Linear", + wavelength=1.0, + projectfilename="/does/not/exist.h5", + runnumber=1, + N_subrun=1, + error_fraction_min=0.0, + error_fraction_max=0.05, + )