From ee48e30335db2a84b377ee9df12d925863a17692 Mon Sep 17 00:00:00 2001 From: Tim Mensinger Date: Mon, 23 Sep 2024 12:05:41 +0200 Subject: [PATCH] Allow general discrete grids (#90) --- .github/workflows/main.yml | 15 +- .pre-commit-config.yaml | 2 +- examples/long_running.py | 13 +- explanations/dispatchers.ipynb | 12 +- explanations/function_representation.ipynb | 10 +- pixi.lock | 1562 +++++++++-------- pyproject.toml | 6 +- src/lcm/entry_point.py | 7 +- src/lcm/grids.py | 140 +- src/lcm/input_processing/__init__.py | 3 +- .../discrete_grid_conversion.py | 280 +++ src/lcm/input_processing/process_model.py | 20 +- src/lcm/input_processing/util.py | 2 +- src/lcm/interfaces.py | 4 + src/lcm/simulate.py | 29 +- src/lcm/solve_brute.py | 9 +- src/lcm/user_model.py | 37 +- tests/conftest.py | 18 + .../test_create_params_template.py | 6 +- .../test_discrete_state_conversion.py | 156 ++ tests/input_processing/test_process_model.py | 30 +- tests/test_entry_point.py | 58 +- tests/test_grids.py | 105 +- tests/test_model.py | 12 +- tests/test_model_functions.py | 1 + tests/test_models/deterministic.py | 80 +- tests/test_models/stochastic.py | 28 +- tests/test_next_state.py | 1 + tests/test_simulate.py | 33 +- tests/test_solution_on_toy_model.py | 26 +- tests/test_solve_brute.py | 2 + tests/test_state_space.py | 3 +- 32 files changed, 1729 insertions(+), 981 deletions(-) create mode 100644 src/lcm/input_processing/discrete_grid_conversion.py create mode 100644 tests/input_processing/test_discrete_state_conversion.py diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f0420fe4..82baa5a1 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -26,15 +26,16 @@ jobs: - '3.12' steps: - uses: actions/checkout@v4 - - uses: prefix-dev/setup-pixi@v0.8.0 + - uses: prefix-dev/setup-pixi@v0.8.1 with: pixi-version: v0.29.0 cache: true cache-write: ${{ github.event_name == 'push' && github.ref_name == 'main' }} environments: test-cpu activate-environment: true + frozen: true - name: Run pytest - shell: bash -l {0} + shell: bash {0} run: pixi run -e test-cpu tests - name: Upload coverage report if: runner.os == 'Linux' && matrix.python-version == '3.12' @@ -46,26 +47,28 @@ jobs: fail-fast: false steps: - uses: actions/checkout@v4 - - uses: prefix-dev/setup-pixi@v0.8.0 + - uses: prefix-dev/setup-pixi@v0.8.1 with: pixi-version: v0.29.0 cache: true cache-write: ${{ github.event_name == 'push' && github.ref_name == 'main' }} environments: mypy + frozen: true - name: Run mypy - shell: bash -l {0} + shell: bash {0} run: pixi run mypy run-explanation-notebooks: name: Run explanation notebooks on Python 3.12 runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: prefix-dev/setup-pixi@v0.8.0 + - uses: prefix-dev/setup-pixi@v0.8.1 with: pixi-version: v0.29.0 cache: true cache-write: ${{ github.event_name == 'push' && github.ref_name == 'main' }} environments: test-cpu + frozen: true - name: Run explanation notebooks - shell: bash -l {0} + shell: bash {0} run: pixi run -e test-cpu explanation-notebooks diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 4912e6d8..c6c5559a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -46,7 +46,7 @@ repos: hooks: - id: yamllint - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.6.4 + rev: v0.6.5 hooks: # Run the linter. - id: ruff diff --git a/examples/long_running.py b/examples/long_running.py index 9c54a5f0..992987a5 100644 --- a/examples/long_running.py +++ b/examples/long_running.py @@ -1,5 +1,7 @@ """Example specification for a consumption-savings model with health and exercise.""" +from dataclasses import dataclass + import jax.numpy as jnp from lcm import DiscreteGrid, LinspaceGrid, Model @@ -9,6 +11,15 @@ # ====================================================================================== +# -------------------------------------------------------------------------------------- +# Categorical variables +# -------------------------------------------------------------------------------------- +@dataclass +class WorkingStatus: + retired: int = 0 + working: int = 1 + + # -------------------------------------------------------------------------------------- # Utility function # -------------------------------------------------------------------------------------- @@ -67,7 +78,7 @@ def consumption_constraint(consumption, wealth, labor_income): "age": age, }, choices={ - "working": DiscreteGrid([0, 1]), + "working": DiscreteGrid(WorkingStatus), "consumption": LinspaceGrid( start=1, stop=100, diff --git a/explanations/dispatchers.ipynb b/explanations/dispatchers.ipynb index 81aae290..cab40c16 100644 --- a/explanations/dispatchers.ipynb +++ b/explanations/dispatchers.ipynb @@ -16,6 +16,8 @@ "metadata": {}, "outputs": [], "source": [ + "from dataclasses import dataclass\n", + "\n", "import jax.numpy as jnp\n", "import pytest\n", "from jax import vmap\n", @@ -277,6 +279,12 @@ "from lcm import DiscreteGrid, LinspaceGrid, Model\n", "\n", "\n", + "@dataclass\n", + "class RetirementStatus:\n", + " working: int = 0\n", + " retired: int = 1\n", + "\n", + "\n", "def utility(consumption, retirement, lagged_retirement, wealth):\n", " working = 1 - retirement\n", " retirement_habit = lagged_retirement * wealth\n", @@ -296,11 +304,11 @@ " },\n", " n_periods=1,\n", " choices={\n", - " \"retirement\": DiscreteGrid([0, 1]),\n", + " \"retirement\": DiscreteGrid(RetirementStatus),\n", " \"consumption\": LinspaceGrid(start=1, stop=2, n_points=2),\n", " },\n", " states={\n", - " \"lagged_retirement\": DiscreteGrid([0, 1]),\n", + " \"lagged_retirement\": DiscreteGrid(RetirementStatus),\n", " \"wealth\": LinspaceGrid(start=1, stop=4, n_points=4),\n", " },\n", ")" diff --git a/explanations/function_representation.ipynb b/explanations/function_representation.ipynb index 0e89ddb5..82c4429b 100644 --- a/explanations/function_representation.ipynb +++ b/explanations/function_representation.ipynb @@ -76,11 +76,19 @@ "metadata": {}, "outputs": [], "source": [ + "from dataclasses import dataclass\n", + "\n", "import jax.numpy as jnp\n", "\n", "from lcm import DiscreteGrid, LinspaceGrid, Model\n", "\n", "\n", + "@dataclass\n", + "class RetirementStatus:\n", + " working: int = 0\n", + " retired: int = 1\n", + "\n", + "\n", "def utility(consumption, working, disutility_of_work):\n", " return jnp.log(consumption) - disutility_of_work * working\n", "\n", @@ -125,7 +133,7 @@ " \"age\": age,\n", " },\n", " choices={\n", - " \"retirement\": DiscreteGrid([0, 1]),\n", + " \"retirement\": DiscreteGrid(RetirementStatus),\n", " \"consumption\": LinspaceGrid(start=1, stop=400, n_points=20),\n", " },\n", " states={\n", diff --git a/pixi.lock b/pixi.lock index 4f2c9a9f..ed084c55 100644 --- a/pixi.lock +++ b/pixi.lock @@ -20,7 +20,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.40-ha1999f0_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.40-hb3c18ed_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.40-hb3c18ed_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda @@ -63,23 +63,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-13.3.0-hfea6d02_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-13.3.0-hc28eda2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-13.3.0-hc28eda2_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-13.3.0-hdbfa832_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-13.3.0-h6834431_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-13.3.0-h6834431_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.4.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.4.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.5.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.27.0-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 @@ -93,7 +93,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jupyter_core-5.7.2-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda @@ -106,8 +106,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-hf3520f5_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240116.2-cxx17_he02047a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-23_linux64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-23_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-24_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-24_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.6.1.4-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.2.6.59-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.7.68-h5888daf_0.conda @@ -124,7 +124,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.1.0-hc5f4f2c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.1.0-h77fa898_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.62.2-h15f2491_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-23_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-24_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.6.68-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.27-pthreads_hac2b453_1.conda @@ -142,7 +142,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/memory_profiler-0.61.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.4.0-py312hf9745cd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.5.0-py312hf9745cd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda @@ -162,8 +162,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.8.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.47-pyha770c72_0.conda @@ -179,7 +179,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2023.09.01-h7f4b329_2.conda @@ -191,7 +191,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.20.0-py312h12e396e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.13.0-py312hc2bc53b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-73.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-74.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda @@ -212,8 +212,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h8827d51_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.26.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda @@ -221,7 +221,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-ha4adb4c_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda - pypi: https://files.pythonhosted.org/packages/f5/92/8f28e56b94ef20dcf0e04ffcfa99d5b515624f4870d420d858480171238a/dags-0.2.3-py3-none-any.whl @@ -268,7 +268,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 @@ -276,11 +276,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.4.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.4.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.5.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.27.0-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 @@ -294,7 +294,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jupyter_core-5.7.2-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda @@ -306,8 +306,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-hf3520f5_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240116.2-cxx17_he02047a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-23_linux64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-23_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-24_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-24_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.3-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 @@ -318,7 +318,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.1.0-hc5f4f2c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.1.0-h77fa898_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.62.2-h15f2491_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-23_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-24_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.27-pthreads_hac2b453_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-4.25.3-h08a7969_0.conda @@ -333,7 +333,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/memory_profiler-0.61.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.4.0-py312hf9745cd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.5.0-py312hf9745cd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda @@ -352,8 +352,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.8.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.47-pyha770c72_0.conda @@ -369,7 +369,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2023.09.01-h7f4b329_2.conda @@ -381,7 +381,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.20.0-py312h12e396e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.13.0-py312hc2bc53b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-73.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-74.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda @@ -401,8 +401,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h8827d51_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.26.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda @@ -410,7 +410,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-ha4adb4c_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda - pypi: https://files.pythonhosted.org/packages/f5/92/8f28e56b94ef20dcf0e04ffcfa99d5b515624f4870d420d858480171238a/dags-0.2.3-py3-none-any.whl @@ -450,7 +450,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 @@ -458,11 +458,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.4.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.4.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.5.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.27.0-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 @@ -476,7 +476,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jupyter_core-5.7.2-py312hb401068_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda @@ -507,7 +507,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/memory_profiler-0.61.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ml_dtypes-0.4.0-py312h98e817e_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ml_dtypes-0.5.0-py312h98e817e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda @@ -526,8 +526,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.8.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.47-pyha770c72_0.conda @@ -545,7 +545,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312hb553811_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.2.0-py312h54d5c6a_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/re2-2023.09.01-hb168e87_2.conda @@ -557,7 +557,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.20.0-py312h669792a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.13.0-py312h741d2f9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-73.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-74.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda @@ -577,8 +577,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h8827d51_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.26.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda @@ -586,7 +586,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.6-h775f41a_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-hb33e954_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h7122b0e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda - pypi: https://files.pythonhosted.org/packages/f5/92/8f28e56b94ef20dcf0e04ffcfa99d5b515624f4870d420d858480171238a/dags-0.2.3-py3-none-any.whl @@ -626,7 +626,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 @@ -634,11 +634,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.4.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.4.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.5.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.27.0-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 @@ -652,7 +652,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jupyter_core-5.7.2-py312h81bd7bf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda @@ -662,8 +662,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240116.2-cxx17_h00cdb27_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-23_osxarm64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-23_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-24_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-24_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-18.1.8-h3ed4263_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.3-hf9b8971_0.conda @@ -671,7 +671,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.62.2-h9c18a4f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-23_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-24_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.27-openmp_h517c56d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-4.25.3-hbfab5d5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2023.09.01-h7b2c953_2.conda @@ -683,7 +683,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/memory_profiler-0.61.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ml_dtypes-0.4.0-py312hcd31e36_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ml_dtypes-0.5.0-py312hcd31e36_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda @@ -702,8 +702,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.8.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.47-pyha770c72_0.conda @@ -721,7 +721,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hc6335d2_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2023.09.01-h4cba328_2.conda @@ -733,7 +733,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.20.0-py312he431725_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.13.0-py312h14ffa8f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-73.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-74.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda @@ -753,8 +753,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h8827d51_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312h6142ec9_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.26.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda @@ -762,7 +762,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-h64debc3_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda - pypi: https://files.pythonhosted.org/packages/f5/92/8f28e56b94ef20dcf0e04ffcfa99d5b515624f4870d420d858480171238a/dags-0.2.3-py3-none-any.whl @@ -801,7 +801,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 @@ -809,11 +809,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.4.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.4.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.5.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.27.0-pyh7428d3b_0.conda @@ -826,7 +826,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jupyter_core-5.7.2-py312h2e8e312_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda @@ -835,13 +835,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-23_win64_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-23_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-24_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-24_win64_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.3-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.1-default_h8125262_1000.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-23_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-24_win64_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.46.1-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.12.7-h0f24e4e_4.conda @@ -865,8 +865,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.8.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.47-pyha770c72_0.conda @@ -882,7 +882,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-306-py312h53d5487_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.13-py312h275cf98_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h4389bb4_1.conda @@ -894,7 +894,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.20.0-py312h2615798_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/scipy-1.13.0-py312h1f4e10d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-73.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-74.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda @@ -916,11 +916,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312hd5eb7cc_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h8a93ad2_20.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.40.33810-hcc2c482_20.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.26.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.40.33810-h3bf8584_20.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h8a93ad2_21.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.40.33810-ha82c5b3_21.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.26.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.40.33810-h3bf8584_21.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda @@ -930,18 +930,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.2.6-h8d14728_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-he1f189c_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h7606c53_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda - pypi: https://files.pythonhosted.org/packages/f5/92/8f28e56b94ef20dcf0e04ffcfa99d5b515624f4870d420d858480171238a/dags-0.2.3-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/7e/cf/5f51b43bd692e90585c0ef6e8d1b0db5d254fe0224a6570daa59a1be014f/jax-0.4.31-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c8/13/1bb2bcb4d9f4719dd5f3d98f5c2fc2235f961ced576366b040372eebdb17/jaxlib-0.4.31-cp312-cp312-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/0f/b7/7cfca987ca898b64c0b7d185e957fbd8dccb64fe5ae9e44f68ec83371df5/ml_dtypes-0.4.0-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/49/48/0e32458ab7e02d75f423fe8c2ab10d7fa1aba9b314391d2659e68891912b/jax-0.4.33-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e5/04/fc2e5c522408cd42e96ad152666e2136076983fdf7ff68a69d79e433ecec/jaxlib-0.4.33-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/00/3a/40c40b78a7eb456837817bfa2c5bc442db59aefdf21c5ecb94700037813d/ml_dtypes-0.5.0-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/38/e9/5f72929373e1a0e8d142a130f3f97e6ff920070f87f91c4e13e40e0fba5a/networkx-3.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/19/404708a7e54ad2798907210462fd950c3442ea51acc8790f3da48d2bee8b/opt_einsum-3.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/a5/a0b255295406ed54269814bc93723cfd1a0da63fb9aaf99e1364f07923e5/pandas-2.2.2-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/67/34/eab14e33d21057cde184246976552a9d18b7c64832d9764203ed719bbb2a/pdbp-1.5.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/56/fc/a3c13ded7b3057680c8ae95a9b6cc83e63657c38e0005c400a5d018a33a7/pyreadline3-3.4.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/88/49/4483a16bf846a75d5999c7a54ad16b7b87a95bca77b3b5d5497f72c4e753/tabcompleter-1.3.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/58/f9c9e6be752e9fcb8b6a0ee9fb87e6e7a1f6bcab2cdc73f02bb7ba91ada0/tzdata-2024.1-py2.py3-none-any.whl - pypi: . @@ -991,7 +991,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.3-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -1011,11 +1011,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.4.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.4.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.5.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.27.0-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 @@ -1029,7 +1029,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jupyter_core-5.7.2-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda @@ -1044,11 +1044,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-hf3520f5_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240116.2-cxx17_he02047a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-23_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-24_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-23_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-24_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp18.1-18.1.8-default_hf981a13_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-18.1.8-default_h9def88c_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda @@ -1071,12 +1071,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.62.2-h15f2491_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-23_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-24_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm18-18.1.8-h8b73ec9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.27-pthreads_hac2b453_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.18-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.43-h2797004_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-16.4-h2d7952a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-4.25.3-h08a7969_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2023.09.01-h5a48ba9_2.conda @@ -1093,12 +1093,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.39-h76b75d6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-h4ab18f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.5-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.9.2-py312h7900ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.9.2-py312h854627b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.9.2-py312h7900ff3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.9.2-py312hd3ec401_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/memory_profiler-0.61.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.4.0-py312hf9745cd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.5.0-py312hf9745cd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.11.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -1118,17 +1118,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.3.0-pyhc1e730c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pandas-stubs-2.2.2.240807-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandas-stubs-2.2.2.240909-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-10.4.0-py312h287a98d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-10.4.0-py312h56024de_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.8.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.47-pyha770c72_0.conda @@ -1140,14 +1140,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.7.2-py312hb5137db_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.7.2-py312h91f0f75_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.0-hab00c5b_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda @@ -1161,7 +1161,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.20.0-py312h12e396e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.13.0-py312hc2bc53b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-73.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-74.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda @@ -1175,22 +1175,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20240906-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-pytz-2024.1.0.20240417-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-pytz-2024.2.0.20240913-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h8827d51_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.26.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.1-hb711507_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-cursor-0.1.4-h4ab18f5_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-cursor-0.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-image-0.4.0-hb711507_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-keysyms-0.4.1-hb711507_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-renderutil-0.3.10-hb711507_0.conda @@ -1209,7 +1209,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.7.10-h4bc722e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-h4bc722e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxxf86vm-1.1.5-h4bc722e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxxf86vm-1.1.5-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-recordproto-1.14.2-h7f98852_1002.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-renderproto-0.11.1-h7f98852_1002.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xextproto-7.3.0-h0b41bf4_1003.conda @@ -1217,7 +1217,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-ha4adb4c_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-h4ab18f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda @@ -1262,7 +1262,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.53.1-py312hb553811_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.12.1-h60636b9_2.conda @@ -1272,11 +1272,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.4.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.4.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.5.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.27.0-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 @@ -1290,7 +1290,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jupyter_core-5.7.2-py312hb401068_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda @@ -1319,7 +1319,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.0.0-h0dc2134_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-22_osx64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.27-openmp_h8869122_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.43-h92b6c6a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.44-h4b8f8c9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-4.25.3-h4e4d658_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2023.09.01-h81f5012_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda @@ -1330,12 +1330,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-h87427d6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-18.1.8-h15ab845_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-2.1.5-py312hb553811_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-3.9.2-py312hb401068_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.9.2-py312h0d5aeb7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-3.9.2-py312hb401068_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.9.2-py312h30cc4df_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/memory_profiler-0.61.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ml_dtypes-0.4.0-py312h98e817e_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ml_dtypes-0.5.0-py312h98e817e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/mypy-1.11.2-py312hb553811_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -1353,15 +1353,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.3.0-pyhc1e730c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pandas-stubs-2.2.2.240807-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandas-stubs-2.2.2.240909-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-10.4.0-py312hbd70edc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-10.4.0-py312h683ea77_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.8.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.47-pyha770c72_0.conda @@ -1381,7 +1381,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312hb553811_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.2.0-py312h54d5c6a_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/qhull-2020.2-h3c5361c_5.conda @@ -1394,7 +1394,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.20.0-py312h669792a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.13.0-py312h741d2f9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-73.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-74.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda @@ -1408,15 +1408,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.1-py312hb553811_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20240906-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-pytz-2024.1.0.20240417-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-pytz-2024.2.0.20240913-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h8827d51_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.26.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda @@ -1426,7 +1426,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.6-h775f41a_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-hb33e954_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h7122b0e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda - pypi: https://files.pythonhosted.org/packages/f5/92/8f28e56b94ef20dcf0e04ffcfa99d5b515624f4870d420d858480171238a/dags-0.2.3-py3-none-any.whl @@ -1470,7 +1470,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fonttools-4.53.1-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda @@ -1480,11 +1480,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.4.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.4.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.5.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.27.0-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 @@ -1498,7 +1498,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jupyter_core-5.7.2-py312h81bd7bf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda @@ -1511,11 +1511,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240116.2-cxx17_h00cdb27_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-23_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-24_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-23_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-24_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-18.1.8-h3ed4263_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.21-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 @@ -1525,9 +1525,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.62.2-h9c18a4f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-23_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-24_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.27-openmp_h517c56d_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.43-h091b4b1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-4.25.3-hbfab5d5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2023.09.01-h7b2c953_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda @@ -1538,12 +1538,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-hfb2fe0b_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-18.1.8-hde57baf_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-2.1.5-py312h024a12e_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-3.9.2-py312h1f38498_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.9.2-py312h32d6e5a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-3.9.2-py312h1f38498_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.9.2-py312h9bd0bc6_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/memory_profiler-0.61.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ml_dtypes-0.4.0-py312hcd31e36_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ml_dtypes-0.5.0-py312hcd31e36_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mypy-1.11.2-py312h024a12e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -1561,15 +1561,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.3.0-pyhc1e730c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pandas-stubs-2.2.2.240807-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandas-stubs-2.2.2.240909-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-10.4.0-py312h39b1d8d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-10.4.0-py312h8609ca0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.8.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.47-pyha770c72_0.conda @@ -1589,7 +1589,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hc6335d2_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/qhull-2020.2-h420ef59_5.conda @@ -1602,7 +1602,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.20.0-py312he431725_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.13.0-py312h14ffa8f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-73.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-74.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda @@ -1616,15 +1616,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20240906-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-pytz-2024.1.0.20240417-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-pytz-2024.2.0.20240913-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h8827d51_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312h6142ec9_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.26.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda @@ -1634,7 +1634,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-h64debc3_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda - pypi: https://files.pythonhosted.org/packages/f5/92/8f28e56b94ef20dcf0e04ffcfa99d5b515624f4870d420d858480171238a/dags-0.2.3-py3-none-any.whl @@ -1680,7 +1680,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/expat-2.6.3-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -1700,11 +1700,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.4.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.4.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.5.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.27.0-pyh7428d3b_0.conda @@ -1717,7 +1717,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jupyter_core-5.7.2-py312h2e8e312_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda @@ -1729,11 +1729,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lcms2-2.16-h67d730c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h63175ca_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-23_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-24_win64_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlicommon-1.1.0-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlidec-1.1.0-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlienc-1.1.0-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-23_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-24_win64_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libclang13-18.1.8-default_ha5278ca_4.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.21-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.3-he0c23c2_0.conda @@ -1743,8 +1743,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-23_win64_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.43-h19919ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-24_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.44-h3ca93ac_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.46.1-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.6.0-hb151862_4.conda @@ -1759,8 +1759,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gmp-6.1.0-2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-libwinpthread-git-5.0.0.4634.697f757-2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-2.1.5-py312h4389bb4_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-3.9.2-py312h2e8e312_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.9.2-py312h90004f6_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-3.9.2-py312h2e8e312_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.9.2-py312h90004f6_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/memory_profiler-0.61.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda @@ -1780,16 +1780,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.3.2-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pandas-stubs-2.2.2.240807-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandas-stubs-2.2.2.240909-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/pillow-10.4.0-py312h381445a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pillow-10.4.0-py312h381445a_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.43.4-h63175ca_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.8.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.47-pyha770c72_0.conda @@ -1801,14 +1801,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyside6-6.7.2-py312h2ee7485_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyside6-6.7.2-py312h2ee7485_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh0701188_6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.0-h2628c8c_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-306-py312h53d5487_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.13-py312h275cf98_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h4389bb4_1.conda @@ -1822,7 +1822,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.20.0-py312h2615798_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/scipy-1.13.0-py312h1f4e10d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-73.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-74.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda @@ -1837,7 +1837,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.1-py312h4389bb4_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20240906-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-pytz-2024.1.0.20240417-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-pytz-2024.2.0.20240913-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 @@ -1845,11 +1845,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312hd5eb7cc_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h8a93ad2_20.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.40.33810-hcc2c482_20.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.26.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.40.33810-h3bf8584_20.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h8a93ad2_21.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.40.33810-ha82c5b3_21.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.26.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.40.33810-h3bf8584_21.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda @@ -1861,19 +1861,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.2.6-h8d14728_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-he1f189c_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h7606c53_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda - pypi: https://files.pythonhosted.org/packages/f5/92/8f28e56b94ef20dcf0e04ffcfa99d5b515624f4870d420d858480171238a/dags-0.2.3-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/7e/cf/5f51b43bd692e90585c0ef6e8d1b0db5d254fe0224a6570daa59a1be014f/jax-0.4.31-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c8/13/1bb2bcb4d9f4719dd5f3d98f5c2fc2235f961ced576366b040372eebdb17/jaxlib-0.4.31-cp312-cp312-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/0f/b7/7cfca987ca898b64c0b7d185e957fbd8dccb64fe5ae9e44f68ec83371df5/ml_dtypes-0.4.0-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/49/48/0e32458ab7e02d75f423fe8c2ab10d7fa1aba9b314391d2659e68891912b/jax-0.4.33-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e5/04/fc2e5c522408cd42e96ad152666e2136076983fdf7ff68a69d79e433ecec/jaxlib-0.4.33-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/00/3a/40c40b78a7eb456837817bfa2c5bc442db59aefdf21c5ecb94700037813d/ml_dtypes-0.5.0-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/38/e9/5f72929373e1a0e8d142a130f3f97e6ff920070f87f91c4e13e40e0fba5a/networkx-3.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/19/404708a7e54ad2798907210462fd950c3442ea51acc8790f3da48d2bee8b/opt_einsum-3.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/a5/a0b255295406ed54269814bc93723cfd1a0da63fb9aaf99e1364f07923e5/pandas-2.2.2-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/67/34/eab14e33d21057cde184246976552a9d18b7c64832d9764203ed719bbb2a/pdbp-1.5.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/56/fc/a3c13ded7b3057680c8ae95a9b6cc83e63657c38e0005c400a5d018a33a7/pyreadline3-3.4.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/88/49/4483a16bf846a75d5999c7a54ad16b7b87a95bca77b3b5d5497f72c4e753/tabcompleter-1.3.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/58/f9c9e6be752e9fcb8b6a0ee9fb87e6e7a1f6bcab2cdc73f02bb7ba91ada0/tzdata-2024.1-py2.py3-none-any.whl - pypi: . @@ -1917,7 +1917,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 @@ -1925,11 +1925,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.4.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.4.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.5.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.27.0-pyh707e725_0.conda @@ -1944,7 +1944,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jupyter_core-5.7.2-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda @@ -1956,8 +1956,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-hf3520f5_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240116.2-cxx17_he02047a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-23_linux64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-23_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-24_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-24_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.3-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 @@ -1968,7 +1968,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.1.0-hc5f4f2c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.1.0-h77fa898_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.62.2-h15f2491_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-23_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-24_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.27-pthreads_hac2b453_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-4.25.3-h08a7969_0.conda @@ -1983,7 +1983,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/memory_profiler-0.61.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.4.0-py312hf9745cd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.5.0-py312hf9745cd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda @@ -2002,8 +2002,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.8.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.20.0-pyhd8ed1ab_0.conda @@ -2015,7 +2015,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-5.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.0-hab00c5b_0_cpython.conda @@ -2023,7 +2023,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2023.09.01-h7f4b329_2.conda @@ -2035,7 +2035,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.20.0-py312h12e396e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.13.0-py312hc2bc53b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-73.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-74.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda @@ -2056,8 +2056,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h8827d51_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.26.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda @@ -2065,7 +2065,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-ha4adb4c_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda - pypi: https://files.pythonhosted.org/packages/f5/92/8f28e56b94ef20dcf0e04ffcfa99d5b515624f4870d420d858480171238a/dags-0.2.3-py3-none-any.whl @@ -2108,7 +2108,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 @@ -2116,11 +2116,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.4.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.4.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.5.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.27.0-pyh707e725_0.conda @@ -2135,7 +2135,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jupyter_core-5.7.2-py312hb401068_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda @@ -2166,7 +2166,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/memory_profiler-0.61.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ml_dtypes-0.4.0-py312h98e817e_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ml_dtypes-0.5.0-py312h98e817e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda @@ -2185,8 +2185,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.8.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.20.0-pyhd8ed1ab_0.conda @@ -2200,7 +2200,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-10.3.1-py312hab44e94_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-10.3.1-py312hab44e94_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-5.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.0-h30d4d87_0_cpython.conda @@ -2208,7 +2208,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312hb553811_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.2.0-py312h54d5c6a_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/re2-2023.09.01-hb168e87_2.conda @@ -2220,7 +2220,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.20.0-py312h669792a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.13.0-py312h741d2f9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-73.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-74.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda @@ -2241,8 +2241,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h8827d51_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.26.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda @@ -2250,7 +2250,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.6-h775f41a_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-hb33e954_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h7122b0e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda - pypi: https://files.pythonhosted.org/packages/f5/92/8f28e56b94ef20dcf0e04ffcfa99d5b515624f4870d420d858480171238a/dags-0.2.3-py3-none-any.whl @@ -2293,7 +2293,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 @@ -2301,11 +2301,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.4.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.4.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.5.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.27.0-pyh707e725_0.conda @@ -2320,7 +2320,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jupyter_core-5.7.2-py312h81bd7bf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda @@ -2330,8 +2330,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240116.2-cxx17_h00cdb27_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-23_osxarm64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-23_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-24_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-24_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-18.1.8-h3ed4263_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.3-hf9b8971_0.conda @@ -2339,7 +2339,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.62.2-h9c18a4f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-23_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-24_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.27-openmp_h517c56d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-4.25.3-hbfab5d5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2023.09.01-h7b2c953_2.conda @@ -2351,7 +2351,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/memory_profiler-0.61.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ml_dtypes-0.4.0-py312hcd31e36_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ml_dtypes-0.5.0-py312hcd31e36_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda @@ -2370,8 +2370,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.8.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.20.0-pyhd8ed1ab_0.conda @@ -2385,7 +2385,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.1-py312hd24fc31_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.3.1-py312hd24fc31_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-5.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.0-h47c9636_0_cpython.conda @@ -2393,7 +2393,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hc6335d2_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2023.09.01-h4cba328_2.conda @@ -2405,7 +2405,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.20.0-py312he431725_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.13.0-py312h14ffa8f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-73.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-74.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda @@ -2426,8 +2426,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h8827d51_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312h6142ec9_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.26.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda @@ -2435,7 +2435,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-h64debc3_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda - pypi: https://files.pythonhosted.org/packages/f5/92/8f28e56b94ef20dcf0e04ffcfa99d5b515624f4870d420d858480171238a/dags-0.2.3-py3-none-any.whl @@ -2476,7 +2476,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 @@ -2484,11 +2484,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.4.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.4.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.5.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda @@ -2502,7 +2502,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jupyter_core-5.7.2-py312h2e8e312_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda @@ -2511,13 +2511,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-23_win64_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-23_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-24_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-24_win64_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.3-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.1-default_h8125262_1000.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-23_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-24_win64_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.46.1-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.12.7-h0f24e4e_4.conda @@ -2541,8 +2541,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.8.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.20.0-pyhd8ed1ab_0.conda @@ -2554,7 +2554,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh0701188_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-5.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.0-h2628c8c_0_cpython.conda @@ -2562,7 +2562,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-306-py312h53d5487_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.13-py312h275cf98_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h4389bb4_1.conda @@ -2574,7 +2574,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.20.0-py312h2615798_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/scipy-1.13.0-py312h1f4e10d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-73.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-74.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda @@ -2597,11 +2597,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312hd5eb7cc_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h8a93ad2_20.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.40.33810-hcc2c482_20.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.26.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.40.33810-h3bf8584_20.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h8a93ad2_21.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.40.33810-ha82c5b3_21.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.26.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.40.33810-h3bf8584_21.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda @@ -2611,18 +2611,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.2.6-h8d14728_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-he1f189c_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h7606c53_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda - pypi: https://files.pythonhosted.org/packages/f5/92/8f28e56b94ef20dcf0e04ffcfa99d5b515624f4870d420d858480171238a/dags-0.2.3-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/7e/cf/5f51b43bd692e90585c0ef6e8d1b0db5d254fe0224a6570daa59a1be014f/jax-0.4.31-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c8/13/1bb2bcb4d9f4719dd5f3d98f5c2fc2235f961ced576366b040372eebdb17/jaxlib-0.4.31-cp312-cp312-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/0f/b7/7cfca987ca898b64c0b7d185e957fbd8dccb64fe5ae9e44f68ec83371df5/ml_dtypes-0.4.0-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/49/48/0e32458ab7e02d75f423fe8c2ab10d7fa1aba9b314391d2659e68891912b/jax-0.4.33-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e5/04/fc2e5c522408cd42e96ad152666e2136076983fdf7ff68a69d79e433ecec/jaxlib-0.4.33-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/00/3a/40c40b78a7eb456837817bfa2c5bc442db59aefdf21c5ecb94700037813d/ml_dtypes-0.5.0-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/38/e9/5f72929373e1a0e8d142a130f3f97e6ff920070f87f91c4e13e40e0fba5a/networkx-3.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/19/404708a7e54ad2798907210462fd950c3442ea51acc8790f3da48d2bee8b/opt_einsum-3.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/22/a5/a0b255295406ed54269814bc93723cfd1a0da63fb9aaf99e1364f07923e5/pandas-2.2.2-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/67/34/eab14e33d21057cde184246976552a9d18b7c64832d9764203ed719bbb2a/pdbp-1.5.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/56/fc/a3c13ded7b3057680c8ae95a9b6cc83e63657c38e0005c400a5d018a33a7/pyreadline3-3.4.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/88/49/4483a16bf846a75d5999c7a54ad16b7b87a95bca77b3b5d5497f72c4e753/tabcompleter-1.3.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/58/f9c9e6be752e9fcb8b6a0ee9fb87e6e7a1f6bcab2cdc73f02bb7ba91ada0/tzdata-2024.1-py2.py3-none-any.whl - pypi: . @@ -2646,7 +2646,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.40-ha1999f0_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.40-hb3c18ed_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.40-hb3c18ed_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda @@ -2692,23 +2692,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-13.3.0-hfea6d02_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-13.3.0-hc28eda2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-13.3.0-hc28eda2_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-13.3.0-hdbfa832_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-13.3.0-h6834431_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-13.3.0-h6834431_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.4.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.4.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.5.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.27.0-pyh707e725_0.conda @@ -2723,7 +2723,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jupyter_core-5.7.2-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda @@ -2736,8 +2736,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-hf3520f5_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240116.2-cxx17_he02047a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-23_linux64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-23_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-24_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-24_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.6.1.4-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.2.6.59-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.7.68-h5888daf_0.conda @@ -2754,7 +2754,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.1.0-hc5f4f2c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.1.0-h77fa898_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.62.2-h15f2491_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-23_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-24_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.6.68-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.27-pthreads_hac2b453_1.conda @@ -2772,7 +2772,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/memory_profiler-0.61.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.4.0-py312hf9745cd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.5.0-py312hf9745cd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda @@ -2792,8 +2792,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.8.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.20.0-pyhd8ed1ab_0.conda @@ -2805,7 +2805,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-5.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.0-hab00c5b_0_cpython.conda @@ -2813,7 +2813,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2023.09.01-h7f4b329_2.conda @@ -2825,7 +2825,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.20.0-py312h12e396e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.13.0-py312hc2bc53b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-73.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-74.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda @@ -2847,8 +2847,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h8827d51_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.26.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda @@ -2856,7 +2856,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-ha4adb4c_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda - pypi: https://files.pythonhosted.org/packages/f5/92/8f28e56b94ef20dcf0e04ffcfa99d5b515624f4870d420d858480171238a/dags-0.2.3-py3-none-any.whl @@ -3203,19 +3203,20 @@ packages: - kind: conda name: binutils_linux-64 version: '2.40' - build: hb3c18ed_2 - build_number: 2 + build: hb3c18ed_3 + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.40-hb3c18ed_2.conda - sha256: cd45bfcc9baaf3e38a753dabe3bbb9d7c3fb7c0cc18d919130687e4cbb39c9ac - md5: e8255f2cf0772d7cde80d40c26028f53 + url: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.40-hb3c18ed_3.conda + sha256: 5bc2f56de9144c857980baff9815fdd258e163aab3864babea523bed3eebd016 + md5: 0b71bae00509f31931ebb407626352aa depends: - binutils_impl_linux-64 2.40.* - sysroot_linux-64 license: BSD-3-Clause + license_family: BSD purls: [] - size: 29699 - timestamp: 1725663716797 + size: 29049 + timestamp: 1717992426736 - kind: conda name: bleach version: 6.1.0 @@ -3768,6 +3769,7 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: MIT + license_family: MIT purls: - pkg:pypi/cffi?source=hash-mapping size: 294403 @@ -3788,6 +3790,7 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: MIT + license_family: MIT purls: - pkg:pypi/cffi?source=hash-mapping size: 281206 @@ -3808,6 +3811,7 @@ packages: - vc >=14.2,<15 - vc14_runtime >=14.29.30139 license: MIT + license_family: MIT purls: - pkg:pypi/cffi?source=hash-mapping size: 288142 @@ -3827,6 +3831,7 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: MIT + license_family: MIT purls: - pkg:pypi/cffi?source=hash-mapping size: 282425 @@ -4784,20 +4789,20 @@ packages: timestamp: 1725569133557 - kind: conda name: filelock - version: 3.16.0 + version: 3.16.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.0-pyhd8ed1ab_0.conda - sha256: f55c9af3d92a363fa9e4f164038db85a028befb65d56df0b2cb34911eba8a37a - md5: ec288789b07ae3be555046e099798a56 + url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + sha256: 1da766da9dba05091af87977922fe60dc7464091a9ccffb3765d403189d39be4 + md5: 916f8ec5dd4128cd5f207a3c4c07b2c6 depends: - python >=3.7 license: Unlicense purls: - pkg:pypi/filelock?source=hash-mapping - size: 17402 - timestamp: 1725740654220 + size: 17357 + timestamp: 1726613593584 - kind: conda name: font-ttf-dejavu-sans-mono version: '2.37' @@ -5129,20 +5134,21 @@ packages: - kind: conda name: gcc_linux-64 version: 13.3.0 - build: hc28eda2_2 - build_number: 2 + build: hc28eda2_3 + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-13.3.0-hc28eda2_2.conda - sha256: 92066334371cdf7213fcd9920679548d2a74e35c7fb99f36320bee0af382854e - md5: fc9381129eccc8eb9ccac7dc5bdff487 + url: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-13.3.0-hc28eda2_3.conda + sha256: 5bbbb55df3820d0fc7d4a2c36cb1e3260f82a9f6eec51f9db70109385ef342b9 + md5: b020646579fecec169fa52f129fcbf7b depends: - - binutils_linux-64 2.40 hb3c18ed_2 + - binutils_linux-64 2.40 hb3c18ed_3 - gcc_impl_linux-64 13.3.0.* - sysroot_linux-64 license: BSD-3-Clause + license_family: BSD purls: [] - size: 31975 - timestamp: 1725664109968 + size: 32121 + timestamp: 1726699128224 - kind: conda name: graphite2 version: 1.3.13 @@ -5200,21 +5206,22 @@ packages: - kind: conda name: gxx_linux-64 version: 13.3.0 - build: h6834431_2 - build_number: 2 + build: h6834431_3 + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-13.3.0-h6834431_2.conda - sha256: c7068865cf3ad48bdbed352bf114400da27b7f29df4cb77b501235809d8762b7 - md5: b2d6c882e578b90802f9bf6ea0b13593 + url: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-13.3.0-h6834431_3.conda + sha256: f4ac9e291e956c4e0bbbc741632ade650bda79502f5ec27c953cf14c4e88d1a3 + md5: 5686df66767045ae507cd035c818bcad depends: - - binutils_linux-64 2.40 hb3c18ed_2 - - gcc_linux-64 13.3.0 hc28eda2_2 + - binutils_linux-64 2.40 hb3c18ed_3 + - gcc_linux-64 13.3.0 hc28eda2_3 - gxx_impl_linux-64 13.3.0.* - sysroot_linux-64 license: BSD-3-Clause + license_family: BSD purls: [] - size: 30309 - timestamp: 1725664127525 + size: 30441 + timestamp: 1726699145407 - kind: conda name: h11 version: 0.14.0 @@ -5412,13 +5419,13 @@ packages: timestamp: 1720853966338 - kind: conda name: identify - version: 2.6.0 + version: 2.6.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.0-pyhd8ed1ab_0.conda - sha256: 4a2889027df94d51be283536ac235feba77eaa42a0d051f65cd07ba824b324a6 - md5: f80cc5989f445f23b1622d6c455896d9 + url: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.1-pyhd8ed1ab_0.conda + sha256: dc752392f327e64e32bc3122758b2d8951aec9d6e6aa888463c73d18a10e3c56 + md5: 43f629202f9eec21be5f71171fb5daf8 depends: - python >=3.6 - ukkonen @@ -5426,34 +5433,34 @@ packages: license_family: MIT purls: - pkg:pypi/identify?source=hash-mapping - size: 78197 - timestamp: 1720413864262 + size: 78078 + timestamp: 1726369674008 - kind: conda name: idna - version: '3.8' + version: '3.10' build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/idna-3.8-pyhd8ed1ab_0.conda - sha256: 8660d38b272d3713ec8ac5ae918bc3bc80e1b81e1a7d61df554bded71ada6110 - md5: 99e164522f6bdf23c177c8d9ae63f975 + url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + sha256: 8c57fd68e6be5eecba4462e983aed7e85761a519aab80e834bbd7794d4b545b2 + md5: 7ba2ede0e7c795ff95088daf0dc59753 depends: - python >=3.6 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/idna?source=hash-mapping - size: 49275 - timestamp: 1724450633325 + size: 49837 + timestamp: 1726459583613 - kind: conda name: importlib-metadata - version: 8.4.0 + version: 8.5.0 build: pyha770c72_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.4.0-pyha770c72_0.conda - sha256: 02c95f6f62675012e0b2ab945eba6fc14fa6a693c17bced3554db7b62d586f0c - md5: 6e3dbc422d3749ad72659243d6ac8b2b + url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda + sha256: 7194700ce1a5ad2621fd68e894dd8c1ceaff9a38723e6e0e5298fdef13017b1c + md5: 54198435fce4d64d8a89af22573012a8 depends: - python >=3.8 - zipp >=0.5 @@ -5461,44 +5468,44 @@ packages: license_family: APACHE purls: - pkg:pypi/importlib-metadata?source=hash-mapping - size: 28338 - timestamp: 1724187329246 + size: 28646 + timestamp: 1726082927916 - kind: conda name: importlib_metadata - version: 8.4.0 + version: 8.5.0 build: hd8ed1ab_0 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.4.0-hd8ed1ab_0.conda - sha256: c9c782fdf59fb169220b69ea0bbefc3fdc7f58c9fdbdf2d6ff734aa033647b59 - md5: 01b7411c765c3d863dcc920207f258bd + url: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.5.0-hd8ed1ab_0.conda + sha256: 313b8a05211bacd6b15ab2621cb73d7f41ea5c6cae98db53367d47833f03fef1 + md5: 2a92e152208121afadf85a5e1f3a5f4d depends: - - importlib-metadata >=8.4.0,<8.4.1.0a0 + - importlib-metadata >=8.5.0,<8.5.1.0a0 license: Apache-2.0 license_family: APACHE purls: [] - size: 9292 - timestamp: 1724187331653 + size: 9385 + timestamp: 1726082930346 - kind: conda name: importlib_resources - version: 6.4.4 + version: 6.4.5 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.4-pyhd8ed1ab_0.conda - sha256: 13e277624eaef453af3ff4d925ba1169376baa7008eabd8eaae7c5772bec9fc2 - md5: 99aa3edd3f452d61c305a30e78140513 + url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda + sha256: 2cb9db3e40033c3df72d3defc678a012840378fd55a67e4351363d4b321a0dc1 + md5: c808991d29b9838fb4d96ce8267ec9ec depends: - python >=3.8 - zipp >=3.1.0 constrains: - - importlib-resources >=6.4.4,<6.4.5.0a0 + - importlib-resources >=6.4.5,<6.4.6.0a0 license: Apache-2.0 license_family: APACHE purls: - pkg:pypi/importlib-resources?source=hash-mapping - size: 32258 - timestamp: 1724314749050 + size: 32725 + timestamp: 1725921462405 - kind: conda name: iniconfig version: 2.0.0 @@ -5699,29 +5706,29 @@ packages: timestamp: 1638811664194 - kind: pypi name: jax - version: 0.4.31 - url: https://files.pythonhosted.org/packages/7e/cf/5f51b43bd692e90585c0ef6e8d1b0db5d254fe0224a6570daa59a1be014f/jax-0.4.31-py3-none-any.whl - sha256: 5688703735133d0dc537e99a1d646198a49c9d472d4715fde4bd437c44151bd7 + version: 0.4.33 + url: https://files.pythonhosted.org/packages/49/48/0e32458ab7e02d75f423fe8c2ab10d7fa1aba9b314391d2659e68891912b/jax-0.4.33-py3-none-any.whl + sha256: 5f33e30b49060ebc990b1f8d75f89d15b9fec263f6fff34ef1af1d01996d314f requires_dist: - - jaxlib<=0.4.31,>=0.4.30 + - jaxlib<=0.4.33,>=0.4.33 - ml-dtypes>=0.2.0 - numpy>=1.24 - opt-einsum - scipy>=1.10 - numpy>=1.26.0 ; python_full_version >= '3.12' - scipy>=1.11.1 ; python_full_version >= '3.12' - - jaxlib==0.4.30 ; extra == 'ci' - - jaxlib==0.4.31 ; extra == 'cuda' - - jax-cuda12-plugin[with-cuda]<=0.4.31,>=0.4.31 ; extra == 'cuda' - - jaxlib==0.4.31 ; extra == 'cuda12' - - jax-cuda12-plugin[with-cuda]<=0.4.31,>=0.4.31 ; extra == 'cuda12' - - jaxlib==0.4.31 ; extra == 'cuda12-local' - - jax-cuda12-plugin==0.4.31 ; extra == 'cuda12-local' - - jaxlib==0.4.31 ; extra == 'cuda12-pip' - - jax-cuda12-plugin[with-cuda]<=0.4.31,>=0.4.31 ; extra == 'cuda12-pip' - - jaxlib==0.4.30 ; extra == 'minimum-jaxlib' - - jaxlib<=0.4.31,>=0.4.31 ; extra == 'tpu' - - libtpu-nightly==0.1.dev20240729 ; extra == 'tpu' + - jaxlib==0.4.31 ; extra == 'ci' + - jaxlib==0.4.33 ; extra == 'cuda' + - jax-cuda12-plugin[with-cuda]<=0.4.33,>=0.4.33 ; extra == 'cuda' + - jaxlib==0.4.33 ; extra == 'cuda12' + - jax-cuda12-plugin[with-cuda]<=0.4.33,>=0.4.33 ; extra == 'cuda12' + - jaxlib==0.4.33 ; extra == 'cuda12-local' + - jax-cuda12-plugin==0.4.33 ; extra == 'cuda12-local' + - jaxlib==0.4.33 ; extra == 'cuda12-pip' + - jax-cuda12-plugin[with-cuda]<=0.4.33,>=0.4.33 ; extra == 'cuda12-pip' + - jaxlib==0.4.33 ; extra == 'minimum-jaxlib' + - jaxlib<=0.4.33,>=0.4.33 ; extra == 'tpu' + - libtpu-nightly==0.1.dev20240916 ; extra == 'tpu' - requests ; extra == 'tpu' requires_python: '>=3.10' - kind: conda @@ -5752,9 +5759,9 @@ packages: timestamp: 1725068486559 - kind: pypi name: jaxlib - version: 0.4.31 - url: https://files.pythonhosted.org/packages/c8/13/1bb2bcb4d9f4719dd5f3d98f5c2fc2235f961ced576366b040372eebdb17/jaxlib-0.4.31-cp312-cp312-win_amd64.whl - sha256: c4bfd15315e30525514b7262d555bea00745b09ac9818bb14c20ef8afbbab072 + version: 0.4.33 + url: https://files.pythonhosted.org/packages/e5/04/fc2e5c522408cd42e96ad152666e2136076983fdf7ff68a69d79e433ecec/jaxlib-0.4.33-cp312-cp312-win_amd64.whl + sha256: 94e8d7bdd0506e1471d36d5da1e5838711fbd2ce18dffe7b694cad6b56e64e8c requires_dist: - scipy>=1.10 - numpy>=1.24 @@ -6111,15 +6118,15 @@ packages: timestamp: 1712707521811 - kind: conda name: jupyter_client - version: 8.6.2 + version: 8.6.3 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.2-pyhd8ed1ab_0.conda - sha256: 634f065cdd1d0aacd4bb6848ebf240dcebc8578135d65f4ad4aa42b2276c4e0c - md5: 3cdbb2fa84490e5fd44c9f9806c0d292 + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + sha256: 4419c85e209a715f551a5c9bead746f29ee9d0fc41e772a76db3868622795671 + md5: a14218cfb29662b4a19ceb04e93e298e depends: - - importlib_metadata >=4.8.3 + - importlib-metadata >=4.8.3 - jupyter_core >=4.12,!=5.0.* - python >=3.8 - python-dateutil >=2.8.2 @@ -6130,8 +6137,8 @@ packages: license_family: BSD purls: - pkg:pypi/jupyter-client?source=hash-mapping - size: 106248 - timestamp: 1716472312833 + size: 106055 + timestamp: 1726610805505 - kind: conda name: jupyter_core version: 5.7.2 @@ -6558,9 +6565,9 @@ packages: timestamp: 1719463874284 - kind: pypi name: lcm - version: 0.1.dev211+gfac3512.d20240910 + version: 0.1.dev198+g4d30bf4.d20240919 path: . - sha256: 6edd1a35b1f9290af306d0c565136780350aadfa640574da2453323dd387eab4 + sha256: 3ff649b24f64bccca99ca58aea8a62afa187048e0aade786d788772286f9325f requires_dist: - dags - numpy @@ -6799,68 +6806,68 @@ packages: - kind: conda name: libblas version: 3.9.0 - build: 23_linux64_openblas - build_number: 23 + build: 24_linux64_openblas + build_number: 24 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-23_linux64_openblas.conda - sha256: edb1cee5da3ac4936940052dcab6969673ba3874564f90f5110f8c11eed789c2 - md5: 96c8450a40aa2b9733073a9460de972c + url: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-24_linux64_openblas.conda + sha256: 3097f7913bda527d4fe9f824182b314e130044e582455037fca6f4e97965d83c + md5: 80aea6603a6813b16ec119d00382b772 depends: - libopenblas >=0.3.27,<0.3.28.0a0 - libopenblas >=0.3.27,<1.0a0 constrains: - - liblapacke 3.9.0 23_linux64_openblas - - libcblas 3.9.0 23_linux64_openblas - - liblapack 3.9.0 23_linux64_openblas - blas * openblas + - liblapack 3.9.0 24_linux64_openblas + - libcblas 3.9.0 24_linux64_openblas + - liblapacke 3.9.0 24_linux64_openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 14880 - timestamp: 1721688759937 + size: 14981 + timestamp: 1726668454790 - kind: conda name: libblas version: 3.9.0 - build: 23_osxarm64_openblas - build_number: 23 + build: 24_osxarm64_openblas + build_number: 24 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-23_osxarm64_openblas.conda - sha256: 1c30da861e306a25fac8cd30ce0c1b31c9238d04e7768c381cf4d431b4361e6c - md5: acae9191e8772f5aff48ab5232d4d2a3 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-24_osxarm64_openblas.conda + sha256: 4739f7463efb12e6d71536d8b0285a8de5aaadcc442bfedb9d92d1b4cbc47847 + md5: 35cb711e7bc46ee5f3dd67af99ad1986 depends: - libopenblas >=0.3.27,<0.3.28.0a0 - libopenblas >=0.3.27,<1.0a0 constrains: - - liblapack 3.9.0 23_osxarm64_openblas + - liblapack 3.9.0 24_osxarm64_openblas - blas * openblas - - liblapacke 3.9.0 23_osxarm64_openblas - - libcblas 3.9.0 23_osxarm64_openblas + - liblapacke 3.9.0 24_osxarm64_openblas + - libcblas 3.9.0 24_osxarm64_openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 15103 - timestamp: 1721688997980 + size: 15144 + timestamp: 1726668802976 - kind: conda name: libblas version: 3.9.0 - build: 23_win64_mkl - build_number: 23 + build: 24_win64_mkl + build_number: 24 subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-23_win64_mkl.conda - sha256: fd52eb0ec4d0ca5727317dd608c41dacc8ccfc7e21d943b7aafbbf10ae28c97c - md5: 693407a31c27e70c750b5ae153251d9a + url: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-24_win64_mkl.conda + sha256: 8b4cd602ae089d8c5832054ead452d6a1820c8f9c3b190faf3e867f5939810e2 + md5: ea127210707251a33116b437c22b8dad depends: - mkl 2024.1.0 h66d3029_694 constrains: - blas * mkl - - liblapack 3.9.0 23_win64_mkl - - libcblas 3.9.0 23_win64_mkl - - liblapacke 3.9.0 23_win64_mkl + - liblapack 3.9.0 24_win64_mkl + - libcblas 3.9.0 24_win64_mkl + - liblapacke 3.9.0 24_win64_mkl license: BSD-3-Clause license_family: BSD purls: [] - size: 5192100 - timestamp: 1721689573083 + size: 5183540 + timestamp: 1726669397923 - kind: conda name: libbrotlicommon version: 1.1.0 @@ -7093,63 +7100,63 @@ packages: - kind: conda name: libcblas version: 3.9.0 - build: 23_linux64_openblas - build_number: 23 + build: 24_linux64_openblas + build_number: 24 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-23_linux64_openblas.conda - sha256: 3e7a3236e7e03e308e1667d91d0aa70edd0cba96b4b5563ef4adde088e0881a5 - md5: eede29b40efa878cbe5bdcb767e97310 + url: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-24_linux64_openblas.conda + sha256: 2a52bccc5b03cdf014d856d0b85dbd591faa335ab337d620cd6aded121d7153c + md5: f5b8822297c9c790cec0795ca1fc9be6 depends: - - libblas 3.9.0 23_linux64_openblas + - libblas 3.9.0 24_linux64_openblas constrains: - - liblapacke 3.9.0 23_linux64_openblas - - liblapack 3.9.0 23_linux64_openblas - blas * openblas + - liblapack 3.9.0 24_linux64_openblas + - liblapacke 3.9.0 24_linux64_openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 14798 - timestamp: 1721688767584 + size: 14910 + timestamp: 1726668461033 - kind: conda name: libcblas version: 3.9.0 - build: 23_osxarm64_openblas - build_number: 23 + build: 24_osxarm64_openblas + build_number: 24 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-23_osxarm64_openblas.conda - sha256: c39d944909d0608bd0333398be5e0051045c9451bfd6cc6320732d33375569c8 - md5: bad6ee9b7d5584efc2bc5266137b5f0d + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-24_osxarm64_openblas.conda + sha256: 40dc3f7c44af5cd5a2020386cb30f92943a9d8f7f54321b4d6ae32b2e54af9a4 + md5: c8977086a19233153e454bb2b332a920 depends: - - libblas 3.9.0 23_osxarm64_openblas + - libblas 3.9.0 24_osxarm64_openblas constrains: - - liblapack 3.9.0 23_osxarm64_openblas - - liblapacke 3.9.0 23_osxarm64_openblas + - liblapack 3.9.0 24_osxarm64_openblas - blas * openblas + - liblapacke 3.9.0 24_osxarm64_openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 14991 - timestamp: 1721689017803 + size: 15062 + timestamp: 1726668809379 - kind: conda name: libcblas version: 3.9.0 - build: 23_win64_mkl - build_number: 23 + build: 24_win64_mkl + build_number: 24 subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-23_win64_mkl.conda - sha256: 80b471a22affadc322006399209e1d12eb4ab4e3125ed6d01b4031e09de16753 - md5: 7ffb5b336cefd2e6d1e00ac1f7c9f2c9 + url: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-24_win64_mkl.conda + sha256: 297e858e9a2e6c4d9846fc101607ad31b778d8bde8591f9207e72d728a9f00a7 + md5: a42c7390d3249698c0ffb6040e9396e7 depends: - - libblas 3.9.0 23_win64_mkl + - libblas 3.9.0 24_win64_mkl constrains: - blas * mkl - - liblapack 3.9.0 23_win64_mkl - - liblapacke 3.9.0 23_win64_mkl + - liblapack 3.9.0 24_win64_mkl + - liblapacke 3.9.0 24_win64_mkl license: BSD-3-Clause license_family: BSD purls: [] - size: 5191981 - timestamp: 1721689628480 + size: 5174668 + timestamp: 1726669449378 - kind: conda name: libclang-cpp18.1 version: 18.1.8 @@ -8139,63 +8146,63 @@ packages: - kind: conda name: liblapack version: 3.9.0 - build: 23_linux64_openblas - build_number: 23 + build: 24_linux64_openblas + build_number: 24 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-23_linux64_openblas.conda - sha256: 25c7aef86c8a1d9db0e8ee61aa7462ba3b46b482027a65d66eb83e3e6f949043 - md5: 2af0879961951987e464722fd00ec1e0 + url: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-24_linux64_openblas.conda + sha256: a15da20c3c0fb5f356e5b4e2f1e87b0da11b9a46805a7f2609bf30f23453831a + md5: fd540578678aefe025705f4b58b36b2e depends: - - libblas 3.9.0 23_linux64_openblas + - libblas 3.9.0 24_linux64_openblas constrains: - - liblapacke 3.9.0 23_linux64_openblas - - libcblas 3.9.0 23_linux64_openblas - blas * openblas + - libcblas 3.9.0 24_linux64_openblas + - liblapacke 3.9.0 24_linux64_openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 14823 - timestamp: 1721688775172 + size: 14911 + timestamp: 1726668467187 - kind: conda name: liblapack version: 3.9.0 - build: 23_osxarm64_openblas - build_number: 23 + build: 24_osxarm64_openblas + build_number: 24 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-23_osxarm64_openblas.conda - sha256: 13799a137ffc80786725e7e2820d37d4c0d59dbb76013a14c21771415b0a4263 - md5: 754ef44f72ab80fd14eaa789ac393a27 + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-24_osxarm64_openblas.conda + sha256: 67fbfd0466eee443cda9596ed22daabedc96b7b4d1b31f49b1c1b0983dd1dd2c + md5: 49a3241f76cdbe705e346204a328f66c depends: - - libblas 3.9.0 23_osxarm64_openblas + - libblas 3.9.0 24_osxarm64_openblas constrains: - blas * openblas - - liblapacke 3.9.0 23_osxarm64_openblas - - libcblas 3.9.0 23_osxarm64_openblas + - liblapacke 3.9.0 24_osxarm64_openblas + - libcblas 3.9.0 24_osxarm64_openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 14999 - timestamp: 1721689026268 + size: 15063 + timestamp: 1726668815824 - kind: conda name: liblapack version: 3.9.0 - build: 23_win64_mkl - build_number: 23 + build: 24_win64_mkl + build_number: 24 subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-23_win64_mkl.conda - sha256: 4f4738602d26935f4d4b0154fb23d48c276c87413c3a5e05274809abfcbe1273 - md5: 3580796ab7b7d68143f45d4d94d866b7 + url: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-24_win64_mkl.conda + sha256: 37dfa34e4c37c7bbb20df61e5badbf42d01e75e687c20be72ab13f80be99ceb9 + md5: c69b7b6756a8d58cc8cf17081fffdc5c depends: - - libblas 3.9.0 23_win64_mkl + - libblas 3.9.0 24_win64_mkl constrains: - blas * mkl - - libcblas 3.9.0 23_win64_mkl - - liblapacke 3.9.0 23_win64_mkl + - libcblas 3.9.0 24_win64_mkl + - liblapacke 3.9.0 24_win64_mkl license: BSD-3-Clause license_family: BSD purls: [] - size: 5191980 - timestamp: 1721689666180 + size: 5183452 + timestamp: 1726669499566 - kind: conda name: libllvm18 version: 18.1.8 @@ -8328,64 +8335,67 @@ packages: timestamp: 1707101388552 - kind: conda name: libpng - version: 1.6.43 - build: h091b4b1_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.43-h091b4b1_0.conda - sha256: 66c4713b07408398f2221229a1c1d5df57d65dc0902258113f2d9ecac4772495 - md5: 77e684ca58d82cae9deebafb95b1a2b8 + version: 1.6.44 + build: h3ca93ac_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.44-h3ca93ac_0.conda + sha256: 0d3d6ff9225f6918ac225e3839c0d91e5af1da08a4ebf59cac1bfd86018db945 + md5: 639ac6b55a40aa5de7b8c1b4d78f9e81 depends: - - libzlib >=1.2.13,<2.0.0a0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 license: zlib-acknowledgement purls: [] - size: 264177 - timestamp: 1708780447187 + size: 348933 + timestamp: 1726235196095 - kind: conda name: libpng - version: 1.6.43 - build: h19919ed_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.43-h19919ed_0.conda - sha256: 6ad31bf262a114de5bbe0c6ba73b29ed25239d0f46f9d59700310d2ea0b3c142 - md5: 77e398acc32617a0384553aea29e866b + version: 1.6.44 + build: h4b8f8c9_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.44-h4b8f8c9_0.conda + sha256: 12b44e58f8832798d7a5c0a7480c95e905dbd6c3558dec09739062411f9e08d1 + md5: f32ac2c8dd390dbf169f550887ed09d9 depends: - - libzlib >=1.2.13,<2.0.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - __osx >=10.13 + - libzlib >=1.3.1,<2.0a0 license: zlib-acknowledgement purls: [] - size: 347514 - timestamp: 1708780763195 + size: 268073 + timestamp: 1726234803010 - kind: conda name: libpng - version: 1.6.43 - build: h2797004_0 + version: 1.6.44 + build: hadc24fc_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.43-h2797004_0.conda - sha256: 502f6ff148ac2777cc55ae4ade01a8fc3543b4ffab25c4e0eaa15f94e90dd997 - md5: 009981dd9cfcaa4dbfa25ffaed86bcae + url: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda + sha256: e5b14f7a01c2db4362d8591f42f82f336ed48d5e4079e4d1f65d0c2a3637ea78 + md5: f4cc49d7aa68316213e4b12be35308d1 depends: - - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 license: zlib-acknowledgement purls: [] - size: 288221 - timestamp: 1708780443939 + size: 290661 + timestamp: 1726234747153 - kind: conda name: libpng - version: 1.6.43 - build: h92b6c6a_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.43-h92b6c6a_0.conda - sha256: 13e646d24b5179e6b0a5ece4451a587d759f55d9a360b7015f8f96eff4524b8f - md5: 65dcddb15965c9de2c0365cb14910532 + version: 1.6.44 + build: hc14010f_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda + sha256: 38f8759a3eb8060deabd4db41f0f023514d853e46ddcbd0ba21768fc4e563bb1 + md5: fb36e93f0ea6a6f5d2b99984f34b049e depends: - - libzlib >=1.2.13,<2.0.0a0 + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 license: zlib-acknowledgement purls: [] - size: 268524 - timestamp: 1708780496420 + size: 263385 + timestamp: 1726234714421 - kind: conda name: libpq version: '16.4' @@ -9339,11 +9349,12 @@ packages: - kind: conda name: matplotlib version: 3.9.2 - build: py312h1f38498_0 + build: py312h1f38498_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-3.9.2-py312h1f38498_0.conda - sha256: d5d332f2bb301eec1e43d4702f5332d8c32953ab7974e74da99a3fef94c00d86 - md5: dddd7fd8834329a4436deea957022433 + url: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-3.9.2-py312h1f38498_1.conda + sha256: 6fb7dd99a9706290aa653afda9ce7d70c4218325cfb1670683c2ea74a220d8e5 + md5: 9b1d61b4967cbfcd4f97a5f6a2fc01bd depends: - matplotlib-base >=3.9.2,<3.9.3.0a0 - python >=3.12,<3.13.0a0 @@ -9352,16 +9363,17 @@ packages: license: PSF-2.0 license_family: PSF purls: [] - size: 8884 - timestamp: 1723759792668 + size: 8924 + timestamp: 1726165048680 - kind: conda name: matplotlib version: 3.9.2 - build: py312h2e8e312_0 + build: py312h2e8e312_1 + build_number: 1 subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/matplotlib-3.9.2-py312h2e8e312_0.conda - sha256: 2ad3b3e80dd897efa7c04c614399baf4f79a08ade8d8e514b0866727d9d03056 - md5: f87a4701dbbf6dcdb559f2dc5b3b0b95 + url: https://conda.anaconda.org/conda-forge/win-64/matplotlib-3.9.2-py312h2e8e312_1.conda + sha256: b83f0ab8024cb392f56c61427d8ca05a09ea2be2e7bd47870984e99322cb5ec5 + md5: a27a47ecb8ad494b3edd0746b9dcb362 depends: - matplotlib-base >=3.9.2,<3.9.3.0a0 - pyside6 >=6.7.2 @@ -9371,16 +9383,17 @@ packages: license: PSF-2.0 license_family: PSF purls: [] - size: 9152 - timestamp: 1723760944640 + size: 9231 + timestamp: 1726165963481 - kind: conda name: matplotlib version: 3.9.2 - build: py312h7900ff3_0 + build: py312h7900ff3_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.9.2-py312h7900ff3_0.conda - sha256: b728fe3bb3525fc2a2d37b81e5fee1c697fa6ce380da8c1dbd4378ff0a3bc299 - md5: 44c07eccf73f549b8ea5c9aacfe3ad0a + url: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.9.2-py312h7900ff3_1.conda + sha256: 36eba5fde11962133b469c4121d83e26fba48654ee8f5753e5ffaf36d8631c47 + md5: 07d5646ea9f22f4b1c46c2947d1b2f58 depends: - matplotlib-base >=3.9.2,<3.9.3.0a0 - pyside6 >=6.7.2 @@ -9390,16 +9403,17 @@ packages: license: PSF-2.0 license_family: PSF purls: [] - size: 8747 - timestamp: 1723759696471 + size: 8821 + timestamp: 1726164949072 - kind: conda name: matplotlib version: 3.9.2 - build: py312hb401068_0 + build: py312hb401068_1 + build_number: 1 subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-3.9.2-py312hb401068_0.conda - sha256: 1a3a285255fdb62dbd58df5426910071d47afdca8608a9f22c21dd74b8d1b308 - md5: f468fd4f10632ff2500482118a3d4ace + url: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-3.9.2-py312hb401068_1.conda + sha256: 91866c86a6e5609a132902077b6d1dc322a1bba7dd85dcea4d0bbfbdf5748437 + md5: 522402426e34fce47653fd99ffc40a22 depends: - matplotlib-base >=3.9.2,<3.9.3.0a0 - python >=3.12,<3.13.0a0 @@ -9408,16 +9422,17 @@ packages: license: PSF-2.0 license_family: PSF purls: [] - size: 8799 - timestamp: 1723759810727 + size: 8847 + timestamp: 1726165120341 - kind: conda name: matplotlib-base version: 3.9.2 - build: py312h0d5aeb7_0 + build: py312h30cc4df_1 + build_number: 1 subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.9.2-py312h0d5aeb7_0.conda - sha256: e84ce46cad067c84d737229f642613734c69d665dd7b6f3997aaa3586d2da41c - md5: 0c73a08429d20f15fa8b28083ec04cc9 + url: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.9.2-py312h30cc4df_1.conda + sha256: 2f8f222cebd8c5aa3d3878496bdfb976acedf7aad0cf4abce1c919d03b57c7ee + md5: 0cca3ae643d5cbfe380fda45bd55e001 depends: - __osx >=10.13 - certifi >=2020.06.20 @@ -9426,7 +9441,7 @@ packages: - fonttools >=4.22.0 - freetype >=2.12.1,<3.0a0 - kiwisolver >=1.3.1 - - libcxx >=16 + - libcxx >=17 - numpy >=1.19,<3 - numpy >=1.23 - packaging >=20.0 @@ -9440,90 +9455,95 @@ packages: license_family: PSF purls: - pkg:pypi/matplotlib?source=hash-mapping - size: 7905104 - timestamp: 1723759753087 + size: 7678288 + timestamp: 1726165095191 - kind: conda name: matplotlib-base version: 3.9.2 - build: py312h32d6e5a_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.9.2-py312h32d6e5a_0.conda - sha256: 508798a3d84d6cb2d17f8025ff3be5949351b3ab680e7a5acebc1166abb2d157 - md5: 2649a9158eb3183c8de0116b9fd6aada + build: py312h90004f6_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.9.2-py312h90004f6_1.conda + sha256: ee7d8321d254082f6531b4a8437272cbacac7e76e51dd2b25378be4ba379fbc1 + md5: cb6fe391da87c2fe0a0566ea3d9b0a0c depends: - - __osx >=11.0 - certifi >=2020.06.20 - contourpy >=1.0.1 - cycler >=0.10 - fonttools >=4.22.0 - freetype >=2.12.1,<3.0a0 - kiwisolver >=1.3.1 - - libcxx >=16 - numpy >=1.19,<3 - numpy >=1.23 - packaging >=20.0 - pillow >=8 - pyparsing >=2.3.1 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python-dateutil >=2.7 - python_abi 3.12.* *_cp312 - qhull >=2020.2,<2020.3.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 license: PSF-2.0 license_family: PSF purls: - pkg:pypi/matplotlib?source=hash-mapping - size: 7864592 - timestamp: 1723759750829 + size: 7803682 + timestamp: 1726165916612 - kind: conda name: matplotlib-base version: 3.9.2 - build: py312h854627b_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.9.2-py312h854627b_0.conda - sha256: ae075b97ce43439a7a914bf478564927a3dfe00724fb69555947cc3bae737a11 - md5: a57b0ae7c0aac603839a4e83a3e997d6 + build: py312h9bd0bc6_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.9.2-py312h9bd0bc6_1.conda + sha256: b3289cea8de29ba5b9fb437d3e4e32d2cbf88998890378a4e729c5be08e1ba41 + md5: b6a861da93e2f4fcecdb01ff7b8fc160 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - certifi >=2020.06.20 - contourpy >=1.0.1 - cycler >=0.10 - fonttools >=4.22.0 - freetype >=2.12.1,<3.0a0 - kiwisolver >=1.3.1 - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - libcxx >=17 - numpy >=1.19,<3 - numpy >=1.23 - packaging >=20.0 - pillow >=8 - pyparsing >=2.3.1 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python-dateutil >=2.7 - python_abi 3.12.* *_cp312 - qhull >=2020.2,<2020.3.0a0 - - tk >=8.6.13,<8.7.0a0 license: PSF-2.0 license_family: PSF purls: - pkg:pypi/matplotlib?source=hash-mapping - size: 7904910 - timestamp: 1723759675614 + size: 7790076 + timestamp: 1726165022207 - kind: conda name: matplotlib-base version: 3.9.2 - build: py312h90004f6_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.9.2-py312h90004f6_0.conda - sha256: 50db6571737853422b164f2de6afb60d202043c078c8e52939396e5ea65a494f - md5: f1422f097083503f11d336f155748b73 + build: py312hd3ec401_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.9.2-py312hd3ec401_1.conda + sha256: 3efd50d9b7b0f1b30611585810d4ae7566d7c860c101f47ec9372f6d4a80d040 + md5: 2f4f3854f23be30de29e9e4d39758349 depends: + - __glibc >=2.17,<3.0.a0 - certifi >=2020.06.20 - contourpy >=1.0.1 - cycler >=0.10 - fonttools >=4.22.0 - freetype >=2.12.1,<3.0a0 - kiwisolver >=1.3.1 + - libgcc >=13 + - libstdcxx >=13 - numpy >=1.19,<3 - numpy >=1.23 - packaging >=20.0 @@ -9533,15 +9553,13 @@ packages: - python-dateutil >=2.7 - python_abi 3.12.* *_cp312 - qhull >=2020.2,<2020.3.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - tk >=8.6.13,<8.7.0a0 license: PSF-2.0 license_family: PSF purls: - pkg:pypi/matplotlib?source=hash-mapping - size: 7747918 - timestamp: 1723760858160 + size: 7892651 + timestamp: 1726164930325 - kind: conda name: matplotlib-inline version: 0.1.7 @@ -9614,14 +9632,15 @@ packages: timestamp: 1716561374449 - kind: pypi name: ml-dtypes - version: 0.4.0 - url: https://files.pythonhosted.org/packages/0f/b7/7cfca987ca898b64c0b7d185e957fbd8dccb64fe5ae9e44f68ec83371df5/ml_dtypes-0.4.0-cp312-cp312-win_amd64.whl - sha256: 3b67ec73a697c88c1122038e0de46520e48dc2ec876d42cf61bc5efe3c0b7675 + version: 0.5.0 + url: https://files.pythonhosted.org/packages/00/3a/40c40b78a7eb456837817bfa2c5bc442db59aefdf21c5ecb94700037813d/ml_dtypes-0.5.0-cp312-cp312-win_amd64.whl + sha256: afa08343069874a30812871d639f9c02b4158ace065601406a493a8511180c02 requires_dist: - - numpy>1.20 + - numpy>=1.21 - numpy>=1.21.2 ; python_full_version >= '3.10' - numpy>=1.23.3 ; python_full_version >= '3.11' - numpy>=1.26.0 ; python_full_version >= '3.12' + - numpy>=2.1.0 ; python_full_version >= '3.13' - absl-py ; extra == 'dev' - pytest ; extra == 'dev' - pytest-xdist ; extra == 'dev' @@ -9630,13 +9649,12 @@ packages: requires_python: '>=3.9' - kind: conda name: ml_dtypes - version: 0.4.0 - build: py312h98e817e_2 - build_number: 2 + version: 0.5.0 + build: py312h98e817e_0 subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/ml_dtypes-0.4.0-py312h98e817e_2.conda - sha256: d84d8801663c4bdcd66177362735c304ed9470fd276d166401be5db2ce9f5e35 - md5: 8d5261586fc38c8bb4cac7aea898251a + url: https://conda.anaconda.org/conda-forge/osx-64/ml_dtypes-0.5.0-py312h98e817e_0.conda + sha256: c2beb173a4acf71bde4739563f1625107300a7043b46459f614ca030cda4b113 + md5: c51d9f4d91362d9c6777a9303119c55b depends: - __osx >=10.13 - libcxx >=17 @@ -9646,17 +9664,16 @@ packages: license: MPL-2.0 AND Apache-2.0 purls: - pkg:pypi/ml-dtypes?source=hash-mapping - size: 136193 - timestamp: 1725475212538 + size: 224519 + timestamp: 1726376562525 - kind: conda name: ml_dtypes - version: 0.4.0 - build: py312hcd31e36_2 - build_number: 2 + version: 0.5.0 + build: py312hcd31e36_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/ml_dtypes-0.4.0-py312hcd31e36_2.conda - sha256: 3931aef8f1e04f2fd9cff55a0c8dd76f818a3eb4fad5ef6cfd83649d14a663e4 - md5: 70b338acc912c1989a36ed8511f884a7 + url: https://conda.anaconda.org/conda-forge/osx-arm64/ml_dtypes-0.5.0-py312hcd31e36_0.conda + sha256: b581ad4531beb3d782c2990ec1f5f5e36244b097337ac23598653fad3ff16e94 + md5: 7bc100120bdda5fcb7c1f64589e07375 depends: - __osx >=11.0 - libcxx >=17 @@ -9667,17 +9684,16 @@ packages: license: MPL-2.0 AND Apache-2.0 purls: - pkg:pypi/ml-dtypes?source=hash-mapping - size: 123771 - timestamp: 1725475270272 + size: 202179 + timestamp: 1726376547204 - kind: conda name: ml_dtypes - version: 0.4.0 - build: py312hf9745cd_2 - build_number: 2 + version: 0.5.0 + build: py312hf9745cd_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.4.0-py312hf9745cd_2.conda - sha256: 0dd6a676396af5f30bbf0b872bfea2716a11585731385d0e145b55fa2958336e - md5: c070bbf2a3c9e2e6d2c64b219e2e78da + url: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.5.0-py312hf9745cd_0.conda + sha256: 559c14640ce8e3f2270da6130ba50ae624f3db56176fad29a5436b2dec3fc3b2 + md5: 8ca779f3f30b00181aeee820fe8b22d5 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -9688,8 +9704,8 @@ packages: license: MPL-2.0 AND Apache-2.0 purls: - pkg:pypi/ml-dtypes?source=hash-mapping - size: 167320 - timestamp: 1725475244129 + size: 290054 + timestamp: 1726376440408 - kind: conda name: msys2-conda-epoch version: '20160418' @@ -10786,13 +10802,13 @@ packages: requires_python: '>=3.9' - kind: conda name: pandas-stubs - version: 2.2.2.240807 + version: 2.2.2.240909 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pandas-stubs-2.2.2.240807-pyhd8ed1ab_0.conda - sha256: 858fc48f3f9b398d8ca1a4006d637ec3767cb24b5c8c6f669dcaeb64442fa4c4 - md5: f045ee4454edcf41eb489594ed8cef62 + url: https://conda.anaconda.org/conda-forge/noarch/pandas-stubs-2.2.2.240909-pyhd8ed1ab_0.conda + sha256: 1cf735133060d2c687bc556824709f596e16b0d992fff8c3d16bf6fda7cb92ae + md5: 5139243ed81869ac257a910995650f36 depends: - numpy >=1.26.0 - python >=3.9 @@ -10801,8 +10817,8 @@ packages: license_family: BSD purls: - pkg:pypi/pandas-stubs?source=hash-mapping - size: 97850 - timestamp: 1723055218678 + size: 98489 + timestamp: 1725975727109 - kind: conda name: pandocfilters version: 1.5.0 @@ -10924,15 +10940,15 @@ packages: - kind: conda name: pillow version: 10.4.0 - build: py312h287a98d_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pillow-10.4.0-py312h287a98d_0.conda - sha256: f3bca9472702f32bf85196efbf013e9dabe130776e76c7f81062f18682f33a05 - md5: 59ea71eed98aee0bebbbdd3b118167c7 + build: py312h381445a_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pillow-10.4.0-py312h381445a_1.conda + sha256: 0b52e708ac4b72e6e1608de517cd4c8e6517dd525e23163a69bf73c7261399fc + md5: c57e54ae4acca720fb3a44bee93cb5b9 depends: - freetype >=2.12.1,<3.0a0 - lcms2 >=2.16,<3.0a0 - - libgcc-ng >=12 - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.6.0,<4.7.0a0 - libwebp-base >=1.4.0,<2.0a0 @@ -10942,22 +10958,28 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - tk >=8.6.13,<8.7.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 license: HPND purls: - pkg:pypi/pillow?source=hash-mapping - size: 42068301 - timestamp: 1719903698022 + size: 42468305 + timestamp: 1726075694989 - kind: conda name: pillow version: 10.4.0 - build: py312h381445a_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/pillow-10.4.0-py312h381445a_0.conda - sha256: 2c76c1ded20c5199d134ccecab596412510a016218f342914fd85384a850e7ed - md5: cc1e714c3cc43c59d9d0efa228c16364 + build: py312h56024de_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pillow-10.4.0-py312h56024de_1.conda + sha256: a0961e7ff663d4c7a82478ff45fba72a346070f2a017a9b56daff279c0dbb8e2 + md5: 4bd6077376c7f9c1ce33fd8319069e5b depends: + - __glibc >=2.17,<3.0.a0 - freetype >=2.12.1,<3.0a0 - lcms2 >=2.16,<3.0a0 + - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.6.0,<4.7.0a0 - libwebp-base >=1.4.0,<2.0a0 @@ -10967,24 +10989,22 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - tk >=8.6.13,<8.7.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 license: HPND purls: - pkg:pypi/pillow?source=hash-mapping - size: 42560613 - timestamp: 1719904152461 + size: 42689452 + timestamp: 1726075285193 - kind: conda name: pillow version: 10.4.0 - build: py312h39b1d8d_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-10.4.0-py312h39b1d8d_0.conda - sha256: 7c4244fa62cf630375531723631764a276eb06eeb5cc345a8e55a091aec1e52d - md5: 461c9897622e08c614087f9c9b9a22ce + build: py312h683ea77_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/pillow-10.4.0-py312h683ea77_1.conda + sha256: 1e8d489190aa0b4682f52468efe4db46b37e50679c64879696e42578c9a283a4 + md5: fb17ec3065f089dad64d9b597b1e8ce4 depends: - - __osx >=11.0 + - __osx >=10.13 - freetype >=2.12.1,<3.0a0 - lcms2 >=2.16,<3.0a0 - libjpeg-turbo >=3.0.0,<4.0a0 @@ -10994,24 +11014,24 @@ packages: - libzlib >=1.3.1,<2.0a0 - openjpeg >=2.5.2,<3.0a0 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - tk >=8.6.13,<8.7.0a0 license: HPND purls: - pkg:pypi/pillow?source=hash-mapping - size: 42347638 - timestamp: 1719903919946 + size: 42329265 + timestamp: 1726075276862 - kind: conda name: pillow version: 10.4.0 - build: py312hbd70edc_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/pillow-10.4.0-py312hbd70edc_0.conda - sha256: 38b6e8c63c8ebfd9c8552312cecd385ec7bfad6e5733f5c6b6df0db801ea5f43 - md5: 8d55e92fa6380ac8c245f253b096fefd + build: py312h8609ca0_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-10.4.0-py312h8609ca0_1.conda + sha256: 980139e8dfc9da20a96a6260c796eb7c77c5c5658ee4032f33ebe0ac980b2e2b + md5: b71f08e05207fa6a9155e8581c3d473e depends: - - __osx >=10.13 + - __osx >=11.0 - freetype >=2.12.1,<3.0a0 - lcms2 >=2.16,<3.0a0 - libjpeg-turbo >=3.0.0,<4.0a0 @@ -11021,13 +11041,14 @@ packages: - libzlib >=1.3.1,<2.0a0 - openjpeg >=2.5.2,<3.0a0 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - tk >=8.6.13,<8.7.0a0 license: HPND purls: - pkg:pypi/pillow?source=hash-mapping - size: 42081826 - timestamp: 1719903909255 + size: 42413280 + timestamp: 1726075422684 - kind: conda name: pixman version: 0.43.2 @@ -11080,29 +11101,30 @@ packages: timestamp: 1694617398467 - kind: conda name: platformdirs - version: 4.3.2 + version: 4.3.6 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.2-pyhd8ed1ab_0.conda - sha256: 3aef5bb863a2db94e47272fd5ec5a5e4b240eafba79ebb9df7a162797cf035a3 - md5: e1a2dfcd5695f0744f1bcd3bbfe02523 + url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda + sha256: c81bdeadc4adcda216b2c7b373f0335f5c78cc480d1d55d10f21823590d7e46f + md5: fd8f2b18b65bbf62e8f653100690c8d2 depends: - python >=3.8 license: MIT + license_family: MIT purls: - pkg:pypi/platformdirs?source=hash-mapping - size: 20623 - timestamp: 1725821846879 + size: 20625 + timestamp: 1726613611845 - kind: conda name: plotly - version: 5.24.0 + version: 5.24.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.0-pyhd8ed1ab_0.conda - sha256: 5b30a1398cd2f5b748cec9353386a73f2f53027bffb77d18e828c16aab350dfd - md5: 80a4a0867ded2a66687e78bca0bc70fc + url: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda + sha256: 39cef6d3056211840709054b90badfa4efd6f61ea37935a89ab0b549a54cc83f + md5: 81bb643d6c3ab4cbeaf724e9d68d0a6a depends: - packaging - python >=3.6 @@ -11113,8 +11135,8 @@ packages: license_family: MIT purls: - pkg:pypi/plotly?source=hash-mapping - size: 5928034 - timestamp: 1724987200192 + size: 6985343 + timestamp: 1726179760565 - kind: conda name: pluggy version: 1.5.0 @@ -11490,6 +11512,7 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: MIT + license_family: MIT purls: - pkg:pypi/pyobjc-framework-cocoa?source=hash-mapping size: 377479 @@ -11511,6 +11534,7 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: MIT + license_family: MIT purls: - pkg:pypi/pyobjc-framework-cocoa?source=hash-mapping size: 381079 @@ -11534,18 +11558,25 @@ packages: timestamp: 1724616224956 - kind: pypi name: pyreadline3 - version: 3.4.1 - url: https://files.pythonhosted.org/packages/56/fc/a3c13ded7b3057680c8ae95a9b6cc83e63657c38e0005c400a5d018a33a7/pyreadline3-3.4.1-py3-none-any.whl - sha256: b0efb6516fd4fb07b45949053826a62fa4cb353db5be2bbb4a7aa1fdd1e345fb + version: 3.5.4 + url: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl + sha256: eaf8e6cc3c49bcccf145fc6067ba8643d1df34d604a1ec0eccbf7a18e6d3fae6 + requires_dist: + - build ; extra == 'dev' + - flake8 ; extra == 'dev' + - mypy ; extra == 'dev' + - pytest ; extra == 'dev' + - twine ; extra == 'dev' + requires_python: '>=3.8' - kind: conda name: pyside6 version: 6.7.2 - build: py312h2ee7485_2 - build_number: 2 + build: py312h2ee7485_3 + build_number: 3 subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/pyside6-6.7.2-py312h2ee7485_2.conda - sha256: 1576947d4c0dcf5fb04497aa350bae0cde45e09ae568d7760ff303a20620ad68 - md5: ee646594cba1942d42cb3bd280243fd2 + url: https://conda.anaconda.org/conda-forge/win-64/pyside6-6.7.2-py312h2ee7485_3.conda + sha256: bf437de4f749eba0e77e53faf0a49abb6ebb1c83787636cd2993a0d4c2a558a7 + md5: 18ab45e45cd109d6223e5f89f06ecb0a depends: - libclang13 >=18.1.8 - libxml2 >=2.12.7,<3.0a0 @@ -11562,22 +11593,22 @@ packages: purls: - pkg:pypi/pyside6?source=hash-mapping - pkg:pypi/shiboken6?source=hash-mapping - size: 9267851 - timestamp: 1723107384817 + size: 9237358 + timestamp: 1726118783905 - kind: conda name: pyside6 version: 6.7.2 - build: py312hb5137db_2 - build_number: 2 + build: py312h91f0f75_3 + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.7.2-py312hb5137db_2.conda - sha256: d270c55f5874867c2c258fcc54bda2bb9d03f2e9f2e184c3edd92a71f4deca2f - md5: 99889d0c042cc4dfb9a758619d487282 + url: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.7.2-py312h91f0f75_3.conda + sha256: 797e68f35d400abcb3eedc3ed10df1b2ca3d0c405d98721c821978c2f0666996 + md5: 19dba13e88e2d4800860edc05dda1c6a depends: - __glibc >=2.17,<3.0.a0 - libclang13 >=18.1.8 - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - libgcc >=13 + - libstdcxx >=13 - libxml2 >=2.12.7,<3.0a0 - libxslt >=1.1.39,<2.0a0 - python >=3.12,<3.13.0a0 @@ -11589,8 +11620,8 @@ packages: purls: - pkg:pypi/pyside6?source=hash-mapping - pkg:pypi/shiboken6?source=hash-mapping - size: 10639049 - timestamp: 1723107283396 + size: 10600770 + timestamp: 1726118924165 - kind: conda name: pysocks version: 1.7.1 @@ -11632,13 +11663,13 @@ packages: timestamp: 1661604969727 - kind: conda name: pytest - version: 8.3.2 + version: 8.3.3 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.2-pyhd8ed1ab_0.conda - sha256: 72c84a3cd9fe82835a88e975fd2a0dbf2071d1c423ea4f79e7930578c1014873 - md5: e010a224b90f1f623a917c35addbb924 + url: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda + sha256: e99376d0068455712109d233f5790458ff861aeceb458bfda74e353338e4d815 + md5: c03d61f31f38fdb9facf70c29958bf7a depends: - colorama - exceptiongroup >=1.0.0rc8 @@ -11653,8 +11684,8 @@ packages: license_family: MIT purls: - pkg:pypi/pytest?source=hash-mapping - size: 257671 - timestamp: 1721923749407 + size: 258293 + timestamp: 1725977334143 - kind: conda name: pytest-cov version: 5.0.0 @@ -11923,21 +11954,21 @@ packages: timestamp: 1723823139725 - kind: conda name: pytz - version: '2024.1' + version: '2024.2' build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - sha256: 1a7d6b233f7e6e3bbcbad054c8fd51e690a67b129a899a056a5e45dd9f00cb41 - md5: 3eeeeb9e4827ace8c0c1419c85d590ad + url: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_0.conda + sha256: 81c16d9183bb4a6780366ce874e567ee5fc903722f85b2f8d1d9479ef1dafcc9 + md5: 260009d03c9d5c0f111904d851f053dc depends: - python >=3.7 license: MIT license_family: MIT purls: - pkg:pypi/pytz?source=hash-mapping - size: 188538 - timestamp: 1706886944988 + size: 186995 + timestamp: 1726055625738 - kind: conda name: pywin32 version: '306' @@ -12749,21 +12780,21 @@ packages: timestamp: 1712585816346 - kind: conda name: setuptools - version: 73.0.1 + version: 74.1.2 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/setuptools-73.0.1-pyhd8ed1ab_0.conda - sha256: c9f5e110e3fe5a7c4cd5b9da445c05a1fae000b43ab3a97cb6a501f4267515fc - md5: f0b618d7673d1b2464f600b34d912f6f + url: https://conda.anaconda.org/conda-forge/noarch/setuptools-74.1.2-pyhd8ed1ab_0.conda + sha256: 71a4603248167bacc0aa985697a93aff62f6bcf008edaece09e79e83e43a7e22 + md5: 56c9c11d004428e81d02eeb730fc6336 depends: - python >=3.8 license: MIT license_family: MIT purls: - - pkg:pypi/setuptools?source=hash-mapping - size: 1460460 - timestamp: 1725348602179 + - pkg:pypi/setuptools?source=compressed-mapping + size: 784583 + timestamp: 1726752322559 - kind: conda name: six version: 1.16.0 @@ -12895,6 +12926,7 @@ packages: - vc >=14.2,<15 - vc14_runtime >=14.29.30139 license: Apache-2.0 + license_family: APACHE purls: [] size: 151494 timestamp: 1725532984828 @@ -13209,20 +13241,20 @@ packages: timestamp: 1725623878468 - kind: conda name: types-pytz - version: 2024.1.0.20240417 + version: 2024.2.0.20240913 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/types-pytz-2024.1.0.20240417-pyhd8ed1ab_0.conda - sha256: cc3913a5504b867c748981ba302e82dbc2bda71837f4894d29db8f6cb490e25d - md5: 7b71ace1b99195041329427c435b8125 + url: https://conda.anaconda.org/conda-forge/noarch/types-pytz-2024.2.0.20240913-pyhd8ed1ab_0.conda + sha256: c2af0198a110223effe3508e598ac9d3351a68740faaf5cb737ffaa51b108233 + md5: fa0073139a0bde9a14637bbe1fe2f1d3 depends: - python >=3.6 license: Apache-2.0 AND MIT purls: - pkg:pypi/types-pytz?source=hash-mapping - size: 18725 - timestamp: 1713337633292 + size: 18599 + timestamp: 1726210576932 - kind: conda name: typing-extensions version: 4.12.2 @@ -13414,14 +13446,13 @@ packages: timestamp: 1688655976471 - kind: conda name: urllib3 - version: 2.2.2 - build: pyhd8ed1ab_1 - build_number: 1 + version: 2.2.3 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_1.conda - sha256: 00c47c602c03137e7396f904eccede8cc64cc6bad63ce1fc355125df8882a748 - md5: e804c43f58255e977093a2298e442bb8 + url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + sha256: b6bb34ce41cd93956ad6eeee275ed52390fb3788d6c75e753172ea7ac60b66e5 + md5: 6b55867f385dd762ed99ea687af32a69 depends: - brotli-python >=1.0.9 - h2 >=4,<5 @@ -13432,17 +13463,17 @@ packages: license_family: MIT purls: - pkg:pypi/urllib3?source=hash-mapping - size: 95048 - timestamp: 1719391384778 + size: 98076 + timestamp: 1726496531769 - kind: conda name: vc version: '14.3' - build: h8a93ad2_20 - build_number: 20 + build: h8a93ad2_21 + build_number: 21 subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h8a93ad2_20.conda - sha256: 23ac5feb15a9adf3ab2b8c4dcd63650f8b7ae860c5ceb073e49cf71d203eddef - md5: 8558f367e1d7700554f7cdb823c46faf + url: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h8a93ad2_21.conda + sha256: f14f5238c2e2516e292af43d91df88f212d769b4853eb46d03291793dcf00da9 + md5: e632a9b865d4b653aa656c9fb4f4817c depends: - vc14_runtime >=14.40.33810 track_features: @@ -13450,61 +13481,62 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - size: 17391 - timestamp: 1717709040616 + size: 17243 + timestamp: 1725984095174 - kind: conda name: vc14_runtime version: 14.40.33810 - build: hcc2c482_20 - build_number: 20 + build: ha82c5b3_21 + build_number: 21 subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.40.33810-hcc2c482_20.conda - sha256: bba8daa6f78b26b48fb7e1377eb52160e25495710bf53146c5f405bd50565982 - md5: ad33c7cd933d69b9dee0f48317cdf137 + url: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.40.33810-ha82c5b3_21.conda + sha256: c3bf51bff7db39ad7e890dbef1b1026df0af36975aea24dea7c5fe1e0b382c40 + md5: b3ebb670caf046e32b835fbda056c4f9 depends: - ucrt >=10.0.20348.0 constrains: - - vs2015_runtime 14.40.33810.* *_20 + - vs2015_runtime 14.40.33810.* *_21 license: LicenseRef-ProprietaryMicrosoft license_family: Proprietary purls: [] - size: 751028 - timestamp: 1724712684919 + size: 751757 + timestamp: 1725984166774 - kind: conda name: virtualenv - version: 20.26.4 + version: 20.26.5 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.26.4-pyhd8ed1ab_0.conda - sha256: 6eeb4f9e541f2e5198185c44ab4f5a2bdf700ca395b18617e12a8e00cf176d05 - md5: 14c15fa7def506fe7d1a0e3abdc212d6 + url: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.26.5-pyhd8ed1ab_0.conda + sha256: 09ee54637f1979c8e9955a363ff9637454cbf63af509cf45a44f184a9ed27a15 + md5: 949a6778521278cb96d7491bd99a5418 depends: - distlib <1,>=0.3.7 - filelock <4,>=3.12.2 - platformdirs <5,>=3.9.1 - python >=3.8 license: MIT + license_family: MIT purls: - pkg:pypi/virtualenv?source=hash-mapping - size: 4886907 - timestamp: 1725779361477 + size: 4876524 + timestamp: 1726642673644 - kind: conda name: vs2015_runtime version: 14.40.33810 - build: h3bf8584_20 - build_number: 20 + build: h3bf8584_21 + build_number: 21 subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.40.33810-h3bf8584_20.conda - sha256: 0c2803f7a788c51f28235a7228dc2ab3f107b4b16ab0845a3e595c8c51e50a7a - md5: c21f1b4a3a30bbc3ef35a50957578e0e + url: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.40.33810-h3bf8584_21.conda + sha256: 472410455c381e406ec8c1d3e0342b48ee23122ef7ffb22a09d9763ca5df4d20 + md5: b3f37db7b7ae1c22600fa26a63ed99b3 depends: - vc14_runtime >=14.40.33810 license: BSD-3-Clause license_family: BSD purls: [] - size: 17395 - timestamp: 1717709043353 + size: 17241 + timestamp: 1725984096440 - kind: conda name: wayland version: 1.23.1 @@ -13645,15 +13677,15 @@ packages: timestamp: 1718843348208 - kind: conda name: xcb-util-cursor - version: 0.1.4 - build: h4ab18f5_2 - build_number: 2 + version: 0.1.5 + build: hb9d3cd8_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-cursor-0.1.4-h4ab18f5_2.conda - sha256: c72e58bae4a7972ca4dee5e850e82216222c06d53b3651e1ca7db8b5d2fc95fe - md5: 79e46d4a6ccecb7ee1912042958a8758 + url: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-cursor-0.1.5-hb9d3cd8_0.conda + sha256: c7b35db96f6e32a9e5346f97adc968ef2f33948e3d7084295baebc0e33abdd5b + md5: eb44b3b6deb1cab08d72cb61686fe64c depends: - - libgcc-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - libxcb >=1.13 - libxcb >=1.16,<1.17.0a0 - xcb-util-image >=0.4.0,<0.5.0a0 @@ -13661,8 +13693,8 @@ packages: license: MIT license_family: MIT purls: [] - size: 20397 - timestamp: 1718899451268 + size: 20296 + timestamp: 1726125844850 - kind: conda name: xcb-util-image version: 0.4.0 @@ -14061,23 +14093,23 @@ packages: - kind: conda name: xorg-libxxf86vm version: 1.1.5 - build: h4bc722e_1 - build_number: 1 + build: hb9d3cd8_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxxf86vm-1.1.5-h4bc722e_1.conda - sha256: 109d6b1931d1482faa0bf6de83c7e6d9ca36bbf9d36a00a05df4f63b82fce5c3 - md5: 0c90ad87101001080484b91bd9d2cdef + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxxf86vm-1.1.5-hb9d3cd8_2.conda + sha256: 449e39b31711325738434f5e6db0c51c9e84d96e4005ec0acd9d1f500c05e8e7 + md5: 1bc52d70c5dc46b1792e039b4fa120a0 depends: - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 + - libgcc >=13 - xorg-libx11 >=1.8.9,<2.0a0 - xorg-libxext >=1.3.4,<2.0a0 - xorg-xextproto >=7.3.0,<8.0a0 license: MIT license_family: MIT purls: [] - size: 18443 - timestamp: 1722110433983 + size: 18332 + timestamp: 1726233001299 - kind: conda name: xorg-recordproto version: 1.14.2 @@ -14336,21 +14368,21 @@ packages: timestamp: 1725430044838 - kind: conda name: zipp - version: 3.20.1 + version: 3.20.2 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.1-pyhd8ed1ab_0.conda - sha256: 30762bd25b6fc8714d5520a223ccf20ad4a6792dc439c54b59bf44b60bf51e72 - md5: 74a4befb4b38897e19a107693e49da20 + url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.2-pyhd8ed1ab_0.conda + sha256: 1e84fcfa41e0afdd87ff41e6fbb719c96a0e098c1f79be342293ab0bd8dea322 + md5: 4daaed111c05672ae669f7036ee5bba3 depends: - python >=3.8 license: MIT license_family: MIT purls: - pkg:pypi/zipp?source=hash-mapping - size: 21110 - timestamp: 1724731063145 + size: 21409 + timestamp: 1726248679175 - kind: conda name: zlib version: 1.3.1 diff --git a/pyproject.toml b/pyproject.toml index d589ec9d..085dccff 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -227,11 +227,11 @@ extend-ignore = [ [tool.ruff.lint.per-file-ignores] "docs/source/conf.py" = ["E501", "ERA001", "DTZ005"] -"tests/*" = ["PLR2004"] -"examples/*" = ["INP001"] +"tests/*" = ["PLR2004", "D101"] +"examples/*" = ["INP001", "D101"] "explanations/*" = ["INP001", "B018", "T201", "E402", "PD008"] "scripts/*" = ["INP001", "D101", "RET503"] -"**/*.ipynb" = ["FBT003", "E402"] +"**/*.ipynb" = ["FBT003", "E402", "D101"] [tool.ruff.lint.pydocstyle] convention = "google" diff --git a/src/lcm/entry_point.py b/src/lcm/entry_point.py index 2ccf5148..f41c247f 100644 --- a/src/lcm/entry_point.py +++ b/src/lcm/entry_point.py @@ -66,7 +66,7 @@ def get_lcm_function( if targets not in {"solve", "simulate", "solve_and_simulate"}: raise NotImplementedError - _mod = process_model(model=model) + _mod = process_model(model) last_period = _mod.n_periods - 1 interpolation_options = DefaultMapCoordinatesOptions | (interpolation_options or {}) @@ -170,6 +170,7 @@ def get_lcm_function( continuous_choice_grids=continuous_choice_grids, compute_ccv_functions=compute_ccv_functions, emax_calculators=emax_calculators, + discrete_grid_converter=_mod.discrete_grid_converter, logger=logger, ) @@ -183,6 +184,7 @@ def get_lcm_function( compute_ccv_policy_functions=compute_ccv_policy_functions, model=_mod, next_state=jax.jit(_next_state_simulate), + discrete_grid_converter=_mod.discrete_grid_converter, logger=logger, ) @@ -193,7 +195,8 @@ def get_lcm_function( elif targets == "solve_and_simulate": _target = partial(simulate_model, solve_model=solve_model) - return cast(Callable, _target), _mod.params + user_params = _mod.discrete_grid_converter.internal_params_to_params(_mod.params) + return cast(Callable, _target), user_params def create_compute_conditional_continuation_value( diff --git a/src/lcm/grids.py b/src/lcm/grids.py index 15c89bce..9ea98432 100644 --- a/src/lcm/grids.py +++ b/src/lcm/grids.py @@ -1,8 +1,8 @@ """Collection of classes that are used by the user to define the model and grids.""" from abc import ABC, abstractmethod -from collections.abc import Collection -from dataclasses import dataclass +from dataclasses import dataclass, fields, is_dataclass +from typing import Any import jax.numpy as jnp from jax import Array @@ -16,37 +16,56 @@ class Grid(ABC): """LCM Grid base class.""" @abstractmethod - def to_jax(self) -> jnp.ndarray: + def to_jax(self) -> Array: """Convert the grid to a Jax array.""" -@dataclass(frozen=True) class DiscreteGrid(Grid): - """A grid of discrete values. + """A class representing a discrete grid. + + Args: + category_class (type): The category class representing the grid categories. Must + be a dataclass with fields that have unique scalar int or float values. Attributes: - options: The options in the grid. Must be an iterable of scalar int or float - values. + categories: The list of category names. + codes: The list of category codes. + + Raises: + GridInitializationError: If the `category_class` is not a dataclass with scalar + int or float fields. """ - options: Collection[int | float] + def __init__(self, category_class: type) -> None: + """Initialize the DiscreteGrid. - def __post_init__(self) -> None: - if not isinstance(self.options, Collection): - raise GridInitializationError( - "options must be a collection of scalar int or float values, e.g., a ", - "list or tuple", - ) + Args: + category_class (type): The category class representing the grid categories. + Must be a dataclass with fields that have unique scalar int or float + values. + + """ + _validate_discrete_grid(category_class) + + names_and_values = _get_field_names_and_values(category_class) - errors = _validate_discrete_grid(self.options) - if errors: - msg = format_messages(errors) - raise GridInitializationError(msg) + self.__categories = tuple(names_and_values.keys()) + self.__codes = tuple(names_and_values.values()) + + @property + def categories(self) -> tuple[str, ...]: + """Get the list of category names.""" + return self.__categories + + @property + def codes(self) -> tuple[int | float, ...]: + """Get the list of category codes.""" + return self.__codes def to_jax(self) -> Array: """Convert the grid to a Jax array.""" - return jnp.array(list(self.options)) + return jnp.array(self.codes) @dataclass(frozen=True, kw_only=True) @@ -58,14 +77,11 @@ class ContinuousGrid(Grid, ABC): n_points: int def __post_init__(self) -> None: - errors = _validate_continuous_grid( + _validate_continuous_grid( start=self.start, stop=self.stop, n_points=self.n_points, ) - if errors: - msg = format_messages(errors) - raise GridInitializationError(msg) @abstractmethod def to_jax(self) -> Array: @@ -131,40 +147,78 @@ def get_coordinate(self, value: Scalar) -> Scalar: # ====================================================================================== -def _validate_discrete_grid(options: Collection[int | float]) -> list[str]: - """Validate the discrete grid options. +def _validate_discrete_grid(category_class: type) -> None: + """Validate the field names and values of the category_class passed to DiscreteGrid. Args: - options: The user options to validate. + category_class: The category class representing the grid categories. Must + be a dataclass with fields that have unique scalar int or float values. - Returns: - list[str]: A list of error messages. + Raises: + GridInitializationError: If the `category_class` is not a dataclass with scalar + int or float fields. """ - error_messages = [] + if not is_dataclass(category_class): + raise GridInitializationError( + "category_class must be a dataclass with scalar int or float fields, " + f"but is {category_class}." + ) - if not len(options) > 0: - error_messages.append("options must contain at least one element") + names_and_values = _get_field_names_and_values(category_class) - if not all(isinstance(option, int | float) for option in options): - error_messages.append("options must contain only scalar int or float values") + error_messages = [] - if len(options) != len(set(options)): - error_messages.append("options must contain unique values") + if not names_and_values: + error_messages.append( + "category_class passed to DiscreteGrid must have at least one field" + ) + + names_with_non_numerical_values = [ + name + for name, value in names_and_values.items() + if not isinstance(value, int | float) + ] + if names_with_non_numerical_values: + error_messages.append( + "Field values of the category_class passed to DiscreteGrid can only be " + "scalar int or float values. The values to the following fields are not: " + f"{names_with_non_numerical_values}" + ) - if list(options) != list(range(len(options))): + values = list(names_and_values.values()) + duplicated_values = [v for v in values if values.count(v) > 1] + if duplicated_values: error_messages.append( - "options must be a list of consecutive integers starting from 0", + "Field values of the category_class passed to DiscreteGrid must be unique. " + "The following values are duplicated: " + f"{set(duplicated_values)}" ) - return error_messages + if error_messages: + msg = format_messages(error_messages) + raise GridInitializationError(msg) + + +def _get_field_names_and_values(dc: type) -> dict[str, Any]: + """Get the fields of a dataclass. + + Args: + dc: The dataclass to get the fields of. + + Returns: + A dictionary with the field names as keys and the field values as values. If + no value is provided for a field, the value is set to None. + + """ + return {field.name: getattr(dc, field.name, None) for field in fields(dc)} def _validate_continuous_grid( start: float, stop: float, n_points: int, -) -> list[str]: +) -> None: """Validate the continuous grid parameters. Args: @@ -172,8 +226,8 @@ def _validate_continuous_grid( stop: The stop value of the grid. n_points: The number of points in the grid. - Returns: - list[str]: A list of error messages. + Raises: + GridInitializationError: If the grid parameters are invalid. """ error_messages = [] @@ -194,4 +248,6 @@ def _validate_continuous_grid( if valid_start_type and valid_stop_type and start >= stop: error_messages.append("start must be less than stop") - return error_messages + if error_messages: + msg = format_messages(error_messages) + raise GridInitializationError(msg) diff --git a/src/lcm/input_processing/__init__.py b/src/lcm/input_processing/__init__.py index 849cbdc9..546866d9 100644 --- a/src/lcm/input_processing/__init__.py +++ b/src/lcm/input_processing/__init__.py @@ -1,3 +1,4 @@ +from .discrete_grid_conversion import DiscreteGridConverter from .process_model import process_model -__all__ = ["process_model"] +__all__ = ["process_model", "DiscreteGridConverter"] diff --git a/src/lcm/input_processing/discrete_grid_conversion.py b/src/lcm/input_processing/discrete_grid_conversion.py new file mode 100644 index 00000000..a1084e26 --- /dev/null +++ b/src/lcm/input_processing/discrete_grid_conversion.py @@ -0,0 +1,280 @@ +import functools +from collections.abc import Callable +from dataclasses import dataclass, field, make_dataclass +from typing import TypeVar, cast + +import jax.numpy as jnp +from dags.signature import with_signature +from jax import Array + +from lcm.functools import all_as_kwargs +from lcm.grids import DiscreteGrid +from lcm.input_processing.util import ( + get_gridspecs, +) +from lcm.typing import ParamsDict +from lcm.user_model import Model + + +@dataclass(frozen=True, kw_only=True) +class DiscreteGridConverter: + """Converts between representations of discrete variables and associated parameters. + + While LCM supports general discrete grids, internally, these are converted to + array indices. This class provides functionality for converting between the internal + representation and the external representation of states, choices, and associated + parameters. + + Attributes: + index_to_code: A dictionary of functions mapping from the internal index to the + code for each converted state. Keys correspond to the names of converted + discrete variables. + code_to_index: A dictionary of functions mapping from the code to the internal + index for each converted state. Keys correspond to the names of converted + discrete variables. + + """ + + index_to_code: dict[str, Callable[[Array], Array]] = field(default_factory=dict) + code_to_index: dict[str, Callable[[Array], Array]] = field(default_factory=dict) + + def __post_init__(self) -> None: + if set(self.index_to_code.keys()) != set(self.code_to_index.keys()): + raise ValueError( + "The keys of index_to_code and code_to_index must be the same." + ) + + def internal_params_to_params(self, internal: ParamsDict) -> ParamsDict: + """Convert parameters from internal to external representation. + + If a state has been converted, the name of its corresponding next function must + be changed from `next___{var}_index__` to `next_{var}`. + + """ + params = internal.copy() + for var in self.index_to_code: + old_name = f"next___{var}_index__" + if old_name in params: + params[f"next_{var}"] = params.pop(old_name) + return params + + def params_to_internal_params(self, params: ParamsDict) -> ParamsDict: + """Convert parameters from external to internal representation. + + If a state has been converted, the name of its corresponding next function must + be changed from `next_{var}` to `next___{var}_index__`. + + """ + internal = params.copy() + for var in self.index_to_code: + old_name = f"next_{var}" + if old_name in internal: + internal[f"next___{var}_index__"] = internal.pop(old_name) + return internal + + def internal_vars_to_vars(self, internal: dict[str, Array]) -> dict[str, Array]: + """Convert discrete variables from internal to external representation. + + If a variable has been converted, the name of its corresponding index function + must be changed from `___{var}_index__` to `{var}`, and the values of the + variable must be converted from indices to codes. + + """ + variables = internal.copy() + for var, index_to_code in self.index_to_code.items(): + old_name = f"__{var}_index__" + if old_name in internal: + variables[var] = index_to_code(variables.pop(old_name)) + return variables + + def vars_to_internal_vars(self, variables: dict[str, Array]) -> dict[str, Array]: + """Convert discrete variables from external to internal representation. + + If a variable has been converted, the name of its corresponding index function + must be changed from `{var}` to `___{var}_index__`, and the values of the + variable must be converted from codes to indices. + + """ + internal = variables.copy() + for var, code_to_index in self.code_to_index.items(): + if var in variables: + internal[f"__{var}_index__"] = code_to_index(internal.pop(var)) + return internal + + +def convert_arbitrary_codes_to_array_indices( + model: Model, +) -> tuple[Model, DiscreteGridConverter]: + """Update the user model to ensure that discrete variables have index codes. + + For each discrete variable with non-index codes, we: + + 1. Remove the variable from the states or choices dictionary + 2. Replace it with a new state or choice with array index codes + 3. Add updated next functions (if the variable was a state variable) + 4. Add a function that maps the array index codes to the original codes + + Args: + model: The model as provided by the user. + + Returns: + - The model with all discrete variables having index codes. + - A converter that can be used to convert between the internal and external + representation of the model. + + """ + gridspecs = get_gridspecs(model) + + non_index_discrete_vars = _get_discrete_vars_with_non_index_codes(model) + + # fast path + if not non_index_discrete_vars: + return model, DiscreteGridConverter() + + functions = model.functions.copy() + states = model.states.copy() + choices = model.choices.copy() + + # Update grids + # ---------------------------------------------------------------------------------- + for var in non_index_discrete_vars: + grid: DiscreteGrid = gridspecs[var] # type: ignore[assignment] + index_category_class = make_dataclass( + grid.__str__(), + [(f"__{name}_index__", int, i) for i, name in enumerate(grid.categories)], + ) + index_grid = DiscreteGrid(index_category_class) + + if var in model.states: + states.pop(var) + states[f"__{var}_index__"] = index_grid + else: + choices.pop(var) + choices[f"__{var}_index__"] = index_grid + + # Update next functions + # ---------------------------------------------------------------------------------- + non_index_states = [s for s in model.states if s in non_index_discrete_vars] + + for var in non_index_states: + functions[f"next___{var}_index__"] = _get_next_index_func( + functions.pop(f"next_{var}"), + codes_array=gridspecs[var].to_jax(), + name=var, + ) + + # Add index to code functions + # ---------------------------------------------------------------------------------- + index_to_code_funcs = { + var: _get_index_to_code_func(gridspecs[var].to_jax(), name=var) + for var in non_index_discrete_vars + } + functions = functions | index_to_code_funcs + + # Create code to index functions for converter + # ---------------------------------------------------------------------------------- + code_to_index_funcs = { + var: _get_code_to_index_func(gridspecs[var].to_jax(), name=var) + for var in non_index_discrete_vars + } + + discrete_grid_converter = DiscreteGridConverter( + index_to_code=index_to_code_funcs, + code_to_index=code_to_index_funcs, + ) + + new_model = model.replace( + states=states, + choices=choices, + functions=functions, + ) + return new_model, discrete_grid_converter + + +def _get_discrete_vars_with_non_index_codes(model: Model) -> list[str]: + """Get discrete variables with non-index codes. + + Collect all discrete variables with codes that do not correspond to indices. + + """ + gridspecs = get_gridspecs(model) + discrete_vars = [] + for name, spec in gridspecs.items(): + if isinstance(spec, DiscreteGrid) and list(spec.codes) != list( + range(len(spec.codes)) + ): + discrete_vars.append(name) + return discrete_vars + + +F = TypeVar("F", bound=Callable[[tuple[Array, ...]], Array]) + + +def _get_next_index_func(next_func: F, codes_array: Array, name: str) -> F: + """Get next function for index state variable. + + Args: + next_func: The next function for the state variable. + codes_array: An array of codes. + name: The name of the state variable. + + Returns: + A next function corresponding to the index version of the state variable. + + """ + code_to_index = _get_code_to_index_func(codes_array, name) + + @functools.wraps(next_func) + def next_index_func(*args, **kwargs) -> Array: + next_state = next_func(*args, **kwargs) + return code_to_index(next_state) + + return cast(F, next_index_func) + + +def _get_index_to_code_func(codes_array: Array, name: str) -> Callable[[Array], Array]: + """Get function mapping from index to code. + + Args: + codes_array: An array of codes. + name: The name of resulting function argument. + + Returns: + A function mapping an array with indices corresponding to codes_array to the + corresponding codes. + + """ + arg_name = f"__{name}_index__" + + @with_signature(args=[arg_name]) + def func(*args, **kwargs): + kwargs = all_as_kwargs(args, kwargs, arg_names=[arg_name]) + index = kwargs[arg_name] + return codes_array[index] + + return func + + +def _get_code_to_index_func(codes_array: Array, name: str) -> Callable[[Array], Array]: + """Get function mapping from code to index. + + Args: + codes_array: An array of codes. + name: The name of resulting function argument. + + Returns: + A function mapping an array with values in codes_array to their corresponding + indices. + + """ + sorted_indices = jnp.argsort(codes_array) + sorted_codes = codes_array[sorted_indices] + + @with_signature(args=[name]) + def code_to_index(*args, **kwargs): + kwargs = all_as_kwargs(args, kwargs, arg_names=[name]) + data = kwargs[name] + indices_in_sorted = jnp.searchsorted(sorted_codes, data) + return sorted_indices[indices_in_sorted] + + return code_to_index diff --git a/src/lcm/input_processing/process_model.py b/src/lcm/input_processing/process_model.py index 179c6268..f67420d9 100644 --- a/src/lcm/input_processing/process_model.py +++ b/src/lcm/input_processing/process_model.py @@ -9,6 +9,9 @@ from lcm.functools import all_as_args, all_as_kwargs from lcm.input_processing.create_params_template import create_params_template +from lcm.input_processing.discrete_grid_conversion import ( + convert_arbitrary_codes_to_array_indices, +) from lcm.input_processing.util import ( get_function_info, get_grids, @@ -36,18 +39,21 @@ def process_model(model: Model) -> InternalModel: The processed model. """ - params = create_params_template(model) + tmp_model, converter = convert_arbitrary_codes_to_array_indices(model) + + params = create_params_template(tmp_model) return InternalModel( - grids=get_grids(model), - gridspecs=get_gridspecs(model), - variable_info=get_variable_info(model), - functions=_get_internal_functions(model, params=params), - function_info=get_function_info(model), + grids=get_grids(tmp_model), + gridspecs=get_gridspecs(tmp_model), + variable_info=get_variable_info(tmp_model), + functions=_get_internal_functions(tmp_model, params=params), + function_info=get_function_info(tmp_model), params=params, + discrete_grid_converter=converter, # currently no additive utility shocks are supported random_utility_shocks=ShockType.NONE, - n_periods=model.n_periods, + n_periods=tmp_model.n_periods, ) diff --git a/src/lcm/input_processing/util.py b/src/lcm/input_processing/util.py index 70a1a304..5392c8a7 100644 --- a/src/lcm/input_processing/util.py +++ b/src/lcm/input_processing/util.py @@ -133,7 +133,7 @@ def get_gridspecs( Returns: dict: Dictionary containing all variables of the model. The keys are the names of the variables. The values describe which values the variable - can take. For discrete variables these are the options. For continuous + can take. For discrete variables these are the codes. For continuous variables this is information about how to build the grids. """ diff --git a/src/lcm/interfaces.py b/src/lcm/interfaces.py index 9e71d810..69ecaf54 100644 --- a/src/lcm/interfaces.py +++ b/src/lcm/interfaces.py @@ -5,6 +5,7 @@ from jax import Array from lcm.grids import ContinuousGrid, DiscreteGrid, Grid +from lcm.input_processing import DiscreteGridConverter from lcm.typing import ParamsDict, ShockType @@ -93,6 +94,8 @@ class InternalModel: True if the function has the corresponding property. The columns are: is_filter, is_constraint, is_next. params: Dict of model parameters. + discrete_grid_converter: Helps with converting between internal and external + representations of model variables and associated parameters. n_periods: Number of periods. random_utility_shocks: Type of random utility shocks. @@ -104,6 +107,7 @@ class InternalModel: functions: dict[str, Callable] function_info: pd.DataFrame params: ParamsDict + discrete_grid_converter: DiscreteGridConverter n_periods: int # Not properly processed yet random_utility_shocks: ShockType diff --git a/src/lcm/simulate.py b/src/lcm/simulate.py index b804d3f0..aab880bb 100644 --- a/src/lcm/simulate.py +++ b/src/lcm/simulate.py @@ -9,6 +9,7 @@ from lcm.argmax import argmax, segment_argmax from lcm.dispatchers import spacemap, vmap_1d +from lcm.input_processing import DiscreteGridConverter from lcm.interfaces import InternalModel, Space @@ -20,6 +21,7 @@ def simulate( compute_ccv_policy_functions, model: InternalModel, next_state, + discrete_grid_converter: DiscreteGridConverter, logger, solve_model=None, vf_arr_list=None, @@ -43,6 +45,8 @@ def simulate( state and choice variables. For stochastic variables, it returns a random draw from the distribution of the next state. model (Model): Model instance. + discrete_grid_converter (DiscreteGridConverter): Converter for discrete + variables and parameters between external and internal representation. logger (logging.Logger): Logger that logs to stdout. solve_model (callable): Function that solves the model. Is only required if vf_arr_list is not provided. @@ -63,8 +67,12 @@ def simulate( raise ValueError( "You need to provide either vf_arr_list or solve_model.", ) + # We do not need to convert the params here, because the solve_model function + # will do it. vf_arr_list = solve_model(params) + internal_params = discrete_grid_converter.params_to_internal_params(params) + logger.info("Starting simulation") # Update the vf_arr_list @@ -89,7 +97,7 @@ def simulate( sparse_choice_variables = model.variable_info.query("is_choice & is_sparse").index # The following variables are updated during the forward simulation - states = initial_states + states = discrete_grid_converter.vars_to_internal_vars(initial_states) key = jax.random.PRNGKey(seed=seed) # Forward simulation @@ -132,7 +140,7 @@ def simulate( continuous_choice_grids=continuous_choice_grids[period], vf_arr=vf_arr_list[period], state_indexers=state_indexers[period], - params=params, + params=internal_params, ) # Get optimal discrete choice given the optimal conditional continuous choices @@ -195,7 +203,7 @@ def simulate( **states, **choices, _period=jnp.repeat(period, n_initial_states), - params=params, + params=internal_params, keys=sim_keys, ) @@ -205,14 +213,14 @@ def simulate( logger.info("Period: %s", period) - processed = _process_simulated_data(_simulation_results) + processed = _process_simulated_data(_simulation_results, discrete_grid_converter) if additional_targets is not None: calculated_targets = _compute_targets( processed, targets=additional_targets, model_functions=model.functions, - params=params, + params=internal_params, ) processed = {**processed, **calculated_targets} @@ -331,19 +339,23 @@ def _compute_targets(processed_results, targets, model_functions, params): return target_func(params=params, **kwargs) -def _process_simulated_data(results): +def _process_simulated_data(results, discrete_grid_converter): """Process and flatten the simulation results. This function produces a dict of arrays for each var with dimension (n_periods * n_initial_states,). The arrays are flattened, so that the resulting dictionary has a one-dimensional array for each variable. The length of this array is the number of periods times the number of initial states. The order of array elements is given by - an outer level of periods and an inner level of initial states ids. + an outer level of periods and an inner level of initial states ids. Discrete + variables with an internal representation are converted to their external + representation. + Args: results (list): List of dicts with simulation results. Each dict contains the value, choices, and states for one period. Choices and states are stored in a nested dictionary. + discrete_grid_converter (DiscreteGridConverter): Converter for discrete grids. Returns: dict: Dict with processed simulation results. The keys are the variable names @@ -362,7 +374,8 @@ def _process_simulated_data(results): } out = {key: jnp.concatenate(values) for key, values in dict_of_lists.items()} out["_period"] = jnp.repeat(jnp.arange(n_periods), n_initial_states) - return out + + return discrete_grid_converter.internal_vars_to_vars(out) # ====================================================================================== diff --git a/src/lcm/solve_brute.py b/src/lcm/solve_brute.py index a7f1ab82..978627da 100644 --- a/src/lcm/solve_brute.py +++ b/src/lcm/solve_brute.py @@ -10,6 +10,7 @@ def solve( continuous_choice_grids, compute_ccv_functions, emax_calculators, + discrete_grid_converter, logger, ): """Solve a model by brute force. @@ -42,12 +43,16 @@ def solve( emax_calculators (list): List of functions that take continuation values for combinations of states and discrete choices and calculate the expected maximum over all discrete choices of a given state. + discrete_grid_converter (DiscreteGridConverter): Converter for discrete + variables and parameters between external and internal representation. logger (logging.Logger): Logger that logs to stdout. Returns: list: List with one value function array per period. """ + internal_params = discrete_grid_converter.params_to_internal_params(params) + # extract information n_periods = len(state_choice_spaces) reversed_solution = [] @@ -64,12 +69,12 @@ def solve( continuous_choice_grids=continuous_choice_grids[period], vf_arr=vf_arr, state_indexers=state_indexers[period], - params=params, + params=internal_params, ) # solve discrete problem by calculating expected maximum over discrete choices calculate_emax = emax_calculators[period] - vf_arr = calculate_emax(conditional_continuation_values, params=params) + vf_arr = calculate_emax(conditional_continuation_values, params=internal_params) reversed_solution.append(vf_arr) logger.info("Period: %s", period) diff --git a/src/lcm/user_model.py b/src/lcm/user_model.py index c2ba24e3..92c31c91 100644 --- a/src/lcm/user_model.py +++ b/src/lcm/user_model.py @@ -31,17 +31,8 @@ class Model: states: dict[str, Grid] = field(default_factory=dict) def __post_init__(self) -> None: - type_errors = _validate_attribute_types(self) - - if type_errors: - msg = format_messages(type_errors) - raise ModelInitilizationError(msg) - - logical_errors = _validate_logical_consistency(self) - - if logical_errors: - msg = format_messages(logical_errors) - raise ModelInitilizationError(msg) + _validate_attribute_types(self) + _validate_logical_consistency(self) def replace(self, **kwargs) -> "Model": """Replace the attributes of the model. @@ -56,7 +47,7 @@ def replace(self, **kwargs) -> "Model": return dc.replace(self, **kwargs) -def _validate_attribute_types(model: Model) -> list[str]: +def _validate_attribute_types(model: Model) -> None: # noqa: C901 """Validate the types of the model attributes.""" error_messages = [] @@ -64,20 +55,18 @@ def _validate_attribute_types(model: Model) -> list[str]: # ---------------------------------------------------------------------------------- for attr_name in ("choices", "states"): attr = getattr(model, attr_name) - if not isinstance(attr, dict): - error_messages.append(f"{attr_name} must be a dictionary.") - else: + if isinstance(attr, dict): for k, v in attr.items(): if not isinstance(k, str): error_messages.append(f"{attr_name} key {k} must be a string.") if not isinstance(v, Grid): error_messages.append(f"{attr_name} value {v} must be an LCM grid.") + else: + error_messages.append(f"{attr_name} must be a dictionary.") # Validate types of functions # ---------------------------------------------------------------------------------- - if not isinstance(model.functions, dict): - error_messages.append("functions must be a dictionary.") - else: + if isinstance(model.functions, dict): for k, v in model.functions.items(): if not isinstance(k, str): error_messages.append(f"function keys must be a strings, but is {k}.") @@ -85,11 +74,15 @@ def _validate_attribute_types(model: Model) -> list[str]: error_messages.append( f"function values must be a callable, but is {v}." ) + else: + error_messages.append("functions must be a dictionary.") - return error_messages + if error_messages: + msg = format_messages(error_messages) + raise ModelInitilizationError(msg) -def _validate_logical_consistency(model: Model) -> list[str]: +def _validate_logical_consistency(model: Model) -> None: """Validate the logical consistency of the model.""" error_messages = [] @@ -119,4 +112,6 @@ def _validate_logical_consistency(model: Model) -> list[str]: f"are used in both states and choices: {states_and_choices_overlap}.", ) - return error_messages + if error_messages: + msg = format_messages(error_messages) + raise ModelInitilizationError(msg) diff --git a/tests/conftest.py b/tests/conftest.py index a7a9a731..695ef46d 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,5 +1,23 @@ +from dataclasses import make_dataclass + +import pytest from jax import config def pytest_sessionstart(session): # noqa: ARG001 config.update("jax_enable_x64", val=True) + + +def _category_class_factory(values: list[int]): + init = [(f"cat{i}", int, value) for i, value in enumerate(values)] + return make_dataclass("CategoryClass", init) + + +@pytest.fixture(scope="session") +def category_class_factory(): + return _category_class_factory + + +@pytest.fixture(scope="session") +def binary_category_class(category_class_factory): + return category_class_factory([0, 1]) diff --git a/tests/input_processing/test_create_params_template.py b/tests/input_processing/test_create_params_template.py index e0b9c0d5..475831fc 100644 --- a/tests/input_processing/test_create_params_template.py +++ b/tests/input_processing/test_create_params_template.py @@ -29,17 +29,17 @@ class ModelMock: states: dict[str, Any] | None = None -def test_create_params_without_shocks(): +def test_create_params_without_shocks(binary_category_class): model = ModelMock( functions={ "f": lambda a, b, c: None, # noqa: ARG005 "next_b": lambda b: b, }, choices={ - "a": DiscreteGrid([0, 1]), + "a": DiscreteGrid(binary_category_class), }, states={ - "b": DiscreteGrid([0, 1]), + "b": DiscreteGrid(binary_category_class), }, n_periods=None, ) diff --git a/tests/input_processing/test_discrete_state_conversion.py b/tests/input_processing/test_discrete_state_conversion.py new file mode 100644 index 00000000..30d01337 --- /dev/null +++ b/tests/input_processing/test_discrete_state_conversion.py @@ -0,0 +1,156 @@ +from dataclasses import dataclass +from typing import Any + +import jax.numpy as jnp +import pytest +from numpy.testing import assert_array_equal + +from lcm import DiscreteGrid +from lcm.input_processing.discrete_grid_conversion import ( + DiscreteGridConverter, + _get_code_to_index_func, + _get_discrete_vars_with_non_index_codes, + _get_index_to_code_func, + _get_next_index_func, + convert_arbitrary_codes_to_array_indices, +) + + +@dataclass +class ModelMock: + """A model mock for testing the process_model function. + + This dataclass has the same attributes as the Model dataclass, but does not perform + any checks, which helps us to test the process_model function in isolation. + + """ + + n_periods: int + functions: dict[str, Any] + choices: dict[str, Any] + states: dict[str, Any] + + +@pytest.fixture +def model(category_class_factory): + def next_c(a, b): + return a + b + + return ModelMock( + n_periods=2, + functions={ + "next_c": next_c, + }, + choices={ + "a": DiscreteGrid(category_class_factory([0, 1])), + }, + states={ + # unsorted indices cannot be treated as indices + "c": DiscreteGrid(category_class_factory([1, 0])), + }, + ) + + +@pytest.fixture +def discrete_state_converter_kwargs(): + return { + "index_to_code": {"c": _get_index_to_code_func(jnp.array([1, 0]), name="c")}, + "code_to_index": {"c": _get_code_to_index_func(jnp.array([1, 0]), name="c")}, + } + + +def test_discrete_state_converter_internal_to_params(discrete_state_converter_kwargs): + expected = { + "next_c": 1, + } + internal_params = { + "next___c_index__": 1, + } + converter = DiscreteGridConverter(**discrete_state_converter_kwargs) + assert converter.internal_params_to_params(internal_params) == expected + + +def test_discrete_state_converter_params_to_internal(discrete_state_converter_kwargs): + expected = { + "next___c_index__": 1, + } + params = { + "next_c": 1, + } + converter = DiscreteGridConverter(**discrete_state_converter_kwargs) + assert converter.params_to_internal_params(params) == expected + + +def test_discrete_state_converter_internal_to_discrete_vars( + discrete_state_converter_kwargs, +): + expected = jnp.array([1, 0]) + internal_states = { + "__c_index__": jnp.array([0, 1]), + } + converter = DiscreteGridConverter(**discrete_state_converter_kwargs) + assert_array_equal(converter.internal_vars_to_vars(internal_states)["c"], expected) + + +def test_discrete_state_converter_discrete_vars_to_internal( + discrete_state_converter_kwargs, +): + expected = jnp.array([0, 1]) + states = { + "c": jnp.array([1, 0]), + } + converter = DiscreteGridConverter(**discrete_state_converter_kwargs) + assert_array_equal(converter.vars_to_internal_vars(states)["__c_index__"], expected) + + +def test_discrete_state_converter_raises_error_if_keys_dont_match(): + index_to_code = {"a": 0} + code_to_index = {"b": 0} + with pytest.raises( + ValueError, + match="The keys of index_to_code and code_to_index must be the same.", + ): + DiscreteGridConverter(index_to_code=index_to_code, code_to_index=code_to_index) + + +def test_get_index_to_label_func(): + codes_array = jnp.array([1, 0]) + got = _get_index_to_code_func(codes_array, name="foo") + assert got(__foo_index__=0) == 1 + assert got(1) == 0 + + +def test_get_code_to_index_func(): + codes_array = jnp.array([1, 0]) + got = _get_code_to_index_func(codes_array, name="foo") + assert_array_equal(got(foo=codes_array), jnp.arange(2)) + + +def test_get_discrete_vars_with_non_index_codes(model): + got = _get_discrete_vars_with_non_index_codes(model) + assert got == ["c"] + + +def test_convert_discrete_codes_to_indices(model): + # add replace method to model mock + model.replace = lambda **kwargs: ModelMock(**kwargs, n_periods=model.n_periods) + + got, _ = convert_arbitrary_codes_to_array_indices(model) + + assert "c" not in got.states + assert "__c_index__" in got.states + assert "c" in got.functions + assert got.states["__c_index__"].categories == ("__cat0_index__", "__cat1_index__") + assert got.states["__c_index__"].codes == (0, 1) + assert got.functions["c"](0) == 1 + assert got.functions["c"](1) == 0 + + +def test_get_next_index_func(): + got_func = _get_next_index_func( + next_func=lambda wealth, working: jnp.clip(wealth + working, 1, 3), + codes_array=jnp.array([1, 2, 3]), + name="wealth", + ) + got = got_func(wealth=jnp.array([1, 2]), working=jnp.array([0, 1])) + assert_array_equal(got, jnp.array([0, 2])) diff --git a/tests/input_processing/test_process_model.py b/tests/input_processing/test_process_model.py index 61a459f7..821a1f33 100644 --- a/tests/input_processing/test_process_model.py +++ b/tests/input_processing/test_process_model.py @@ -39,7 +39,7 @@ class ModelMock: @pytest.fixture -def model(): +def model(category_class_factory): def next_c(a, b): return a + b @@ -49,10 +49,10 @@ def next_c(a, b): "next_c": next_c, }, choices={ - "a": DiscreteGrid([0, 1]), + "a": DiscreteGrid(category_class_factory([0, 1])), }, states={ - "c": DiscreteGrid([0, 1]), + "c": DiscreteGrid(category_class_factory([1, 10])), }, ) @@ -91,14 +91,19 @@ def test_get_variable_info(model): def test_get_gridspecs(model): got = get_gridspecs(model) - assert got["a"] == DiscreteGrid([0, 1]) - assert got["c"] == DiscreteGrid([0, 1]) + assert isinstance(got["a"], DiscreteGrid) + assert got["a"].categories == ("cat0", "cat1") + assert got["a"].codes == (0, 1) + + assert isinstance(got["c"], DiscreteGrid) + assert got["c"].categories == ("cat0", "cat1") + assert got["c"].codes == (1, 10) def test_get_grids(model): got = get_grids(model) assert_array_equal(got["a"], jnp.array([0, 1])) - assert_array_equal(got["c"], jnp.array([0, 1])) + assert_array_equal(got["c"], jnp.array([1, 10])) def test_process_model_iskhakov_et_al_2017(): @@ -137,8 +142,13 @@ def test_process_model_iskhakov_et_al_2017(): ) assert model.gridspecs["consumption"] == consumption_grid - assert model.gridspecs["retirement"] == DiscreteGrid([0, 1]) - assert model.gridspecs["lagged_retirement"] == DiscreteGrid([0, 1]) + assert isinstance(model.gridspecs["retirement"], DiscreteGrid) + assert model.gridspecs["retirement"].categories == ("working", "retired") + assert model.gridspecs["retirement"].codes == (0, 1) + + assert isinstance(model.gridspecs["lagged_retirement"], DiscreteGrid) + assert model.gridspecs["lagged_retirement"].categories == ("working", "retired") + assert model.gridspecs["lagged_retirement"].codes == (0, 1) # Grids expected = grid_helpers.linspace(**model_config.choices["consumption"].__dict__) @@ -195,7 +205,9 @@ def test_process_model(): ) assert model.gridspecs["consumption"] == consumption_specs - assert model.gridspecs["retirement"] == DiscreteGrid([0, 1]) + assert isinstance(model.gridspecs["retirement"], DiscreteGrid) + assert model.gridspecs["retirement"].categories == ("working", "retired") + assert model.gridspecs["retirement"].codes == (0, 1) # Grids expected = grid_helpers.linspace(**model_config.choices["consumption"].__dict__) diff --git a/tests/test_entry_point.py b/tests/test_entry_point.py index d93dddab..b0c33622 100644 --- a/tests/test_entry_point.py +++ b/tests/test_entry_point.py @@ -29,15 +29,17 @@ # ====================================================================================== -@pytest.mark.parametrize( - "model", - [ - get_model_config(name, n_periods=3) - for name in ["iskhakov_et_al_2017", *STRIPPED_DOWN_AND_FULLY_DISCRETE_MODELS] - ], - ids=["iskhakov_et_al_2017", *STRIPPED_DOWN_AND_FULLY_DISCRETE_MODELS], -) -def test_get_lcm_function_with_solve_target(model): +def test_get_lcm_function_with_solve_target_stripped_down(): + model = get_model_config("iskhakov_et_al_2017_stripped_down", n_periods=3) + solve_model, params_template = get_lcm_function(model=model) + + params = tree_map(lambda _: 0.2, params_template) + + solve_model(params) + + +def test_get_lcm_function_with_solve_target_fully_discrete(): + model = get_model_config("iskhakov_et_al_2017_fully_discrete", n_periods=3) solve_model, params_template = get_lcm_function(model=model) params = tree_map(lambda _: 0.2, params_template) @@ -50,15 +52,27 @@ def test_get_lcm_function_with_solve_target(model): # ====================================================================================== -@pytest.mark.parametrize( - "model", - [ - get_model_config(name, n_periods=3) - for name in STRIPPED_DOWN_AND_FULLY_DISCRETE_MODELS - ], - ids=STRIPPED_DOWN_AND_FULLY_DISCRETE_MODELS, -) -def test_get_lcm_function_with_simulation_target_simple(model): +def test_get_lcm_function_with_simulation_target_simple_stripped_down(): + model = get_model_config("iskhakov_et_al_2017_stripped_down", n_periods=3) + + simulate, params_template = get_lcm_function( + model=model, + targets="solve_and_simulate", + ) + params = tree_map(lambda _: 0.2, params_template) + + simulate( + params, + initial_states={ + "wealth": jnp.array([0.0, 10.0, 50.0]), + }, + additional_targets=["age"] if "age" in model.functions else None, + ) + + +def test_get_lcm_function_with_simulation_target_simple_fully_discrete(): + model = get_model_config("iskhakov_et_al_2017_fully_discrete", n_periods=3) + simulate, params_template = get_lcm_function( model=model, targets="solve_and_simulate", @@ -234,9 +248,9 @@ def test_create_compute_conditional_continuation_value_with_discrete_model(): ) val = compute_ccv( - consumption_index=jnp.array([0, 1]), + __consumption_index__=jnp.array([0, 1]), retirement=1, - wealth=2, + __wealth_index__=2, params=params, vf_arr=None, ) @@ -338,9 +352,9 @@ def test_create_compute_conditional_continuation_policy_with_discrete_model(): ) policy, val = compute_ccv_policy( - consumption_index=jnp.array([0, 1]), + __consumption_index__=jnp.array([0, 1]), retirement=1, - wealth=2, + __wealth_index__=2, params=params, vf_arr=None, ) diff --git a/tests/test_grids.py b/tests/test_grids.py index aad98b5b..1d23126c 100644 --- a/tests/test_grids.py +++ b/tests/test_grids.py @@ -1,3 +1,6 @@ +import re +from dataclasses import make_dataclass + import numpy as np import pytest @@ -6,61 +9,97 @@ DiscreteGrid, LinspaceGrid, LogspaceGrid, + _get_field_names_and_values, _validate_continuous_grid, _validate_discrete_grid, ) def test_validate_discrete_grid_empty(): - assert _validate_discrete_grid([]) == ["options must contain at least one element"] + category_class = make_dataclass("Category", []) + error_msg = "category_class passed to DiscreteGrid must have at least one field" + with pytest.raises(GridInitializationError, match=error_msg): + _validate_discrete_grid(category_class) def test_validate_discrete_grid_non_scalar_input(): - assert _validate_discrete_grid([1, "a"]) == [ - "options must contain only scalar int or float values", - "options must be a list of consecutive integers starting from 0", - ] + category_class = make_dataclass("Category", [("a", int, 1), ("b", str, "s")]) + error_msg = ( + "Field values of the category_class passed to DiscreteGrid can only be " + "scalar int or float values. The values to the following fields are not: ['b']" + ) + with pytest.raises(GridInitializationError, match=re.escape(error_msg)): + _validate_discrete_grid(category_class) + + +def test_validate_discrete_grid_none_input(): + category_class = make_dataclass("Category", [("a", int), ("b", int, 1)]) + error_msg = ( + "Field values of the category_class passed to DiscreteGrid can only be " + "scalar int or float values. The values to the following fields are not: ['a']" + ) + with pytest.raises(GridInitializationError, match=re.escape(error_msg)): + _validate_discrete_grid(category_class) def test_validate_discrete_grid_non_unique(): - assert _validate_discrete_grid([1, 2, 2]) == [ - "options must contain unique values", - "options must be a list of consecutive integers starting from 0", - ] + category_class = make_dataclass("Category", [("a", int, 1), ("b", int, 1)]) + error_msg = ( + "Field values of the category_class passed to DiscreteGrid must be unique. " + "The following values are duplicated: {1}" + ) + with pytest.raises(GridInitializationError, match=error_msg): + _validate_discrete_grid(category_class) + + +def test_get_fields_with_defaults(): + category_class = make_dataclass("Category", [("a", int, 1), ("b", int, 2)]) + assert _get_field_names_and_values(category_class) == {"a": 1, "b": 2} + + +def test_get_fields_no_defaults(): + category_class = make_dataclass("Category", [("a", int), ("b", int)]) + assert _get_field_names_and_values(category_class) == {"a": None, "b": None} + + +def test_get_fields_instance(): + category_class = make_dataclass("Category", [("a", int), ("b", int)]) + assert _get_field_names_and_values(category_class(a=1, b=2)) == {"a": 1, "b": 2} -def test_validate_discrete_grid_non_consecutive(): - assert _validate_discrete_grid([1, 3, 2]) == [ - "options must be a list of consecutive integers starting from 0" - ] +def test_get_fields_empty(): + category_class = make_dataclass("Category", []) + assert _get_field_names_and_values(category_class) == {} def test_validate_continuous_grid_invalid_start(): - assert _validate_continuous_grid("a", 1, 10) == [ - "start must be a scalar int or float value" - ] + error_msg = "start must be a scalar int or float value" + with pytest.raises(GridInitializationError, match=error_msg): + _validate_continuous_grid("a", 1, 10) def test_validate_continuous_grid_invalid_stop(): - assert _validate_continuous_grid(1, "a", 10) == [ - "stop must be a scalar int or float value" - ] + error_msg = "stop must be a scalar int or float value" + with pytest.raises(GridInitializationError, match=error_msg): + _validate_continuous_grid(1, "a", 10) def test_validate_continuous_grid_invalid_n_points(): - assert _validate_continuous_grid(1, 2, "a") == [ - "n_points must be an int greater than 0 but is a" - ] + error_msg = "n_points must be an int greater than 0 but is a" + with pytest.raises(GridInitializationError, match=error_msg): + _validate_continuous_grid(1, 2, "a") def test_validate_continuous_grid_negative_n_points(): - assert _validate_continuous_grid(1, 2, -1) == [ - "n_points must be an int greater than 0 but is -1" - ] + error_msg = "n_points must be an int greater than 0 but is -1" + with pytest.raises(GridInitializationError, match=error_msg): + _validate_continuous_grid(1, 2, -1) def test_validate_continuous_grid_start_greater_than_stop(): - assert _validate_continuous_grid(2, 1, 10) == ["start must be less than stop"] + error_msg = "start must be less than stop" + with pytest.raises(GridInitializationError, match=error_msg): + _validate_continuous_grid(2, 1, 10) def test_linspace_grid_creation(): @@ -74,7 +113,10 @@ def test_logspace_grid_creation(): def test_discrete_grid_creation(): - grid = DiscreteGrid(options=[0, 1, 2]) + category_class = make_dataclass( + "Category", [("a", int, 0), ("b", int, 1), ("c", int, 2)] + ) + grid = DiscreteGrid(category_class) assert np.allclose(grid.to_jax(), np.arange(3)) @@ -88,9 +130,12 @@ def test_logspace_grid_invalid_start(): LogspaceGrid(start=1, stop=0, n_points=10) -def test_discrete_grid_invalid_options(): +def test_discrete_grid_invalid_category_class(): + category_class = make_dataclass( + "Category", [("a", int, 1), ("b", str, "wrong_type")] + ) with pytest.raises( GridInitializationError, - match="options must contain only scalar int or float values", + match="Field values of the category_class passed to DiscreteGrid can only be", ): - DiscreteGrid(options=[1, "a"]) + DiscreteGrid(category_class) diff --git a/tests/test_model.py b/tests/test_model.py index 547a7762..4536946b 100644 --- a/tests/test_model.py +++ b/tests/test_model.py @@ -95,15 +95,15 @@ def test_model_invalid_n_periods(): ) -def test_model_missing_next_func(): +def test_model_missing_next_func(binary_category_class): with pytest.raises( ModelInitilizationError, match="Each state must have a corresponding next state function.", ): Model( n_periods=2, - states={"health": DiscreteGrid([0, 1])}, - choices={"exercise": DiscreteGrid([0, 1])}, + states={"health": DiscreteGrid(binary_category_class)}, + choices={"exercise": DiscreteGrid(binary_category_class)}, functions={"utility": lambda: 0}, ) @@ -121,14 +121,14 @@ def test_model_missing_utility(): ) -def test_model_overlapping_states_choices(): +def test_model_overlapping_states_choices(binary_category_class): with pytest.raises( ModelInitilizationError, match="States and choices cannot have overlapping names.", ): Model( n_periods=2, - states={"health": DiscreteGrid([0, 1])}, - choices={"health": DiscreteGrid([0, 1])}, + states={"health": DiscreteGrid(binary_category_class)}, + choices={"health": DiscreteGrid(binary_category_class)}, functions={"utility": lambda: 0}, ) diff --git a/tests/test_model_functions.py b/tests/test_model_functions.py index bd9a933d..ad1b1ce3 100644 --- a/tests/test_model_functions.py +++ b/tests/test_model_functions.py @@ -34,6 +34,7 @@ def h(): functions={"f": f, "g": g, "h": h}, function_info=function_info, params=None, + discrete_grid_converter=None, random_utility_shocks=None, n_periods=None, ) diff --git a/tests/test_models/deterministic.py b/tests/test_models/deterministic.py index 0c103e9c..f8dc7bb7 100644 --- a/tests/test_models/deterministic.py +++ b/tests/test_models/deterministic.py @@ -8,6 +8,7 @@ """ from copy import deepcopy +from dataclasses import dataclass, make_dataclass import jax.numpy as jnp @@ -18,6 +19,15 @@ # ====================================================================================== +# -------------------------------------------------------------------------------------- +# Categorical variables +# -------------------------------------------------------------------------------------- +@dataclass +class RetirementStatus: + working: int = 0 + retired: int = 1 + + # -------------------------------------------------------------------------------------- # Utility functions # -------------------------------------------------------------------------------------- @@ -35,20 +45,7 @@ def utility_with_filter( # https://github.com/OpenSourceEconomics/lcm/issues/30 lagged_retirement, # noqa: ARG001 ): - return utility(consumption, working=working, disutility_of_work=disutility_of_work) - - -def utility_fully_discrete( - consumption, - working, - disutility_of_work, - # Temporary workaround for bug described in issue #30, which requires us to pass - # all state variables to the utility function. - # TODO(@timmens): Remove function once #30 is fixed (re-use "utility"). - # https://github.com/OpenSourceEconomics/lcm/issues/30 - consumption_index, # noqa: ARG001 -): - return utility(consumption, working=working, disutility_of_work=disutility_of_work) + return utility(consumption, working, disutility_of_work) # -------------------------------------------------------------------------------------- @@ -70,15 +67,6 @@ def age(_period): return _period + 18 -# Temporary workaround until option labels are supported that do not coincide with -# the indices of the options. -# TODO(@timmens): Remove this once #82 is closed. -# https://github.com/OpenSourceEconomics/lcm/issues/82 -def consumption(consumption_index): - _consumption_values = jnp.array([1, 2]) - return _consumption_values[consumption_index] - - # -------------------------------------------------------------------------------------- # State transitions # -------------------------------------------------------------------------------------- @@ -86,6 +74,13 @@ def next_wealth(wealth, consumption, labor_income, interest_rate): return (1 + interest_rate) * (wealth - consumption) + labor_income +# For discrete state variables, we need to assure that the next state also belongs to +# the grid. We therefore round the result of the continuous state transition function. +def next_wealth_discrete(wealth, consumption, labor_income, interest_rate): + next_wealth_cont = next_wealth(wealth, consumption, labor_income, interest_rate) + return jnp.clip(jnp.rint(next_wealth_cont).astype(jnp.int32), 1, 400) + + # -------------------------------------------------------------------------------------- # Constraints # -------------------------------------------------------------------------------------- @@ -97,7 +92,10 @@ def consumption_constraint(consumption, wealth): # Filters # -------------------------------------------------------------------------------------- def absorbing_retirement_filter(retirement, lagged_retirement): - return jnp.logical_or(retirement == 1, lagged_retirement == 0) + return jnp.logical_or( + retirement == RetirementStatus.retired, + lagged_retirement == RetirementStatus.working, + ) # ====================================================================================== @@ -121,7 +119,7 @@ def absorbing_retirement_filter(retirement, lagged_retirement): "working": working, }, choices={ - "retirement": DiscreteGrid([0, 1]), + "retirement": DiscreteGrid(RetirementStatus), "consumption": LinspaceGrid( start=1, stop=400, @@ -134,7 +132,7 @@ def absorbing_retirement_filter(retirement, lagged_retirement): stop=400, n_points=100, ), - "lagged_retirement": DiscreteGrid([0, 1]), + "lagged_retirement": DiscreteGrid(RetirementStatus), }, ) @@ -155,7 +153,7 @@ def absorbing_retirement_filter(retirement, lagged_retirement): "age": age, }, choices={ - "retirement": DiscreteGrid([0, 1]), + "retirement": DiscreteGrid(RetirementStatus), "consumption": LinspaceGrid( start=1, stop=400, @@ -172,30 +170,36 @@ def absorbing_retirement_filter(retirement, lagged_retirement): ) +@dataclass +class DiscreteConsumptionStatus: + low: int = 1 + high: int = 2 + + +DiscreteWealthStatus = make_dataclass( + "DiscreteWealthStatus", [(f"level_{w}", int, w) for w in range(1, 401)] +) + + ISKHAKOV_ET_AL_2017_FULLY_DISCRETE = Model( description=( "Starts from Iskhakov et al. (2017), removes filters and the lagged_retirement " - "state, and makes the consumption decision discrete." + "state, and makes the consumption decision and the wealth state discrete." ), n_periods=3, functions={ - "utility": utility_fully_discrete, - "next_wealth": next_wealth, + "utility": utility, + "next_wealth": next_wealth_discrete, "consumption_constraint": consumption_constraint, "labor_income": labor_income, "working": working, - "consumption": consumption, }, choices={ - "retirement": DiscreteGrid([0, 1]), - "consumption_index": DiscreteGrid([0, 1]), + "retirement": DiscreteGrid(RetirementStatus), + "consumption": DiscreteGrid(DiscreteConsumptionStatus), }, states={ - "wealth": LinspaceGrid( - start=1, - stop=400, - n_points=100, - ), + "wealth": DiscreteGrid(DiscreteWealthStatus), }, ) diff --git a/tests/test_models/stochastic.py b/tests/test_models/stochastic.py index e5e96005..d31e592a 100644 --- a/tests/test_models/stochastic.py +++ b/tests/test_models/stochastic.py @@ -10,6 +10,7 @@ """ from copy import deepcopy +from dataclasses import dataclass import jax.numpy as jnp @@ -21,6 +22,27 @@ # ====================================================================================== +# -------------------------------------------------------------------------------------- +# Categorical variables +# -------------------------------------------------------------------------------------- +@dataclass +class HealthStatus: + bad: int = 0 + good: int = 1 + + +@dataclass +class PartnerStatus: + single: int = 0 + partnered: int = 1 + + +@dataclass +class WorkingStatus: + retired: int = 0 + working: int = 1 + + # -------------------------------------------------------------------------------------- # Utility function # -------------------------------------------------------------------------------------- @@ -91,7 +113,7 @@ def consumption_constraint(consumption, wealth): "labor_income": labor_income, }, choices={ - "working": DiscreteGrid([0, 1]), + "working": DiscreteGrid(WorkingStatus), "consumption": LinspaceGrid( start=1, stop=100, @@ -99,8 +121,8 @@ def consumption_constraint(consumption, wealth): ), }, states={ - "health": DiscreteGrid([0, 1]), - "partner": DiscreteGrid([0, 1]), + "health": DiscreteGrid(HealthStatus), + "partner": DiscreteGrid(PartnerStatus), "wealth": LinspaceGrid( start=1, stop=100, diff --git a/tests/test_next_state.py b/tests/test_next_state.py index 7bdcbb27..416c6394 100644 --- a/tests/test_next_state.py +++ b/tests/test_next_state.py @@ -68,6 +68,7 @@ def f_weight_b(state): # noqa: ARG001 gridspecs=None, variable_info=None, params=None, + discrete_grid_converter=None, random_utility_shocks=None, n_periods=1, ) diff --git a/tests/test_simulate.py b/tests/test_simulate.py index a9ab723c..05215b9d 100644 --- a/tests/test_simulate.py +++ b/tests/test_simulate.py @@ -9,7 +9,7 @@ create_compute_conditional_continuation_policy, get_lcm_function, ) -from lcm.input_processing import process_model +from lcm.input_processing import DiscreteGridConverter, process_model from lcm.logging import get_logger from lcm.model_functions import get_utility_and_feasibility_function from lcm.next_state import _get_next_state_function_simulation @@ -75,6 +75,7 @@ def simulate_inputs(): "compute_ccv_policy_functions": compute_ccv_policy_functions, "model": model, "next_state": _get_next_state_function_simulation(model), + "discrete_grid_converter": DiscreteGridConverter(), } @@ -168,6 +169,32 @@ def test_simulate_using_get_lcm_function( assert (res.loc[period]["value"].diff()[1:] >= 0).all() +# ====================================================================================== +# Test simulation works correctly with discrete grid conversion +# ====================================================================================== + + +def test_simulate_with_discrete_grid_conversion(): + """Test that the simulation works correctly with discrete grid conversion.""" + model = get_model_config("iskhakov_et_al_2017_fully_discrete", n_periods=2) + params = get_params(wage=2) + + simulate_model, _ = get_lcm_function(model=model, targets="solve_and_simulate") + + res = simulate_model( + params, + initial_states={"wealth": jnp.array([1, 4])}, + additional_targets=["labor_income", "working"], + ) + + assert "__consumption_index__" not in res.columns + assert "__wealth_index__" not in res.columns + + assert_array_equal(res["retirement"], jnp.array([0, 1, 1, 1])) + assert_array_equal(res["consumption"], jnp.array([1, 2, 2, 2])) + assert_array_equal(res["wealth"], jnp.array([1, 4, 2, 2])) + + # ====================================================================================== # Testing effects of parameters # ====================================================================================== @@ -353,7 +380,9 @@ def test_process_simulated_data(): "b": jnp.array([-1, -2, -3, -4]), } - got = _process_simulated_data(simulated) + got = _process_simulated_data( + simulated, discrete_grid_converter=DiscreteGridConverter() + ) assert tree_equal(expected, got) diff --git a/tests/test_solution_on_toy_model.py b/tests/test_solution_on_toy_model.py index 3da3b008..dc21258e 100644 --- a/tests/test_solution_on_toy_model.py +++ b/tests/test_solution_on_toy_model.py @@ -1,7 +1,7 @@ """Test analytical solution and simulation with only discrete choices.""" from copy import deepcopy -from dataclasses import replace +from dataclasses import dataclass, replace import jax.numpy as jnp import numpy as np @@ -18,6 +18,24 @@ # ====================================================================================== # Model specification # ====================================================================================== +@dataclass +class ConsumptionChoice: + low: int = 0 + high: int = 1 + + +@dataclass +class WorkingStatus: + retired: int = 0 + working: int = 1 + + +@dataclass +class HealthStatus: + bad: int = 0 + good: int = 1 + + def utility(consumption, working, wealth, health): # noqa: ARG001 return jnp.log(1 + health * consumption) - 0.5 * working @@ -38,8 +56,8 @@ def consumption_constraint(consumption, wealth): }, n_periods=2, choices={ - "consumption": DiscreteGrid([0, 1]), - "working": DiscreteGrid([0, 1]), + "consumption": DiscreteGrid(ConsumptionChoice), + "working": DiscreteGrid(WorkingStatus), }, states={ "wealth": LinspaceGrid( @@ -58,7 +76,7 @@ def next_health(health): STOCHASTIC_MODEL = deepcopy(DETERMINISTIC_MODEL) STOCHASTIC_MODEL.functions["next_health"] = next_health -STOCHASTIC_MODEL.states["health"] = DiscreteGrid([0, 1]) +STOCHASTIC_MODEL.states["health"] = DiscreteGrid(HealthStatus) # ====================================================================================== diff --git a/tests/test_solve_brute.py b/tests/test_solve_brute.py index 7fc11f2c..1cff2ec1 100644 --- a/tests/test_solve_brute.py +++ b/tests/test_solve_brute.py @@ -4,6 +4,7 @@ from numpy.testing import assert_array_almost_equal as aaae from lcm.entry_point import create_compute_conditional_continuation_value +from lcm.input_processing import DiscreteGridConverter from lcm.interfaces import Space from lcm.logging import get_logger from lcm.solve_brute import solve, solve_continuous_problem @@ -112,6 +113,7 @@ def calculate_emax(values, params): # noqa: ARG001 continuous_choice_grids=continuous_choice_grids, compute_ccv_functions=utility_and_feasibility_functions, emax_calculators=emax_calculators, + discrete_grid_converter=DiscreteGridConverter(), logger=get_logger(debug_mode=False), ) diff --git a/tests/test_state_space.py b/tests/test_state_space.py index c5d9384c..8449e76c 100644 --- a/tests/test_state_space.py +++ b/tests/test_state_space.py @@ -68,9 +68,10 @@ def absorbing_retirement_filter(retirement, lagged_retirement): variable_info=None, functions=functions, function_info=function_info, + params=None, + discrete_grid_converter=None, random_utility_shocks=None, n_periods=100, - params={}, )