diff --git a/docs/case_studies/Forrestania/forrestania.ipynb b/docs/case_studies/Forrestania/forrestania.ipynb index 42f420ed5..d5100abb4 100644 --- a/docs/case_studies/Forrestania/forrestania.ipynb +++ b/docs/case_studies/Forrestania/forrestania.ipynb @@ -107,7 +107,7 @@ "(forrestania-data)=\n", "## Data\n", "\n", - "[Download the data package here](https://github.com/MiraGeoscience/simpeg-drivers/raw/refs/heads/GEOPY-2297/simpeg_drivers-assets/Case%20studies/Forrestania_SRTM1%20Australia_MGA50.zip?download=)\n", + "[Download the data package here](https://github.com/MiraGeoscience/simpeg-drivers/raw/refs/heads/develop/simpeg_drivers-assets/Case%20studies/Forrestania_SRTM1%20Australia_MGA50.zip?download=)\n", "\n", "We first need to consolidate the data into a usable format. We use [Geoscience ANALYST](https://www.mirageoscience.com/mining-industry-software/geoscience-analyst/) to import and convert the original files into the `geoh5` format. The data bundle includes\n", "\n", @@ -257,11 +257,13 @@ "[Click to enlarge]\n", "```\n", "\n", - "The **inducing field parameters** at the time and location of the survey are\n", + "The **inducing field parameters** at the time and location of the survey are:\n", "\n", - "- Magnitude: 59127 nT\n", - "- Inclination: -66.9$\\degree$\n", - "- Declination: -1.05$\\degree$ \n", + "Magnitude: $59127$ nT\n", + "\n", + "Inclination: $-66.9^\\circ$\n", + "\n", + "Declination: $-1.05^\\circ$ \n", "\n", "#### Step 2: Detrend\n", "The local background field appears to be slightly lower (~112 nT) than the computed IGRF model, as most of the data away from the main anomaly are below 0. To avoid modelling this background trend, we can remove the median value. \n", diff --git a/environments/py-3.10-linux-64-dev.conda.lock.yml b/environments/py-3.10-linux-64-dev.conda.lock.yml index bd40a8991..900470215 100644 --- a/environments/py-3.10-linux-64-dev.conda.lock.yml +++ b/environments/py-3.10-linux-64-dev.conda.lock.yml @@ -15,7 +15,7 @@ dependencies: - argon2-cffi-bindings=25.1.0=py310h7c4b9e2_0 - arrow=1.3.0=pyhd8ed1ab_1 - asciitree=0.3.3=py_2 - - astroid=3.3.11=py310hff52083_0 + - astroid=3.3.11=py310hff52083_1 - asttokens=3.0.0=pyhd8ed1ab_1 - async-lru=2.0.5=pyh29332c3_0 - attrs=25.3.0=pyh71513ae_0 @@ -24,28 +24,28 @@ dependencies: - bleach=6.2.0=pyh29332c3_4 - bleach-with-css=6.2.0=h82add2a_4 - bokeh=3.6.3=pyhd8ed1ab_0 - - brotli=1.1.0=hb9d3cd8_3 - - brotli-bin=1.1.0=hb9d3cd8_3 - - brotli-python=1.1.0=py310hf71b8c6_3 + - brotli=1.1.0=hb03c661_4 + - brotli-bin=1.1.0=hb03c661_4 + - brotli-python=1.1.0=py310hea6c23e_4 - bzip2=1.0.8=h4bc722e_7 - c-ares=1.34.5=hb9d3cd8_0 - ca-certificates=2025.8.3=hbd8a1cb_0 - cached-property=1.5.2=hd8ed1ab_1 - cached_property=1.5.2=pyha770c72_1 - certifi=2025.8.3=pyhd8ed1ab_0 - - cffi=1.17.1=py310h8deb56e_0 + - cffi=1.17.1=py310h34a4b09_1 - charset-normalizer=3.4.3=pyhd8ed1ab_0 - click=8.2.1=pyh707e725_0 - cloudpickle=3.1.1=pyhd8ed1ab_0 - colorama=0.4.6=pyhd8ed1ab_1 - comm=0.2.3=pyhe01879c_0 - contourpy=1.3.2=py310h3788b33_0 - - coverage=7.10.5=py310h3406613_0 + - coverage=7.10.6=py310h3406613_1 - cycler=0.12.1=pyhd8ed1ab_1 - cytoolz=1.0.1=py310ha75aee5_0 - dask-core=2025.3.0=pyhd8ed1ab_0 - dataclasses=0.8=pyhc8e2a94_3 - - debugpy=1.8.16=py310h25320af_0 + - debugpy=1.8.16=py310h25320af_1 - decorator=5.2.1=pyhd8ed1ab_0 - defusedxml=0.7.1=pyhd8ed1ab_0 - dill=0.4.0=pyhd8ed1ab_0 @@ -53,17 +53,17 @@ dependencies: - distributed=2025.3.0=pyhd8ed1ab_0 - docutils=0.19=py310hff52083_1 - exceptiongroup=1.3.0=pyhd8ed1ab_0 - - executing=2.2.0=pyhd8ed1ab_0 + - executing=2.2.1=pyhd8ed1ab_0 - fasteners=0.19=pyhd8ed1ab_1 - fonttools=4.59.2=py310h3406613_0 - fqdn=1.5.1=pyhd8ed1ab_1 - freetype=2.13.3=ha770c72_1 - - fsspec=2025.7.0=pyhd8ed1ab_0 + - fsspec=2025.9.0=pyhd8ed1ab_0 - geoana=0.7.2=py310ha2bacc8_0 - - greenlet=3.2.4=py310hea6c23e_0 + - greenlet=3.2.4=py310hea6c23e_1 - h11=0.16.0=pyhd8ed1ab_0 - h2=4.3.0=pyhcf101f3_0 - - h5py=3.14.0=nompi_py310hea1e86d_100 + - h5py=3.14.0=nompi_py310h4aa865e_101 - hdf5=1.14.6=nompi_h6e4c0c1_103 - hpack=4.1.0=pyhd8ed1ab_0 - httpcore=1.0.9=pyh29332c3_0 @@ -84,7 +84,7 @@ dependencies: - jinja2=3.1.6=pyhd8ed1ab_0 - joblib=1.5.2=pyhd8ed1ab_0 - json5=0.12.1=pyhd8ed1ab_0 - - jsonpointer=3.0.0=py310hff52083_1 + - jsonpointer=3.0.0=py310hff52083_2 - jsonschema=4.25.1=pyhe01879c_0 - jsonschema-specifications=2025.4.1=pyh29332c3_0 - jsonschema-with-format-nongpl=4.25.1=he01879c_0 @@ -96,7 +96,7 @@ dependencies: - jupyter_events=0.12.0=pyh29332c3_0 - jupyter_server=2.17.0=pyhcf101f3_0 - jupyter_server_terminals=0.5.3=pyhd8ed1ab_1 - - jupyterlab=4.4.6=pyhd8ed1ab_0 + - jupyterlab=4.4.7=pyhd8ed1ab_0 - jupyterlab_pygments=0.3.0=pyhd8ed1ab_2 - jupyterlab_server=2.27.3=pyhd8ed1ab_1 - jupyterlab_widgets=1.1.11=pyhd8ed1ab_0 @@ -110,11 +110,11 @@ dependencies: - ld_impl_linux-64=2.44=h1423503_1 - lerc=4.0.0=h0aef613_1 - libaec=1.1.4=h3f801dc_0 - - libblas=3.9.0=34_hfdb39a5_mkl - - libbrotlicommon=1.1.0=hb9d3cd8_3 - - libbrotlidec=1.1.0=hb9d3cd8_3 - - libbrotlienc=1.1.0=hb9d3cd8_3 - - libcblas=3.9.0=34_h372d94f_mkl + - libblas=3.9.0=35_hfdb39a5_mkl + - libbrotlicommon=1.1.0=hb03c661_4 + - libbrotlidec=1.1.0=hb03c661_4 + - libbrotlienc=1.1.0=hb03c661_4 + - libcblas=3.9.0=35_h372d94f_mkl - libcurl=8.14.1=h332b0f4_0 - libdeflate=1.24=h86f0d12_0 - libdlf=0.3.0=pyhd8ed1ab_1 @@ -131,9 +131,9 @@ dependencies: - libhwloc=2.12.1=default_h3d81e11_1000 - libiconv=1.18=h3b78370_2 - libjpeg-turbo=3.1.0=hb9d3cd8_0 - - liblapack=3.9.0=34_hc41d3b0_mkl + - liblapack=3.9.0=35_hc41d3b0_mkl - liblzma=5.8.1=hb9d3cd8_2 - - libnghttp2=1.64.0=h161d5f1_0 + - libnghttp2=1.67.0=had1ee68_0 - libnsl=2.0.1=hb9d3cd8_1 - libpng=1.6.50=h421ea60_1 - libscotch=7.0.6=hea33c07_1 @@ -151,7 +151,7 @@ dependencies: - libxml2=2.13.8=h2cb61b6_1 - libzlib=1.3.1=hb9d3cd8_2 - linkify-it-py=2.0.3=pyhd8ed1ab_1 - - llvm-openmp=20.1.8=h4922eb0_2 + - llvm-openmp=21.1.0=h4922eb0_0 - locket=1.0.0=pyhd8ed1ab_0 - markdown-it-py=2.2.0=pyhd8ed1ab_0 - markupsafe=3.0.2=py310h89163eb_1 @@ -161,9 +161,9 @@ dependencies: - mdit-py-plugins=0.5.0=pyhd8ed1ab_0 - mdurl=0.1.2=pyhd8ed1ab_1 - metis=5.1.0=hd0bcaf9_1007 - - mistune=3.1.3=pyh29332c3_0 + - mistune=3.1.4=pyhcf101f3_0 - mkl=2024.2.2=ha770c72_17 - - msgpack-python=1.1.1=py310h3788b33_0 + - msgpack-python=1.1.1=py310h03d9f68_1 - mumps-include=5.7.3=h82cca05_10 - mumps-seq=5.7.3=h06cbf8f_10 - munkres=1.1.4=pyhd8ed1ab_1 @@ -213,7 +213,7 @@ dependencies: - pymatsolver=0.3.1=pyh48887ae_201 - pyparsing=3.2.3=pyhe01879c_2 - pysocks=1.7.1=pyha55dd90_7 - - pytest=8.4.1=pyhd8ed1ab_0 + - pytest=8.4.2=pyhd8ed1ab_0 - pytest-cov=6.2.1=pyhd8ed1ab_0 - python=3.10.18=hd6af730_0_cpython - python-dateutil=2.9.0.post0=pyhe01879c_2 @@ -232,7 +232,7 @@ dependencies: - rfc3339-validator=0.1.4=pyhd8ed1ab_1 - rfc3986-validator=0.1.1=pyh9f0ad1d_0 - rfc3987-syntax=1.1.0=pyhe01879c_1 - - rpds-py=0.27.1=py310hd8f68c5_0 + - rpds-py=0.27.1=py310hd8f68c5_1 - rtree=1.2.0=py310haf1e407_1 - scikit-learn=1.6.1=py310h27f47ee_0 - scipy=1.14.1=py310hfcf56fc_2 @@ -273,7 +273,7 @@ dependencies: - tomli=2.2.1=pyhe01879c_2 - tomlkit=0.13.3=pyha770c72_0 - toolz=1.0.0=pyhd8ed1ab_1 - - tornado=6.5.2=py310h7c4b9e2_0 + - tornado=6.5.2=py310h7c4b9e2_1 - tqdm=4.67.1=pyhd8ed1ab_1 - traitlets=5.14.3=pyhd8ed1ab_1 - trimesh=4.1.8=pyhd8ed1ab_0 @@ -301,13 +301,13 @@ dependencies: - zeromq=4.3.5=h3b0a872_7 - zict=3.0.0=pyhd8ed1ab_1 - zipp=3.23.0=pyhd8ed1ab_0 - - zstandard=0.23.0=py310h7c4b9e2_3 + - zstandard=0.24.0=py310h1d967bf_1 - zstd=1.5.7=hb8e6e7a_2 - pip: - - geoapps-utils @ git+https://github.com/MiraGeoscience/geoapps-utils.git@655afd735989270d5d03b80a98cbe22844b47066 - - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@2c9248c60e4166fadb973fcd4f1777bb2ee964f6 + - geoapps-utils @ git+https://github.com/MiraGeoscience/geoapps-utils.git@1241642d40693ee9c58f83ce46b317cba43dc68b + - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@3a91dd92144a34b3c1ad1e5885029a7102e6337c - grid-apps @ git+https://github.com/MiraGeoscience/grid-apps.git@416815352706add295a9d2b90814d2291068a85e - - mira-simpeg @ git+https://github.com/MiraGeoscience/simpeg.git@d794a0b24aafb4beccc7984e68b6904be44f860f + - mira-simpeg @ git+https://github.com/MiraGeoscience/simpeg.git@5561fb5441be2cceaf8e1ca5fa05f6e3b19ee6bb variables: KMP_WARNINGS: 0 diff --git a/environments/py-3.10-linux-64.conda.lock.yml b/environments/py-3.10-linux-64.conda.lock.yml index ad863dc33..bc7d17251 100644 --- a/environments/py-3.10-linux-64.conda.lock.yml +++ b/environments/py-3.10-linux-64.conda.lock.yml @@ -10,16 +10,16 @@ dependencies: - annotated-types=0.7.0=pyhd8ed1ab_1 - asciitree=0.3.3=py_2 - bokeh=3.6.3=pyhd8ed1ab_0 - - brotli=1.1.0=hb9d3cd8_3 - - brotli-bin=1.1.0=hb9d3cd8_3 - - brotli-python=1.1.0=py310hf71b8c6_3 + - brotli=1.1.0=hb03c661_4 + - brotli-bin=1.1.0=hb03c661_4 + - brotli-python=1.1.0=py310hea6c23e_4 - bzip2=1.0.8=h4bc722e_7 - c-ares=1.34.5=hb9d3cd8_0 - ca-certificates=2025.8.3=hbd8a1cb_0 - cached-property=1.5.2=hd8ed1ab_1 - cached_property=1.5.2=pyha770c72_1 - certifi=2025.8.3=pyhd8ed1ab_0 - - cffi=1.17.1=py310h8deb56e_0 + - cffi=1.17.1=py310h34a4b09_1 - click=8.2.1=pyh707e725_0 - cloudpickle=3.1.1=pyhd8ed1ab_0 - colorama=0.4.6=pyhd8ed1ab_1 @@ -32,10 +32,10 @@ dependencies: - fasteners=0.19=pyhd8ed1ab_1 - fonttools=4.59.2=py310h3406613_0 - freetype=2.13.3=ha770c72_1 - - fsspec=2025.7.0=pyhd8ed1ab_0 + - fsspec=2025.9.0=pyhd8ed1ab_0 - geoana=0.7.2=py310ha2bacc8_0 - h2=4.3.0=pyhcf101f3_0 - - h5py=3.14.0=nompi_py310hea1e86d_100 + - h5py=3.14.0=nompi_py310h4aa865e_101 - hdf5=1.14.6=nompi_h6e4c0c1_103 - hpack=4.1.0=pyhd8ed1ab_0 - hyperframe=6.1.0=pyhd8ed1ab_0 @@ -49,11 +49,11 @@ dependencies: - ld_impl_linux-64=2.44=h1423503_1 - lerc=4.0.0=h0aef613_1 - libaec=1.1.4=h3f801dc_0 - - libblas=3.9.0=34_hfdb39a5_mkl - - libbrotlicommon=1.1.0=hb9d3cd8_3 - - libbrotlidec=1.1.0=hb9d3cd8_3 - - libbrotlienc=1.1.0=hb9d3cd8_3 - - libcblas=3.9.0=34_h372d94f_mkl + - libblas=3.9.0=35_hfdb39a5_mkl + - libbrotlicommon=1.1.0=hb03c661_4 + - libbrotlidec=1.1.0=hb03c661_4 + - libbrotlienc=1.1.0=hb03c661_4 + - libcblas=3.9.0=35_h372d94f_mkl - libcurl=8.14.1=h332b0f4_0 - libdeflate=1.24=h86f0d12_0 - libdlf=0.3.0=pyhd8ed1ab_1 @@ -70,9 +70,9 @@ dependencies: - libhwloc=2.12.1=default_h3d81e11_1000 - libiconv=1.18=h3b78370_2 - libjpeg-turbo=3.1.0=hb9d3cd8_0 - - liblapack=3.9.0=34_hc41d3b0_mkl + - liblapack=3.9.0=35_hc41d3b0_mkl - liblzma=5.8.1=hb9d3cd8_2 - - libnghttp2=1.64.0=h161d5f1_0 + - libnghttp2=1.67.0=had1ee68_0 - libnsl=2.0.1=hb9d3cd8_1 - libpng=1.6.50=h421ea60_1 - libscotch=7.0.6=hea33c07_1 @@ -88,13 +88,13 @@ dependencies: - libxcrypt=4.4.36=hd590300_1 - libxml2=2.13.8=h2cb61b6_1 - libzlib=1.3.1=hb9d3cd8_2 - - llvm-openmp=20.1.8=h4922eb0_2 + - llvm-openmp=21.1.0=h4922eb0_0 - locket=1.0.0=pyhd8ed1ab_0 - markupsafe=3.0.2=py310h89163eb_1 - matplotlib-base=3.8.4=py310hef631a5_2 - metis=5.1.0=hd0bcaf9_1007 - mkl=2024.2.2=ha770c72_17 - - msgpack-python=1.1.1=py310h3788b33_0 + - msgpack-python=1.1.1=py310h03d9f68_1 - mumps-include=5.7.3=h82cca05_10 - mumps-seq=5.7.3=h06cbf8f_10 - munkres=1.1.4=pyhd8ed1ab_1 @@ -136,7 +136,7 @@ dependencies: - threadpoolctl=3.6.0=pyhecae5ae_0 - tk=8.6.13=noxft_hd72426e_102 - toolz=1.0.0=pyhd8ed1ab_1 - - tornado=6.5.2=py310h7c4b9e2_0 + - tornado=6.5.2=py310h7c4b9e2_1 - tqdm=4.67.1=pyhd8ed1ab_1 - trimesh=4.1.8=pyhd8ed1ab_0 - typing-extensions=4.15.0=h396c80c_0 @@ -153,13 +153,13 @@ dependencies: - zarr=2.14.2=pyhd8ed1ab_0 - zict=3.0.0=pyhd8ed1ab_1 - zipp=3.23.0=pyhd8ed1ab_0 - - zstandard=0.23.0=py310h7c4b9e2_3 + - zstandard=0.24.0=py310h1d967bf_1 - zstd=1.5.7=hb8e6e7a_2 - pip: - - geoapps-utils @ git+https://github.com/MiraGeoscience/geoapps-utils.git@655afd735989270d5d03b80a98cbe22844b47066 - - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@2c9248c60e4166fadb973fcd4f1777bb2ee964f6 + - geoapps-utils @ git+https://github.com/MiraGeoscience/geoapps-utils.git@1241642d40693ee9c58f83ce46b317cba43dc68b + - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@3a91dd92144a34b3c1ad1e5885029a7102e6337c - grid-apps @ git+https://github.com/MiraGeoscience/grid-apps.git@416815352706add295a9d2b90814d2291068a85e - - mira-simpeg @ git+https://github.com/MiraGeoscience/simpeg.git@d794a0b24aafb4beccc7984e68b6904be44f860f + - mira-simpeg @ git+https://github.com/MiraGeoscience/simpeg.git@5561fb5441be2cceaf8e1ca5fa05f6e3b19ee6bb variables: KMP_WARNINGS: 0 diff --git a/environments/py-3.10-win-64-dev.conda.lock.yml b/environments/py-3.10-win-64-dev.conda.lock.yml index 1c0ecde8f..e986693dd 100644 --- a/environments/py-3.10-win-64-dev.conda.lock.yml +++ b/environments/py-3.10-win-64-dev.conda.lock.yml @@ -15,7 +15,7 @@ dependencies: - argon2-cffi-bindings=25.1.0=py310h29418f3_0 - arrow=1.3.0=pyhd8ed1ab_1 - asciitree=0.3.3=py_2 - - astroid=3.3.11=py310h5588dad_0 + - astroid=3.3.11=py310h5588dad_1 - asttokens=3.0.0=pyhd8ed1ab_1 - async-lru=2.0.5=pyh29332c3_0 - attrs=25.3.0=pyh71513ae_0 @@ -24,28 +24,28 @@ dependencies: - bleach=6.2.0=pyh29332c3_4 - bleach-with-css=6.2.0=h82add2a_4 - bokeh=3.6.3=pyhd8ed1ab_0 - - brotli=1.1.0=h2466b09_3 - - brotli-bin=1.1.0=h2466b09_3 - - brotli-python=1.1.0=py310h9e98ed7_3 + - brotli=1.1.0=hfd05255_4 + - brotli-bin=1.1.0=hfd05255_4 + - brotli-python=1.1.0=py310h73ae2b4_4 - bzip2=1.0.8=h2466b09_7 - ca-certificates=2025.8.3=h4c7d964_0 - cached-property=1.5.2=hd8ed1ab_1 - cached_property=1.5.2=pyha770c72_1 - certifi=2025.8.3=pyhd8ed1ab_0 - - cffi=1.17.1=py310ha8f682b_0 + - cffi=1.17.1=py310h29418f3_1 - charset-normalizer=3.4.3=pyhd8ed1ab_0 - click=8.2.1=pyh7428d3b_0 - cloudpickle=3.1.1=pyhd8ed1ab_0 - colorama=0.4.6=pyhd8ed1ab_1 - comm=0.2.3=pyhe01879c_0 - contourpy=1.3.2=py310hc19bc0b_0 - - coverage=7.10.5=py310hdb0e946_0 + - coverage=7.10.6=py310hdb0e946_1 - cpython=3.10.18=py310hd8ed1ab_0 - cycler=0.12.1=pyhd8ed1ab_1 - cytoolz=1.0.1=py310ha8f682b_0 - dask-core=2025.3.0=pyhd8ed1ab_0 - dataclasses=0.8=pyhc8e2a94_3 - - debugpy=1.8.16=py310h699e580_0 + - debugpy=1.8.16=py310h699e580_1 - decorator=5.2.1=pyhd8ed1ab_0 - defusedxml=0.7.1=pyhd8ed1ab_0 - dill=0.4.0=pyhd8ed1ab_0 @@ -53,17 +53,17 @@ dependencies: - distributed=2025.3.0=pyhd8ed1ab_0 - docutils=0.19=py310h5588dad_1 - exceptiongroup=1.3.0=pyhd8ed1ab_0 - - executing=2.2.0=pyhd8ed1ab_0 + - executing=2.2.1=pyhd8ed1ab_0 - fasteners=0.19=pyhd8ed1ab_1 - fonttools=4.59.2=py310hdb0e946_0 - fqdn=1.5.1=pyhd8ed1ab_1 - freetype=2.13.3=h57928b3_1 - - fsspec=2025.7.0=pyhd8ed1ab_0 + - fsspec=2025.9.0=pyhd8ed1ab_0 - geoana=0.7.2=py310h3e8ed56_0 - - greenlet=3.2.4=py310h73ae2b4_0 + - greenlet=3.2.4=py310h73ae2b4_1 - h11=0.16.0=pyhd8ed1ab_0 - h2=4.3.0=pyhcf101f3_0 - - h5py=3.14.0=nompi_py310h877c39c_100 + - h5py=3.14.0=nompi_py310hb7e4da9_101 - hdf5=1.14.6=nompi_he30205f_103 - hpack=4.1.0=pyhd8ed1ab_0 - httpcore=1.0.9=pyh29332c3_0 @@ -84,7 +84,7 @@ dependencies: - jinja2=3.1.6=pyhd8ed1ab_0 - joblib=1.5.2=pyhd8ed1ab_0 - json5=0.12.1=pyhd8ed1ab_0 - - jsonpointer=3.0.0=py310h5588dad_1 + - jsonpointer=3.0.0=py310h5588dad_2 - jsonschema=4.25.1=pyhe01879c_0 - jsonschema-specifications=2025.4.1=pyh29332c3_0 - jsonschema-with-format-nongpl=4.25.1=he01879c_0 @@ -96,7 +96,7 @@ dependencies: - jupyter_events=0.12.0=pyh29332c3_0 - jupyter_server=2.17.0=pyhcf101f3_0 - jupyter_server_terminals=0.5.3=pyhd8ed1ab_1 - - jupyterlab=4.4.6=pyhd8ed1ab_0 + - jupyterlab=4.4.7=pyhd8ed1ab_0 - jupyterlab_pygments=0.3.0=pyhd8ed1ab_2 - jupyterlab_server=2.27.3=pyhd8ed1ab_1 - jupyterlab_widgets=1.1.11=pyhd8ed1ab_0 @@ -108,11 +108,11 @@ dependencies: - lcms2=2.17=hbcf6048_0 - lerc=4.0.0=h6470a55_1 - libaec=1.1.4=h20038f6_0 - - libblas=3.9.0=34_h5709861_mkl - - libbrotlicommon=1.1.0=h2466b09_3 - - libbrotlidec=1.1.0=h2466b09_3 - - libbrotlienc=1.1.0=h2466b09_3 - - libcblas=3.9.0=34_h2a3cdd5_mkl + - libblas=3.9.0=35_h5709861_mkl + - libbrotlicommon=1.1.0=hfd05255_4 + - libbrotlidec=1.1.0=hfd05255_4 + - libbrotlienc=1.1.0=hfd05255_4 + - libcblas=3.9.0=35_h2a3cdd5_mkl - libcurl=8.14.1=h88aaa65_0 - libdeflate=1.24=h76ddb4d_0 - libdlf=0.3.0=pyhd8ed1ab_1 @@ -125,7 +125,7 @@ dependencies: - libhwloc=2.12.1=default_h88281d1_1000 - libiconv=1.18=hc1393d2_2 - libjpeg-turbo=3.1.0=h2466b09_0 - - liblapack=3.9.0=34_hf9ab0e9_mkl + - liblapack=3.9.0=35_hf9ab0e9_mkl - liblzma=5.8.1=h2466b09_2 - libpng=1.6.50=h7351971_1 - libsodium=1.0.20=hc70643c_0 @@ -148,9 +148,9 @@ dependencies: - mccabe=0.7.0=pyhd8ed1ab_1 - mdit-py-plugins=0.5.0=pyhd8ed1ab_0 - mdurl=0.1.2=pyhd8ed1ab_1 - - mistune=3.1.3=pyh29332c3_0 + - mistune=3.1.4=pyhcf101f3_0 - mkl=2024.2.2=h57928b3_16 - - msgpack-python=1.1.1=py310hc19bc0b_0 + - msgpack-python=1.1.1=py310he9f1925_1 - mumps-seq=5.7.3=hbaa6519_10 - munkres=1.1.4=pyhd8ed1ab_1 - myst-nb=1.3.0=pyhe01879c_0 @@ -196,7 +196,7 @@ dependencies: - pymatsolver=0.3.1=pyh48887ae_201 - pyparsing=3.2.3=pyhe01879c_2 - pysocks=1.7.1=pyh09c184e_7 - - pytest=8.4.1=pyhd8ed1ab_0 + - pytest=8.4.2=pyhd8ed1ab_0 - pytest-cov=6.2.1=pyhd8ed1ab_0 - python=3.10.18=h8c5b53a_0_cpython - python-dateutil=2.9.0.post0=pyhe01879c_2 @@ -216,7 +216,7 @@ dependencies: - rfc3339-validator=0.1.4=pyhd8ed1ab_1 - rfc3986-validator=0.1.1=pyh9f0ad1d_0 - rfc3987-syntax=1.1.0=pyhe01879c_1 - - rpds-py=0.27.1=py310h034784e_0 + - rpds-py=0.27.1=py310h034784e_1 - rtree=1.2.0=py310h08d5ad2_1 - scikit-learn=1.6.1=py310hf2a6c47_0 - scipy=1.14.1=py310hbd0dde3_2 @@ -257,7 +257,7 @@ dependencies: - tomli=2.2.1=pyhe01879c_2 - tomlkit=0.13.3=pyha770c72_0 - toolz=1.0.0=pyhd8ed1ab_1 - - tornado=6.5.2=py310h29418f3_0 + - tornado=6.5.2=py310h29418f3_1 - tqdm=4.67.1=pyhd8ed1ab_1 - traitlets=5.14.3=pyhd8ed1ab_1 - trimesh=4.1.8=pyhd8ed1ab_0 @@ -291,13 +291,13 @@ dependencies: - zeromq=4.3.5=ha9f60a1_7 - zict=3.0.0=pyhd8ed1ab_1 - zipp=3.23.0=pyhd8ed1ab_0 - - zstandard=0.23.0=py310h29418f3_3 + - zstandard=0.24.0=py310he058f06_1 - zstd=1.5.7=hbeecb71_2 - pip: - - geoapps-utils @ git+https://github.com/MiraGeoscience/geoapps-utils.git@655afd735989270d5d03b80a98cbe22844b47066 - - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@2c9248c60e4166fadb973fcd4f1777bb2ee964f6 + - geoapps-utils @ git+https://github.com/MiraGeoscience/geoapps-utils.git@1241642d40693ee9c58f83ce46b317cba43dc68b + - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@3a91dd92144a34b3c1ad1e5885029a7102e6337c - grid-apps @ git+https://github.com/MiraGeoscience/grid-apps.git@416815352706add295a9d2b90814d2291068a85e - - mira-simpeg @ git+https://github.com/MiraGeoscience/simpeg.git@d794a0b24aafb4beccc7984e68b6904be44f860f + - mira-simpeg @ git+https://github.com/MiraGeoscience/simpeg.git@5561fb5441be2cceaf8e1ca5fa05f6e3b19ee6bb variables: KMP_WARNINGS: 0 diff --git a/environments/py-3.10-win-64.conda.lock.yml b/environments/py-3.10-win-64.conda.lock.yml index 66dcf60c3..d70754d5b 100644 --- a/environments/py-3.10-win-64.conda.lock.yml +++ b/environments/py-3.10-win-64.conda.lock.yml @@ -10,15 +10,15 @@ dependencies: - annotated-types=0.7.0=pyhd8ed1ab_1 - asciitree=0.3.3=py_2 - bokeh=3.6.3=pyhd8ed1ab_0 - - brotli=1.1.0=h2466b09_3 - - brotli-bin=1.1.0=h2466b09_3 - - brotli-python=1.1.0=py310h9e98ed7_3 + - brotli=1.1.0=hfd05255_4 + - brotli-bin=1.1.0=hfd05255_4 + - brotli-python=1.1.0=py310h73ae2b4_4 - bzip2=1.0.8=h2466b09_7 - ca-certificates=2025.8.3=h4c7d964_0 - cached-property=1.5.2=hd8ed1ab_1 - cached_property=1.5.2=pyha770c72_1 - certifi=2025.8.3=pyhd8ed1ab_0 - - cffi=1.17.1=py310ha8f682b_0 + - cffi=1.17.1=py310h29418f3_1 - click=8.2.1=pyh7428d3b_0 - cloudpickle=3.1.1=pyhd8ed1ab_0 - colorama=0.4.6=pyhd8ed1ab_1 @@ -31,10 +31,10 @@ dependencies: - fasteners=0.19=pyhd8ed1ab_1 - fonttools=4.59.2=py310hdb0e946_0 - freetype=2.13.3=h57928b3_1 - - fsspec=2025.7.0=pyhd8ed1ab_0 + - fsspec=2025.9.0=pyhd8ed1ab_0 - geoana=0.7.2=py310h3e8ed56_0 - h2=4.3.0=pyhcf101f3_0 - - h5py=3.14.0=nompi_py310h877c39c_100 + - h5py=3.14.0=nompi_py310hb7e4da9_101 - hdf5=1.14.6=nompi_he30205f_103 - hpack=4.1.0=pyhd8ed1ab_0 - hyperframe=6.1.0=pyhd8ed1ab_0 @@ -46,11 +46,11 @@ dependencies: - lcms2=2.17=hbcf6048_0 - lerc=4.0.0=h6470a55_1 - libaec=1.1.4=h20038f6_0 - - libblas=3.9.0=34_h5709861_mkl - - libbrotlicommon=1.1.0=h2466b09_3 - - libbrotlidec=1.1.0=h2466b09_3 - - libbrotlienc=1.1.0=h2466b09_3 - - libcblas=3.9.0=34_h2a3cdd5_mkl + - libblas=3.9.0=35_h5709861_mkl + - libbrotlicommon=1.1.0=hfd05255_4 + - libbrotlidec=1.1.0=hfd05255_4 + - libbrotlienc=1.1.0=hfd05255_4 + - libcblas=3.9.0=35_h2a3cdd5_mkl - libcurl=8.14.1=h88aaa65_0 - libdeflate=1.24=h76ddb4d_0 - libdlf=0.3.0=pyhd8ed1ab_1 @@ -63,7 +63,7 @@ dependencies: - libhwloc=2.12.1=default_h88281d1_1000 - libiconv=1.18=hc1393d2_2 - libjpeg-turbo=3.1.0=h2466b09_0 - - liblapack=3.9.0=34_hf9ab0e9_mkl + - liblapack=3.9.0=35_hf9ab0e9_mkl - liblzma=5.8.1=h2466b09_2 - libpng=1.6.50=h7351971_1 - libspatialindex=2.0.0=h5a68840_0 @@ -80,7 +80,7 @@ dependencies: - markupsafe=3.0.2=py310h38315fa_1 - matplotlib-base=3.8.4=py310hadb10a8_2 - mkl=2024.2.2=h57928b3_16 - - msgpack-python=1.1.1=py310hc19bc0b_0 + - msgpack-python=1.1.1=py310he9f1925_1 - mumps-seq=5.7.3=hbaa6519_10 - munkres=1.1.4=pyhd8ed1ab_1 - numcodecs=0.13.1=py310hb4db72f_0 @@ -119,7 +119,7 @@ dependencies: - threadpoolctl=3.6.0=pyhecae5ae_0 - tk=8.6.13=h2c6b04d_2 - toolz=1.0.0=pyhd8ed1ab_1 - - tornado=6.5.2=py310h29418f3_0 + - tornado=6.5.2=py310h29418f3_1 - tqdm=4.67.1=pyhd8ed1ab_1 - trimesh=4.1.8=pyhd8ed1ab_0 - typing-extensions=4.15.0=h396c80c_0 @@ -141,13 +141,13 @@ dependencies: - zarr=2.14.2=pyhd8ed1ab_0 - zict=3.0.0=pyhd8ed1ab_1 - zipp=3.23.0=pyhd8ed1ab_0 - - zstandard=0.23.0=py310h29418f3_3 + - zstandard=0.24.0=py310he058f06_1 - zstd=1.5.7=hbeecb71_2 - pip: - - geoapps-utils @ git+https://github.com/MiraGeoscience/geoapps-utils.git@655afd735989270d5d03b80a98cbe22844b47066 - - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@2c9248c60e4166fadb973fcd4f1777bb2ee964f6 + - geoapps-utils @ git+https://github.com/MiraGeoscience/geoapps-utils.git@1241642d40693ee9c58f83ce46b317cba43dc68b + - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@3a91dd92144a34b3c1ad1e5885029a7102e6337c - grid-apps @ git+https://github.com/MiraGeoscience/grid-apps.git@416815352706add295a9d2b90814d2291068a85e - - mira-simpeg @ git+https://github.com/MiraGeoscience/simpeg.git@d794a0b24aafb4beccc7984e68b6904be44f860f + - mira-simpeg @ git+https://github.com/MiraGeoscience/simpeg.git@5561fb5441be2cceaf8e1ca5fa05f6e3b19ee6bb variables: KMP_WARNINGS: 0 diff --git a/environments/py-3.11-linux-64-dev.conda.lock.yml b/environments/py-3.11-linux-64-dev.conda.lock.yml index f40c640bd..c87e5eac2 100644 --- a/environments/py-3.11-linux-64-dev.conda.lock.yml +++ b/environments/py-3.11-linux-64-dev.conda.lock.yml @@ -15,7 +15,7 @@ dependencies: - argon2-cffi-bindings=25.1.0=py311h49ec1c0_0 - arrow=1.3.0=pyhd8ed1ab_1 - asciitree=0.3.3=py_2 - - astroid=3.3.11=py311h38be061_0 + - astroid=3.3.11=py311h38be061_1 - asttokens=3.0.0=pyhd8ed1ab_1 - async-lru=2.0.5=pyh29332c3_0 - attrs=25.3.0=pyh71513ae_0 @@ -24,28 +24,28 @@ dependencies: - bleach=6.2.0=pyh29332c3_4 - bleach-with-css=6.2.0=h82add2a_4 - bokeh=3.6.3=pyhd8ed1ab_0 - - brotli=1.1.0=hb9d3cd8_3 - - brotli-bin=1.1.0=hb9d3cd8_3 - - brotli-python=1.1.0=py311hfdbb021_3 + - brotli=1.1.0=hb03c661_4 + - brotli-bin=1.1.0=hb03c661_4 + - brotli-python=1.1.0=py311h1ddb823_4 - bzip2=1.0.8=h4bc722e_7 - c-ares=1.34.5=hb9d3cd8_0 - ca-certificates=2025.8.3=hbd8a1cb_0 - cached-property=1.5.2=hd8ed1ab_1 - cached_property=1.5.2=pyha770c72_1 - certifi=2025.8.3=pyhd8ed1ab_0 - - cffi=1.17.1=py311hf29c0ef_0 + - cffi=1.17.1=py311h5b438cf_1 - charset-normalizer=3.4.3=pyhd8ed1ab_0 - click=8.2.1=pyh707e725_0 - cloudpickle=3.1.1=pyhd8ed1ab_0 - colorama=0.4.6=pyhd8ed1ab_1 - comm=0.2.3=pyhe01879c_0 - - contourpy=1.3.3=py311hdf67eae_1 - - coverage=7.10.5=py311h3778330_0 + - contourpy=1.3.3=py311hdf67eae_2 + - coverage=7.10.6=py311h3778330_1 - cycler=0.12.1=pyhd8ed1ab_1 - cytoolz=1.0.1=py311h9ecbd09_0 - dask-core=2025.3.0=pyhd8ed1ab_0 - dataclasses=0.8=pyhc8e2a94_3 - - debugpy=1.8.16=py311hc665b79_0 + - debugpy=1.8.16=py311hc665b79_1 - decorator=5.2.1=pyhd8ed1ab_0 - defusedxml=0.7.1=pyhd8ed1ab_0 - deprecated=1.2.18=pyhd8ed1ab_0 @@ -54,17 +54,17 @@ dependencies: - distributed=2025.3.0=pyhd8ed1ab_0 - docutils=0.19=py311h38be061_1 - exceptiongroup=1.3.0=pyhd8ed1ab_0 - - executing=2.2.0=pyhd8ed1ab_0 + - executing=2.2.1=pyhd8ed1ab_0 - fasteners=0.19=pyhd8ed1ab_1 - fonttools=4.59.2=py311h3778330_0 - fqdn=1.5.1=pyhd8ed1ab_1 - freetype=2.13.3=ha770c72_1 - - fsspec=2025.7.0=pyhd8ed1ab_0 + - fsspec=2025.9.0=pyhd8ed1ab_0 - geoana=0.7.2=py311h5b7b71f_0 - - greenlet=3.2.4=py311h1ddb823_0 + - greenlet=3.2.4=py311h1ddb823_1 - h11=0.16.0=pyhd8ed1ab_0 - h2=4.3.0=pyhcf101f3_0 - - h5py=3.14.0=nompi_py311h7f87ba5_100 + - h5py=3.14.0=nompi_py311h0b2f468_101 - hdf5=1.14.6=nompi_h6e4c0c1_103 - hpack=4.1.0=pyhd8ed1ab_0 - httpcore=1.0.9=pyh29332c3_0 @@ -86,7 +86,7 @@ dependencies: - jinja2=3.1.6=pyhd8ed1ab_0 - joblib=1.5.2=pyhd8ed1ab_0 - json5=0.12.1=pyhd8ed1ab_0 - - jsonpointer=3.0.0=py311h38be061_1 + - jsonpointer=3.0.0=py311h38be061_2 - jsonschema=4.25.1=pyhe01879c_0 - jsonschema-specifications=2025.4.1=pyh29332c3_0 - jsonschema-with-format-nongpl=4.25.1=he01879c_0 @@ -98,7 +98,7 @@ dependencies: - jupyter_events=0.12.0=pyh29332c3_0 - jupyter_server=2.17.0=pyhcf101f3_0 - jupyter_server_terminals=0.5.3=pyhd8ed1ab_1 - - jupyterlab=4.4.6=pyhd8ed1ab_0 + - jupyterlab=4.4.7=pyhd8ed1ab_0 - jupyterlab_pygments=0.3.0=pyhd8ed1ab_2 - jupyterlab_server=2.27.3=pyhd8ed1ab_1 - jupyterlab_widgets=1.1.11=pyhd8ed1ab_0 @@ -112,11 +112,11 @@ dependencies: - ld_impl_linux-64=2.44=h1423503_1 - lerc=4.0.0=h0aef613_1 - libaec=1.1.4=h3f801dc_0 - - libblas=3.9.0=34_hfdb39a5_mkl - - libbrotlicommon=1.1.0=hb9d3cd8_3 - - libbrotlidec=1.1.0=hb9d3cd8_3 - - libbrotlienc=1.1.0=hb9d3cd8_3 - - libcblas=3.9.0=34_h372d94f_mkl + - libblas=3.9.0=35_hfdb39a5_mkl + - libbrotlicommon=1.1.0=hb03c661_4 + - libbrotlidec=1.1.0=hb03c661_4 + - libbrotlienc=1.1.0=hb03c661_4 + - libcblas=3.9.0=35_h372d94f_mkl - libcurl=8.14.1=h332b0f4_0 - libdeflate=1.24=h86f0d12_0 - libdlf=0.3.0=pyhd8ed1ab_1 @@ -133,9 +133,9 @@ dependencies: - libhwloc=2.12.1=default_h3d81e11_1000 - libiconv=1.18=h3b78370_2 - libjpeg-turbo=3.1.0=hb9d3cd8_0 - - liblapack=3.9.0=34_hc41d3b0_mkl + - liblapack=3.9.0=35_hc41d3b0_mkl - liblzma=5.8.1=hb9d3cd8_2 - - libnghttp2=1.64.0=h161d5f1_0 + - libnghttp2=1.67.0=had1ee68_0 - libnsl=2.0.1=hb9d3cd8_1 - libpng=1.6.50=h421ea60_1 - libscotch=7.0.6=hea33c07_1 @@ -153,7 +153,7 @@ dependencies: - libxml2=2.13.8=h2cb61b6_1 - libzlib=1.3.1=hb9d3cd8_2 - linkify-it-py=2.0.3=pyhd8ed1ab_1 - - llvm-openmp=20.1.8=h4922eb0_2 + - llvm-openmp=21.1.0=h4922eb0_0 - locket=1.0.0=pyhd8ed1ab_0 - markdown-it-py=2.2.0=pyhd8ed1ab_0 - markupsafe=3.0.2=py311h2dc5d0c_1 @@ -163,9 +163,9 @@ dependencies: - mdit-py-plugins=0.5.0=pyhd8ed1ab_0 - mdurl=0.1.2=pyhd8ed1ab_1 - metis=5.1.0=hd0bcaf9_1007 - - mistune=3.1.3=pyh29332c3_0 + - mistune=3.1.4=pyhcf101f3_0 - mkl=2024.2.2=ha770c72_17 - - msgpack-python=1.1.1=py311hd18a35c_0 + - msgpack-python=1.1.1=py311hdf67eae_1 - mumps-include=5.7.3=h82cca05_10 - mumps-seq=5.7.3=h06cbf8f_10 - munkres=1.1.4=pyhd8ed1ab_1 @@ -215,7 +215,7 @@ dependencies: - pymatsolver=0.3.1=pyh48887ae_201 - pyparsing=3.2.3=pyhe01879c_2 - pysocks=1.7.1=pyha55dd90_7 - - pytest=8.4.1=pyhd8ed1ab_0 + - pytest=8.4.2=pyhd8ed1ab_0 - pytest-cov=6.2.1=pyhd8ed1ab_0 - python=3.11.13=h9e4cc4f_0_cpython - python-dateutil=2.9.0.post0=pyhe01879c_2 @@ -234,7 +234,7 @@ dependencies: - rfc3339-validator=0.1.4=pyhd8ed1ab_1 - rfc3986-validator=0.1.1=pyh9f0ad1d_0 - rfc3987-syntax=1.1.0=pyhe01879c_1 - - rpds-py=0.27.1=py311h902ca64_0 + - rpds-py=0.27.1=py311h902ca64_1 - rtree=1.2.0=py311ha1603b9_1 - scikit-learn=1.6.1=py311h57cc02b_0 - scipy=1.14.1=py311he9a78e4_2 @@ -275,7 +275,7 @@ dependencies: - tomli=2.2.1=pyhe01879c_2 - tomlkit=0.13.3=pyha770c72_0 - toolz=1.0.0=pyhd8ed1ab_1 - - tornado=6.5.2=py311h49ec1c0_0 + - tornado=6.5.2=py311h49ec1c0_1 - tqdm=4.67.1=pyhd8ed1ab_1 - traitlets=5.14.3=pyhd8ed1ab_1 - trimesh=4.1.8=pyhd8ed1ab_0 @@ -295,7 +295,7 @@ dependencies: - websocket-client=1.8.0=pyhd8ed1ab_1 - wheel=0.45.1=pyhd8ed1ab_1 - widgetsnbextension=3.6.10=pyhd8ed1ab_0 - - wrapt=1.17.3=py311h49ec1c0_0 + - wrapt=1.17.3=py311h49ec1c0_1 - xorg-libxau=1.0.12=hb9d3cd8_0 - xorg-libxdmcp=1.1.5=hb9d3cd8_0 - xyzservices=2025.4.0=pyhd8ed1ab_0 @@ -304,13 +304,13 @@ dependencies: - zeromq=4.3.5=h3b0a872_7 - zict=3.0.0=pyhd8ed1ab_1 - zipp=3.23.0=pyhd8ed1ab_0 - - zstandard=0.23.0=py311h49ec1c0_3 + - zstandard=0.24.0=py311h4854a17_1 - zstd=1.5.7=hb8e6e7a_2 - pip: - - geoapps-utils @ git+https://github.com/MiraGeoscience/geoapps-utils.git@655afd735989270d5d03b80a98cbe22844b47066 - - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@2c9248c60e4166fadb973fcd4f1777bb2ee964f6 + - geoapps-utils @ git+https://github.com/MiraGeoscience/geoapps-utils.git@1241642d40693ee9c58f83ce46b317cba43dc68b + - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@3a91dd92144a34b3c1ad1e5885029a7102e6337c - grid-apps @ git+https://github.com/MiraGeoscience/grid-apps.git@416815352706add295a9d2b90814d2291068a85e - - mira-simpeg @ git+https://github.com/MiraGeoscience/simpeg.git@d794a0b24aafb4beccc7984e68b6904be44f860f + - mira-simpeg @ git+https://github.com/MiraGeoscience/simpeg.git@5561fb5441be2cceaf8e1ca5fa05f6e3b19ee6bb variables: KMP_WARNINGS: 0 diff --git a/environments/py-3.11-linux-64.conda.lock.yml b/environments/py-3.11-linux-64.conda.lock.yml index 302820d21..36b0f33bb 100644 --- a/environments/py-3.11-linux-64.conda.lock.yml +++ b/environments/py-3.11-linux-64.conda.lock.yml @@ -10,20 +10,20 @@ dependencies: - annotated-types=0.7.0=pyhd8ed1ab_1 - asciitree=0.3.3=py_2 - bokeh=3.6.3=pyhd8ed1ab_0 - - brotli=1.1.0=hb9d3cd8_3 - - brotli-bin=1.1.0=hb9d3cd8_3 - - brotli-python=1.1.0=py311hfdbb021_3 + - brotli=1.1.0=hb03c661_4 + - brotli-bin=1.1.0=hb03c661_4 + - brotli-python=1.1.0=py311h1ddb823_4 - bzip2=1.0.8=h4bc722e_7 - c-ares=1.34.5=hb9d3cd8_0 - ca-certificates=2025.8.3=hbd8a1cb_0 - cached-property=1.5.2=hd8ed1ab_1 - cached_property=1.5.2=pyha770c72_1 - certifi=2025.8.3=pyhd8ed1ab_0 - - cffi=1.17.1=py311hf29c0ef_0 + - cffi=1.17.1=py311h5b438cf_1 - click=8.2.1=pyh707e725_0 - cloudpickle=3.1.1=pyhd8ed1ab_0 - colorama=0.4.6=pyhd8ed1ab_1 - - contourpy=1.3.3=py311hdf67eae_1 + - contourpy=1.3.3=py311hdf67eae_2 - cycler=0.12.1=pyhd8ed1ab_1 - cytoolz=1.0.1=py311h9ecbd09_0 - dask-core=2025.3.0=pyhd8ed1ab_0 @@ -33,10 +33,10 @@ dependencies: - fasteners=0.19=pyhd8ed1ab_1 - fonttools=4.59.2=py311h3778330_0 - freetype=2.13.3=ha770c72_1 - - fsspec=2025.7.0=pyhd8ed1ab_0 + - fsspec=2025.9.0=pyhd8ed1ab_0 - geoana=0.7.2=py311h5b7b71f_0 - h2=4.3.0=pyhcf101f3_0 - - h5py=3.14.0=nompi_py311h7f87ba5_100 + - h5py=3.14.0=nompi_py311h0b2f468_101 - hdf5=1.14.6=nompi_h6e4c0c1_103 - hpack=4.1.0=pyhd8ed1ab_0 - hyperframe=6.1.0=pyhd8ed1ab_0 @@ -50,11 +50,11 @@ dependencies: - ld_impl_linux-64=2.44=h1423503_1 - lerc=4.0.0=h0aef613_1 - libaec=1.1.4=h3f801dc_0 - - libblas=3.9.0=34_hfdb39a5_mkl - - libbrotlicommon=1.1.0=hb9d3cd8_3 - - libbrotlidec=1.1.0=hb9d3cd8_3 - - libbrotlienc=1.1.0=hb9d3cd8_3 - - libcblas=3.9.0=34_h372d94f_mkl + - libblas=3.9.0=35_hfdb39a5_mkl + - libbrotlicommon=1.1.0=hb03c661_4 + - libbrotlidec=1.1.0=hb03c661_4 + - libbrotlienc=1.1.0=hb03c661_4 + - libcblas=3.9.0=35_h372d94f_mkl - libcurl=8.14.1=h332b0f4_0 - libdeflate=1.24=h86f0d12_0 - libdlf=0.3.0=pyhd8ed1ab_1 @@ -71,9 +71,9 @@ dependencies: - libhwloc=2.12.1=default_h3d81e11_1000 - libiconv=1.18=h3b78370_2 - libjpeg-turbo=3.1.0=hb9d3cd8_0 - - liblapack=3.9.0=34_hc41d3b0_mkl + - liblapack=3.9.0=35_hc41d3b0_mkl - liblzma=5.8.1=hb9d3cd8_2 - - libnghttp2=1.64.0=h161d5f1_0 + - libnghttp2=1.67.0=had1ee68_0 - libnsl=2.0.1=hb9d3cd8_1 - libpng=1.6.50=h421ea60_1 - libscotch=7.0.6=hea33c07_1 @@ -89,13 +89,13 @@ dependencies: - libxcrypt=4.4.36=hd590300_1 - libxml2=2.13.8=h2cb61b6_1 - libzlib=1.3.1=hb9d3cd8_2 - - llvm-openmp=20.1.8=h4922eb0_2 + - llvm-openmp=21.1.0=h4922eb0_0 - locket=1.0.0=pyhd8ed1ab_0 - markupsafe=3.0.2=py311h2dc5d0c_1 - matplotlib-base=3.8.4=py311ha4ca890_2 - metis=5.1.0=hd0bcaf9_1007 - mkl=2024.2.2=ha770c72_17 - - msgpack-python=1.1.1=py311hd18a35c_0 + - msgpack-python=1.1.1=py311hdf67eae_1 - mumps-include=5.7.3=h82cca05_10 - mumps-seq=5.7.3=h06cbf8f_10 - munkres=1.1.4=pyhd8ed1ab_1 @@ -137,7 +137,7 @@ dependencies: - threadpoolctl=3.6.0=pyhecae5ae_0 - tk=8.6.13=noxft_hd72426e_102 - toolz=1.0.0=pyhd8ed1ab_1 - - tornado=6.5.2=py311h49ec1c0_0 + - tornado=6.5.2=py311h49ec1c0_1 - tqdm=4.67.1=pyhd8ed1ab_1 - trimesh=4.1.8=pyhd8ed1ab_0 - typing-extensions=4.15.0=h396c80c_0 @@ -147,7 +147,7 @@ dependencies: - unicodedata2=16.0.0=py311h49ec1c0_1 - urllib3=2.5.0=pyhd8ed1ab_0 - wheel=0.45.1=pyhd8ed1ab_1 - - wrapt=1.17.3=py311h49ec1c0_0 + - wrapt=1.17.3=py311h49ec1c0_1 - xorg-libxau=1.0.12=hb9d3cd8_0 - xorg-libxdmcp=1.1.5=hb9d3cd8_0 - xyzservices=2025.4.0=pyhd8ed1ab_0 @@ -155,13 +155,13 @@ dependencies: - zarr=2.14.2=pyhd8ed1ab_0 - zict=3.0.0=pyhd8ed1ab_1 - zipp=3.23.0=pyhd8ed1ab_0 - - zstandard=0.23.0=py311h49ec1c0_3 + - zstandard=0.24.0=py311h4854a17_1 - zstd=1.5.7=hb8e6e7a_2 - pip: - - geoapps-utils @ git+https://github.com/MiraGeoscience/geoapps-utils.git@655afd735989270d5d03b80a98cbe22844b47066 - - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@2c9248c60e4166fadb973fcd4f1777bb2ee964f6 + - geoapps-utils @ git+https://github.com/MiraGeoscience/geoapps-utils.git@1241642d40693ee9c58f83ce46b317cba43dc68b + - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@3a91dd92144a34b3c1ad1e5885029a7102e6337c - grid-apps @ git+https://github.com/MiraGeoscience/grid-apps.git@416815352706add295a9d2b90814d2291068a85e - - mira-simpeg @ git+https://github.com/MiraGeoscience/simpeg.git@d794a0b24aafb4beccc7984e68b6904be44f860f + - mira-simpeg @ git+https://github.com/MiraGeoscience/simpeg.git@5561fb5441be2cceaf8e1ca5fa05f6e3b19ee6bb variables: KMP_WARNINGS: 0 diff --git a/environments/py-3.11-win-64-dev.conda.lock.yml b/environments/py-3.11-win-64-dev.conda.lock.yml index e14ad3210..b4d33d002 100644 --- a/environments/py-3.11-win-64-dev.conda.lock.yml +++ b/environments/py-3.11-win-64-dev.conda.lock.yml @@ -15,7 +15,7 @@ dependencies: - argon2-cffi-bindings=25.1.0=py311h3485c13_0 - arrow=1.3.0=pyhd8ed1ab_1 - asciitree=0.3.3=py_2 - - astroid=3.3.11=py311h1ea47a8_0 + - astroid=3.3.11=py311h1ea47a8_1 - asttokens=3.0.0=pyhd8ed1ab_1 - async-lru=2.0.5=pyh29332c3_0 - attrs=25.3.0=pyh71513ae_0 @@ -24,28 +24,28 @@ dependencies: - bleach=6.2.0=pyh29332c3_4 - bleach-with-css=6.2.0=h82add2a_4 - bokeh=3.6.3=pyhd8ed1ab_0 - - brotli=1.1.0=h2466b09_3 - - brotli-bin=1.1.0=h2466b09_3 - - brotli-python=1.1.0=py311hda3d55a_3 + - brotli=1.1.0=hfd05255_4 + - brotli-bin=1.1.0=hfd05255_4 + - brotli-python=1.1.0=py311h3e6a449_4 - bzip2=1.0.8=h2466b09_7 - ca-certificates=2025.8.3=h4c7d964_0 - cached-property=1.5.2=hd8ed1ab_1 - cached_property=1.5.2=pyha770c72_1 - certifi=2025.8.3=pyhd8ed1ab_0 - - cffi=1.17.1=py311he736701_0 + - cffi=1.17.1=py311h3485c13_1 - charset-normalizer=3.4.3=pyhd8ed1ab_0 - click=8.2.1=pyh7428d3b_0 - cloudpickle=3.1.1=pyhd8ed1ab_0 - colorama=0.4.6=pyhd8ed1ab_1 - comm=0.2.3=pyhe01879c_0 - - contourpy=1.3.3=py311h3fd045d_1 - - coverage=7.10.5=py311h3f79411_0 + - contourpy=1.3.3=py311h3fd045d_2 + - coverage=7.10.6=py311h3f79411_1 - cpython=3.11.13=py311hd8ed1ab_0 - cycler=0.12.1=pyhd8ed1ab_1 - cytoolz=1.0.1=py311he736701_0 - dask-core=2025.3.0=pyhd8ed1ab_0 - dataclasses=0.8=pyhc8e2a94_3 - - debugpy=1.8.16=py311h5dfdfe8_0 + - debugpy=1.8.16=py311h5dfdfe8_1 - decorator=5.2.1=pyhd8ed1ab_0 - defusedxml=0.7.1=pyhd8ed1ab_0 - deprecated=1.2.18=pyhd8ed1ab_0 @@ -54,17 +54,17 @@ dependencies: - distributed=2025.3.0=pyhd8ed1ab_0 - docutils=0.19=py311h1ea47a8_1 - exceptiongroup=1.3.0=pyhd8ed1ab_0 - - executing=2.2.0=pyhd8ed1ab_0 + - executing=2.2.1=pyhd8ed1ab_0 - fasteners=0.19=pyhd8ed1ab_1 - fonttools=4.59.2=py311h3f79411_0 - fqdn=1.5.1=pyhd8ed1ab_1 - freetype=2.13.3=h57928b3_1 - - fsspec=2025.7.0=pyhd8ed1ab_0 + - fsspec=2025.9.0=pyhd8ed1ab_0 - geoana=0.7.2=py311h9b10771_0 - - greenlet=3.2.4=py311h3e6a449_0 + - greenlet=3.2.4=py311h3e6a449_1 - h11=0.16.0=pyhd8ed1ab_0 - h2=4.3.0=pyhcf101f3_0 - - h5py=3.14.0=nompi_py311h97e6cc2_100 + - h5py=3.14.0=nompi_py311hc40ba4b_101 - hdf5=1.14.6=nompi_he30205f_103 - hpack=4.1.0=pyhd8ed1ab_0 - httpcore=1.0.9=pyh29332c3_0 @@ -86,7 +86,7 @@ dependencies: - jinja2=3.1.6=pyhd8ed1ab_0 - joblib=1.5.2=pyhd8ed1ab_0 - json5=0.12.1=pyhd8ed1ab_0 - - jsonpointer=3.0.0=py311h1ea47a8_1 + - jsonpointer=3.0.0=py311h1ea47a8_2 - jsonschema=4.25.1=pyhe01879c_0 - jsonschema-specifications=2025.4.1=pyh29332c3_0 - jsonschema-with-format-nongpl=4.25.1=he01879c_0 @@ -98,7 +98,7 @@ dependencies: - jupyter_events=0.12.0=pyh29332c3_0 - jupyter_server=2.17.0=pyhcf101f3_0 - jupyter_server_terminals=0.5.3=pyhd8ed1ab_1 - - jupyterlab=4.4.6=pyhd8ed1ab_0 + - jupyterlab=4.4.7=pyhd8ed1ab_0 - jupyterlab_pygments=0.3.0=pyhd8ed1ab_2 - jupyterlab_server=2.27.3=pyhd8ed1ab_1 - jupyterlab_widgets=1.1.11=pyhd8ed1ab_0 @@ -110,11 +110,11 @@ dependencies: - lcms2=2.17=hbcf6048_0 - lerc=4.0.0=h6470a55_1 - libaec=1.1.4=h20038f6_0 - - libblas=3.9.0=34_h5709861_mkl - - libbrotlicommon=1.1.0=h2466b09_3 - - libbrotlidec=1.1.0=h2466b09_3 - - libbrotlienc=1.1.0=h2466b09_3 - - libcblas=3.9.0=34_h2a3cdd5_mkl + - libblas=3.9.0=35_h5709861_mkl + - libbrotlicommon=1.1.0=hfd05255_4 + - libbrotlidec=1.1.0=hfd05255_4 + - libbrotlienc=1.1.0=hfd05255_4 + - libcblas=3.9.0=35_h2a3cdd5_mkl - libcurl=8.14.1=h88aaa65_0 - libdeflate=1.24=h76ddb4d_0 - libdlf=0.3.0=pyhd8ed1ab_1 @@ -127,7 +127,7 @@ dependencies: - libhwloc=2.12.1=default_h88281d1_1000 - libiconv=1.18=hc1393d2_2 - libjpeg-turbo=3.1.0=h2466b09_0 - - liblapack=3.9.0=34_hf9ab0e9_mkl + - liblapack=3.9.0=35_hf9ab0e9_mkl - liblzma=5.8.1=h2466b09_2 - libpng=1.6.50=h7351971_1 - libsodium=1.0.20=hc70643c_0 @@ -150,9 +150,9 @@ dependencies: - mccabe=0.7.0=pyhd8ed1ab_1 - mdit-py-plugins=0.5.0=pyhd8ed1ab_0 - mdurl=0.1.2=pyhd8ed1ab_1 - - mistune=3.1.3=pyh29332c3_0 + - mistune=3.1.4=pyhcf101f3_0 - mkl=2024.2.2=h57928b3_16 - - msgpack-python=1.1.1=py311h3257749_0 + - msgpack-python=1.1.1=py311h3fd045d_1 - mumps-seq=5.7.3=hbaa6519_10 - munkres=1.1.4=pyhd8ed1ab_1 - myst-nb=1.3.0=pyhe01879c_0 @@ -198,7 +198,7 @@ dependencies: - pymatsolver=0.3.1=pyh48887ae_201 - pyparsing=3.2.3=pyhe01879c_2 - pysocks=1.7.1=pyh09c184e_7 - - pytest=8.4.1=pyhd8ed1ab_0 + - pytest=8.4.2=pyhd8ed1ab_0 - pytest-cov=6.2.1=pyhd8ed1ab_0 - python=3.11.13=h3f84c4b_0_cpython - python-dateutil=2.9.0.post0=pyhe01879c_2 @@ -218,7 +218,7 @@ dependencies: - rfc3339-validator=0.1.4=pyhd8ed1ab_1 - rfc3986-validator=0.1.1=pyh9f0ad1d_0 - rfc3987-syntax=1.1.0=pyhe01879c_1 - - rpds-py=0.27.1=py311hf51aa87_0 + - rpds-py=0.27.1=py311hf51aa87_1 - rtree=1.2.0=py311h44d53c4_1 - scikit-learn=1.6.1=py311hdcb8d17_0 - scipy=1.14.1=py311hf16d85f_2 @@ -259,7 +259,7 @@ dependencies: - tomli=2.2.1=pyhe01879c_2 - tomlkit=0.13.3=pyha770c72_0 - toolz=1.0.0=pyhd8ed1ab_1 - - tornado=6.5.2=py311h3485c13_0 + - tornado=6.5.2=py311h3485c13_1 - tqdm=4.67.1=pyhd8ed1ab_1 - traitlets=5.14.3=pyhd8ed1ab_1 - trimesh=4.1.8=pyhd8ed1ab_0 @@ -285,7 +285,7 @@ dependencies: - widgetsnbextension=3.6.10=pyhd8ed1ab_0 - win_inet_pton=1.1.0=pyh7428d3b_8 - winpty=0.4.3=4 - - wrapt=1.17.3=py311h3485c13_0 + - wrapt=1.17.3=py311h3485c13_1 - xorg-libxau=1.0.12=h0e40799_0 - xorg-libxdmcp=1.1.5=h0e40799_0 - xyzservices=2025.4.0=pyhd8ed1ab_0 @@ -294,13 +294,13 @@ dependencies: - zeromq=4.3.5=ha9f60a1_7 - zict=3.0.0=pyhd8ed1ab_1 - zipp=3.23.0=pyhd8ed1ab_0 - - zstandard=0.23.0=py311h3485c13_3 + - zstandard=0.24.0=py311h2d646e2_1 - zstd=1.5.7=hbeecb71_2 - pip: - - geoapps-utils @ git+https://github.com/MiraGeoscience/geoapps-utils.git@655afd735989270d5d03b80a98cbe22844b47066 - - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@2c9248c60e4166fadb973fcd4f1777bb2ee964f6 + - geoapps-utils @ git+https://github.com/MiraGeoscience/geoapps-utils.git@1241642d40693ee9c58f83ce46b317cba43dc68b + - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@3a91dd92144a34b3c1ad1e5885029a7102e6337c - grid-apps @ git+https://github.com/MiraGeoscience/grid-apps.git@416815352706add295a9d2b90814d2291068a85e - - mira-simpeg @ git+https://github.com/MiraGeoscience/simpeg.git@d794a0b24aafb4beccc7984e68b6904be44f860f + - mira-simpeg @ git+https://github.com/MiraGeoscience/simpeg.git@5561fb5441be2cceaf8e1ca5fa05f6e3b19ee6bb variables: KMP_WARNINGS: 0 diff --git a/environments/py-3.11-win-64.conda.lock.yml b/environments/py-3.11-win-64.conda.lock.yml index d90393fa0..c7a8e4604 100644 --- a/environments/py-3.11-win-64.conda.lock.yml +++ b/environments/py-3.11-win-64.conda.lock.yml @@ -10,19 +10,19 @@ dependencies: - annotated-types=0.7.0=pyhd8ed1ab_1 - asciitree=0.3.3=py_2 - bokeh=3.6.3=pyhd8ed1ab_0 - - brotli=1.1.0=h2466b09_3 - - brotli-bin=1.1.0=h2466b09_3 - - brotli-python=1.1.0=py311hda3d55a_3 + - brotli=1.1.0=hfd05255_4 + - brotli-bin=1.1.0=hfd05255_4 + - brotli-python=1.1.0=py311h3e6a449_4 - bzip2=1.0.8=h2466b09_7 - ca-certificates=2025.8.3=h4c7d964_0 - cached-property=1.5.2=hd8ed1ab_1 - cached_property=1.5.2=pyha770c72_1 - certifi=2025.8.3=pyhd8ed1ab_0 - - cffi=1.17.1=py311he736701_0 + - cffi=1.17.1=py311h3485c13_1 - click=8.2.1=pyh7428d3b_0 - cloudpickle=3.1.1=pyhd8ed1ab_0 - colorama=0.4.6=pyhd8ed1ab_1 - - contourpy=1.3.3=py311h3fd045d_1 + - contourpy=1.3.3=py311h3fd045d_2 - cycler=0.12.1=pyhd8ed1ab_1 - cytoolz=1.0.1=py311he736701_0 - dask-core=2025.3.0=pyhd8ed1ab_0 @@ -32,10 +32,10 @@ dependencies: - fasteners=0.19=pyhd8ed1ab_1 - fonttools=4.59.2=py311h3f79411_0 - freetype=2.13.3=h57928b3_1 - - fsspec=2025.7.0=pyhd8ed1ab_0 + - fsspec=2025.9.0=pyhd8ed1ab_0 - geoana=0.7.2=py311h9b10771_0 - h2=4.3.0=pyhcf101f3_0 - - h5py=3.14.0=nompi_py311h97e6cc2_100 + - h5py=3.14.0=nompi_py311hc40ba4b_101 - hdf5=1.14.6=nompi_he30205f_103 - hpack=4.1.0=pyhd8ed1ab_0 - hyperframe=6.1.0=pyhd8ed1ab_0 @@ -47,11 +47,11 @@ dependencies: - lcms2=2.17=hbcf6048_0 - lerc=4.0.0=h6470a55_1 - libaec=1.1.4=h20038f6_0 - - libblas=3.9.0=34_h5709861_mkl - - libbrotlicommon=1.1.0=h2466b09_3 - - libbrotlidec=1.1.0=h2466b09_3 - - libbrotlienc=1.1.0=h2466b09_3 - - libcblas=3.9.0=34_h2a3cdd5_mkl + - libblas=3.9.0=35_h5709861_mkl + - libbrotlicommon=1.1.0=hfd05255_4 + - libbrotlidec=1.1.0=hfd05255_4 + - libbrotlienc=1.1.0=hfd05255_4 + - libcblas=3.9.0=35_h2a3cdd5_mkl - libcurl=8.14.1=h88aaa65_0 - libdeflate=1.24=h76ddb4d_0 - libdlf=0.3.0=pyhd8ed1ab_1 @@ -64,7 +64,7 @@ dependencies: - libhwloc=2.12.1=default_h88281d1_1000 - libiconv=1.18=hc1393d2_2 - libjpeg-turbo=3.1.0=h2466b09_0 - - liblapack=3.9.0=34_hf9ab0e9_mkl + - liblapack=3.9.0=35_hf9ab0e9_mkl - liblzma=5.8.1=h2466b09_2 - libpng=1.6.50=h7351971_1 - libspatialindex=2.0.0=h5a68840_0 @@ -81,7 +81,7 @@ dependencies: - markupsafe=3.0.2=py311h5082efb_1 - matplotlib-base=3.8.4=py311h9b31f6e_2 - mkl=2024.2.2=h57928b3_16 - - msgpack-python=1.1.1=py311h3257749_0 + - msgpack-python=1.1.1=py311h3fd045d_1 - mumps-seq=5.7.3=hbaa6519_10 - munkres=1.1.4=pyhd8ed1ab_1 - numcodecs=0.15.1=py311hcf9f919_0 @@ -120,7 +120,7 @@ dependencies: - threadpoolctl=3.6.0=pyhecae5ae_0 - tk=8.6.13=h2c6b04d_2 - toolz=1.0.0=pyhd8ed1ab_1 - - tornado=6.5.2=py311h3485c13_0 + - tornado=6.5.2=py311h3485c13_1 - tqdm=4.67.1=pyhd8ed1ab_1 - trimesh=4.1.8=pyhd8ed1ab_0 - typing-extensions=4.15.0=h396c80c_0 @@ -135,7 +135,7 @@ dependencies: - vcomp14=14.44.35208=h818238b_31 - wheel=0.45.1=pyhd8ed1ab_1 - win_inet_pton=1.1.0=pyh7428d3b_8 - - wrapt=1.17.3=py311h3485c13_0 + - wrapt=1.17.3=py311h3485c13_1 - xorg-libxau=1.0.12=h0e40799_0 - xorg-libxdmcp=1.1.5=h0e40799_0 - xyzservices=2025.4.0=pyhd8ed1ab_0 @@ -143,13 +143,13 @@ dependencies: - zarr=2.14.2=pyhd8ed1ab_0 - zict=3.0.0=pyhd8ed1ab_1 - zipp=3.23.0=pyhd8ed1ab_0 - - zstandard=0.23.0=py311h3485c13_3 + - zstandard=0.24.0=py311h2d646e2_1 - zstd=1.5.7=hbeecb71_2 - pip: - - geoapps-utils @ git+https://github.com/MiraGeoscience/geoapps-utils.git@655afd735989270d5d03b80a98cbe22844b47066 - - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@2c9248c60e4166fadb973fcd4f1777bb2ee964f6 + - geoapps-utils @ git+https://github.com/MiraGeoscience/geoapps-utils.git@1241642d40693ee9c58f83ce46b317cba43dc68b + - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@3a91dd92144a34b3c1ad1e5885029a7102e6337c - grid-apps @ git+https://github.com/MiraGeoscience/grid-apps.git@416815352706add295a9d2b90814d2291068a85e - - mira-simpeg @ git+https://github.com/MiraGeoscience/simpeg.git@d794a0b24aafb4beccc7984e68b6904be44f860f + - mira-simpeg @ git+https://github.com/MiraGeoscience/simpeg.git@5561fb5441be2cceaf8e1ca5fa05f6e3b19ee6bb variables: KMP_WARNINGS: 0 diff --git a/environments/py-3.12-linux-64-dev.conda.lock.yml b/environments/py-3.12-linux-64-dev.conda.lock.yml index e326c744d..02c215bea 100644 --- a/environments/py-3.12-linux-64-dev.conda.lock.yml +++ b/environments/py-3.12-linux-64-dev.conda.lock.yml @@ -16,7 +16,7 @@ dependencies: - argon2-cffi-bindings=25.1.0=py312h4c3975b_0 - arrow=1.3.0=pyhd8ed1ab_1 - asciitree=0.3.3=py_2 - - astroid=3.3.11=py312h7900ff3_0 + - astroid=3.3.11=py312h7900ff3_1 - asttokens=3.0.0=pyhd8ed1ab_1 - async-lru=2.0.5=pyh29332c3_0 - attrs=25.3.0=pyh71513ae_0 @@ -25,29 +25,29 @@ dependencies: - bleach=6.2.0=pyh29332c3_4 - bleach-with-css=6.2.0=h82add2a_4 - bokeh=3.6.3=pyhd8ed1ab_0 - - brotli=1.1.0=hb9d3cd8_3 - - brotli-bin=1.1.0=hb9d3cd8_3 - - brotli-python=1.1.0=py312h2ec8cdc_3 + - brotli=1.1.0=hb03c661_4 + - brotli-bin=1.1.0=hb03c661_4 + - brotli-python=1.1.0=py312h1289d80_4 - bzip2=1.0.8=h4bc722e_7 - c-ares=1.34.5=hb9d3cd8_0 - ca-certificates=2025.8.3=hbd8a1cb_0 - cached-property=1.5.2=hd8ed1ab_1 - cached_property=1.5.2=pyha770c72_1 - certifi=2025.8.3=pyhd8ed1ab_0 - - cffi=1.17.1=py312h06ac9bb_0 + - cffi=1.17.1=py312h35888ee_1 - charset-normalizer=3.4.3=pyhd8ed1ab_0 - click=8.2.1=pyh707e725_0 - cloudpickle=3.1.1=pyhd8ed1ab_0 - colorama=0.4.6=pyhd8ed1ab_1 - comm=0.2.3=pyhe01879c_0 - - contourpy=1.3.3=py312hd9148b4_1 - - coverage=7.10.5=py312h8a5da7c_0 + - contourpy=1.3.3=py312hd9148b4_2 + - coverage=7.10.6=py312h8a5da7c_1 - cpython=3.12.11=py312hd8ed1ab_0 - cycler=0.12.1=pyhd8ed1ab_1 - cytoolz=1.0.1=py312h66e93f0_0 - dask-core=2025.3.0=pyhd8ed1ab_0 - dataclasses=0.8=pyhc8e2a94_3 - - debugpy=1.8.16=py312h8285ef7_0 + - debugpy=1.8.16=py312h8285ef7_1 - decorator=5.2.1=pyhd8ed1ab_0 - defusedxml=0.7.1=pyhd8ed1ab_0 - deprecated=1.2.18=pyhd8ed1ab_0 @@ -56,17 +56,17 @@ dependencies: - distributed=2025.3.0=pyhd8ed1ab_0 - docutils=0.18.1=py312h7900ff3_1 - exceptiongroup=1.3.0=pyhd8ed1ab_0 - - executing=2.2.0=pyhd8ed1ab_0 + - executing=2.2.1=pyhd8ed1ab_0 - fasteners=0.19=pyhd8ed1ab_1 - fonttools=4.59.2=py312h8a5da7c_0 - fqdn=1.5.1=pyhd8ed1ab_1 - freetype=2.13.3=ha770c72_1 - - fsspec=2025.7.0=pyhd8ed1ab_0 + - fsspec=2025.9.0=pyhd8ed1ab_0 - geoana=0.7.2=py312hc39e661_0 - - greenlet=3.2.4=py312h1289d80_0 + - greenlet=3.2.4=py312h1289d80_1 - h11=0.16.0=pyhd8ed1ab_0 - h2=4.3.0=pyhcf101f3_0 - - h5py=3.14.0=nompi_py312h3faca00_100 + - h5py=3.14.0=nompi_py312ha4f8f14_101 - hdf5=1.14.6=nompi_h6e4c0c1_103 - hpack=4.1.0=pyhd8ed1ab_0 - httpcore=1.0.9=pyh29332c3_0 @@ -88,7 +88,7 @@ dependencies: - jinja2=3.1.6=pyhd8ed1ab_0 - joblib=1.5.2=pyhd8ed1ab_0 - json5=0.12.1=pyhd8ed1ab_0 - - jsonpointer=3.0.0=py312h7900ff3_1 + - jsonpointer=3.0.0=py312h7900ff3_2 - jsonschema=4.25.1=pyhe01879c_0 - jsonschema-specifications=2025.4.1=pyh29332c3_0 - jsonschema-with-format-nongpl=4.25.1=he01879c_0 @@ -100,7 +100,7 @@ dependencies: - jupyter_events=0.12.0=pyh29332c3_0 - jupyter_server=2.17.0=pyhcf101f3_0 - jupyter_server_terminals=0.5.3=pyhd8ed1ab_1 - - jupyterlab=4.4.6=pyhd8ed1ab_0 + - jupyterlab=4.4.7=pyhd8ed1ab_0 - jupyterlab_pygments=0.3.0=pyhd8ed1ab_2 - jupyterlab_server=2.27.3=pyhd8ed1ab_1 - jupyterlab_widgets=1.1.11=pyhd8ed1ab_0 @@ -114,11 +114,11 @@ dependencies: - ld_impl_linux-64=2.44=h1423503_1 - lerc=4.0.0=h0aef613_1 - libaec=1.1.4=h3f801dc_0 - - libblas=3.9.0=34_hfdb39a5_mkl - - libbrotlicommon=1.1.0=hb9d3cd8_3 - - libbrotlidec=1.1.0=hb9d3cd8_3 - - libbrotlienc=1.1.0=hb9d3cd8_3 - - libcblas=3.9.0=34_h372d94f_mkl + - libblas=3.9.0=35_hfdb39a5_mkl + - libbrotlicommon=1.1.0=hb03c661_4 + - libbrotlidec=1.1.0=hb03c661_4 + - libbrotlienc=1.1.0=hb03c661_4 + - libcblas=3.9.0=35_h372d94f_mkl - libcurl=8.14.1=h332b0f4_0 - libdeflate=1.24=h86f0d12_0 - libdlf=0.3.0=pyhd8ed1ab_1 @@ -135,9 +135,9 @@ dependencies: - libhwloc=2.12.1=default_h3d81e11_1000 - libiconv=1.18=h3b78370_2 - libjpeg-turbo=3.1.0=hb9d3cd8_0 - - liblapack=3.9.0=34_hc41d3b0_mkl + - liblapack=3.9.0=35_hc41d3b0_mkl - liblzma=5.8.1=hb9d3cd8_2 - - libnghttp2=1.64.0=h161d5f1_0 + - libnghttp2=1.67.0=had1ee68_0 - libnsl=2.0.1=hb9d3cd8_1 - libpng=1.6.50=h421ea60_1 - libscotch=7.0.6=hea33c07_1 @@ -155,7 +155,7 @@ dependencies: - libxml2=2.13.8=h2cb61b6_1 - libzlib=1.3.1=hb9d3cd8_2 - linkify-it-py=2.0.3=pyhd8ed1ab_1 - - llvm-openmp=20.1.8=h4922eb0_2 + - llvm-openmp=21.1.0=h4922eb0_0 - locket=1.0.0=pyhd8ed1ab_0 - markdown-it-py=2.2.0=pyhd8ed1ab_0 - markupsafe=3.0.2=py312h178313f_1 @@ -165,9 +165,9 @@ dependencies: - mdit-py-plugins=0.5.0=pyhd8ed1ab_0 - mdurl=0.1.2=pyhd8ed1ab_1 - metis=5.1.0=hd0bcaf9_1007 - - mistune=3.1.3=pyh29332c3_0 + - mistune=3.1.4=pyhcf101f3_0 - mkl=2024.2.2=ha770c72_17 - - msgpack-python=1.1.1=py312h68727a3_0 + - msgpack-python=1.1.1=py312hd9148b4_1 - mumps-include=5.7.3=h82cca05_10 - mumps-seq=5.7.3=h06cbf8f_10 - munkres=1.1.4=pyhd8ed1ab_1 @@ -217,7 +217,7 @@ dependencies: - pymatsolver=0.3.1=pyh48887ae_201 - pyparsing=3.2.3=pyhe01879c_2 - pysocks=1.7.1=pyha55dd90_7 - - pytest=8.4.1=pyhd8ed1ab_0 + - pytest=8.4.2=pyhd8ed1ab_0 - pytest-cov=6.2.1=pyhd8ed1ab_0 - python=3.12.11=h9e4cc4f_0_cpython - python-dateutil=2.9.0.post0=pyhe01879c_2 @@ -237,7 +237,7 @@ dependencies: - rfc3339-validator=0.1.4=pyhd8ed1ab_1 - rfc3986-validator=0.1.1=pyh9f0ad1d_0 - rfc3987-syntax=1.1.0=pyhe01879c_1 - - rpds-py=0.27.1=py312h868fb18_0 + - rpds-py=0.27.1=py312h868fb18_1 - rtree=1.2.0=py312h3ed4c40_1 - scikit-learn=1.6.1=py312h7a48858_0 - scipy=1.14.1=py312h62794b6_2 @@ -278,7 +278,7 @@ dependencies: - tomli=2.2.1=pyhe01879c_2 - tomlkit=0.13.3=pyha770c72_0 - toolz=1.0.0=pyhd8ed1ab_1 - - tornado=6.5.2=py312h4c3975b_0 + - tornado=6.5.2=py312h4c3975b_1 - tqdm=4.67.1=pyhd8ed1ab_1 - traitlets=5.14.3=pyhd8ed1ab_1 - trimesh=4.1.8=pyhd8ed1ab_0 @@ -298,7 +298,7 @@ dependencies: - websocket-client=1.8.0=pyhd8ed1ab_1 - wheel=0.45.1=pyhd8ed1ab_1 - widgetsnbextension=3.6.10=pyhd8ed1ab_0 - - wrapt=1.17.3=py312h4c3975b_0 + - wrapt=1.17.3=py312h4c3975b_1 - xorg-libxau=1.0.12=hb9d3cd8_0 - xorg-libxdmcp=1.1.5=hb9d3cd8_0 - xyzservices=2025.4.0=pyhd8ed1ab_0 @@ -307,13 +307,13 @@ dependencies: - zeromq=4.3.5=h3b0a872_7 - zict=3.0.0=pyhd8ed1ab_1 - zipp=3.23.0=pyhd8ed1ab_0 - - zstandard=0.23.0=py312h4c3975b_3 + - zstandard=0.24.0=py312h3fa7853_1 - zstd=1.5.7=hb8e6e7a_2 - pip: - - geoapps-utils @ git+https://github.com/MiraGeoscience/geoapps-utils.git@655afd735989270d5d03b80a98cbe22844b47066 - - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@2c9248c60e4166fadb973fcd4f1777bb2ee964f6 + - geoapps-utils @ git+https://github.com/MiraGeoscience/geoapps-utils.git@1241642d40693ee9c58f83ce46b317cba43dc68b + - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@3a91dd92144a34b3c1ad1e5885029a7102e6337c - grid-apps @ git+https://github.com/MiraGeoscience/grid-apps.git@416815352706add295a9d2b90814d2291068a85e - - mira-simpeg @ git+https://github.com/MiraGeoscience/simpeg.git@d794a0b24aafb4beccc7984e68b6904be44f860f + - mira-simpeg @ git+https://github.com/MiraGeoscience/simpeg.git@5561fb5441be2cceaf8e1ca5fa05f6e3b19ee6bb variables: KMP_WARNINGS: 0 diff --git a/environments/py-3.12-linux-64.conda.lock.yml b/environments/py-3.12-linux-64.conda.lock.yml index 3affe326d..d61e22d19 100644 --- a/environments/py-3.12-linux-64.conda.lock.yml +++ b/environments/py-3.12-linux-64.conda.lock.yml @@ -10,20 +10,20 @@ dependencies: - annotated-types=0.7.0=pyhd8ed1ab_1 - asciitree=0.3.3=py_2 - bokeh=3.6.3=pyhd8ed1ab_0 - - brotli=1.1.0=hb9d3cd8_3 - - brotli-bin=1.1.0=hb9d3cd8_3 - - brotli-python=1.1.0=py312h2ec8cdc_3 + - brotli=1.1.0=hb03c661_4 + - brotli-bin=1.1.0=hb03c661_4 + - brotli-python=1.1.0=py312h1289d80_4 - bzip2=1.0.8=h4bc722e_7 - c-ares=1.34.5=hb9d3cd8_0 - ca-certificates=2025.8.3=hbd8a1cb_0 - cached-property=1.5.2=hd8ed1ab_1 - cached_property=1.5.2=pyha770c72_1 - certifi=2025.8.3=pyhd8ed1ab_0 - - cffi=1.17.1=py312h06ac9bb_0 + - cffi=1.17.1=py312h35888ee_1 - click=8.2.1=pyh707e725_0 - cloudpickle=3.1.1=pyhd8ed1ab_0 - colorama=0.4.6=pyhd8ed1ab_1 - - contourpy=1.3.3=py312hd9148b4_1 + - contourpy=1.3.3=py312hd9148b4_2 - cycler=0.12.1=pyhd8ed1ab_1 - cytoolz=1.0.1=py312h66e93f0_0 - dask-core=2025.3.0=pyhd8ed1ab_0 @@ -33,10 +33,10 @@ dependencies: - fasteners=0.19=pyhd8ed1ab_1 - fonttools=4.59.2=py312h8a5da7c_0 - freetype=2.13.3=ha770c72_1 - - fsspec=2025.7.0=pyhd8ed1ab_0 + - fsspec=2025.9.0=pyhd8ed1ab_0 - geoana=0.7.2=py312hc39e661_0 - h2=4.3.0=pyhcf101f3_0 - - h5py=3.14.0=nompi_py312h3faca00_100 + - h5py=3.14.0=nompi_py312ha4f8f14_101 - hdf5=1.14.6=nompi_h6e4c0c1_103 - hpack=4.1.0=pyhd8ed1ab_0 - hyperframe=6.1.0=pyhd8ed1ab_0 @@ -50,11 +50,11 @@ dependencies: - ld_impl_linux-64=2.44=h1423503_1 - lerc=4.0.0=h0aef613_1 - libaec=1.1.4=h3f801dc_0 - - libblas=3.9.0=34_hfdb39a5_mkl - - libbrotlicommon=1.1.0=hb9d3cd8_3 - - libbrotlidec=1.1.0=hb9d3cd8_3 - - libbrotlienc=1.1.0=hb9d3cd8_3 - - libcblas=3.9.0=34_h372d94f_mkl + - libblas=3.9.0=35_hfdb39a5_mkl + - libbrotlicommon=1.1.0=hb03c661_4 + - libbrotlidec=1.1.0=hb03c661_4 + - libbrotlienc=1.1.0=hb03c661_4 + - libcblas=3.9.0=35_h372d94f_mkl - libcurl=8.14.1=h332b0f4_0 - libdeflate=1.24=h86f0d12_0 - libdlf=0.3.0=pyhd8ed1ab_1 @@ -71,9 +71,9 @@ dependencies: - libhwloc=2.12.1=default_h3d81e11_1000 - libiconv=1.18=h3b78370_2 - libjpeg-turbo=3.1.0=hb9d3cd8_0 - - liblapack=3.9.0=34_hc41d3b0_mkl + - liblapack=3.9.0=35_hc41d3b0_mkl - liblzma=5.8.1=hb9d3cd8_2 - - libnghttp2=1.64.0=h161d5f1_0 + - libnghttp2=1.67.0=had1ee68_0 - libnsl=2.0.1=hb9d3cd8_1 - libpng=1.6.50=h421ea60_1 - libscotch=7.0.6=hea33c07_1 @@ -89,13 +89,13 @@ dependencies: - libxcrypt=4.4.36=hd590300_1 - libxml2=2.13.8=h2cb61b6_1 - libzlib=1.3.1=hb9d3cd8_2 - - llvm-openmp=20.1.8=h4922eb0_2 + - llvm-openmp=21.1.0=h4922eb0_0 - locket=1.0.0=pyhd8ed1ab_0 - markupsafe=3.0.2=py312h178313f_1 - matplotlib-base=3.8.4=py312h20ab3a6_2 - metis=5.1.0=hd0bcaf9_1007 - mkl=2024.2.2=ha770c72_17 - - msgpack-python=1.1.1=py312h68727a3_0 + - msgpack-python=1.1.1=py312hd9148b4_1 - mumps-include=5.7.3=h82cca05_10 - mumps-seq=5.7.3=h06cbf8f_10 - munkres=1.1.4=pyhd8ed1ab_1 @@ -137,7 +137,7 @@ dependencies: - threadpoolctl=3.6.0=pyhecae5ae_0 - tk=8.6.13=noxft_hd72426e_102 - toolz=1.0.0=pyhd8ed1ab_1 - - tornado=6.5.2=py312h4c3975b_0 + - tornado=6.5.2=py312h4c3975b_1 - tqdm=4.67.1=pyhd8ed1ab_1 - trimesh=4.1.8=pyhd8ed1ab_0 - typing-extensions=4.15.0=h396c80c_0 @@ -147,7 +147,7 @@ dependencies: - unicodedata2=16.0.0=py312h4c3975b_1 - urllib3=2.5.0=pyhd8ed1ab_0 - wheel=0.45.1=pyhd8ed1ab_1 - - wrapt=1.17.3=py312h4c3975b_0 + - wrapt=1.17.3=py312h4c3975b_1 - xorg-libxau=1.0.12=hb9d3cd8_0 - xorg-libxdmcp=1.1.5=hb9d3cd8_0 - xyzservices=2025.4.0=pyhd8ed1ab_0 @@ -155,13 +155,13 @@ dependencies: - zarr=2.14.2=pyhd8ed1ab_0 - zict=3.0.0=pyhd8ed1ab_1 - zipp=3.23.0=pyhd8ed1ab_0 - - zstandard=0.23.0=py312h4c3975b_3 + - zstandard=0.24.0=py312h3fa7853_1 - zstd=1.5.7=hb8e6e7a_2 - pip: - - geoapps-utils @ git+https://github.com/MiraGeoscience/geoapps-utils.git@655afd735989270d5d03b80a98cbe22844b47066 - - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@2c9248c60e4166fadb973fcd4f1777bb2ee964f6 + - geoapps-utils @ git+https://github.com/MiraGeoscience/geoapps-utils.git@1241642d40693ee9c58f83ce46b317cba43dc68b + - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@3a91dd92144a34b3c1ad1e5885029a7102e6337c - grid-apps @ git+https://github.com/MiraGeoscience/grid-apps.git@416815352706add295a9d2b90814d2291068a85e - - mira-simpeg @ git+https://github.com/MiraGeoscience/simpeg.git@d794a0b24aafb4beccc7984e68b6904be44f860f + - mira-simpeg @ git+https://github.com/MiraGeoscience/simpeg.git@5561fb5441be2cceaf8e1ca5fa05f6e3b19ee6bb variables: KMP_WARNINGS: 0 diff --git a/environments/py-3.12-win-64-dev.conda.lock.yml b/environments/py-3.12-win-64-dev.conda.lock.yml index 803675ccc..d3b65a01f 100644 --- a/environments/py-3.12-win-64-dev.conda.lock.yml +++ b/environments/py-3.12-win-64-dev.conda.lock.yml @@ -16,7 +16,7 @@ dependencies: - argon2-cffi-bindings=25.1.0=py312he06e257_0 - arrow=1.3.0=pyhd8ed1ab_1 - asciitree=0.3.3=py_2 - - astroid=3.3.11=py312h2e8e312_0 + - astroid=3.3.11=py312h2e8e312_1 - asttokens=3.0.0=pyhd8ed1ab_1 - async-lru=2.0.5=pyh29332c3_0 - attrs=25.3.0=pyh71513ae_0 @@ -25,28 +25,28 @@ dependencies: - bleach=6.2.0=pyh29332c3_4 - bleach-with-css=6.2.0=h82add2a_4 - bokeh=3.6.3=pyhd8ed1ab_0 - - brotli=1.1.0=h2466b09_3 - - brotli-bin=1.1.0=h2466b09_3 - - brotli-python=1.1.0=py312h275cf98_3 + - brotli=1.1.0=hfd05255_4 + - brotli-bin=1.1.0=hfd05255_4 + - brotli-python=1.1.0=py312hbb81ca0_4 - bzip2=1.0.8=h2466b09_7 - ca-certificates=2025.8.3=h4c7d964_0 - cached-property=1.5.2=hd8ed1ab_1 - cached_property=1.5.2=pyha770c72_1 - certifi=2025.8.3=pyhd8ed1ab_0 - - cffi=1.17.1=py312h4389bb4_0 + - cffi=1.17.1=py312he06e257_1 - charset-normalizer=3.4.3=pyhd8ed1ab_0 - click=8.2.1=pyh7428d3b_0 - cloudpickle=3.1.1=pyhd8ed1ab_0 - colorama=0.4.6=pyhd8ed1ab_1 - comm=0.2.3=pyhe01879c_0 - - contourpy=1.3.3=py312hf90b1b7_1 - - coverage=7.10.5=py312h05f76fc_0 + - contourpy=1.3.3=py312hf90b1b7_2 + - coverage=7.10.6=py312h05f76fc_1 - cpython=3.12.11=py312hd8ed1ab_0 - cycler=0.12.1=pyhd8ed1ab_1 - cytoolz=1.0.1=py312h4389bb4_0 - dask-core=2025.3.0=pyhd8ed1ab_0 - dataclasses=0.8=pyhc8e2a94_3 - - debugpy=1.8.16=py312ha1a9051_0 + - debugpy=1.8.16=py312ha1a9051_1 - decorator=5.2.1=pyhd8ed1ab_0 - defusedxml=0.7.1=pyhd8ed1ab_0 - deprecated=1.2.18=pyhd8ed1ab_0 @@ -55,17 +55,17 @@ dependencies: - distributed=2025.3.0=pyhd8ed1ab_0 - docutils=0.18.1=py312h2e8e312_1 - exceptiongroup=1.3.0=pyhd8ed1ab_0 - - executing=2.2.0=pyhd8ed1ab_0 + - executing=2.2.1=pyhd8ed1ab_0 - fasteners=0.19=pyhd8ed1ab_1 - fonttools=4.59.2=py312h05f76fc_0 - fqdn=1.5.1=pyhd8ed1ab_1 - freetype=2.13.3=h57928b3_1 - - fsspec=2025.7.0=pyhd8ed1ab_0 + - fsspec=2025.9.0=pyhd8ed1ab_0 - geoana=0.7.2=py312hbaa7e33_0 - - greenlet=3.2.4=py312hbb81ca0_0 + - greenlet=3.2.4=py312hbb81ca0_1 - h11=0.16.0=pyhd8ed1ab_0 - h2=4.3.0=pyhcf101f3_0 - - h5py=3.14.0=nompi_py312h6cc2a29_100 + - h5py=3.14.0=nompi_py312h03cd2ba_101 - hdf5=1.14.6=nompi_he30205f_103 - hpack=4.1.0=pyhd8ed1ab_0 - httpcore=1.0.9=pyh29332c3_0 @@ -87,7 +87,7 @@ dependencies: - jinja2=3.1.6=pyhd8ed1ab_0 - joblib=1.5.2=pyhd8ed1ab_0 - json5=0.12.1=pyhd8ed1ab_0 - - jsonpointer=3.0.0=py312h2e8e312_1 + - jsonpointer=3.0.0=py312h2e8e312_2 - jsonschema=4.25.1=pyhe01879c_0 - jsonschema-specifications=2025.4.1=pyh29332c3_0 - jsonschema-with-format-nongpl=4.25.1=he01879c_0 @@ -99,7 +99,7 @@ dependencies: - jupyter_events=0.12.0=pyh29332c3_0 - jupyter_server=2.17.0=pyhcf101f3_0 - jupyter_server_terminals=0.5.3=pyhd8ed1ab_1 - - jupyterlab=4.4.6=pyhd8ed1ab_0 + - jupyterlab=4.4.7=pyhd8ed1ab_0 - jupyterlab_pygments=0.3.0=pyhd8ed1ab_2 - jupyterlab_server=2.27.3=pyhd8ed1ab_1 - jupyterlab_widgets=1.1.11=pyhd8ed1ab_0 @@ -111,11 +111,11 @@ dependencies: - lcms2=2.17=hbcf6048_0 - lerc=4.0.0=h6470a55_1 - libaec=1.1.4=h20038f6_0 - - libblas=3.9.0=34_h5709861_mkl - - libbrotlicommon=1.1.0=h2466b09_3 - - libbrotlidec=1.1.0=h2466b09_3 - - libbrotlienc=1.1.0=h2466b09_3 - - libcblas=3.9.0=34_h2a3cdd5_mkl + - libblas=3.9.0=35_h5709861_mkl + - libbrotlicommon=1.1.0=hfd05255_4 + - libbrotlidec=1.1.0=hfd05255_4 + - libbrotlienc=1.1.0=hfd05255_4 + - libcblas=3.9.0=35_h2a3cdd5_mkl - libcurl=8.14.1=h88aaa65_0 - libdeflate=1.24=h76ddb4d_0 - libdlf=0.3.0=pyhd8ed1ab_1 @@ -128,7 +128,7 @@ dependencies: - libhwloc=2.12.1=default_h88281d1_1000 - libiconv=1.18=hc1393d2_2 - libjpeg-turbo=3.1.0=h2466b09_0 - - liblapack=3.9.0=34_hf9ab0e9_mkl + - liblapack=3.9.0=35_hf9ab0e9_mkl - liblzma=5.8.1=h2466b09_2 - libpng=1.6.50=h7351971_1 - libsodium=1.0.20=hc70643c_0 @@ -151,9 +151,9 @@ dependencies: - mccabe=0.7.0=pyhd8ed1ab_1 - mdit-py-plugins=0.5.0=pyhd8ed1ab_0 - mdurl=0.1.2=pyhd8ed1ab_1 - - mistune=3.1.3=pyh29332c3_0 + - mistune=3.1.4=pyhcf101f3_0 - mkl=2024.2.2=h57928b3_16 - - msgpack-python=1.1.1=py312hd5eb7cc_0 + - msgpack-python=1.1.1=py312hf90b1b7_1 - mumps-seq=5.7.3=hbaa6519_10 - munkres=1.1.4=pyhd8ed1ab_1 - myst-nb=1.3.0=pyhe01879c_0 @@ -199,7 +199,7 @@ dependencies: - pymatsolver=0.3.1=pyh48887ae_201 - pyparsing=3.2.3=pyhe01879c_2 - pysocks=1.7.1=pyh09c184e_7 - - pytest=8.4.1=pyhd8ed1ab_0 + - pytest=8.4.2=pyhd8ed1ab_0 - pytest-cov=6.2.1=pyhd8ed1ab_0 - python=3.12.11=h3f84c4b_0_cpython - python-dateutil=2.9.0.post0=pyhe01879c_2 @@ -220,7 +220,7 @@ dependencies: - rfc3339-validator=0.1.4=pyhd8ed1ab_1 - rfc3986-validator=0.1.1=pyh9f0ad1d_0 - rfc3987-syntax=1.1.0=pyhe01879c_1 - - rpds-py=0.27.1=py312hdabe01f_0 + - rpds-py=0.27.1=py312hdabe01f_1 - rtree=1.2.0=py312h50e5f8f_1 - scikit-learn=1.6.1=py312h816cc57_0 - scipy=1.14.1=py312h337df96_2 @@ -261,7 +261,7 @@ dependencies: - tomli=2.2.1=pyhe01879c_2 - tomlkit=0.13.3=pyha770c72_0 - toolz=1.0.0=pyhd8ed1ab_1 - - tornado=6.5.2=py312he06e257_0 + - tornado=6.5.2=py312he06e257_1 - tqdm=4.67.1=pyhd8ed1ab_1 - traitlets=5.14.3=pyhd8ed1ab_1 - trimesh=4.1.8=pyhd8ed1ab_0 @@ -287,7 +287,7 @@ dependencies: - widgetsnbextension=3.6.10=pyhd8ed1ab_0 - win_inet_pton=1.1.0=pyh7428d3b_8 - winpty=0.4.3=4 - - wrapt=1.17.3=py312he06e257_0 + - wrapt=1.17.3=py312he06e257_1 - xorg-libxau=1.0.12=h0e40799_0 - xorg-libxdmcp=1.1.5=h0e40799_0 - xyzservices=2025.4.0=pyhd8ed1ab_0 @@ -296,13 +296,13 @@ dependencies: - zeromq=4.3.5=ha9f60a1_7 - zict=3.0.0=pyhd8ed1ab_1 - zipp=3.23.0=pyhd8ed1ab_0 - - zstandard=0.23.0=py312he06e257_3 + - zstandard=0.24.0=py312ha680012_1 - zstd=1.5.7=hbeecb71_2 - pip: - - geoapps-utils @ git+https://github.com/MiraGeoscience/geoapps-utils.git@655afd735989270d5d03b80a98cbe22844b47066 - - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@2c9248c60e4166fadb973fcd4f1777bb2ee964f6 + - geoapps-utils @ git+https://github.com/MiraGeoscience/geoapps-utils.git@1241642d40693ee9c58f83ce46b317cba43dc68b + - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@3a91dd92144a34b3c1ad1e5885029a7102e6337c - grid-apps @ git+https://github.com/MiraGeoscience/grid-apps.git@416815352706add295a9d2b90814d2291068a85e - - mira-simpeg @ git+https://github.com/MiraGeoscience/simpeg.git@d794a0b24aafb4beccc7984e68b6904be44f860f + - mira-simpeg @ git+https://github.com/MiraGeoscience/simpeg.git@5561fb5441be2cceaf8e1ca5fa05f6e3b19ee6bb variables: KMP_WARNINGS: 0 diff --git a/environments/py-3.12-win-64.conda.lock.yml b/environments/py-3.12-win-64.conda.lock.yml index aa51a2402..d0dbb275b 100644 --- a/environments/py-3.12-win-64.conda.lock.yml +++ b/environments/py-3.12-win-64.conda.lock.yml @@ -10,19 +10,19 @@ dependencies: - annotated-types=0.7.0=pyhd8ed1ab_1 - asciitree=0.3.3=py_2 - bokeh=3.6.3=pyhd8ed1ab_0 - - brotli=1.1.0=h2466b09_3 - - brotli-bin=1.1.0=h2466b09_3 - - brotli-python=1.1.0=py312h275cf98_3 + - brotli=1.1.0=hfd05255_4 + - brotli-bin=1.1.0=hfd05255_4 + - brotli-python=1.1.0=py312hbb81ca0_4 - bzip2=1.0.8=h2466b09_7 - ca-certificates=2025.8.3=h4c7d964_0 - cached-property=1.5.2=hd8ed1ab_1 - cached_property=1.5.2=pyha770c72_1 - certifi=2025.8.3=pyhd8ed1ab_0 - - cffi=1.17.1=py312h4389bb4_0 + - cffi=1.17.1=py312he06e257_1 - click=8.2.1=pyh7428d3b_0 - cloudpickle=3.1.1=pyhd8ed1ab_0 - colorama=0.4.6=pyhd8ed1ab_1 - - contourpy=1.3.3=py312hf90b1b7_1 + - contourpy=1.3.3=py312hf90b1b7_2 - cycler=0.12.1=pyhd8ed1ab_1 - cytoolz=1.0.1=py312h4389bb4_0 - dask-core=2025.3.0=pyhd8ed1ab_0 @@ -32,10 +32,10 @@ dependencies: - fasteners=0.19=pyhd8ed1ab_1 - fonttools=4.59.2=py312h05f76fc_0 - freetype=2.13.3=h57928b3_1 - - fsspec=2025.7.0=pyhd8ed1ab_0 + - fsspec=2025.9.0=pyhd8ed1ab_0 - geoana=0.7.2=py312hbaa7e33_0 - h2=4.3.0=pyhcf101f3_0 - - h5py=3.14.0=nompi_py312h6cc2a29_100 + - h5py=3.14.0=nompi_py312h03cd2ba_101 - hdf5=1.14.6=nompi_he30205f_103 - hpack=4.1.0=pyhd8ed1ab_0 - hyperframe=6.1.0=pyhd8ed1ab_0 @@ -47,11 +47,11 @@ dependencies: - lcms2=2.17=hbcf6048_0 - lerc=4.0.0=h6470a55_1 - libaec=1.1.4=h20038f6_0 - - libblas=3.9.0=34_h5709861_mkl - - libbrotlicommon=1.1.0=h2466b09_3 - - libbrotlidec=1.1.0=h2466b09_3 - - libbrotlienc=1.1.0=h2466b09_3 - - libcblas=3.9.0=34_h2a3cdd5_mkl + - libblas=3.9.0=35_h5709861_mkl + - libbrotlicommon=1.1.0=hfd05255_4 + - libbrotlidec=1.1.0=hfd05255_4 + - libbrotlienc=1.1.0=hfd05255_4 + - libcblas=3.9.0=35_h2a3cdd5_mkl - libcurl=8.14.1=h88aaa65_0 - libdeflate=1.24=h76ddb4d_0 - libdlf=0.3.0=pyhd8ed1ab_1 @@ -64,7 +64,7 @@ dependencies: - libhwloc=2.12.1=default_h88281d1_1000 - libiconv=1.18=hc1393d2_2 - libjpeg-turbo=3.1.0=h2466b09_0 - - liblapack=3.9.0=34_hf9ab0e9_mkl + - liblapack=3.9.0=35_hf9ab0e9_mkl - liblzma=5.8.1=h2466b09_2 - libpng=1.6.50=h7351971_1 - libspatialindex=2.0.0=h5a68840_0 @@ -81,7 +81,7 @@ dependencies: - markupsafe=3.0.2=py312h31fea79_1 - matplotlib-base=3.8.4=py312hfee7060_2 - mkl=2024.2.2=h57928b3_16 - - msgpack-python=1.1.1=py312hd5eb7cc_0 + - msgpack-python=1.1.1=py312hf90b1b7_1 - mumps-seq=5.7.3=hbaa6519_10 - munkres=1.1.4=pyhd8ed1ab_1 - numcodecs=0.15.1=py312h72972c8_0 @@ -120,7 +120,7 @@ dependencies: - threadpoolctl=3.6.0=pyhecae5ae_0 - tk=8.6.13=h2c6b04d_2 - toolz=1.0.0=pyhd8ed1ab_1 - - tornado=6.5.2=py312he06e257_0 + - tornado=6.5.2=py312he06e257_1 - tqdm=4.67.1=pyhd8ed1ab_1 - trimesh=4.1.8=pyhd8ed1ab_0 - typing-extensions=4.15.0=h396c80c_0 @@ -135,7 +135,7 @@ dependencies: - vcomp14=14.44.35208=h818238b_31 - wheel=0.45.1=pyhd8ed1ab_1 - win_inet_pton=1.1.0=pyh7428d3b_8 - - wrapt=1.17.3=py312he06e257_0 + - wrapt=1.17.3=py312he06e257_1 - xorg-libxau=1.0.12=h0e40799_0 - xorg-libxdmcp=1.1.5=h0e40799_0 - xyzservices=2025.4.0=pyhd8ed1ab_0 @@ -143,13 +143,13 @@ dependencies: - zarr=2.14.2=pyhd8ed1ab_0 - zict=3.0.0=pyhd8ed1ab_1 - zipp=3.23.0=pyhd8ed1ab_0 - - zstandard=0.23.0=py312he06e257_3 + - zstandard=0.24.0=py312ha680012_1 - zstd=1.5.7=hbeecb71_2 - pip: - - geoapps-utils @ git+https://github.com/MiraGeoscience/geoapps-utils.git@655afd735989270d5d03b80a98cbe22844b47066 - - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@2c9248c60e4166fadb973fcd4f1777bb2ee964f6 + - geoapps-utils @ git+https://github.com/MiraGeoscience/geoapps-utils.git@1241642d40693ee9c58f83ce46b317cba43dc68b + - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@3a91dd92144a34b3c1ad1e5885029a7102e6337c - grid-apps @ git+https://github.com/MiraGeoscience/grid-apps.git@416815352706add295a9d2b90814d2291068a85e - - mira-simpeg @ git+https://github.com/MiraGeoscience/simpeg.git@d794a0b24aafb4beccc7984e68b6904be44f860f + - mira-simpeg @ git+https://github.com/MiraGeoscience/simpeg.git@5561fb5441be2cceaf8e1ca5fa05f6e3b19ee6bb variables: KMP_WARNINGS: 0 diff --git a/py-3.10.conda-lock.yml b/py-3.10.conda-lock.yml index 71a879e68..06989accf 100644 --- a/py-3.10.conda-lock.yml +++ b/py-3.10.conda-lock.yml @@ -283,10 +283,10 @@ package: python: '>=3.10,<3.11.0a0' python_abi: 3.10.* typing_extensions: '>=4' - url: https://repo.prefix.dev/conda-forge/linux-64/astroid-3.3.11-py310hff52083_0.conda + url: https://repo.prefix.dev/conda-forge/linux-64/astroid-3.3.11-py310hff52083_1.conda hash: - md5: a6ac735bba663f77669789c9ed1d4bd1 - sha256: 7546e57aceee80ff58388c6cfcc072f8c0df057a87bed551325a404b13b9012d + md5: cf84a0665b3e7ec2056ae606b4ce1378 + sha256: 223f1330a5ddb1b3b28be57f966c04603902e0bb7b22dbb4a29f1d1240ec1ed7 category: dev optional: true - name: astroid @@ -297,10 +297,10 @@ package: python: '>=3.10,<3.11.0a0' python_abi: 3.10.* typing_extensions: '>=4' - url: https://repo.prefix.dev/conda-forge/win-64/astroid-3.3.11-py310h5588dad_0.conda + url: https://repo.prefix.dev/conda-forge/win-64/astroid-3.3.11-py310h5588dad_1.conda hash: - md5: 6f5ec356c2f46223dc446283fd39acb7 - sha256: 2f4d34b9b4fb7c3902ba1f63e4d43625084a544993a7f14fac8403fbc1376246 + md5: 6cd63bf117fad2a1359e93bdaab4884f + sha256: 1daca67f30e02b3d1116aa512ac263e7c8ace9bba77341fb3eff7d3a930197a6 category: dev optional: true - name: asttokens @@ -534,11 +534,11 @@ package: brotli-bin: 1.1.0 libbrotlidec: 1.1.0 libbrotlienc: 1.1.0 - libgcc: '>=13' - url: https://repo.prefix.dev/conda-forge/linux-64/brotli-1.1.0-hb9d3cd8_3.conda + libgcc: '>=14' + url: https://repo.prefix.dev/conda-forge/linux-64/brotli-1.1.0-hb03c661_4.conda hash: - md5: 5d08a0ac29e6a5a984817584775d4131 - sha256: c969baaa5d7a21afb5ed4b8dd830f82b78e425caaa13d717766ed07a61630bec + md5: eaf3fbd2aa97c212336de38a51fe404e + sha256: 294526a54fa13635341729f250d0b1cf8f82cad1e6b83130304cbf3b6d8b74cc category: main optional: false - name: brotli @@ -550,12 +550,12 @@ package: libbrotlidec: 1.1.0 libbrotlienc: 1.1.0 ucrt: '>=10.0.20348.0' - vc: '>=14.2,<15' - vc14_runtime: '>=14.29.30139' - url: https://repo.prefix.dev/conda-forge/win-64/brotli-1.1.0-h2466b09_3.conda + vc: '>=14.3,<15' + vc14_runtime: '>=14.44.35208' + url: https://repo.prefix.dev/conda-forge/win-64/brotli-1.1.0-hfd05255_4.conda hash: - md5: c2a23d8a8986c72148c63bdf855ac99a - sha256: d57cd6ea705c9d2a8a2721f083de247501337e459f5498726b564cfca138e192 + md5: 441706c019985cf109ced06458e6f742 + sha256: df2a43cc4a99bd184cb249e62106dfa9f55b3d06df9b5fc67072b0336852ff65 category: main optional: false - name: brotli-bin @@ -566,11 +566,11 @@ package: __glibc: '>=2.17,<3.0.a0' libbrotlidec: 1.1.0 libbrotlienc: 1.1.0 - libgcc: '>=13' - url: https://repo.prefix.dev/conda-forge/linux-64/brotli-bin-1.1.0-hb9d3cd8_3.conda + libgcc: '>=14' + url: https://repo.prefix.dev/conda-forge/linux-64/brotli-bin-1.1.0-hb03c661_4.conda hash: - md5: 58178ef8ba927229fba6d84abf62c108 - sha256: ab74fa8c3d1ca0a055226be89e99d6798c65053e2d2d3c6cb380c574972cd4a7 + md5: ca4ed8015764937c81b830f7f5b68543 + sha256: 444903c6e5c553175721a16b7c7de590ef754a15c28c99afbc8a963b35269517 category: main optional: false - name: brotli-bin @@ -581,12 +581,12 @@ package: libbrotlidec: 1.1.0 libbrotlienc: 1.1.0 ucrt: '>=10.0.20348.0' - vc: '>=14.2,<15' - vc14_runtime: '>=14.29.30139' - url: https://repo.prefix.dev/conda-forge/win-64/brotli-bin-1.1.0-h2466b09_3.conda + vc: '>=14.3,<15' + vc14_runtime: '>=14.44.35208' + url: https://repo.prefix.dev/conda-forge/win-64/brotli-bin-1.1.0-hfd05255_4.conda hash: - md5: c7c345559c1ac25eede6dccb7b931202 - sha256: 85aac1c50a426be6d0cc9fd52480911d752f4082cb78accfdb257243e572c7eb + md5: ef022c8941d7dcc420c8533b0e419733 + sha256: e92c783502d95743b49b650c9276e9c56c7264da55429a5e45655150a6d1b0cf category: main optional: false - name: brotli-python @@ -595,14 +595,14 @@ package: platform: linux-64 dependencies: __glibc: '>=2.17,<3.0.a0' - libgcc: '>=13' - libstdcxx: '>=13' + libgcc: '>=14' + libstdcxx: '>=14' python: '>=3.10,<3.11.0a0' python_abi: 3.10.* - url: https://repo.prefix.dev/conda-forge/linux-64/brotli-python-1.1.0-py310hf71b8c6_3.conda + url: https://repo.prefix.dev/conda-forge/linux-64/brotli-python-1.1.0-py310hea6c23e_4.conda hash: - md5: 63d24a5dd21c738d706f91569dbd1892 - sha256: 313cd446b1a42b55885741534800a1d69bd3816eeef662f41fc3ac26e16d537e + md5: 6ef43db290647218e1e04c2601675bff + sha256: 29f24d4a937c3a7f4894d6be9d9f9604adbb5506891f0f37bbb7e2dc8fa6bc0a category: main optional: false - name: brotli-python @@ -613,12 +613,12 @@ package: python: '>=3.10,<3.11.0a0' python_abi: 3.10.* ucrt: '>=10.0.20348.0' - vc: '>=14.2,<15' - vc14_runtime: '>=14.29.30139' - url: https://repo.prefix.dev/conda-forge/win-64/brotli-python-1.1.0-py310h9e98ed7_3.conda + vc: '>=14.3,<15' + vc14_runtime: '>=14.44.35208' + url: https://repo.prefix.dev/conda-forge/win-64/brotli-python-1.1.0-py310h73ae2b4_4.conda hash: - md5: 52d37d0f3a9286d295fbf72cf0aa99ee - sha256: 6eac109d40bd36d158064a552babc3da069662ad93712453eb43320f330b7c82 + md5: b53cd64780fbd287d3be3004cb6d7743 + sha256: 7d316ca454968256908c9d947726bc8f51f85fc2a2912814e1a3a98600429855 category: main optional: false - name: bzip2 @@ -763,15 +763,15 @@ package: platform: linux-64 dependencies: __glibc: '>=2.17,<3.0.a0' - libffi: '>=3.4,<4.0a0' - libgcc: '>=13' + libffi: '>=3.4.6,<3.5.0a0' + libgcc: '>=14' pycparser: '' python: '>=3.10,<3.11.0a0' python_abi: 3.10.* - url: https://repo.prefix.dev/conda-forge/linux-64/cffi-1.17.1-py310h8deb56e_0.conda + url: https://repo.prefix.dev/conda-forge/linux-64/cffi-1.17.1-py310h34a4b09_1.conda hash: - md5: 1fc24a3196ad5ede2a68148be61894f4 - sha256: 1b389293670268ab80c3b8735bc61bc71366862953e000efbb82204d00e41b6c + md5: 6d582e073a58a7a011716b135819b94a + sha256: a1de720b3b79f2eb51317dd14f14409022f807a59e9107f30d621f0a74293551 category: main optional: false - name: cffi @@ -783,12 +783,12 @@ package: python: '>=3.10,<3.11.0a0' python_abi: 3.10.* ucrt: '>=10.0.20348.0' - vc: '>=14.2,<15' - vc14_runtime: '>=14.29.30139' - url: https://repo.prefix.dev/conda-forge/win-64/cffi-1.17.1-py310ha8f682b_0.conda + vc: '>=14.3,<15' + vc14_runtime: '>=14.44.35208' + url: https://repo.prefix.dev/conda-forge/win-64/cffi-1.17.1-py310h29418f3_1.conda hash: - md5: 9c7ec967f4ae263aec56cff05bdbfc07 - sha256: 32638e79658f76e3700f783c519025290110f207833ae1d166d262572cbec8a8 + md5: 771663d8d11b07dcb22ece2806affac0 + sha256: 9fa2705202603342fb8c5ac29a30af7c77b8582041ff2f29d6db6503ba070a0c category: main optional: false - name: charset-normalizer @@ -949,7 +949,7 @@ package: category: main optional: false - name: coverage - version: 7.10.5 + version: 7.10.6 manager: conda platform: linux-64 dependencies: @@ -958,14 +958,14 @@ package: python: '>=3.10,<3.11.0a0' python_abi: 3.10.* tomli: '' - url: https://repo.prefix.dev/conda-forge/linux-64/coverage-7.10.5-py310h3406613_0.conda + url: https://repo.prefix.dev/conda-forge/linux-64/coverage-7.10.6-py310h3406613_1.conda hash: - md5: 8d397b33a3a90f52182807e04234ea10 - sha256: 1cfe98f11884062729c9b861ed3d4e9c771f6809d8fed8be68d8c585216fa147 + md5: a42ce2be914eabff4bb1674c57304967 + sha256: 917519990bf711336345ff11642853382a8a83be8dcfb4fbd5084084b4e771ca category: dev optional: true - name: coverage - version: 7.10.5 + version: 7.10.6 manager: conda platform: win-64 dependencies: @@ -975,10 +975,10 @@ package: ucrt: '>=10.0.20348.0' vc: '>=14.3,<15' vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/coverage-7.10.5-py310hdb0e946_0.conda + url: https://repo.prefix.dev/conda-forge/win-64/coverage-7.10.6-py310hdb0e946_1.conda hash: - md5: df429c46178f2ac242180da4c4d2c821 - sha256: eb6013687b9940940d3b3292d14b77266bf5551de09cd8f32e4cf7ccf555c0e4 + md5: de8d07aa9fabb48922856f9f67233726 + sha256: 636033b29ab4a1e16840ffa0a7063864776a47c6bedf5edf97c481cc8d996a90 category: dev optional: true - name: cpython @@ -1125,10 +1125,10 @@ package: libstdcxx: '>=14' python: '' python_abi: 3.10.* - url: https://repo.prefix.dev/conda-forge/linux-64/debugpy-1.8.16-py310h25320af_0.conda + url: https://repo.prefix.dev/conda-forge/linux-64/debugpy-1.8.16-py310h25320af_1.conda hash: - md5: 6d5a504fd7f16e9a1fa36994bae7c6a5 - sha256: 7655bf467cc92f4448d64ae9cdb63aca24e13c2bb316ab24444e401eb2bda5b4 + md5: a9ee3a04283917f4cec4cd435412f369 + sha256: fb94cf5a0a450454575c91775e7264d7cf342a2c3362a509773622e00d84565f category: dev optional: true - name: debugpy @@ -1141,10 +1141,10 @@ package: ucrt: '>=10.0.20348.0' vc: '>=14.3,<15' vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/debugpy-1.8.16-py310h699e580_0.conda + url: https://repo.prefix.dev/conda-forge/win-64/debugpy-1.8.16-py310h699e580_1.conda hash: - md5: 50209c78764a8656d2710c3d093c1ca0 - sha256: ebdb00d05497bd8a9eab626e22055970fca422a67c5914280b432d1e2703f0f3 + md5: 1d71884ba204388b715dbec129327cac + sha256: c65a200b15c7e33824fcd2f99a649e9ea70da6461919c3e8541f7f0bd42bf084 category: dev optional: true - name: decorator @@ -1364,27 +1364,27 @@ package: category: dev optional: true - name: executing - version: 2.2.0 + version: 2.2.1 manager: conda platform: linux-64 dependencies: - python: '>=3.9' - url: https://repo.prefix.dev/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda + python: '>=3.10' + url: https://repo.prefix.dev/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda hash: - md5: 81d30c08f9a3e556e8ca9e124b044d14 - sha256: 7510dd93b9848c6257c43fdf9ad22adf62e7aa6da5f12a6a757aed83bcfedf05 + md5: ff9efb7f7469aed3c4a8106ffa29593c + sha256: 210c8165a58fdbf16e626aac93cc4c14dbd551a01d1516be5ecad795d2422cad category: dev optional: true - name: executing - version: 2.2.0 + version: 2.2.1 manager: conda platform: win-64 dependencies: - python: '>=3.9' - url: https://repo.prefix.dev/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda + python: '>=3.10' + url: https://repo.prefix.dev/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda hash: - md5: 81d30c08f9a3e556e8ca9e124b044d14 - sha256: 7510dd93b9848c6257c43fdf9ad22adf62e7aa6da5f12a6a757aed83bcfedf05 + md5: ff9efb7f7469aed3c4a8106ffa29593c + sha256: 210c8165a58fdbf16e626aac93cc4c14dbd551a01d1516be5ecad795d2422cad category: dev optional: true - name: fasteners @@ -1501,27 +1501,27 @@ package: category: main optional: false - name: fsspec - version: 2025.7.0 + version: 2025.9.0 manager: conda platform: linux-64 dependencies: - python: '>=3.9' - url: https://repo.prefix.dev/conda-forge/noarch/fsspec-2025.7.0-pyhd8ed1ab_0.conda + python: '>=3.10' + url: https://repo.prefix.dev/conda-forge/noarch/fsspec-2025.9.0-pyhd8ed1ab_0.conda hash: - md5: a31ce802cd0ebfce298f342c02757019 - sha256: f734d98cd046392fbd9872df89ac043d72ac15f6a2529f129d912e28ab44609c + md5: 76f492bd8ba8a0fb80ffe16fc1a75b3b + sha256: 05e55a2bd5e4d7f661d1f4c291ca8e65179f68234d18eb70fc00f50934d3c4d3 category: main optional: false - name: fsspec - version: 2025.7.0 + version: 2025.9.0 manager: conda platform: win-64 dependencies: - python: '>=3.9' - url: https://repo.prefix.dev/conda-forge/noarch/fsspec-2025.7.0-pyhd8ed1ab_0.conda + python: '>=3.10' + url: https://repo.prefix.dev/conda-forge/noarch/fsspec-2025.9.0-pyhd8ed1ab_0.conda hash: - md5: a31ce802cd0ebfce298f342c02757019 - sha256: f734d98cd046392fbd9872df89ac043d72ac15f6a2529f129d912e28ab44609c + md5: 76f492bd8ba8a0fb80ffe16fc1a75b3b + sha256: 05e55a2bd5e4d7f661d1f4c291ca8e65179f68234d18eb70fc00f50934d3c4d3 category: main optional: false - name: geoana @@ -1572,10 +1572,10 @@ package: libstdcxx: '>=14' python: '>=3.10,<3.11.0a0' python_abi: 3.10.* - url: https://repo.prefix.dev/conda-forge/linux-64/greenlet-3.2.4-py310hea6c23e_0.conda + url: https://repo.prefix.dev/conda-forge/linux-64/greenlet-3.2.4-py310hea6c23e_1.conda hash: - md5: 2e49ba3735f24d0cede54e1b77e78d48 - sha256: 840fd31fd31ae3d2d2aba23bd8dfa9536dd961a99c72781ad7e8d9b6049956c2 + md5: a6a889b87b0358306e257dc7767d58be + sha256: adc253a04a9cc3d301aec014d15ad8202e8ba2ac4a3aa291c4380a070fbdeaa8 category: dev optional: true - name: greenlet @@ -1588,10 +1588,10 @@ package: ucrt: '>=10.0.20348.0' vc: '>=14.3,<15' vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/greenlet-3.2.4-py310h73ae2b4_0.conda + url: https://repo.prefix.dev/conda-forge/win-64/greenlet-3.2.4-py310h73ae2b4_1.conda hash: - md5: ea79676b3b10a7d1c6cf5e988c1b796e - sha256: 70c39fde989a869e7e83bb968c4fafeb9361f1ff2a3948534086606f12e494c5 + md5: 944a2b6a3c4879cde7923a3f874d65cf + sha256: 37be6d75e45da2e0713b3617aaa600065a6a6321f44d3b82c18e23cf1bbeaef4 category: dev optional: true - name: h11 @@ -1656,14 +1656,14 @@ package: __glibc: '>=2.17,<3.0.a0' cached-property: '' hdf5: '>=1.14.6,<1.14.7.0a0' - libgcc: '>=13' + libgcc: '>=14' numpy: '>=1.21,<3' python: '>=3.10,<3.11.0a0' python_abi: 3.10.* - url: https://repo.prefix.dev/conda-forge/linux-64/h5py-3.14.0-nompi_py310hea1e86d_100.conda + url: https://repo.prefix.dev/conda-forge/linux-64/h5py-3.14.0-nompi_py310h4aa865e_101.conda hash: - md5: f6879e3fc12006cffde701eb08ce1f09 - sha256: 8c7d6fea5345596f1fbef21b99fbc04cef6e7cfa5023619232da52fab80b554f + md5: 67774c5937389b35e4efd43d7baa923e + sha256: 68641d6f5c5c2a916437b67008fab342b599b6dfd711a0f43c00db5c72412d26 category: main optional: false - name: h5py @@ -1677,12 +1677,12 @@ package: python: '>=3.10,<3.11.0a0' python_abi: 3.10.* ucrt: '>=10.0.20348.0' - vc: '>=14.2,<15' - vc14_runtime: '>=14.29.30139' - url: https://repo.prefix.dev/conda-forge/win-64/h5py-3.14.0-nompi_py310h877c39c_100.conda + vc: '>=14.3,<15' + vc14_runtime: '>=14.44.35208' + url: https://repo.prefix.dev/conda-forge/win-64/h5py-3.14.0-nompi_py310hb7e4da9_101.conda hash: - md5: 5b861086c5a7689a6d95c4df10d211e4 - sha256: 754155af401cb3577c3e76ed7a4427ad9928c210d32b8571f84492c54b67f5a4 + md5: 2e924eca630566b4b0f51a98a232122e + sha256: 66d2c79028f031326139dfb31e4e8af9acde01da3ac89551e7d50cbf29b6cb8f category: main optional: false - name: hdf5 @@ -2276,10 +2276,10 @@ package: dependencies: python: '>=3.10,<3.11.0a0' python_abi: 3.10.* - url: https://repo.prefix.dev/conda-forge/linux-64/jsonpointer-3.0.0-py310hff52083_1.conda + url: https://repo.prefix.dev/conda-forge/linux-64/jsonpointer-3.0.0-py310hff52083_2.conda hash: - md5: ce614a01b0aee1b29cee13d606bcb5d5 - sha256: ac8e92806a5017740b9a1113f0cab8559cd33884867ec7e99b556eb2fa847690 + md5: 71d5cc5161f9ddac9d9f50c26cf0d85f + sha256: 7927ac1996f977e093e244717093e98c3ef75bf705ff32261c32cbd2f167661a category: dev optional: true - name: jsonpointer @@ -2289,10 +2289,10 @@ package: dependencies: python: '>=3.10,<3.11.0a0' python_abi: 3.10.* - url: https://repo.prefix.dev/conda-forge/win-64/jsonpointer-3.0.0-py310h5588dad_1.conda + url: https://repo.prefix.dev/conda-forge/win-64/jsonpointer-3.0.0-py310h5588dad_2.conda hash: - md5: 6810fe21e6fa93f073584994ea178a12 - sha256: 8fa0874cd000f5592719f084abdeeffdb9cf096cc1ba09d45c265bb149a2ad63 + md5: 68c4c8c80cda56eb4170ab776e498324 + sha256: cf40f2658f261f4cea9624b452e46a75cc2ee628b3b91d0ca24983f124c76914 category: dev optional: true - name: jsonschema @@ -2720,7 +2720,7 @@ package: category: dev optional: true - name: jupyterlab - version: 4.4.6 + version: 4.4.7 manager: conda platform: linux-64 dependencies: @@ -2735,19 +2735,19 @@ package: jupyterlab_server: '>=2.27.1,<3' notebook-shim: '>=0.2' packaging: '' - python: '>=3.9' + python: '>=3.10' setuptools: '>=41.1.0' tomli: '>=1.2.2' tornado: '>=6.2.0' traitlets: '' - url: https://repo.prefix.dev/conda-forge/noarch/jupyterlab-4.4.6-pyhd8ed1ab_0.conda + url: https://repo.prefix.dev/conda-forge/noarch/jupyterlab-4.4.7-pyhd8ed1ab_0.conda hash: - md5: 70cb2903114eafc6ed5d70ca91ba6545 - sha256: c3558f1c2a5977799ce425f1f7c8d8d1cae3408da41ec4f5c3771a21e673d465 + md5: 460d51bb21b7a4c4b6e100c824405fbb + sha256: 042bdb981ad5394530bee8329a10c76b9e17c12651d15a885d68e2cbbfef6869 category: dev optional: true - name: jupyterlab - version: 4.4.6 + version: 4.4.7 manager: conda platform: win-64 dependencies: @@ -2762,15 +2762,15 @@ package: jupyterlab_server: '>=2.27.1,<3' notebook-shim: '>=0.2' packaging: '' - python: '>=3.9' + python: '>=3.10' setuptools: '>=41.1.0' tomli: '>=1.2.2' tornado: '>=6.2.0' traitlets: '' - url: https://repo.prefix.dev/conda-forge/noarch/jupyterlab-4.4.6-pyhd8ed1ab_0.conda + url: https://repo.prefix.dev/conda-forge/noarch/jupyterlab-4.4.7-pyhd8ed1ab_0.conda hash: - md5: 70cb2903114eafc6ed5d70ca91ba6545 - sha256: c3558f1c2a5977799ce425f1f7c8d8d1cae3408da41ec4f5c3771a21e673d465 + md5: 460d51bb21b7a4c4b6e100c824405fbb + sha256: 042bdb981ad5394530bee8329a10c76b9e17c12651d15a885d68e2cbbfef6869 category: dev optional: true - name: jupyterlab_pygments @@ -3130,10 +3130,10 @@ package: platform: linux-64 dependencies: mkl: '>=2024.2.2,<2025.0a0' - url: https://repo.prefix.dev/conda-forge/linux-64/libblas-3.9.0-34_hfdb39a5_mkl.conda + url: https://repo.prefix.dev/conda-forge/linux-64/libblas-3.9.0-35_hfdb39a5_mkl.conda hash: - md5: 2ab9d1b88cf3e99b2d060b17072fe8eb - sha256: 633de259502cc410738462a070afaeb904a7bba9b475916bd26c9e0d7e12383c + md5: 9fedd782400297fa574e739146f04e34 + sha256: 038c7bf7134147966b4d785f1e8afed0728e440d190e21b1963c2b3713287bd3 category: main optional: false - name: libblas @@ -3142,10 +3142,10 @@ package: platform: win-64 dependencies: mkl: '>=2024.2.2,<2025.0a0' - url: https://repo.prefix.dev/conda-forge/win-64/libblas-3.9.0-34_h5709861_mkl.conda + url: https://repo.prefix.dev/conda-forge/win-64/libblas-3.9.0-35_h5709861_mkl.conda hash: - md5: a64dcde5f27b8e0e413ddfc56151664c - sha256: d7865fcc7d29b22e4111ababec49083851a84bb3025748eed65184be765b6e7d + md5: 45d98af023f8b4a7640b1f713ce6b602 + sha256: 4180e7ab27ed03ddf01d7e599002fcba1b32dcb68214ee25da823bac371ed362 category: main optional: false - name: libbrotlicommon @@ -3154,11 +3154,11 @@ package: platform: linux-64 dependencies: __glibc: '>=2.17,<3.0.a0' - libgcc: '>=13' - url: https://repo.prefix.dev/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_3.conda + libgcc: '>=14' + url: https://repo.prefix.dev/conda-forge/linux-64/libbrotlicommon-1.1.0-hb03c661_4.conda hash: - md5: cb98af5db26e3f482bebb80ce9d947d3 - sha256: 462a8ed6a7bb9c5af829ec4b90aab322f8bcd9d8987f793e6986ea873bbd05cf + md5: 1d29d2e33fe59954af82ef54a8af3fe1 + sha256: 2338a92d1de71f10c8cf70f7bb9775b0144a306d75c4812276749f54925612b6 category: main optional: false - name: libbrotlicommon @@ -3167,12 +3167,12 @@ package: platform: win-64 dependencies: ucrt: '>=10.0.20348.0' - vc: '>=14.2,<15' - vc14_runtime: '>=14.29.30139' - url: https://repo.prefix.dev/conda-forge/win-64/libbrotlicommon-1.1.0-h2466b09_3.conda + vc: '>=14.3,<15' + vc14_runtime: '>=14.44.35208' + url: https://repo.prefix.dev/conda-forge/win-64/libbrotlicommon-1.1.0-hfd05255_4.conda hash: - md5: cf20c8b8b48ab5252ec64b9c66bfe0a4 - sha256: e70ea4b773fadddda697306a80a29d9cbd36b7001547cd54cbfe9a97a518993f + md5: 58aec7a295039d8614175eae3a4f8778 + sha256: 65d0aaf1176761291987f37c8481be132060cc3dbe44b1550797bc27d1a0c920 category: main optional: false - name: libbrotlidec @@ -3182,11 +3182,11 @@ package: dependencies: __glibc: '>=2.17,<3.0.a0' libbrotlicommon: 1.1.0 - libgcc: '>=13' - url: https://repo.prefix.dev/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_3.conda + libgcc: '>=14' + url: https://repo.prefix.dev/conda-forge/linux-64/libbrotlidec-1.1.0-hb03c661_4.conda hash: - md5: 1c6eecffad553bde44c5238770cfb7da - sha256: 3eb27c1a589cbfd83731be7c3f19d6d679c7a444c3ba19db6ad8bf49172f3d83 + md5: 5cb5a1c9a94a78f5b23684bcb845338d + sha256: fcec0d26f67741b122f0d5eff32f0393d7ebd3ee6bb866ae2f17f3425a850936 category: main optional: false - name: libbrotlidec @@ -3196,12 +3196,12 @@ package: dependencies: libbrotlicommon: 1.1.0 ucrt: '>=10.0.20348.0' - vc: '>=14.2,<15' - vc14_runtime: '>=14.29.30139' - url: https://repo.prefix.dev/conda-forge/win-64/libbrotlidec-1.1.0-h2466b09_3.conda + vc: '>=14.3,<15' + vc14_runtime: '>=14.44.35208' + url: https://repo.prefix.dev/conda-forge/win-64/libbrotlidec-1.1.0-hfd05255_4.conda hash: - md5: a342933dbc6d814541234c7c81cb5205 - sha256: a35a0db7e3257e011b10ffb371735b2b24074412d0b27c3dab7ca9f2c549cfcf + md5: bf0ced5177fec8c18a7b51d568590b7c + sha256: aa03aff197ed503e38145d0d0f17c30382ac1c6d697535db24c98c272ef57194 category: main optional: false - name: libbrotlienc @@ -3211,11 +3211,11 @@ package: dependencies: __glibc: '>=2.17,<3.0.a0' libbrotlicommon: 1.1.0 - libgcc: '>=13' - url: https://repo.prefix.dev/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_3.conda + libgcc: '>=14' + url: https://repo.prefix.dev/conda-forge/linux-64/libbrotlienc-1.1.0-hb03c661_4.conda hash: - md5: 3facafe58f3858eb95527c7d3a3fc578 - sha256: 76e8492b0b0a0d222bfd6081cae30612aa9915e4309396fdca936528ccf314b7 + md5: 2e55011fa483edb8bfe3fd92e860cd79 + sha256: d42c7f0afce21d5279a0d54ee9e64a2279d35a07a90e0c9545caae57d6d7dc57 category: main optional: false - name: libbrotlienc @@ -3225,12 +3225,12 @@ package: dependencies: libbrotlicommon: 1.1.0 ucrt: '>=10.0.20348.0' - vc: '>=14.2,<15' - vc14_runtime: '>=14.29.30139' - url: https://repo.prefix.dev/conda-forge/win-64/libbrotlienc-1.1.0-h2466b09_3.conda + vc: '>=14.3,<15' + vc14_runtime: '>=14.44.35208' + url: https://repo.prefix.dev/conda-forge/win-64/libbrotlienc-1.1.0-hfd05255_4.conda hash: - md5: 7ef0af55d70cbd9de324bb88b7f9d81e - sha256: 9d0703c5a01c10d346587ff0535a0eb81042364333caa4a24a0e4a0c08fd490b + md5: 37f4669f8ac2f04d826440a8f3f42300 + sha256: a593cde3e728a1e0486a19537846380e3ce90ae9d6c22c1412466a49474eeeed category: main optional: false - name: libcblas @@ -3239,10 +3239,10 @@ package: platform: linux-64 dependencies: libblas: 3.9.0 - url: https://repo.prefix.dev/conda-forge/linux-64/libcblas-3.9.0-34_h372d94f_mkl.conda + url: https://repo.prefix.dev/conda-forge/linux-64/libcblas-3.9.0-35_h372d94f_mkl.conda hash: - md5: b45c7c718d1e1cde0e7b0d9c463b617f - sha256: 3e7c172ca2c7cdd4bfae36c612ee29565681274c9e54d577ff48b4c5fafc1568 + md5: 25fab7e2988299928dea5939d9958293 + sha256: f565da198a837b0d19ede6affedc0c2cf743c193606f800c7a98f0909b290d31 category: main optional: false - name: libcblas @@ -3251,10 +3251,10 @@ package: platform: win-64 dependencies: libblas: 3.9.0 - url: https://repo.prefix.dev/conda-forge/win-64/libcblas-3.9.0-34_h2a3cdd5_mkl.conda + url: https://repo.prefix.dev/conda-forge/win-64/libcblas-3.9.0-35_h2a3cdd5_mkl.conda hash: - md5: 25a019872ff471af70fd76d9aaaf1313 - sha256: e9f31d44e668822f6420bfaeda4aa74cd6c60d3671cf0b00262867f36ad5a8c1 + md5: 9639091d266e92438582d0cc4cfc8350 + sha256: 88939f6c1b5da75bd26ce663aa437e1224b26ee0dab5e60cecc77600975f397e category: main optional: false - name: libcurl @@ -3647,10 +3647,10 @@ package: platform: linux-64 dependencies: libblas: 3.9.0 - url: https://repo.prefix.dev/conda-forge/linux-64/liblapack-3.9.0-34_hc41d3b0_mkl.conda + url: https://repo.prefix.dev/conda-forge/linux-64/liblapack-3.9.0-35_hc41d3b0_mkl.conda hash: - md5: 77f13fe82430578ec2ff162fc89a13a0 - sha256: 167db8be4c6d6efaad88e4fb6c8649ab6d5277ea20592a7ae0d49733c2d276fd + md5: 5b4f86e5bc48d347eaf1ca2d180780ad + sha256: 81bbecf7c06d50f48b2af2a1e7b3706a0ff0190ed8ab8f46444d4475bfa1e360 category: main optional: false - name: liblapack @@ -3659,10 +3659,10 @@ package: platform: win-64 dependencies: libblas: 3.9.0 - url: https://repo.prefix.dev/conda-forge/win-64/liblapack-3.9.0-34_hf9ab0e9_mkl.conda + url: https://repo.prefix.dev/conda-forge/win-64/liblapack-3.9.0-35_hf9ab0e9_mkl.conda hash: - md5: ba80d9feadfbafceafb0bf46d35f5886 - sha256: c65298d584551cba1b7a42537f8e0093ec9fd0e871fc80ddf9cf6ffa0efa25ae + md5: 0c6ed9d722cecda18f50f17fb3c30002 + sha256: 56e0992fb58eed8f0d5fa165b8621fa150b84aa9af1467ea0a7a9bb7e2fced4f category: main optional: false - name: liblzma @@ -3693,21 +3693,21 @@ package: category: main optional: false - name: libnghttp2 - version: 1.64.0 + version: 1.67.0 manager: conda platform: linux-64 dependencies: __glibc: '>=2.17,<3.0.a0' - c-ares: '>=1.32.3,<2.0a0' + c-ares: '>=1.34.5,<2.0a0' libev: '>=4.33,<5.0a0' - libgcc: '>=13' - libstdcxx: '>=13' + libgcc: '>=14' + libstdcxx: '>=14' libzlib: '>=1.3.1,<2.0a0' - openssl: '>=3.3.2,<4.0a0' - url: https://repo.prefix.dev/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + openssl: '>=3.5.2,<4.0a0' + url: https://repo.prefix.dev/conda-forge/linux-64/libnghttp2-1.67.0-had1ee68_0.conda hash: - md5: 19e57602824042dfd0446292ef90488b - sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 + md5: b499ce4b026493a13774bcf0f4c33849 + sha256: a4a7dab8db4dc81c736e9a9b42bdfd97b087816e029e221380511960ac46c690 category: main optional: false - name: libnsl @@ -4131,15 +4131,15 @@ package: category: dev optional: true - name: llvm-openmp - version: 20.1.8 + version: 21.1.0 manager: conda platform: linux-64 dependencies: __glibc: '>=2.17,<3.0.a0' - url: https://repo.prefix.dev/conda-forge/linux-64/llvm-openmp-20.1.8-h4922eb0_2.conda + url: https://repo.prefix.dev/conda-forge/linux-64/llvm-openmp-21.1.0-h4922eb0_0.conda hash: - md5: fab9b7d973248580e0300196a80c9a24 - sha256: fd5a656cfa064add64455e3b7ea046376046911c56d14dc04049e670f3b48190 + md5: d9965f88b86534360e8fce160efb67f1 + sha256: eb42c041e2913e4a8da3e248e4e690b5500c9b9a7533b4f99e959a22064ac599 category: main optional: false - name: llvm-openmp @@ -4408,29 +4408,29 @@ package: category: main optional: false - name: mistune - version: 3.1.3 + version: 3.1.4 manager: conda platform: linux-64 dependencies: python: '' typing_extensions: '' - url: https://repo.prefix.dev/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda + url: https://repo.prefix.dev/conda-forge/noarch/mistune-3.1.4-pyhcf101f3_0.conda hash: - md5: 7ec6576e328bc128f4982cd646eeba85 - sha256: a67484d7dd11e815a81786580f18b6e4aa2392f292f29183631a6eccc8dc37b3 + md5: f5a4d548d1d3bdd517260409fc21e205 + sha256: 609ea628ace5c6cdbdce772704e6cb159ead26969bb2f386ca1757632b0f74c6 category: dev optional: true - name: mistune - version: 3.1.3 + version: 3.1.4 manager: conda platform: win-64 dependencies: - python: '>=3.9' + python: '>=3.10' typing_extensions: '' - url: https://repo.prefix.dev/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda + url: https://repo.prefix.dev/conda-forge/noarch/mistune-3.1.4-pyhcf101f3_0.conda hash: - md5: 7ec6576e328bc128f4982cd646eeba85 - sha256: a67484d7dd11e815a81786580f18b6e4aa2392f292f29183631a6eccc8dc37b3 + md5: f5a4d548d1d3bdd517260409fc21e205 + sha256: 609ea628ace5c6cdbdce772704e6cb159ead26969bb2f386ca1757632b0f74c6 category: dev optional: true - name: mkl @@ -4466,14 +4466,14 @@ package: platform: linux-64 dependencies: __glibc: '>=2.17,<3.0.a0' - libgcc: '>=13' - libstdcxx: '>=13' + libgcc: '>=14' + libstdcxx: '>=14' python: '>=3.10,<3.11.0a0' python_abi: 3.10.* - url: https://repo.prefix.dev/conda-forge/linux-64/msgpack-python-1.1.1-py310h3788b33_0.conda + url: https://repo.prefix.dev/conda-forge/linux-64/msgpack-python-1.1.1-py310h03d9f68_1.conda hash: - md5: 6028c7df37691cdf6e953968646195b7 - sha256: 8069bb45b1eb11a2421ee0db76b16ae2a634a470c7a77011263b9df270645293 + md5: 305880fd9dd9c8fa9ae8c8779c7e5513 + sha256: 243754a755e93931b349ff5a64b5e98d6c46ae0366da10bb8b9d76e0b684beb2 category: main optional: false - name: msgpack-python @@ -4484,12 +4484,12 @@ package: python: '>=3.10,<3.11.0a0' python_abi: 3.10.* ucrt: '>=10.0.20348.0' - vc: '>=14.2,<15' - vc14_runtime: '>=14.29.30139' - url: https://repo.prefix.dev/conda-forge/win-64/msgpack-python-1.1.1-py310hc19bc0b_0.conda + vc: '>=14.3,<15' + vc14_runtime: '>=14.44.35208' + url: https://repo.prefix.dev/conda-forge/win-64/msgpack-python-1.1.1-py310he9f1925_1.conda hash: - md5: 061803553d610adf1c4c545c71aa9a85 - sha256: 83e0bcf2f4cddc3421ad1cff30058ce7100210821b279bd3ad458bfc8c59eefe + md5: 3871d2bf2a0252567c83cb223449d7d6 + sha256: 2a134b67492c23f47ca94e92903a321985b1aa1e6d0312205fc79a7c0b4ca1bd category: main optional: false - name: mumps-include @@ -5925,7 +5925,7 @@ package: category: main optional: false - name: pytest - version: 8.4.1 + version: 8.4.2 manager: conda platform: linux-64 dependencies: @@ -5935,16 +5935,16 @@ package: packaging: '>=20' pluggy: '>=1.5,<2' pygments: '>=2.7.2' - python: '>=3.9' + python: '>=3.10' tomli: '>=1' - url: https://repo.prefix.dev/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + url: https://repo.prefix.dev/conda-forge/noarch/pytest-8.4.2-pyhd8ed1ab_0.conda hash: - md5: a49c2283f24696a7b30367b7346a0144 - sha256: 93e267e4ec35353e81df707938a6527d5eb55c97bf54c3b87229b69523afb59d + md5: 1f987505580cb972cf28dc5f74a0f81b + sha256: 41053d9893e379a3133bb9b557b98a3d2142fca474fb6b964ba5d97515f78e2d category: dev optional: true - name: pytest - version: 8.4.1 + version: 8.4.2 manager: conda platform: win-64 dependencies: @@ -5954,12 +5954,12 @@ package: packaging: '>=20' pluggy: '>=1.5,<2' pygments: '>=2.7.2' - python: '>=3.9' + python: '>=3.10' tomli: '>=1' - url: https://repo.prefix.dev/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + url: https://repo.prefix.dev/conda-forge/noarch/pytest-8.4.2-pyhd8ed1ab_0.conda hash: - md5: a49c2283f24696a7b30367b7346a0144 - sha256: 93e267e4ec35353e81df707938a6527d5eb55c97bf54c3b87229b69523afb59d + md5: 1f987505580cb972cf28dc5f74a0f81b + sha256: 41053d9893e379a3133bb9b557b98a3d2142fca474fb6b964ba5d97515f78e2d category: dev optional: true - name: pytest-cov @@ -6516,10 +6516,10 @@ package: libgcc: '>=14' python: '' python_abi: 3.10.* - url: https://repo.prefix.dev/conda-forge/linux-64/rpds-py-0.27.1-py310hd8f68c5_0.conda + url: https://repo.prefix.dev/conda-forge/linux-64/rpds-py-0.27.1-py310hd8f68c5_1.conda hash: - md5: 4eed975c85e20068274d3c7a94072b8a - sha256: a4b7cc6656138c7a89a74f60a086f99abc013876fa57ebfff5f60c416aa8f14c + md5: 7afa2dfd1c7d29316b36697e25ccb5d9 + sha256: 22fbf6b99165d143048ae2c7f23cfe4b039dff329f2ae176f9cf60cbc012d147 category: dev optional: true - name: rpds-py @@ -6532,10 +6532,10 @@ package: ucrt: '>=10.0.20348.0' vc: '>=14.3,<15' vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/rpds-py-0.27.1-py310h034784e_0.conda + url: https://repo.prefix.dev/conda-forge/win-64/rpds-py-0.27.1-py310h034784e_1.conda hash: - md5: 36c1dd306aae307a2ed6e4101012910e - sha256: 2ec9d6e3fee68ab5e781a2df706ac7c1c323b2b524fa6d4443443e986bd348a8 + md5: bcc1638ee07c0eb0bbdf4de1bf3ca780 + sha256: 710f5e87dddb9afd36a30fbe49147dd05f66a3bb85cacb665e2f21a1f4b068f1 category: dev optional: true - name: rtree @@ -7668,10 +7668,10 @@ package: libgcc: '>=14' python: '>=3.10,<3.11.0a0' python_abi: 3.10.* - url: https://repo.prefix.dev/conda-forge/linux-64/tornado-6.5.2-py310h7c4b9e2_0.conda + url: https://repo.prefix.dev/conda-forge/linux-64/tornado-6.5.2-py310h7c4b9e2_1.conda hash: - md5: 1653341c07e20f4670eff86cad216515 - sha256: b7f1419c5ce178be8937cf6b0ef691f56be458e9aa6ce95d66026f8b05460772 + md5: c5f63ba41df24b9025c9196353541ed5 + sha256: 8dc52bac73848a0334c65491f8de31c5c298464888cfa35d1c41b8d3051131f0 category: main optional: false - name: tornado @@ -7684,10 +7684,10 @@ package: ucrt: '>=10.0.20348.0' vc: '>=14.3,<15' vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/tornado-6.5.2-py310h29418f3_0.conda + url: https://repo.prefix.dev/conda-forge/win-64/tornado-6.5.2-py310h29418f3_1.conda hash: - md5: 976f9142074884ea8f1d59806ad5fc21 - sha256: f87dbe5c74811d3466470ce9dbd8a5c27c6d2556b4967eae4cdba9fa0fbdef1a + md5: 880cb8e0f344117c527902f48fcd6463 + sha256: fdb4d8a01f361dad584b3f7e2c798759de545b8a01b513b084e7f22e3e0774bf category: main optional: false - name: tqdm @@ -8457,7 +8457,7 @@ package: category: main optional: false - name: zstandard - version: 0.23.0 + version: 0.24.0 manager: conda platform: linux-64 dependencies: @@ -8466,14 +8466,15 @@ package: libgcc: '>=14' python: '>=3.10,<3.11.0a0' python_abi: 3.10.* - url: https://repo.prefix.dev/conda-forge/linux-64/zstandard-0.23.0-py310h7c4b9e2_3.conda + zstd: '>=1.5.7,<1.6.0a0' + url: https://repo.prefix.dev/conda-forge/linux-64/zstandard-0.24.0-py310h1d967bf_1.conda hash: - md5: 64c494618303717a9a08e3238bcb8d68 - sha256: 0653ad7d53d8c7b85ef2dd38c01c78b6c9185cd688be06cd6315e76530310635 + md5: 9b9acc1b796705b9efcc1dc6406e1726 + sha256: 6c1be7576cdbf2c76ca2f8443ed0f7803c078813c6eee3801d5cc42a67afd35e category: main optional: false - name: zstandard - version: 0.23.0 + version: 0.24.0 manager: conda platform: win-64 dependencies: @@ -8483,10 +8484,11 @@ package: ucrt: '>=10.0.20348.0' vc: '>=14.3,<15' vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/zstandard-0.23.0-py310h29418f3_3.conda + zstd: '>=1.5.7,<1.6.0a0' + url: https://repo.prefix.dev/conda-forge/win-64/zstandard-0.24.0-py310he058f06_1.conda hash: - md5: c7ced46235127f2ec7ea29b95840c343 - sha256: 1282801d99392c8e674151633c3120c12452a4ca6c2141b90b164c6b8a7f1724 + md5: ec7f2b6b806381c53547dc7bf95c136f + sha256: 706690b27f6b762b765f2801e1177ad91387518f8b9e6ee439cf67b279eb6995 category: main optional: false - name: zstd @@ -8520,41 +8522,41 @@ package: category: main optional: false - name: geoapps-utils - version: 0.6.0a2.dev61+655afd7 + version: 0.6.0a1.dev63+1241642 manager: pip platform: linux-64 dependencies: - geoh5py: 0.12.0a2.dev58+2c9248c6 + geoh5py: 0.12.0a2.dev60+3a91dd92 numpy: '>=1.26.0,<1.27.0' pydantic: '>=2.5.2,<3.0.0' scipy: '>=1.14.0,<1.15.0' - url: git+https://github.com/MiraGeoscience/geoapps-utils.git@655afd735989270d5d03b80a98cbe22844b47066 + url: git+https://github.com/MiraGeoscience/geoapps-utils.git@1241642d40693ee9c58f83ce46b317cba43dc68b hash: - sha256: 655afd735989270d5d03b80a98cbe22844b47066 + sha256: 1241642d40693ee9c58f83ce46b317cba43dc68b source: type: url - url: git+https://github.com/MiraGeoscience/geoapps-utils.git@655afd735989270d5d03b80a98cbe22844b47066 + url: git+https://github.com/MiraGeoscience/geoapps-utils.git@1241642d40693ee9c58f83ce46b317cba43dc68b category: main optional: false - name: geoapps-utils - version: 0.6.0a2.dev61+655afd7 + version: 0.6.0a1.dev63+1241642 manager: pip platform: win-64 dependencies: - geoh5py: 0.12.0a2.dev58+2c9248c6 + geoh5py: 0.12.0a2.dev60+3a91dd92 numpy: '>=1.26.0,<1.27.0' pydantic: '>=2.5.2,<3.0.0' scipy: '>=1.14.0,<1.15.0' - url: git+https://github.com/MiraGeoscience/geoapps-utils.git@655afd735989270d5d03b80a98cbe22844b47066 + url: git+https://github.com/MiraGeoscience/geoapps-utils.git@1241642d40693ee9c58f83ce46b317cba43dc68b hash: - sha256: 655afd735989270d5d03b80a98cbe22844b47066 + sha256: 1241642d40693ee9c58f83ce46b317cba43dc68b source: type: url - url: git+https://github.com/MiraGeoscience/geoapps-utils.git@655afd735989270d5d03b80a98cbe22844b47066 + url: git+https://github.com/MiraGeoscience/geoapps-utils.git@1241642d40693ee9c58f83ce46b317cba43dc68b category: main optional: false - name: geoh5py - version: 0.12.0a2.dev58+2c9248c6 + version: 0.12.0a2.dev60+3a91dd92 manager: pip platform: linux-64 dependencies: @@ -8562,16 +8564,16 @@ package: numpy: '>=1.26.0,<1.27.0' pillow: '>=10.3.0,<10.4.0' pydantic: '>=2.5.2,<3.0.0' - url: git+https://github.com/MiraGeoscience/geoh5py.git@2c9248c60e4166fadb973fcd4f1777bb2ee964f6 + url: git+https://github.com/MiraGeoscience/geoh5py.git@3a91dd92144a34b3c1ad1e5885029a7102e6337c hash: - sha256: 2c9248c60e4166fadb973fcd4f1777bb2ee964f6 + sha256: 3a91dd92144a34b3c1ad1e5885029a7102e6337c source: type: url - url: git+https://github.com/MiraGeoscience/geoh5py.git@2c9248c60e4166fadb973fcd4f1777bb2ee964f6 + url: git+https://github.com/MiraGeoscience/geoh5py.git@3a91dd92144a34b3c1ad1e5885029a7102e6337c category: main optional: false - name: geoh5py - version: 0.12.0a2.dev58+2c9248c6 + version: 0.12.0a2.dev60+3a91dd92 manager: pip platform: win-64 dependencies: @@ -8579,12 +8581,12 @@ package: numpy: '>=1.26.0,<1.27.0' pillow: '>=10.3.0,<10.4.0' pydantic: '>=2.5.2,<3.0.0' - url: git+https://github.com/MiraGeoscience/geoh5py.git@2c9248c60e4166fadb973fcd4f1777bb2ee964f6 + url: git+https://github.com/MiraGeoscience/geoh5py.git@3a91dd92144a34b3c1ad1e5885029a7102e6337c hash: - sha256: 2c9248c60e4166fadb973fcd4f1777bb2ee964f6 + sha256: 3a91dd92144a34b3c1ad1e5885029a7102e6337c source: type: url - url: git+https://github.com/MiraGeoscience/geoh5py.git@2c9248c60e4166fadb973fcd4f1777bb2ee964f6 + url: git+https://github.com/MiraGeoscience/geoh5py.git@3a91dd92144a34b3c1ad1e5885029a7102e6337c category: main optional: false - name: grid-apps @@ -8593,8 +8595,8 @@ package: platform: linux-64 dependencies: discretize: '>=0.11.0,<0.12.dev' - geoapps-utils: 0.6.0a2.dev61+655afd7 - geoh5py: 0.12.0a2.dev58+2c9248c6 + geoapps-utils: 0.6.0a1.dev63+1241642 + geoh5py: 0.12.0a2.dev60+3a91dd92 numpy: '>=1.26.0,<1.27.0' pydantic: '>=2.5.2,<3.0.0' scipy: '>=1.14.0,<1.15.0' @@ -8612,8 +8614,8 @@ package: platform: win-64 dependencies: discretize: '>=0.11.0,<0.12.dev' - geoapps-utils: 0.6.0a2.dev61+655afd7 - geoh5py: 0.12.0a2.dev58+2c9248c6 + geoapps-utils: 0.6.0a1.dev63+1241642 + geoh5py: 0.12.0a2.dev60+3a91dd92 numpy: '>=1.26.0,<1.27.0' pydantic: '>=2.5.2,<3.0.0' scipy: '>=1.14.0,<1.15.0' @@ -8626,7 +8628,7 @@ package: category: main optional: false - name: mira-simpeg - version: 0.23.0.1.post2.dev61+mira.gd794a0b24 + version: 0.23.0.1.post2.dev91+mira.g5561fb544 manager: pip platform: linux-64 dependencies: @@ -8638,16 +8640,16 @@ package: numpy: '>=1.22' pymatsolver: '>=0.3' scipy: '>=1.8' - url: git+https://github.com/MiraGeoscience/simpeg.git@d794a0b24aafb4beccc7984e68b6904be44f860f + url: git+https://github.com/MiraGeoscience/simpeg.git@5561fb5441be2cceaf8e1ca5fa05f6e3b19ee6bb hash: - sha256: d794a0b24aafb4beccc7984e68b6904be44f860f + sha256: 5561fb5441be2cceaf8e1ca5fa05f6e3b19ee6bb source: type: url - url: git+https://github.com/MiraGeoscience/simpeg.git@d794a0b24aafb4beccc7984e68b6904be44f860f + url: git+https://github.com/MiraGeoscience/simpeg.git@5561fb5441be2cceaf8e1ca5fa05f6e3b19ee6bb category: main optional: false - name: mira-simpeg - version: 0.23.0.1.post2.dev61+mira.gd794a0b24 + version: 0.23.0.1.post2.dev91+mira.g5561fb544 manager: pip platform: win-64 dependencies: @@ -8659,11 +8661,11 @@ package: numpy: '>=1.22' pymatsolver: '>=0.3' scipy: '>=1.8' - url: git+https://github.com/MiraGeoscience/simpeg.git@d794a0b24aafb4beccc7984e68b6904be44f860f + url: git+https://github.com/MiraGeoscience/simpeg.git@5561fb5441be2cceaf8e1ca5fa05f6e3b19ee6bb hash: - sha256: d794a0b24aafb4beccc7984e68b6904be44f860f + sha256: 5561fb5441be2cceaf8e1ca5fa05f6e3b19ee6bb source: type: url - url: git+https://github.com/MiraGeoscience/simpeg.git@d794a0b24aafb4beccc7984e68b6904be44f860f + url: git+https://github.com/MiraGeoscience/simpeg.git@5561fb5441be2cceaf8e1ca5fa05f6e3b19ee6bb category: main optional: false diff --git a/py-3.11.conda-lock.yml b/py-3.11.conda-lock.yml index a313f8607..2097efc8f 100644 --- a/py-3.11.conda-lock.yml +++ b/py-3.11.conda-lock.yml @@ -282,10 +282,10 @@ package: dependencies: python: '>=3.11,<3.12.0a0' python_abi: 3.11.* - url: https://repo.prefix.dev/conda-forge/linux-64/astroid-3.3.11-py311h38be061_0.conda + url: https://repo.prefix.dev/conda-forge/linux-64/astroid-3.3.11-py311h38be061_1.conda hash: - md5: 5b60818e202c1b50da4e4fb9c84fe7b4 - sha256: d0b2c99d3cc091f11c46dae464fb319a7c59d02dbca5423d99d2fa3aba8f4622 + md5: 773635d5d5594beb7fc47054cea6a741 + sha256: 7473a0c0f53ed38f60cf0bb39b744b4cd88d3bce88dc7487d69f45cffcdaf9f6 category: dev optional: true - name: astroid @@ -295,10 +295,10 @@ package: dependencies: python: '>=3.11,<3.12.0a0' python_abi: 3.11.* - url: https://repo.prefix.dev/conda-forge/win-64/astroid-3.3.11-py311h1ea47a8_0.conda + url: https://repo.prefix.dev/conda-forge/win-64/astroid-3.3.11-py311h1ea47a8_1.conda hash: - md5: c5753dd2c7c94426f58d4211fa11f0dd - sha256: 45e56ffb92124c4c08843fb2219888248dc483fdb408c80b4d6844ff1135a4e8 + md5: 4cccc0a3742da6ea198a61ec6b12b6b5 + sha256: a5e8694589a10137416ef44609de13022042a840996387faf10b32abf2b0f9fb category: dev optional: true - name: asttokens @@ -532,11 +532,11 @@ package: brotli-bin: 1.1.0 libbrotlidec: 1.1.0 libbrotlienc: 1.1.0 - libgcc: '>=13' - url: https://repo.prefix.dev/conda-forge/linux-64/brotli-1.1.0-hb9d3cd8_3.conda + libgcc: '>=14' + url: https://repo.prefix.dev/conda-forge/linux-64/brotli-1.1.0-hb03c661_4.conda hash: - md5: 5d08a0ac29e6a5a984817584775d4131 - sha256: c969baaa5d7a21afb5ed4b8dd830f82b78e425caaa13d717766ed07a61630bec + md5: eaf3fbd2aa97c212336de38a51fe404e + sha256: 294526a54fa13635341729f250d0b1cf8f82cad1e6b83130304cbf3b6d8b74cc category: main optional: false - name: brotli @@ -548,12 +548,12 @@ package: libbrotlidec: 1.1.0 libbrotlienc: 1.1.0 ucrt: '>=10.0.20348.0' - vc: '>=14.2,<15' - vc14_runtime: '>=14.29.30139' - url: https://repo.prefix.dev/conda-forge/win-64/brotli-1.1.0-h2466b09_3.conda + vc: '>=14.3,<15' + vc14_runtime: '>=14.44.35208' + url: https://repo.prefix.dev/conda-forge/win-64/brotli-1.1.0-hfd05255_4.conda hash: - md5: c2a23d8a8986c72148c63bdf855ac99a - sha256: d57cd6ea705c9d2a8a2721f083de247501337e459f5498726b564cfca138e192 + md5: 441706c019985cf109ced06458e6f742 + sha256: df2a43cc4a99bd184cb249e62106dfa9f55b3d06df9b5fc67072b0336852ff65 category: main optional: false - name: brotli-bin @@ -564,11 +564,11 @@ package: __glibc: '>=2.17,<3.0.a0' libbrotlidec: 1.1.0 libbrotlienc: 1.1.0 - libgcc: '>=13' - url: https://repo.prefix.dev/conda-forge/linux-64/brotli-bin-1.1.0-hb9d3cd8_3.conda + libgcc: '>=14' + url: https://repo.prefix.dev/conda-forge/linux-64/brotli-bin-1.1.0-hb03c661_4.conda hash: - md5: 58178ef8ba927229fba6d84abf62c108 - sha256: ab74fa8c3d1ca0a055226be89e99d6798c65053e2d2d3c6cb380c574972cd4a7 + md5: ca4ed8015764937c81b830f7f5b68543 + sha256: 444903c6e5c553175721a16b7c7de590ef754a15c28c99afbc8a963b35269517 category: main optional: false - name: brotli-bin @@ -579,12 +579,12 @@ package: libbrotlidec: 1.1.0 libbrotlienc: 1.1.0 ucrt: '>=10.0.20348.0' - vc: '>=14.2,<15' - vc14_runtime: '>=14.29.30139' - url: https://repo.prefix.dev/conda-forge/win-64/brotli-bin-1.1.0-h2466b09_3.conda + vc: '>=14.3,<15' + vc14_runtime: '>=14.44.35208' + url: https://repo.prefix.dev/conda-forge/win-64/brotli-bin-1.1.0-hfd05255_4.conda hash: - md5: c7c345559c1ac25eede6dccb7b931202 - sha256: 85aac1c50a426be6d0cc9fd52480911d752f4082cb78accfdb257243e572c7eb + md5: ef022c8941d7dcc420c8533b0e419733 + sha256: e92c783502d95743b49b650c9276e9c56c7264da55429a5e45655150a6d1b0cf category: main optional: false - name: brotli-python @@ -593,14 +593,14 @@ package: platform: linux-64 dependencies: __glibc: '>=2.17,<3.0.a0' - libgcc: '>=13' - libstdcxx: '>=13' + libgcc: '>=14' + libstdcxx: '>=14' python: '>=3.11,<3.12.0a0' python_abi: 3.11.* - url: https://repo.prefix.dev/conda-forge/linux-64/brotli-python-1.1.0-py311hfdbb021_3.conda + url: https://repo.prefix.dev/conda-forge/linux-64/brotli-python-1.1.0-py311h1ddb823_4.conda hash: - md5: 8565f7297b28af62e5de2d968ca32e31 - sha256: 4fab04fcc599853efb2904ea3f935942108613c7515f7dd57e7f034650738c52 + md5: 7138a06a7b0d11a23cfae323e6010a08 + sha256: 318d4985acbf46457d254fbd6f0df80cc069890b5fc0013b3546d88eee1b1a1f category: main optional: false - name: brotli-python @@ -611,12 +611,12 @@ package: python: '>=3.11,<3.12.0a0' python_abi: 3.11.* ucrt: '>=10.0.20348.0' - vc: '>=14.2,<15' - vc14_runtime: '>=14.29.30139' - url: https://repo.prefix.dev/conda-forge/win-64/brotli-python-1.1.0-py311hda3d55a_3.conda + vc: '>=14.3,<15' + vc14_runtime: '>=14.44.35208' + url: https://repo.prefix.dev/conda-forge/win-64/brotli-python-1.1.0-py311h3e6a449_4.conda hash: - md5: 2d99144abeb3b6b65608fdd7810dbcbd - sha256: a602b15fe1b3a6b40aab7d99099a410b69ccad9bb273779531cef00fc52d762e + md5: 21d3a7fa95d27938158009cd08e461f2 + sha256: d524edc172239fec70ad946e3b2fa1b9d7eea145ad80e9e66da25a4d815770ea category: main optional: false - name: bzip2 @@ -761,15 +761,15 @@ package: platform: linux-64 dependencies: __glibc: '>=2.17,<3.0.a0' - libffi: '>=3.4,<4.0a0' - libgcc: '>=13' + libffi: '>=3.4.6,<3.5.0a0' + libgcc: '>=14' pycparser: '' python: '>=3.11,<3.12.0a0' python_abi: 3.11.* - url: https://repo.prefix.dev/conda-forge/linux-64/cffi-1.17.1-py311hf29c0ef_0.conda + url: https://repo.prefix.dev/conda-forge/linux-64/cffi-1.17.1-py311h5b438cf_1.conda hash: - md5: 55553ecd5328336368db611f350b7039 - sha256: bc47aa39c8254e9e487b8bcd74cfa3b4a3de3648869eb1a0b89905986b668e35 + md5: 82e0123a459d095ac99c76d150ccdacf + sha256: bbd04c8729e6400fa358536b1007c1376cc396d569b71de10f1df7669d44170e category: main optional: false - name: cffi @@ -781,12 +781,12 @@ package: python: '>=3.11,<3.12.0a0' python_abi: 3.11.* ucrt: '>=10.0.20348.0' - vc: '>=14.2,<15' - vc14_runtime: '>=14.29.30139' - url: https://repo.prefix.dev/conda-forge/win-64/cffi-1.17.1-py311he736701_0.conda + vc: '>=14.3,<15' + vc14_runtime: '>=14.44.35208' + url: https://repo.prefix.dev/conda-forge/win-64/cffi-1.17.1-py311h3485c13_1.conda hash: - md5: e1c69be23bd05471a6c623e91680ad59 - sha256: 9689fbd8a31fdf273f826601e90146006f6631619767a67955048c7ad7798a1d + md5: 553a1836df919ca232b80ce1324fa5bb + sha256: 46baee342b50ce7fbf4c52267f73327cb0512b970332037c8911afee1e54f063 category: main optional: false - name: charset-normalizer @@ -923,10 +923,10 @@ package: numpy: '>=1.25' python: '>=3.11,<3.12.0a0' python_abi: 3.11.* - url: https://repo.prefix.dev/conda-forge/linux-64/contourpy-1.3.3-py311hdf67eae_1.conda + url: https://repo.prefix.dev/conda-forge/linux-64/contourpy-1.3.3-py311hdf67eae_2.conda hash: - md5: 390f9e645ff2f4b9cf48d53b3cf6c942 - sha256: 883234cd86911ffc3d5e7ce8959930e11c56adf304e6ba26637364b049c917e8 + md5: bb6a0f88cf345f7e7a143d349dae6d9f + sha256: cb35e53fc4fc2ae59c85303b0668d05fa3be9cd9f8b27a127882f47aa795895b category: main optional: false - name: contourpy @@ -940,14 +940,14 @@ package: ucrt: '>=10.0.20348.0' vc: '>=14.3,<15' vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/contourpy-1.3.3-py311h3fd045d_1.conda + url: https://repo.prefix.dev/conda-forge/win-64/contourpy-1.3.3-py311h3fd045d_2.conda hash: - md5: fe9571615b015491b3741a4047794770 - sha256: 6980f4320495f59419c1b10bdc0d3441a7e8065e1aff5cc544c24d1447e67982 + md5: 327d9807b7aa0889a859070c550731d4 + sha256: 620d21eedddae5c2f8edb8c549c46a7204356ceff6b2d6c5560e4b5ce59a757d category: main optional: false - name: coverage - version: 7.10.5 + version: 7.10.6 manager: conda platform: linux-64 dependencies: @@ -956,14 +956,14 @@ package: python: '>=3.11,<3.12.0a0' python_abi: 3.11.* tomli: '' - url: https://repo.prefix.dev/conda-forge/linux-64/coverage-7.10.5-py311h3778330_0.conda + url: https://repo.prefix.dev/conda-forge/linux-64/coverage-7.10.6-py311h3778330_1.conda hash: - md5: f2d902e3e28e59a8a281b84ba7c74419 - sha256: bcd74f7a948bd189aa4517e3e03520adfa020bdcb91ef63e418cddbc45c162c7 + md5: d4d341946049625afebfb720f011753a + sha256: 5728c93177af112d6d53ea8e1e4a11c47395c8f7d50f00b7e3aabc3b0529922f category: dev optional: true - name: coverage - version: 7.10.5 + version: 7.10.6 manager: conda platform: win-64 dependencies: @@ -973,10 +973,10 @@ package: ucrt: '>=10.0.20348.0' vc: '>=14.3,<15' vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/coverage-7.10.5-py311h3f79411_0.conda + url: https://repo.prefix.dev/conda-forge/win-64/coverage-7.10.6-py311h3f79411_1.conda hash: - md5: 44ebd376a0e3d335cec3ab9c26812d6b - sha256: 49c695a9ded7d1bc73c4d6c2924cd9a9d7333c3f2e9df4ab738f6f7545573e14 + md5: cb00671279e93d3007cc55ff53023da7 + sha256: 2262f950b8b32e1a3869b872bbff4c0b7324b8cd81e1c590c953e9c970899572 category: dev optional: true - name: cpython @@ -1123,10 +1123,10 @@ package: libstdcxx: '>=14' python: '' python_abi: 3.11.* - url: https://repo.prefix.dev/conda-forge/linux-64/debugpy-1.8.16-py311hc665b79_0.conda + url: https://repo.prefix.dev/conda-forge/linux-64/debugpy-1.8.16-py311hc665b79_1.conda hash: - md5: c6e461ca971ca858743101f4d73d7de4 - sha256: 6756a97f58d71258537463851b8d65470eb5a654a7f2cfe2454f552a043d0f3a + md5: 06e8c743932cc7788624128d08bc8806 + sha256: 19b0d1d9b0459db1466ad5846f6a30408ca9bbe244dcbbf32708116b564ceb11 category: dev optional: true - name: debugpy @@ -1139,10 +1139,10 @@ package: ucrt: '>=10.0.20348.0' vc: '>=14.3,<15' vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/debugpy-1.8.16-py311h5dfdfe8_0.conda + url: https://repo.prefix.dev/conda-forge/win-64/debugpy-1.8.16-py311h5dfdfe8_1.conda hash: - md5: d6c11976c0cd038dccb7b6d443003dc5 - sha256: 7f77807f4b514546ed99d16e32a7a5cb50a7cfb29ffda9ed7b387b86c8d5270b + md5: 5996fd469da1e196fd42c72a7b7a65ca + sha256: 810fa69eca6adfbf707e2e31e26f24842ab313d2efbfdb8e73c15c164a8010d9 category: dev optional: true - name: decorator @@ -1388,27 +1388,27 @@ package: category: dev optional: true - name: executing - version: 2.2.0 + version: 2.2.1 manager: conda platform: linux-64 dependencies: - python: '>=3.9' - url: https://repo.prefix.dev/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda + python: '>=3.10' + url: https://repo.prefix.dev/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda hash: - md5: 81d30c08f9a3e556e8ca9e124b044d14 - sha256: 7510dd93b9848c6257c43fdf9ad22adf62e7aa6da5f12a6a757aed83bcfedf05 + md5: ff9efb7f7469aed3c4a8106ffa29593c + sha256: 210c8165a58fdbf16e626aac93cc4c14dbd551a01d1516be5ecad795d2422cad category: dev optional: true - name: executing - version: 2.2.0 + version: 2.2.1 manager: conda platform: win-64 dependencies: - python: '>=3.9' - url: https://repo.prefix.dev/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda + python: '>=3.10' + url: https://repo.prefix.dev/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda hash: - md5: 81d30c08f9a3e556e8ca9e124b044d14 - sha256: 7510dd93b9848c6257c43fdf9ad22adf62e7aa6da5f12a6a757aed83bcfedf05 + md5: ff9efb7f7469aed3c4a8106ffa29593c + sha256: 210c8165a58fdbf16e626aac93cc4c14dbd551a01d1516be5ecad795d2422cad category: dev optional: true - name: fasteners @@ -1525,27 +1525,27 @@ package: category: main optional: false - name: fsspec - version: 2025.7.0 + version: 2025.9.0 manager: conda platform: linux-64 dependencies: - python: '>=3.9' - url: https://repo.prefix.dev/conda-forge/noarch/fsspec-2025.7.0-pyhd8ed1ab_0.conda + python: '>=3.10' + url: https://repo.prefix.dev/conda-forge/noarch/fsspec-2025.9.0-pyhd8ed1ab_0.conda hash: - md5: a31ce802cd0ebfce298f342c02757019 - sha256: f734d98cd046392fbd9872df89ac043d72ac15f6a2529f129d912e28ab44609c + md5: 76f492bd8ba8a0fb80ffe16fc1a75b3b + sha256: 05e55a2bd5e4d7f661d1f4c291ca8e65179f68234d18eb70fc00f50934d3c4d3 category: main optional: false - name: fsspec - version: 2025.7.0 + version: 2025.9.0 manager: conda platform: win-64 dependencies: - python: '>=3.9' - url: https://repo.prefix.dev/conda-forge/noarch/fsspec-2025.7.0-pyhd8ed1ab_0.conda + python: '>=3.10' + url: https://repo.prefix.dev/conda-forge/noarch/fsspec-2025.9.0-pyhd8ed1ab_0.conda hash: - md5: a31ce802cd0ebfce298f342c02757019 - sha256: f734d98cd046392fbd9872df89ac043d72ac15f6a2529f129d912e28ab44609c + md5: 76f492bd8ba8a0fb80ffe16fc1a75b3b + sha256: 05e55a2bd5e4d7f661d1f4c291ca8e65179f68234d18eb70fc00f50934d3c4d3 category: main optional: false - name: geoana @@ -1596,10 +1596,10 @@ package: libstdcxx: '>=14' python: '>=3.11,<3.12.0a0' python_abi: 3.11.* - url: https://repo.prefix.dev/conda-forge/linux-64/greenlet-3.2.4-py311h1ddb823_0.conda + url: https://repo.prefix.dev/conda-forge/linux-64/greenlet-3.2.4-py311h1ddb823_1.conda hash: - md5: f15c0de21acba18ed30624272ebc0db0 - sha256: 088dc5f28b1633b3de85dc62311063232b1ebb7569ff5e56a287a96c18fad17a + md5: 210ecbcac24f0148147fb8def5652d7a + sha256: 498a0c5d16873ffe42b39d2620ede4aa6da1614e5a05a42c79167c89535de622 category: dev optional: true - name: greenlet @@ -1612,10 +1612,10 @@ package: ucrt: '>=10.0.20348.0' vc: '>=14.3,<15' vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/greenlet-3.2.4-py311h3e6a449_0.conda + url: https://repo.prefix.dev/conda-forge/win-64/greenlet-3.2.4-py311h3e6a449_1.conda hash: - md5: 91a7a2876b2dae42a5092092eb339ca0 - sha256: f6fa06fc512649e4025bf9536c74fb79711aed212b7206f2e6d3f44d2ec9b0e9 + md5: 7a12e2710a2731fd4497131f2d108f57 + sha256: d88d6cf574a0b1d7b96d73443ac95d6deb9fd1c0da3ebbcfded093d90356cfe0 category: dev optional: true - name: h11 @@ -1680,14 +1680,14 @@ package: __glibc: '>=2.17,<3.0.a0' cached-property: '' hdf5: '>=1.14.6,<1.14.7.0a0' - libgcc: '>=13' - numpy: '>=1.21,<3' + libgcc: '>=14' + numpy: '>=1.23,<3' python: '>=3.11,<3.12.0a0' python_abi: 3.11.* - url: https://repo.prefix.dev/conda-forge/linux-64/h5py-3.14.0-nompi_py311h7f87ba5_100.conda + url: https://repo.prefix.dev/conda-forge/linux-64/h5py-3.14.0-nompi_py311h0b2f468_101.conda hash: - md5: ecfcdeb88c8727f3cf67e1177528a498 - sha256: cd2bd076c9d9bd8d8021698159e694a8600d8349e3208719c422af2c86b9c184 + md5: b3dd5deacc3147498b31366315fdc6cc + sha256: f5d1955b90eb7060ee6f81bc39de0f4f8e28247b8fe810d70382b4fde9e0e1f9 category: main optional: false - name: h5py @@ -1697,16 +1697,16 @@ package: dependencies: cached-property: '' hdf5: '>=1.14.6,<1.14.7.0a0' - numpy: '>=1.21,<3' + numpy: '>=1.23,<3' python: '>=3.11,<3.12.0a0' python_abi: 3.11.* ucrt: '>=10.0.20348.0' - vc: '>=14.2,<15' - vc14_runtime: '>=14.29.30139' - url: https://repo.prefix.dev/conda-forge/win-64/h5py-3.14.0-nompi_py311h97e6cc2_100.conda + vc: '>=14.3,<15' + vc14_runtime: '>=14.44.35208' + url: https://repo.prefix.dev/conda-forge/win-64/h5py-3.14.0-nompi_py311hc40ba4b_101.conda hash: - md5: f806b981514c8d3e567a2b7d5a8569ff - sha256: 600c7089e5fd40d9592d2d881192052b8c6df5f3afe9cd5e51fb8ef2bc8df1bc + md5: 2ffcf6af42f0eadff1fa73417b848096 + sha256: 34aae9b53e14cf62373a5bd1f475151430e4257cad6626a5d38469367b049da3 category: main optional: false - name: hdf5 @@ -2328,10 +2328,10 @@ package: dependencies: python: '>=3.11,<3.12.0a0' python_abi: 3.11.* - url: https://repo.prefix.dev/conda-forge/linux-64/jsonpointer-3.0.0-py311h38be061_1.conda + url: https://repo.prefix.dev/conda-forge/linux-64/jsonpointer-3.0.0-py311h38be061_2.conda hash: - md5: 5ca76f61b00a15a9be0612d4d883badc - sha256: 2f082f7b12a7c6824e051321c1029452562ad6d496ad2e8c8b7b3dea1c8feb92 + md5: 5dd29601defbcc14ac6953d9504a80a7 + sha256: 4e744b30e3002b519c48868b3f5671328274d1d78cc8cbc0cda43057b570c508 category: dev optional: true - name: jsonpointer @@ -2341,10 +2341,10 @@ package: dependencies: python: '>=3.11,<3.12.0a0' python_abi: 3.11.* - url: https://repo.prefix.dev/conda-forge/win-64/jsonpointer-3.0.0-py311h1ea47a8_1.conda + url: https://repo.prefix.dev/conda-forge/win-64/jsonpointer-3.0.0-py311h1ea47a8_2.conda hash: - md5: 943f7fab631e12750641efd7279a268c - sha256: 9a667eeae67936e710ff69ee7ce0e784d6052eeba9670b268c565a55178098c4 + md5: c8f80d7bee5c66371969936eba774c45 + sha256: 64bcf78dbbda7ec523672c4b3f085527fd109732518e33907eac6b8049125113 category: dev optional: true - name: jsonschema @@ -2772,7 +2772,7 @@ package: category: dev optional: true - name: jupyterlab - version: 4.4.6 + version: 4.4.7 manager: conda platform: linux-64 dependencies: @@ -2787,19 +2787,19 @@ package: jupyterlab_server: '>=2.27.1,<3' notebook-shim: '>=0.2' packaging: '' - python: '>=3.9' + python: '>=3.10' setuptools: '>=41.1.0' tomli: '>=1.2.2' tornado: '>=6.2.0' traitlets: '' - url: https://repo.prefix.dev/conda-forge/noarch/jupyterlab-4.4.6-pyhd8ed1ab_0.conda + url: https://repo.prefix.dev/conda-forge/noarch/jupyterlab-4.4.7-pyhd8ed1ab_0.conda hash: - md5: 70cb2903114eafc6ed5d70ca91ba6545 - sha256: c3558f1c2a5977799ce425f1f7c8d8d1cae3408da41ec4f5c3771a21e673d465 + md5: 460d51bb21b7a4c4b6e100c824405fbb + sha256: 042bdb981ad5394530bee8329a10c76b9e17c12651d15a885d68e2cbbfef6869 category: dev optional: true - name: jupyterlab - version: 4.4.6 + version: 4.4.7 manager: conda platform: win-64 dependencies: @@ -2814,15 +2814,15 @@ package: jupyterlab_server: '>=2.27.1,<3' notebook-shim: '>=0.2' packaging: '' - python: '>=3.9' + python: '>=3.10' setuptools: '>=41.1.0' tomli: '>=1.2.2' tornado: '>=6.2.0' traitlets: '' - url: https://repo.prefix.dev/conda-forge/noarch/jupyterlab-4.4.6-pyhd8ed1ab_0.conda + url: https://repo.prefix.dev/conda-forge/noarch/jupyterlab-4.4.7-pyhd8ed1ab_0.conda hash: - md5: 70cb2903114eafc6ed5d70ca91ba6545 - sha256: c3558f1c2a5977799ce425f1f7c8d8d1cae3408da41ec4f5c3771a21e673d465 + md5: 460d51bb21b7a4c4b6e100c824405fbb + sha256: 042bdb981ad5394530bee8329a10c76b9e17c12651d15a885d68e2cbbfef6869 category: dev optional: true - name: jupyterlab_pygments @@ -3182,10 +3182,10 @@ package: platform: linux-64 dependencies: mkl: '>=2024.2.2,<2025.0a0' - url: https://repo.prefix.dev/conda-forge/linux-64/libblas-3.9.0-34_hfdb39a5_mkl.conda + url: https://repo.prefix.dev/conda-forge/linux-64/libblas-3.9.0-35_hfdb39a5_mkl.conda hash: - md5: 2ab9d1b88cf3e99b2d060b17072fe8eb - sha256: 633de259502cc410738462a070afaeb904a7bba9b475916bd26c9e0d7e12383c + md5: 9fedd782400297fa574e739146f04e34 + sha256: 038c7bf7134147966b4d785f1e8afed0728e440d190e21b1963c2b3713287bd3 category: main optional: false - name: libblas @@ -3194,10 +3194,10 @@ package: platform: win-64 dependencies: mkl: '>=2024.2.2,<2025.0a0' - url: https://repo.prefix.dev/conda-forge/win-64/libblas-3.9.0-34_h5709861_mkl.conda + url: https://repo.prefix.dev/conda-forge/win-64/libblas-3.9.0-35_h5709861_mkl.conda hash: - md5: a64dcde5f27b8e0e413ddfc56151664c - sha256: d7865fcc7d29b22e4111ababec49083851a84bb3025748eed65184be765b6e7d + md5: 45d98af023f8b4a7640b1f713ce6b602 + sha256: 4180e7ab27ed03ddf01d7e599002fcba1b32dcb68214ee25da823bac371ed362 category: main optional: false - name: libbrotlicommon @@ -3206,11 +3206,11 @@ package: platform: linux-64 dependencies: __glibc: '>=2.17,<3.0.a0' - libgcc: '>=13' - url: https://repo.prefix.dev/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_3.conda + libgcc: '>=14' + url: https://repo.prefix.dev/conda-forge/linux-64/libbrotlicommon-1.1.0-hb03c661_4.conda hash: - md5: cb98af5db26e3f482bebb80ce9d947d3 - sha256: 462a8ed6a7bb9c5af829ec4b90aab322f8bcd9d8987f793e6986ea873bbd05cf + md5: 1d29d2e33fe59954af82ef54a8af3fe1 + sha256: 2338a92d1de71f10c8cf70f7bb9775b0144a306d75c4812276749f54925612b6 category: main optional: false - name: libbrotlicommon @@ -3219,12 +3219,12 @@ package: platform: win-64 dependencies: ucrt: '>=10.0.20348.0' - vc: '>=14.2,<15' - vc14_runtime: '>=14.29.30139' - url: https://repo.prefix.dev/conda-forge/win-64/libbrotlicommon-1.1.0-h2466b09_3.conda + vc: '>=14.3,<15' + vc14_runtime: '>=14.44.35208' + url: https://repo.prefix.dev/conda-forge/win-64/libbrotlicommon-1.1.0-hfd05255_4.conda hash: - md5: cf20c8b8b48ab5252ec64b9c66bfe0a4 - sha256: e70ea4b773fadddda697306a80a29d9cbd36b7001547cd54cbfe9a97a518993f + md5: 58aec7a295039d8614175eae3a4f8778 + sha256: 65d0aaf1176761291987f37c8481be132060cc3dbe44b1550797bc27d1a0c920 category: main optional: false - name: libbrotlidec @@ -3234,11 +3234,11 @@ package: dependencies: __glibc: '>=2.17,<3.0.a0' libbrotlicommon: 1.1.0 - libgcc: '>=13' - url: https://repo.prefix.dev/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_3.conda + libgcc: '>=14' + url: https://repo.prefix.dev/conda-forge/linux-64/libbrotlidec-1.1.0-hb03c661_4.conda hash: - md5: 1c6eecffad553bde44c5238770cfb7da - sha256: 3eb27c1a589cbfd83731be7c3f19d6d679c7a444c3ba19db6ad8bf49172f3d83 + md5: 5cb5a1c9a94a78f5b23684bcb845338d + sha256: fcec0d26f67741b122f0d5eff32f0393d7ebd3ee6bb866ae2f17f3425a850936 category: main optional: false - name: libbrotlidec @@ -3248,12 +3248,12 @@ package: dependencies: libbrotlicommon: 1.1.0 ucrt: '>=10.0.20348.0' - vc: '>=14.2,<15' - vc14_runtime: '>=14.29.30139' - url: https://repo.prefix.dev/conda-forge/win-64/libbrotlidec-1.1.0-h2466b09_3.conda + vc: '>=14.3,<15' + vc14_runtime: '>=14.44.35208' + url: https://repo.prefix.dev/conda-forge/win-64/libbrotlidec-1.1.0-hfd05255_4.conda hash: - md5: a342933dbc6d814541234c7c81cb5205 - sha256: a35a0db7e3257e011b10ffb371735b2b24074412d0b27c3dab7ca9f2c549cfcf + md5: bf0ced5177fec8c18a7b51d568590b7c + sha256: aa03aff197ed503e38145d0d0f17c30382ac1c6d697535db24c98c272ef57194 category: main optional: false - name: libbrotlienc @@ -3263,11 +3263,11 @@ package: dependencies: __glibc: '>=2.17,<3.0.a0' libbrotlicommon: 1.1.0 - libgcc: '>=13' - url: https://repo.prefix.dev/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_3.conda + libgcc: '>=14' + url: https://repo.prefix.dev/conda-forge/linux-64/libbrotlienc-1.1.0-hb03c661_4.conda hash: - md5: 3facafe58f3858eb95527c7d3a3fc578 - sha256: 76e8492b0b0a0d222bfd6081cae30612aa9915e4309396fdca936528ccf314b7 + md5: 2e55011fa483edb8bfe3fd92e860cd79 + sha256: d42c7f0afce21d5279a0d54ee9e64a2279d35a07a90e0c9545caae57d6d7dc57 category: main optional: false - name: libbrotlienc @@ -3277,12 +3277,12 @@ package: dependencies: libbrotlicommon: 1.1.0 ucrt: '>=10.0.20348.0' - vc: '>=14.2,<15' - vc14_runtime: '>=14.29.30139' - url: https://repo.prefix.dev/conda-forge/win-64/libbrotlienc-1.1.0-h2466b09_3.conda + vc: '>=14.3,<15' + vc14_runtime: '>=14.44.35208' + url: https://repo.prefix.dev/conda-forge/win-64/libbrotlienc-1.1.0-hfd05255_4.conda hash: - md5: 7ef0af55d70cbd9de324bb88b7f9d81e - sha256: 9d0703c5a01c10d346587ff0535a0eb81042364333caa4a24a0e4a0c08fd490b + md5: 37f4669f8ac2f04d826440a8f3f42300 + sha256: a593cde3e728a1e0486a19537846380e3ce90ae9d6c22c1412466a49474eeeed category: main optional: false - name: libcblas @@ -3291,10 +3291,10 @@ package: platform: linux-64 dependencies: libblas: 3.9.0 - url: https://repo.prefix.dev/conda-forge/linux-64/libcblas-3.9.0-34_h372d94f_mkl.conda + url: https://repo.prefix.dev/conda-forge/linux-64/libcblas-3.9.0-35_h372d94f_mkl.conda hash: - md5: b45c7c718d1e1cde0e7b0d9c463b617f - sha256: 3e7c172ca2c7cdd4bfae36c612ee29565681274c9e54d577ff48b4c5fafc1568 + md5: 25fab7e2988299928dea5939d9958293 + sha256: f565da198a837b0d19ede6affedc0c2cf743c193606f800c7a98f0909b290d31 category: main optional: false - name: libcblas @@ -3303,10 +3303,10 @@ package: platform: win-64 dependencies: libblas: 3.9.0 - url: https://repo.prefix.dev/conda-forge/win-64/libcblas-3.9.0-34_h2a3cdd5_mkl.conda + url: https://repo.prefix.dev/conda-forge/win-64/libcblas-3.9.0-35_h2a3cdd5_mkl.conda hash: - md5: 25a019872ff471af70fd76d9aaaf1313 - sha256: e9f31d44e668822f6420bfaeda4aa74cd6c60d3671cf0b00262867f36ad5a8c1 + md5: 9639091d266e92438582d0cc4cfc8350 + sha256: 88939f6c1b5da75bd26ce663aa437e1224b26ee0dab5e60cecc77600975f397e category: main optional: false - name: libcurl @@ -3699,10 +3699,10 @@ package: platform: linux-64 dependencies: libblas: 3.9.0 - url: https://repo.prefix.dev/conda-forge/linux-64/liblapack-3.9.0-34_hc41d3b0_mkl.conda + url: https://repo.prefix.dev/conda-forge/linux-64/liblapack-3.9.0-35_hc41d3b0_mkl.conda hash: - md5: 77f13fe82430578ec2ff162fc89a13a0 - sha256: 167db8be4c6d6efaad88e4fb6c8649ab6d5277ea20592a7ae0d49733c2d276fd + md5: 5b4f86e5bc48d347eaf1ca2d180780ad + sha256: 81bbecf7c06d50f48b2af2a1e7b3706a0ff0190ed8ab8f46444d4475bfa1e360 category: main optional: false - name: liblapack @@ -3711,10 +3711,10 @@ package: platform: win-64 dependencies: libblas: 3.9.0 - url: https://repo.prefix.dev/conda-forge/win-64/liblapack-3.9.0-34_hf9ab0e9_mkl.conda + url: https://repo.prefix.dev/conda-forge/win-64/liblapack-3.9.0-35_hf9ab0e9_mkl.conda hash: - md5: ba80d9feadfbafceafb0bf46d35f5886 - sha256: c65298d584551cba1b7a42537f8e0093ec9fd0e871fc80ddf9cf6ffa0efa25ae + md5: 0c6ed9d722cecda18f50f17fb3c30002 + sha256: 56e0992fb58eed8f0d5fa165b8621fa150b84aa9af1467ea0a7a9bb7e2fced4f category: main optional: false - name: liblzma @@ -3745,21 +3745,21 @@ package: category: main optional: false - name: libnghttp2 - version: 1.64.0 + version: 1.67.0 manager: conda platform: linux-64 dependencies: __glibc: '>=2.17,<3.0.a0' - c-ares: '>=1.32.3,<2.0a0' + c-ares: '>=1.34.5,<2.0a0' libev: '>=4.33,<5.0a0' - libgcc: '>=13' - libstdcxx: '>=13' + libgcc: '>=14' + libstdcxx: '>=14' libzlib: '>=1.3.1,<2.0a0' - openssl: '>=3.3.2,<4.0a0' - url: https://repo.prefix.dev/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + openssl: '>=3.5.2,<4.0a0' + url: https://repo.prefix.dev/conda-forge/linux-64/libnghttp2-1.67.0-had1ee68_0.conda hash: - md5: 19e57602824042dfd0446292ef90488b - sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 + md5: b499ce4b026493a13774bcf0f4c33849 + sha256: a4a7dab8db4dc81c736e9a9b42bdfd97b087816e029e221380511960ac46c690 category: main optional: false - name: libnsl @@ -4183,15 +4183,15 @@ package: category: dev optional: true - name: llvm-openmp - version: 20.1.8 + version: 21.1.0 manager: conda platform: linux-64 dependencies: __glibc: '>=2.17,<3.0.a0' - url: https://repo.prefix.dev/conda-forge/linux-64/llvm-openmp-20.1.8-h4922eb0_2.conda + url: https://repo.prefix.dev/conda-forge/linux-64/llvm-openmp-21.1.0-h4922eb0_0.conda hash: - md5: fab9b7d973248580e0300196a80c9a24 - sha256: fd5a656cfa064add64455e3b7ea046376046911c56d14dc04049e670f3b48190 + md5: d9965f88b86534360e8fce160efb67f1 + sha256: eb42c041e2913e4a8da3e248e4e690b5500c9b9a7533b4f99e959a22064ac599 category: main optional: false - name: llvm-openmp @@ -4460,29 +4460,29 @@ package: category: main optional: false - name: mistune - version: 3.1.3 + version: 3.1.4 manager: conda platform: linux-64 dependencies: - python: '>=3.9' + python: '>=3.10' typing_extensions: '' - url: https://repo.prefix.dev/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda + url: https://repo.prefix.dev/conda-forge/noarch/mistune-3.1.4-pyhcf101f3_0.conda hash: - md5: 7ec6576e328bc128f4982cd646eeba85 - sha256: a67484d7dd11e815a81786580f18b6e4aa2392f292f29183631a6eccc8dc37b3 + md5: f5a4d548d1d3bdd517260409fc21e205 + sha256: 609ea628ace5c6cdbdce772704e6cb159ead26969bb2f386ca1757632b0f74c6 category: dev optional: true - name: mistune - version: 3.1.3 + version: 3.1.4 manager: conda platform: win-64 dependencies: - python: '>=3.9' + python: '>=3.10' typing_extensions: '' - url: https://repo.prefix.dev/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda + url: https://repo.prefix.dev/conda-forge/noarch/mistune-3.1.4-pyhcf101f3_0.conda hash: - md5: 7ec6576e328bc128f4982cd646eeba85 - sha256: a67484d7dd11e815a81786580f18b6e4aa2392f292f29183631a6eccc8dc37b3 + md5: f5a4d548d1d3bdd517260409fc21e205 + sha256: 609ea628ace5c6cdbdce772704e6cb159ead26969bb2f386ca1757632b0f74c6 category: dev optional: true - name: mkl @@ -4518,14 +4518,14 @@ package: platform: linux-64 dependencies: __glibc: '>=2.17,<3.0.a0' - libgcc: '>=13' - libstdcxx: '>=13' + libgcc: '>=14' + libstdcxx: '>=14' python: '>=3.11,<3.12.0a0' python_abi: 3.11.* - url: https://repo.prefix.dev/conda-forge/linux-64/msgpack-python-1.1.1-py311hd18a35c_0.conda + url: https://repo.prefix.dev/conda-forge/linux-64/msgpack-python-1.1.1-py311hdf67eae_1.conda hash: - md5: d0898973440adc2ad25917028669126d - sha256: f07aafd9e9adddf66b75630b4f68784e22ce63ae9e0887711a7386ceb2506fca + md5: d2494f7b8cbb0c6e9adb866c3d7a883f + sha256: 8cbad527b1e5d5ed6c009661b692d3870e5cbf61c3accad28125c88b3636ab17 category: main optional: false - name: msgpack-python @@ -4536,12 +4536,12 @@ package: python: '>=3.11,<3.12.0a0' python_abi: 3.11.* ucrt: '>=10.0.20348.0' - vc: '>=14.2,<15' - vc14_runtime: '>=14.29.30139' - url: https://repo.prefix.dev/conda-forge/win-64/msgpack-python-1.1.1-py311h3257749_0.conda + vc: '>=14.3,<15' + vc14_runtime: '>=14.44.35208' + url: https://repo.prefix.dev/conda-forge/win-64/msgpack-python-1.1.1-py311h3fd045d_1.conda hash: - md5: 236c48eab3925b666eed26a3ba94bcb6 - sha256: a0ba6da7e31c406c39da1258d0c4304b58e791b3836529e51dc56d7d8f542de4 + md5: 108852c865da789f638275669e3f4a8e + sha256: 4da49f644d92f3e01fa1f2015d38e2571a20fe787cb294393c91952c2afe2986 category: main optional: false - name: mumps-include @@ -5979,7 +5979,7 @@ package: category: main optional: false - name: pytest - version: 8.4.1 + version: 8.4.2 manager: conda platform: linux-64 dependencies: @@ -5989,16 +5989,16 @@ package: packaging: '>=20' pluggy: '>=1.5,<2' pygments: '>=2.7.2' - python: '>=3.9' + python: '>=3.10' tomli: '>=1' - url: https://repo.prefix.dev/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + url: https://repo.prefix.dev/conda-forge/noarch/pytest-8.4.2-pyhd8ed1ab_0.conda hash: - md5: a49c2283f24696a7b30367b7346a0144 - sha256: 93e267e4ec35353e81df707938a6527d5eb55c97bf54c3b87229b69523afb59d + md5: 1f987505580cb972cf28dc5f74a0f81b + sha256: 41053d9893e379a3133bb9b557b98a3d2142fca474fb6b964ba5d97515f78e2d category: dev optional: true - name: pytest - version: 8.4.1 + version: 8.4.2 manager: conda platform: win-64 dependencies: @@ -6008,12 +6008,12 @@ package: packaging: '>=20' pluggy: '>=1.5,<2' pygments: '>=2.7.2' - python: '>=3.9' + python: '>=3.10' tomli: '>=1' - url: https://repo.prefix.dev/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + url: https://repo.prefix.dev/conda-forge/noarch/pytest-8.4.2-pyhd8ed1ab_0.conda hash: - md5: a49c2283f24696a7b30367b7346a0144 - sha256: 93e267e4ec35353e81df707938a6527d5eb55c97bf54c3b87229b69523afb59d + md5: 1f987505580cb972cf28dc5f74a0f81b + sha256: 41053d9893e379a3133bb9b557b98a3d2142fca474fb6b964ba5d97515f78e2d category: dev optional: true - name: pytest-cov @@ -6570,10 +6570,10 @@ package: libgcc: '>=14' python: '' python_abi: 3.11.* - url: https://repo.prefix.dev/conda-forge/linux-64/rpds-py-0.27.1-py311h902ca64_0.conda + url: https://repo.prefix.dev/conda-forge/linux-64/rpds-py-0.27.1-py311h902ca64_1.conda hash: - md5: 486cb477243a9538130c439e66277069 - sha256: 72231a2721aa5d1bcee36bf1a33e57e500f820feb09058700365ea8e5d9c982d + md5: 622c389c080689ba1575a0750eb0209d + sha256: d9bc1564949ede4abd32aea34cf1997d704b6091e547f255dc0168996f5d5ec8 category: dev optional: true - name: rpds-py @@ -6586,10 +6586,10 @@ package: ucrt: '>=10.0.20348.0' vc: '>=14.3,<15' vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/rpds-py-0.27.1-py311hf51aa87_0.conda + url: https://repo.prefix.dev/conda-forge/win-64/rpds-py-0.27.1-py311hf51aa87_1.conda hash: - md5: 46f38e6cf7d54ba38d57400d72a3fe51 - sha256: 99984fb89ee84721a7d31e1346f4f973e71e284252e17d7c7a1806e945ab6e14 + md5: 3c5b42969dae70e100154750d29d43cc + sha256: e61607627213b70e7be73570e7ef5e2d36b583512def108aaf78a6ab16f0cdd9 category: dev optional: true - name: rtree @@ -7722,10 +7722,10 @@ package: libgcc: '>=14' python: '>=3.11,<3.12.0a0' python_abi: 3.11.* - url: https://repo.prefix.dev/conda-forge/linux-64/tornado-6.5.2-py311h49ec1c0_0.conda + url: https://repo.prefix.dev/conda-forge/linux-64/tornado-6.5.2-py311h49ec1c0_1.conda hash: - md5: 8e82bf1a7614ac43096a5c8d726030a3 - sha256: 99b43e96b71271bf906d87d9dceeb1b5d7f79d56d2cd58374e528b56830c99af + md5: 18a98f4444036100d78b230c94453ff4 + sha256: b1d686806d6b913e42aadb052b12d9cc91aae295640df3acfef645142fc33b3d category: main optional: false - name: tornado @@ -7738,10 +7738,10 @@ package: ucrt: '>=10.0.20348.0' vc: '>=14.3,<15' vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/tornado-6.5.2-py311h3485c13_0.conda + url: https://repo.prefix.dev/conda-forge/win-64/tornado-6.5.2-py311h3485c13_1.conda hash: - md5: 4f7ddc08f9282d519d5c1316e540d4ad - sha256: 288fc2b231d4b9895fefb50066881531a8d148f5cb01aa99eb9d335bf00b6447 + md5: ec9179a7226659bd15d8085c8de15360 + sha256: 87527996d1297442bbc432369a5791af740762c1dda642d52cd55d32d5577937 category: main optional: false - name: tqdm @@ -8302,10 +8302,10 @@ package: libgcc: '>=14' python: '>=3.11,<3.12.0a0' python_abi: 3.11.* - url: https://repo.prefix.dev/conda-forge/linux-64/wrapt-1.17.3-py311h49ec1c0_0.conda + url: https://repo.prefix.dev/conda-forge/linux-64/wrapt-1.17.3-py311h49ec1c0_1.conda hash: - md5: a7edc57f727dd421a8f2a76dd599e99f - sha256: 98ea1e7a6da62377d0fab668bc93d1db57ee56607a18426928e4f004ee9790f9 + md5: 47c1c27dee6c31bf8eefbdbdde817d83 + sha256: efcb41a300b58624790d2ce1c6ac9c1da7d23dd91c3d329bd22853866f8f8533 category: main optional: false - name: wrapt @@ -8318,10 +8318,10 @@ package: ucrt: '>=10.0.20348.0' vc: '>=14.3,<15' vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/wrapt-1.17.3-py311h3485c13_0.conda + url: https://repo.prefix.dev/conda-forge/win-64/wrapt-1.17.3-py311h3485c13_1.conda hash: - md5: 198b8cf0596219c2f4cd7362bf33106b - sha256: c7623e7d9390c3e0c18aef820a9574725ed864d6209e393a9afe5a9868d53e8f + md5: fbf91bcdeeb11de218edce103104e353 + sha256: 96f1ea03084a6deeb0630372319a03d7774f982d24e9ad7394941efd5779591c category: main optional: false - name: xorg-libxau @@ -8542,7 +8542,7 @@ package: category: main optional: false - name: zstandard - version: 0.23.0 + version: 0.24.0 manager: conda platform: linux-64 dependencies: @@ -8551,14 +8551,15 @@ package: libgcc: '>=14' python: '>=3.11,<3.12.0a0' python_abi: 3.11.* - url: https://repo.prefix.dev/conda-forge/linux-64/zstandard-0.23.0-py311h49ec1c0_3.conda + zstd: '>=1.5.7,<1.5.8.0a0' + url: https://repo.prefix.dev/conda-forge/linux-64/zstandard-0.24.0-py311h4854a17_1.conda hash: - md5: 493d5b49a7b416746b2fe41c82e27dce - sha256: 2d2adc6539abbab7a599357b73faf8e3d8c9fc40f31d9fdf2e2927c315f02a6a + md5: d0d623c1cd5a9515de1b2260d21a92aa + sha256: 0c13155c0eaeda24d1b208a4e9af28db025fd3388eca05fec872ce8d155d4e26 category: main optional: false - name: zstandard - version: 0.23.0 + version: 0.24.0 manager: conda platform: win-64 dependencies: @@ -8568,10 +8569,11 @@ package: ucrt: '>=10.0.20348.0' vc: '>=14.3,<15' vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/zstandard-0.23.0-py311h3485c13_3.conda + zstd: '>=1.5.7,<1.5.8.0a0' + url: https://repo.prefix.dev/conda-forge/win-64/zstandard-0.24.0-py311h2d646e2_1.conda hash: - md5: 8265296d9de69a925580b651c0c717ae - sha256: 5b3a2666e21723b96b3637aef4d108c2996979efe5719998649184f01b20ed7e + md5: c4567a485e5f58b12cacefe3e1a4b208 + sha256: 56c740d7efb0ca64be620ee8fe9a9e632fcd4cd10e18bb4aa09c24847819c526 category: main optional: false - name: zstd @@ -8605,41 +8607,41 @@ package: category: main optional: false - name: geoapps-utils - version: 0.6.0a2.dev61+655afd7 + version: 0.6.0a1.dev63+1241642 manager: pip platform: linux-64 dependencies: - geoh5py: 0.12.0a2.dev58+2c9248c6 + geoh5py: 0.12.0a2.dev60+3a91dd92 numpy: '>=1.26.0,<1.27.0' pydantic: '>=2.5.2,<3.0.0' scipy: '>=1.14.0,<1.15.0' - url: git+https://github.com/MiraGeoscience/geoapps-utils.git@655afd735989270d5d03b80a98cbe22844b47066 + url: git+https://github.com/MiraGeoscience/geoapps-utils.git@1241642d40693ee9c58f83ce46b317cba43dc68b hash: - sha256: 655afd735989270d5d03b80a98cbe22844b47066 + sha256: 1241642d40693ee9c58f83ce46b317cba43dc68b source: type: url - url: git+https://github.com/MiraGeoscience/geoapps-utils.git@655afd735989270d5d03b80a98cbe22844b47066 + url: git+https://github.com/MiraGeoscience/geoapps-utils.git@1241642d40693ee9c58f83ce46b317cba43dc68b category: main optional: false - name: geoapps-utils - version: 0.6.0a2.dev61+655afd7 + version: 0.6.0a1.dev63+1241642 manager: pip platform: win-64 dependencies: - geoh5py: 0.12.0a2.dev58+2c9248c6 + geoh5py: 0.12.0a2.dev60+3a91dd92 numpy: '>=1.26.0,<1.27.0' pydantic: '>=2.5.2,<3.0.0' scipy: '>=1.14.0,<1.15.0' - url: git+https://github.com/MiraGeoscience/geoapps-utils.git@655afd735989270d5d03b80a98cbe22844b47066 + url: git+https://github.com/MiraGeoscience/geoapps-utils.git@1241642d40693ee9c58f83ce46b317cba43dc68b hash: - sha256: 655afd735989270d5d03b80a98cbe22844b47066 + sha256: 1241642d40693ee9c58f83ce46b317cba43dc68b source: type: url - url: git+https://github.com/MiraGeoscience/geoapps-utils.git@655afd735989270d5d03b80a98cbe22844b47066 + url: git+https://github.com/MiraGeoscience/geoapps-utils.git@1241642d40693ee9c58f83ce46b317cba43dc68b category: main optional: false - name: geoh5py - version: 0.12.0a2.dev58+2c9248c6 + version: 0.12.0a2.dev60+3a91dd92 manager: pip platform: linux-64 dependencies: @@ -8647,16 +8649,16 @@ package: numpy: '>=1.26.0,<1.27.0' pillow: '>=10.3.0,<10.4.0' pydantic: '>=2.5.2,<3.0.0' - url: git+https://github.com/MiraGeoscience/geoh5py.git@2c9248c60e4166fadb973fcd4f1777bb2ee964f6 + url: git+https://github.com/MiraGeoscience/geoh5py.git@3a91dd92144a34b3c1ad1e5885029a7102e6337c hash: - sha256: 2c9248c60e4166fadb973fcd4f1777bb2ee964f6 + sha256: 3a91dd92144a34b3c1ad1e5885029a7102e6337c source: type: url - url: git+https://github.com/MiraGeoscience/geoh5py.git@2c9248c60e4166fadb973fcd4f1777bb2ee964f6 + url: git+https://github.com/MiraGeoscience/geoh5py.git@3a91dd92144a34b3c1ad1e5885029a7102e6337c category: main optional: false - name: geoh5py - version: 0.12.0a2.dev58+2c9248c6 + version: 0.12.0a2.dev60+3a91dd92 manager: pip platform: win-64 dependencies: @@ -8664,12 +8666,12 @@ package: numpy: '>=1.26.0,<1.27.0' pillow: '>=10.3.0,<10.4.0' pydantic: '>=2.5.2,<3.0.0' - url: git+https://github.com/MiraGeoscience/geoh5py.git@2c9248c60e4166fadb973fcd4f1777bb2ee964f6 + url: git+https://github.com/MiraGeoscience/geoh5py.git@3a91dd92144a34b3c1ad1e5885029a7102e6337c hash: - sha256: 2c9248c60e4166fadb973fcd4f1777bb2ee964f6 + sha256: 3a91dd92144a34b3c1ad1e5885029a7102e6337c source: type: url - url: git+https://github.com/MiraGeoscience/geoh5py.git@2c9248c60e4166fadb973fcd4f1777bb2ee964f6 + url: git+https://github.com/MiraGeoscience/geoh5py.git@3a91dd92144a34b3c1ad1e5885029a7102e6337c category: main optional: false - name: grid-apps @@ -8678,8 +8680,8 @@ package: platform: linux-64 dependencies: discretize: '>=0.11.0,<0.12.dev' - geoapps-utils: 0.6.0a2.dev61+655afd7 - geoh5py: 0.12.0a2.dev58+2c9248c6 + geoapps-utils: 0.6.0a1.dev63+1241642 + geoh5py: 0.12.0a2.dev60+3a91dd92 numpy: '>=1.26.0,<1.27.0' pydantic: '>=2.5.2,<3.0.0' scipy: '>=1.14.0,<1.15.0' @@ -8697,8 +8699,8 @@ package: platform: win-64 dependencies: discretize: '>=0.11.0,<0.12.dev' - geoapps-utils: 0.6.0a2.dev61+655afd7 - geoh5py: 0.12.0a2.dev58+2c9248c6 + geoapps-utils: 0.6.0a1.dev63+1241642 + geoh5py: 0.12.0a2.dev60+3a91dd92 numpy: '>=1.26.0,<1.27.0' pydantic: '>=2.5.2,<3.0.0' scipy: '>=1.14.0,<1.15.0' @@ -8711,7 +8713,7 @@ package: category: main optional: false - name: mira-simpeg - version: 0.23.0.1.post2.dev61+mira.gd794a0b24 + version: 0.23.0.1.post2.dev91+mira.g5561fb544 manager: pip platform: linux-64 dependencies: @@ -8723,16 +8725,16 @@ package: numpy: '>=1.22' pymatsolver: '>=0.3' scipy: '>=1.8' - url: git+https://github.com/MiraGeoscience/simpeg.git@d794a0b24aafb4beccc7984e68b6904be44f860f + url: git+https://github.com/MiraGeoscience/simpeg.git@5561fb5441be2cceaf8e1ca5fa05f6e3b19ee6bb hash: - sha256: d794a0b24aafb4beccc7984e68b6904be44f860f + sha256: 5561fb5441be2cceaf8e1ca5fa05f6e3b19ee6bb source: type: url - url: git+https://github.com/MiraGeoscience/simpeg.git@d794a0b24aafb4beccc7984e68b6904be44f860f + url: git+https://github.com/MiraGeoscience/simpeg.git@5561fb5441be2cceaf8e1ca5fa05f6e3b19ee6bb category: main optional: false - name: mira-simpeg - version: 0.23.0.1.post2.dev61+mira.gd794a0b24 + version: 0.23.0.1.post2.dev91+mira.g5561fb544 manager: pip platform: win-64 dependencies: @@ -8744,11 +8746,11 @@ package: numpy: '>=1.22' pymatsolver: '>=0.3' scipy: '>=1.8' - url: git+https://github.com/MiraGeoscience/simpeg.git@d794a0b24aafb4beccc7984e68b6904be44f860f + url: git+https://github.com/MiraGeoscience/simpeg.git@5561fb5441be2cceaf8e1ca5fa05f6e3b19ee6bb hash: - sha256: d794a0b24aafb4beccc7984e68b6904be44f860f + sha256: 5561fb5441be2cceaf8e1ca5fa05f6e3b19ee6bb source: type: url - url: git+https://github.com/MiraGeoscience/simpeg.git@d794a0b24aafb4beccc7984e68b6904be44f860f + url: git+https://github.com/MiraGeoscience/simpeg.git@5561fb5441be2cceaf8e1ca5fa05f6e3b19ee6bb category: main optional: false diff --git a/py-3.12.conda-lock.yml b/py-3.12.conda-lock.yml index 0cbfbdaca..d6d63d69d 100644 --- a/py-3.12.conda-lock.yml +++ b/py-3.12.conda-lock.yml @@ -308,10 +308,10 @@ package: dependencies: python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://repo.prefix.dev/conda-forge/linux-64/astroid-3.3.11-py312h7900ff3_0.conda + url: https://repo.prefix.dev/conda-forge/linux-64/astroid-3.3.11-py312h7900ff3_1.conda hash: - md5: 2c4719e9d1416a9070de683d0e44a12f - sha256: 543e3ad753b987efd3ad5e17c3f55aaf6b2fed5699bf4696f38a172845634e0e + md5: f68064e559452bab9180c8f90392d724 + sha256: e8ddf4c3e00cbf6350ab2f9a046b04c6b5df71fa111e5f172bce3723b0ab6ac1 category: dev optional: true - name: astroid @@ -321,10 +321,10 @@ package: dependencies: python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://repo.prefix.dev/conda-forge/win-64/astroid-3.3.11-py312h2e8e312_0.conda + url: https://repo.prefix.dev/conda-forge/win-64/astroid-3.3.11-py312h2e8e312_1.conda hash: - md5: 9958694a21711e5159ebd5323115a2a3 - sha256: a66bf91868f27ea145f42536b090689ebb658cfa46d5c0ba0ba836978a08aef2 + md5: 1f2355e2dae4d1cdfb625fbd4af95576 + sha256: 67bc3573865fa08809779fc94def9f8de220553507cc700e546a7ee952472e94 category: dev optional: true - name: asttokens @@ -558,11 +558,11 @@ package: brotli-bin: 1.1.0 libbrotlidec: 1.1.0 libbrotlienc: 1.1.0 - libgcc: '>=13' - url: https://repo.prefix.dev/conda-forge/linux-64/brotli-1.1.0-hb9d3cd8_3.conda + libgcc: '>=14' + url: https://repo.prefix.dev/conda-forge/linux-64/brotli-1.1.0-hb03c661_4.conda hash: - md5: 5d08a0ac29e6a5a984817584775d4131 - sha256: c969baaa5d7a21afb5ed4b8dd830f82b78e425caaa13d717766ed07a61630bec + md5: eaf3fbd2aa97c212336de38a51fe404e + sha256: 294526a54fa13635341729f250d0b1cf8f82cad1e6b83130304cbf3b6d8b74cc category: main optional: false - name: brotli @@ -574,12 +574,12 @@ package: libbrotlidec: 1.1.0 libbrotlienc: 1.1.0 ucrt: '>=10.0.20348.0' - vc: '>=14.2,<15' - vc14_runtime: '>=14.29.30139' - url: https://repo.prefix.dev/conda-forge/win-64/brotli-1.1.0-h2466b09_3.conda + vc: '>=14.3,<15' + vc14_runtime: '>=14.44.35208' + url: https://repo.prefix.dev/conda-forge/win-64/brotli-1.1.0-hfd05255_4.conda hash: - md5: c2a23d8a8986c72148c63bdf855ac99a - sha256: d57cd6ea705c9d2a8a2721f083de247501337e459f5498726b564cfca138e192 + md5: 441706c019985cf109ced06458e6f742 + sha256: df2a43cc4a99bd184cb249e62106dfa9f55b3d06df9b5fc67072b0336852ff65 category: main optional: false - name: brotli-bin @@ -590,11 +590,11 @@ package: __glibc: '>=2.17,<3.0.a0' libbrotlidec: 1.1.0 libbrotlienc: 1.1.0 - libgcc: '>=13' - url: https://repo.prefix.dev/conda-forge/linux-64/brotli-bin-1.1.0-hb9d3cd8_3.conda + libgcc: '>=14' + url: https://repo.prefix.dev/conda-forge/linux-64/brotli-bin-1.1.0-hb03c661_4.conda hash: - md5: 58178ef8ba927229fba6d84abf62c108 - sha256: ab74fa8c3d1ca0a055226be89e99d6798c65053e2d2d3c6cb380c574972cd4a7 + md5: ca4ed8015764937c81b830f7f5b68543 + sha256: 444903c6e5c553175721a16b7c7de590ef754a15c28c99afbc8a963b35269517 category: main optional: false - name: brotli-bin @@ -605,12 +605,12 @@ package: libbrotlidec: 1.1.0 libbrotlienc: 1.1.0 ucrt: '>=10.0.20348.0' - vc: '>=14.2,<15' - vc14_runtime: '>=14.29.30139' - url: https://repo.prefix.dev/conda-forge/win-64/brotli-bin-1.1.0-h2466b09_3.conda + vc: '>=14.3,<15' + vc14_runtime: '>=14.44.35208' + url: https://repo.prefix.dev/conda-forge/win-64/brotli-bin-1.1.0-hfd05255_4.conda hash: - md5: c7c345559c1ac25eede6dccb7b931202 - sha256: 85aac1c50a426be6d0cc9fd52480911d752f4082cb78accfdb257243e572c7eb + md5: ef022c8941d7dcc420c8533b0e419733 + sha256: e92c783502d95743b49b650c9276e9c56c7264da55429a5e45655150a6d1b0cf category: main optional: false - name: brotli-python @@ -619,14 +619,14 @@ package: platform: linux-64 dependencies: __glibc: '>=2.17,<3.0.a0' - libgcc: '>=13' - libstdcxx: '>=13' + libgcc: '>=14' + libstdcxx: '>=14' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://repo.prefix.dev/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_3.conda + url: https://repo.prefix.dev/conda-forge/linux-64/brotli-python-1.1.0-py312h1289d80_4.conda hash: - md5: a32e0c069f6c3dcac635f7b0b0dac67e - sha256: dc27c58dc717b456eee2d57d8bc71df3f562ee49368a2351103bc8f1b67da251 + md5: fd0e7746ed0676f008daacb706ce69e4 + sha256: 52a9ac412512b418ecdb364ba21c0f3dc96f0abbdb356b3cfbb980020b663d9b category: main optional: false - name: brotli-python @@ -637,12 +637,12 @@ package: python: '>=3.12,<3.13.0a0' python_abi: 3.12.* ucrt: '>=10.0.20348.0' - vc: '>=14.2,<15' - vc14_runtime: '>=14.29.30139' - url: https://repo.prefix.dev/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_3.conda + vc: '>=14.3,<15' + vc14_runtime: '>=14.44.35208' + url: https://repo.prefix.dev/conda-forge/win-64/brotli-python-1.1.0-py312hbb81ca0_4.conda hash: - md5: a87a39f9eb9fd5f171b13d8c79f7a99a - sha256: d5c18a90220853c86f7cc23db62b32b22c6c5fe5d632bc111fc1e467c9fd776f + md5: 3bb5cbb24258cc7ab83126976d36e711 + sha256: f3c7c9b0a41c0ec0c231b92fe944e1ab9e64cf0b4ae9d82e25994d3233baa20c category: main optional: false - name: bzip2 @@ -787,15 +787,15 @@ package: platform: linux-64 dependencies: __glibc: '>=2.17,<3.0.a0' - libffi: '>=3.4,<4.0a0' - libgcc: '>=13' + libffi: '>=3.4.6,<3.5.0a0' + libgcc: '>=14' pycparser: '' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://repo.prefix.dev/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + url: https://repo.prefix.dev/conda-forge/linux-64/cffi-1.17.1-py312h35888ee_1.conda hash: - md5: a861504bbea4161a9170b85d4d2be840 - sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457 + md5: 918e2510c64000a916355dcf09d26da2 + sha256: 13bf94678e7a853a39a2c6dc2674b096cfe80f43ad03d7fff4bcde05edf9fda4 category: main optional: false - name: cffi @@ -807,12 +807,12 @@ package: python: '>=3.12,<3.13.0a0' python_abi: 3.12.* ucrt: '>=10.0.20348.0' - vc: '>=14.2,<15' - vc14_runtime: '>=14.29.30139' - url: https://repo.prefix.dev/conda-forge/win-64/cffi-1.17.1-py312h4389bb4_0.conda + vc: '>=14.3,<15' + vc14_runtime: '>=14.44.35208' + url: https://repo.prefix.dev/conda-forge/win-64/cffi-1.17.1-py312he06e257_1.conda hash: - md5: 08310c1a22ef957d537e547f8d484f92 - sha256: ac007bf5fd56d13e16d95eea036433012f2e079dc015505c8a79efebbad1fcbc + md5: a73ee5cb34f7a18dd6a11015de607e15 + sha256: d175cbc3b11496456360922b0773d5b1f0bf8e414b48c55472d0790a5ceefdb9 category: main optional: false - name: charset-normalizer @@ -949,10 +949,10 @@ package: numpy: '>=1.25' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://repo.prefix.dev/conda-forge/linux-64/contourpy-1.3.3-py312hd9148b4_1.conda + url: https://repo.prefix.dev/conda-forge/linux-64/contourpy-1.3.3-py312hd9148b4_2.conda hash: - md5: e25ed6c2e3b1effedfe9cd10a15ca8d8 - sha256: d9cb7f97a184a383bf0c72e1fa83b983a1caa68d7564f4449a4de7c97df9cb3f + md5: bce621e43978c245261c76b45edeaa3d + sha256: cedae3c71ad59b6796d182f9198e881738b7a2c7b70f18427d7788f3173befb2 category: main optional: false - name: contourpy @@ -966,14 +966,14 @@ package: ucrt: '>=10.0.20348.0' vc: '>=14.3,<15' vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/contourpy-1.3.3-py312hf90b1b7_1.conda + url: https://repo.prefix.dev/conda-forge/win-64/contourpy-1.3.3-py312hf90b1b7_2.conda hash: - md5: 28c69dc50f1f09f956e11d0c5366d196 - sha256: 9bf33af8dadb517cad9da0cee811a508dbfc35d8a7009c1a6d7169ca988afcef + md5: 0236aece459ee53593a3feed0c6bcc94 + sha256: 3561cb1fddacd7903c036659fe48615320e045fc3f58952bcabcb44fcd1f92d1 category: main optional: false - name: coverage - version: 7.10.5 + version: 7.10.6 manager: conda platform: linux-64 dependencies: @@ -982,14 +982,14 @@ package: python: '>=3.12,<3.13.0a0' python_abi: 3.12.* tomli: '' - url: https://repo.prefix.dev/conda-forge/linux-64/coverage-7.10.5-py312h8a5da7c_0.conda + url: https://repo.prefix.dev/conda-forge/linux-64/coverage-7.10.6-py312h8a5da7c_1.conda hash: - md5: 1534a930a40c7547dfcf477884c210d7 - sha256: 163996c0940ee58e605722ab08d47746cb6618a92c35287ad574cc3b7b20d928 + md5: 0bffddcd9276d65304761c70ba5c2882 + sha256: f4774396137aaeec172e812bbcfc68e21dfa1fae2a04a437a6e2aa52fbddec89 category: dev optional: true - name: coverage - version: 7.10.5 + version: 7.10.6 manager: conda platform: win-64 dependencies: @@ -999,10 +999,10 @@ package: ucrt: '>=10.0.20348.0' vc: '>=14.3,<15' vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/coverage-7.10.5-py312h05f76fc_0.conda + url: https://repo.prefix.dev/conda-forge/win-64/coverage-7.10.6-py312h05f76fc_1.conda hash: - md5: b5df85abc3dd7cb713eecb7f49396e96 - sha256: 40526b427d6425558d6c9c71cdd6f009214322b96aa443fc9672947e15886f9e + md5: 040ebae03f3f666cae7cd40b95c6ef8c + sha256: 8914bba5e99644b2976003269c87221efd6ee5ba7ad3b0a1ecf0876954116263 category: dev optional: true - name: cpython @@ -1162,10 +1162,10 @@ package: libstdcxx: '>=14' python: '' python_abi: 3.12.* - url: https://repo.prefix.dev/conda-forge/linux-64/debugpy-1.8.16-py312h8285ef7_0.conda + url: https://repo.prefix.dev/conda-forge/linux-64/debugpy-1.8.16-py312h8285ef7_1.conda hash: - md5: 6205bf8723b4b79275dd52ef60cf6af1 - sha256: ad6193b4c2771a82a8df3408d9c6174016b487fd1f7501b1618fa034c5118534 + md5: 45b13b9f0c8995cef3cc4e62f8b4a3f3 + sha256: 1212cba3b9eb610b53a59c88460049f0cce4e3b8b66c6376e10df3cdd74d80f1 category: dev optional: true - name: debugpy @@ -1178,10 +1178,10 @@ package: ucrt: '>=10.0.20348.0' vc: '>=14.3,<15' vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/debugpy-1.8.16-py312ha1a9051_0.conda + url: https://repo.prefix.dev/conda-forge/win-64/debugpy-1.8.16-py312ha1a9051_1.conda hash: - md5: d375809db8ab66d9f168241ce6942db5 - sha256: 218fedb9654763d534575c1326115ef1bd09e72629876a06ce9a7c2bc71f68d7 + md5: f5b883d00fcf2671e0a501fdc1f69f43 + sha256: 67c240c00cc8bab3b8102bff19cc826d4ca555f28a71556b7c5cf24054ea71d5 category: dev optional: true - name: decorator @@ -1427,27 +1427,27 @@ package: category: dev optional: true - name: executing - version: 2.2.0 + version: 2.2.1 manager: conda platform: linux-64 dependencies: - python: '>=3.9' - url: https://repo.prefix.dev/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda + python: '>=3.10' + url: https://repo.prefix.dev/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda hash: - md5: 81d30c08f9a3e556e8ca9e124b044d14 - sha256: 7510dd93b9848c6257c43fdf9ad22adf62e7aa6da5f12a6a757aed83bcfedf05 + md5: ff9efb7f7469aed3c4a8106ffa29593c + sha256: 210c8165a58fdbf16e626aac93cc4c14dbd551a01d1516be5ecad795d2422cad category: dev optional: true - name: executing - version: 2.2.0 + version: 2.2.1 manager: conda platform: win-64 dependencies: - python: '>=3.9' - url: https://repo.prefix.dev/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda + python: '>=3.10' + url: https://repo.prefix.dev/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda hash: - md5: 81d30c08f9a3e556e8ca9e124b044d14 - sha256: 7510dd93b9848c6257c43fdf9ad22adf62e7aa6da5f12a6a757aed83bcfedf05 + md5: ff9efb7f7469aed3c4a8106ffa29593c + sha256: 210c8165a58fdbf16e626aac93cc4c14dbd551a01d1516be5ecad795d2422cad category: dev optional: true - name: fasteners @@ -1564,27 +1564,27 @@ package: category: main optional: false - name: fsspec - version: 2025.7.0 + version: 2025.9.0 manager: conda platform: linux-64 dependencies: - python: '>=3.9' - url: https://repo.prefix.dev/conda-forge/noarch/fsspec-2025.7.0-pyhd8ed1ab_0.conda + python: '>=3.10' + url: https://repo.prefix.dev/conda-forge/noarch/fsspec-2025.9.0-pyhd8ed1ab_0.conda hash: - md5: a31ce802cd0ebfce298f342c02757019 - sha256: f734d98cd046392fbd9872df89ac043d72ac15f6a2529f129d912e28ab44609c + md5: 76f492bd8ba8a0fb80ffe16fc1a75b3b + sha256: 05e55a2bd5e4d7f661d1f4c291ca8e65179f68234d18eb70fc00f50934d3c4d3 category: main optional: false - name: fsspec - version: 2025.7.0 + version: 2025.9.0 manager: conda platform: win-64 dependencies: - python: '>=3.9' - url: https://repo.prefix.dev/conda-forge/noarch/fsspec-2025.7.0-pyhd8ed1ab_0.conda + python: '>=3.10' + url: https://repo.prefix.dev/conda-forge/noarch/fsspec-2025.9.0-pyhd8ed1ab_0.conda hash: - md5: a31ce802cd0ebfce298f342c02757019 - sha256: f734d98cd046392fbd9872df89ac043d72ac15f6a2529f129d912e28ab44609c + md5: 76f492bd8ba8a0fb80ffe16fc1a75b3b + sha256: 05e55a2bd5e4d7f661d1f4c291ca8e65179f68234d18eb70fc00f50934d3c4d3 category: main optional: false - name: geoana @@ -1635,10 +1635,10 @@ package: libstdcxx: '>=14' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://repo.prefix.dev/conda-forge/linux-64/greenlet-3.2.4-py312h1289d80_0.conda + url: https://repo.prefix.dev/conda-forge/linux-64/greenlet-3.2.4-py312h1289d80_1.conda hash: - md5: 20613c19390027c191c9a882a62c10c4 - sha256: 319724de8686c45f5d927d2b1eea4e589a831ea53fa0919c965f9e95f9b0884e + md5: e5e4c495ffa157da0c9a0457736f18cd + sha256: 70cfb228b535389686c4ab66dfe59b9c216eca303a732911e1c6f46eab8a1fff category: dev optional: true - name: greenlet @@ -1651,10 +1651,10 @@ package: ucrt: '>=10.0.20348.0' vc: '>=14.3,<15' vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/greenlet-3.2.4-py312hbb81ca0_0.conda + url: https://repo.prefix.dev/conda-forge/win-64/greenlet-3.2.4-py312hbb81ca0_1.conda hash: - md5: e7ccdb35c3fb14af0f12991f7ebe7977 - sha256: 08914fa8b92386a7017184d60c006e235cbe57821dd21a20c64367a0990b0479 + md5: a30b99b1afa907f01b9be091841e1e07 + sha256: 4aa0e023cf7758216b71f5b7dac67e23813284e40243e4ac8a18715dc024ba7a category: dev optional: true - name: h11 @@ -1719,14 +1719,14 @@ package: __glibc: '>=2.17,<3.0.a0' cached-property: '' hdf5: '>=1.14.6,<1.14.7.0a0' - libgcc: '>=13' - numpy: '>=1.21,<3' + libgcc: '>=14' + numpy: '>=1.23,<3' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://repo.prefix.dev/conda-forge/linux-64/h5py-3.14.0-nompi_py312h3faca00_100.conda + url: https://repo.prefix.dev/conda-forge/linux-64/h5py-3.14.0-nompi_py312ha4f8f14_101.conda hash: - md5: 2e1c2a9e706c74c4dd6f990a680f3f90 - sha256: 9d23b72ee1138e14d379bb4c415cfdfc6944824e1844ff16ebf44e0defd1eddc + md5: fff67e7204b34a6e82ccf076786d1a7a + sha256: 6736b00b257aecef97e5e607ff275780cacdec48ff85963fe53abeb9ee4fb53f category: main optional: false - name: h5py @@ -1736,16 +1736,16 @@ package: dependencies: cached-property: '' hdf5: '>=1.14.6,<1.14.7.0a0' - numpy: '>=1.21,<3' + numpy: '>=1.23,<3' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* ucrt: '>=10.0.20348.0' - vc: '>=14.2,<15' - vc14_runtime: '>=14.29.30139' - url: https://repo.prefix.dev/conda-forge/win-64/h5py-3.14.0-nompi_py312h6cc2a29_100.conda + vc: '>=14.3,<15' + vc14_runtime: '>=14.44.35208' + url: https://repo.prefix.dev/conda-forge/win-64/h5py-3.14.0-nompi_py312h03cd2ba_101.conda hash: - md5: 7505235f79c9deb9e69fba7cca1a7c97 - sha256: 836d84ebf958e74a154406e785b32c973eaad12163f1b7dae2c0448626acea9c + md5: dc73d015d4d8afbe3a5caf38e7be048a + sha256: 932f5a81723869cd4b201bbbac58f63c8e042ab6bb0afccc24a77e81f3eb40eb category: main optional: false - name: hdf5 @@ -2367,10 +2367,10 @@ package: dependencies: python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://repo.prefix.dev/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda + url: https://repo.prefix.dev/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_2.conda hash: - md5: 6b51f7459ea4073eeb5057207e2e1e3d - sha256: 76ccb7bffc7761d1d3133ffbe1f7f1710a0f0d9aaa9f7ea522652e799f3601f4 + md5: eeaf37c3dc2d1660668bd102c841f783 + sha256: 39c77cd86d9f544e3ce11fdbab1047181d08dd14a72461d06d957b5fcfc78615 category: dev optional: true - name: jsonpointer @@ -2380,10 +2380,10 @@ package: dependencies: python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://repo.prefix.dev/conda-forge/win-64/jsonpointer-3.0.0-py312h2e8e312_1.conda + url: https://repo.prefix.dev/conda-forge/win-64/jsonpointer-3.0.0-py312h2e8e312_2.conda hash: - md5: e3ceda014d8461a11ca8552830a978f9 - sha256: 6865b97780e795337f65592582aee6f25e5b96214c64ffd3f8cdf580fd64ba22 + md5: fc28e1f2ded45c9213cc9470600a1a2b + sha256: c90c629ee1aba706a3ff833a94f9eee7732a11cbc897ec38a45f22c812aef408 category: dev optional: true - name: jsonschema @@ -2811,7 +2811,7 @@ package: category: dev optional: true - name: jupyterlab - version: 4.4.6 + version: 4.4.7 manager: conda platform: linux-64 dependencies: @@ -2826,19 +2826,19 @@ package: jupyterlab_server: '>=2.27.1,<3' notebook-shim: '>=0.2' packaging: '' - python: '>=3.9' + python: '>=3.10' setuptools: '>=41.1.0' tomli: '>=1.2.2' tornado: '>=6.2.0' traitlets: '' - url: https://repo.prefix.dev/conda-forge/noarch/jupyterlab-4.4.6-pyhd8ed1ab_0.conda + url: https://repo.prefix.dev/conda-forge/noarch/jupyterlab-4.4.7-pyhd8ed1ab_0.conda hash: - md5: 70cb2903114eafc6ed5d70ca91ba6545 - sha256: c3558f1c2a5977799ce425f1f7c8d8d1cae3408da41ec4f5c3771a21e673d465 + md5: 460d51bb21b7a4c4b6e100c824405fbb + sha256: 042bdb981ad5394530bee8329a10c76b9e17c12651d15a885d68e2cbbfef6869 category: dev optional: true - name: jupyterlab - version: 4.4.6 + version: 4.4.7 manager: conda platform: win-64 dependencies: @@ -2853,15 +2853,15 @@ package: jupyterlab_server: '>=2.27.1,<3' notebook-shim: '>=0.2' packaging: '' - python: '>=3.9' + python: '>=3.10' setuptools: '>=41.1.0' tomli: '>=1.2.2' tornado: '>=6.2.0' traitlets: '' - url: https://repo.prefix.dev/conda-forge/noarch/jupyterlab-4.4.6-pyhd8ed1ab_0.conda + url: https://repo.prefix.dev/conda-forge/noarch/jupyterlab-4.4.7-pyhd8ed1ab_0.conda hash: - md5: 70cb2903114eafc6ed5d70ca91ba6545 - sha256: c3558f1c2a5977799ce425f1f7c8d8d1cae3408da41ec4f5c3771a21e673d465 + md5: 460d51bb21b7a4c4b6e100c824405fbb + sha256: 042bdb981ad5394530bee8329a10c76b9e17c12651d15a885d68e2cbbfef6869 category: dev optional: true - name: jupyterlab_pygments @@ -3221,10 +3221,10 @@ package: platform: linux-64 dependencies: mkl: '>=2024.2.2,<2025.0a0' - url: https://repo.prefix.dev/conda-forge/linux-64/libblas-3.9.0-34_hfdb39a5_mkl.conda + url: https://repo.prefix.dev/conda-forge/linux-64/libblas-3.9.0-35_hfdb39a5_mkl.conda hash: - md5: 2ab9d1b88cf3e99b2d060b17072fe8eb - sha256: 633de259502cc410738462a070afaeb904a7bba9b475916bd26c9e0d7e12383c + md5: 9fedd782400297fa574e739146f04e34 + sha256: 038c7bf7134147966b4d785f1e8afed0728e440d190e21b1963c2b3713287bd3 category: main optional: false - name: libblas @@ -3233,10 +3233,10 @@ package: platform: win-64 dependencies: mkl: '>=2024.2.2,<2025.0a0' - url: https://repo.prefix.dev/conda-forge/win-64/libblas-3.9.0-34_h5709861_mkl.conda + url: https://repo.prefix.dev/conda-forge/win-64/libblas-3.9.0-35_h5709861_mkl.conda hash: - md5: a64dcde5f27b8e0e413ddfc56151664c - sha256: d7865fcc7d29b22e4111ababec49083851a84bb3025748eed65184be765b6e7d + md5: 45d98af023f8b4a7640b1f713ce6b602 + sha256: 4180e7ab27ed03ddf01d7e599002fcba1b32dcb68214ee25da823bac371ed362 category: main optional: false - name: libbrotlicommon @@ -3245,11 +3245,11 @@ package: platform: linux-64 dependencies: __glibc: '>=2.17,<3.0.a0' - libgcc: '>=13' - url: https://repo.prefix.dev/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_3.conda + libgcc: '>=14' + url: https://repo.prefix.dev/conda-forge/linux-64/libbrotlicommon-1.1.0-hb03c661_4.conda hash: - md5: cb98af5db26e3f482bebb80ce9d947d3 - sha256: 462a8ed6a7bb9c5af829ec4b90aab322f8bcd9d8987f793e6986ea873bbd05cf + md5: 1d29d2e33fe59954af82ef54a8af3fe1 + sha256: 2338a92d1de71f10c8cf70f7bb9775b0144a306d75c4812276749f54925612b6 category: main optional: false - name: libbrotlicommon @@ -3258,12 +3258,12 @@ package: platform: win-64 dependencies: ucrt: '>=10.0.20348.0' - vc: '>=14.2,<15' - vc14_runtime: '>=14.29.30139' - url: https://repo.prefix.dev/conda-forge/win-64/libbrotlicommon-1.1.0-h2466b09_3.conda + vc: '>=14.3,<15' + vc14_runtime: '>=14.44.35208' + url: https://repo.prefix.dev/conda-forge/win-64/libbrotlicommon-1.1.0-hfd05255_4.conda hash: - md5: cf20c8b8b48ab5252ec64b9c66bfe0a4 - sha256: e70ea4b773fadddda697306a80a29d9cbd36b7001547cd54cbfe9a97a518993f + md5: 58aec7a295039d8614175eae3a4f8778 + sha256: 65d0aaf1176761291987f37c8481be132060cc3dbe44b1550797bc27d1a0c920 category: main optional: false - name: libbrotlidec @@ -3273,11 +3273,11 @@ package: dependencies: __glibc: '>=2.17,<3.0.a0' libbrotlicommon: 1.1.0 - libgcc: '>=13' - url: https://repo.prefix.dev/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_3.conda + libgcc: '>=14' + url: https://repo.prefix.dev/conda-forge/linux-64/libbrotlidec-1.1.0-hb03c661_4.conda hash: - md5: 1c6eecffad553bde44c5238770cfb7da - sha256: 3eb27c1a589cbfd83731be7c3f19d6d679c7a444c3ba19db6ad8bf49172f3d83 + md5: 5cb5a1c9a94a78f5b23684bcb845338d + sha256: fcec0d26f67741b122f0d5eff32f0393d7ebd3ee6bb866ae2f17f3425a850936 category: main optional: false - name: libbrotlidec @@ -3287,12 +3287,12 @@ package: dependencies: libbrotlicommon: 1.1.0 ucrt: '>=10.0.20348.0' - vc: '>=14.2,<15' - vc14_runtime: '>=14.29.30139' - url: https://repo.prefix.dev/conda-forge/win-64/libbrotlidec-1.1.0-h2466b09_3.conda + vc: '>=14.3,<15' + vc14_runtime: '>=14.44.35208' + url: https://repo.prefix.dev/conda-forge/win-64/libbrotlidec-1.1.0-hfd05255_4.conda hash: - md5: a342933dbc6d814541234c7c81cb5205 - sha256: a35a0db7e3257e011b10ffb371735b2b24074412d0b27c3dab7ca9f2c549cfcf + md5: bf0ced5177fec8c18a7b51d568590b7c + sha256: aa03aff197ed503e38145d0d0f17c30382ac1c6d697535db24c98c272ef57194 category: main optional: false - name: libbrotlienc @@ -3302,11 +3302,11 @@ package: dependencies: __glibc: '>=2.17,<3.0.a0' libbrotlicommon: 1.1.0 - libgcc: '>=13' - url: https://repo.prefix.dev/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_3.conda + libgcc: '>=14' + url: https://repo.prefix.dev/conda-forge/linux-64/libbrotlienc-1.1.0-hb03c661_4.conda hash: - md5: 3facafe58f3858eb95527c7d3a3fc578 - sha256: 76e8492b0b0a0d222bfd6081cae30612aa9915e4309396fdca936528ccf314b7 + md5: 2e55011fa483edb8bfe3fd92e860cd79 + sha256: d42c7f0afce21d5279a0d54ee9e64a2279d35a07a90e0c9545caae57d6d7dc57 category: main optional: false - name: libbrotlienc @@ -3316,12 +3316,12 @@ package: dependencies: libbrotlicommon: 1.1.0 ucrt: '>=10.0.20348.0' - vc: '>=14.2,<15' - vc14_runtime: '>=14.29.30139' - url: https://repo.prefix.dev/conda-forge/win-64/libbrotlienc-1.1.0-h2466b09_3.conda + vc: '>=14.3,<15' + vc14_runtime: '>=14.44.35208' + url: https://repo.prefix.dev/conda-forge/win-64/libbrotlienc-1.1.0-hfd05255_4.conda hash: - md5: 7ef0af55d70cbd9de324bb88b7f9d81e - sha256: 9d0703c5a01c10d346587ff0535a0eb81042364333caa4a24a0e4a0c08fd490b + md5: 37f4669f8ac2f04d826440a8f3f42300 + sha256: a593cde3e728a1e0486a19537846380e3ce90ae9d6c22c1412466a49474eeeed category: main optional: false - name: libcblas @@ -3330,10 +3330,10 @@ package: platform: linux-64 dependencies: libblas: 3.9.0 - url: https://repo.prefix.dev/conda-forge/linux-64/libcblas-3.9.0-34_h372d94f_mkl.conda + url: https://repo.prefix.dev/conda-forge/linux-64/libcblas-3.9.0-35_h372d94f_mkl.conda hash: - md5: b45c7c718d1e1cde0e7b0d9c463b617f - sha256: 3e7c172ca2c7cdd4bfae36c612ee29565681274c9e54d577ff48b4c5fafc1568 + md5: 25fab7e2988299928dea5939d9958293 + sha256: f565da198a837b0d19ede6affedc0c2cf743c193606f800c7a98f0909b290d31 category: main optional: false - name: libcblas @@ -3342,10 +3342,10 @@ package: platform: win-64 dependencies: libblas: 3.9.0 - url: https://repo.prefix.dev/conda-forge/win-64/libcblas-3.9.0-34_h2a3cdd5_mkl.conda + url: https://repo.prefix.dev/conda-forge/win-64/libcblas-3.9.0-35_h2a3cdd5_mkl.conda hash: - md5: 25a019872ff471af70fd76d9aaaf1313 - sha256: e9f31d44e668822f6420bfaeda4aa74cd6c60d3671cf0b00262867f36ad5a8c1 + md5: 9639091d266e92438582d0cc4cfc8350 + sha256: 88939f6c1b5da75bd26ce663aa437e1224b26ee0dab5e60cecc77600975f397e category: main optional: false - name: libcurl @@ -3738,10 +3738,10 @@ package: platform: linux-64 dependencies: libblas: 3.9.0 - url: https://repo.prefix.dev/conda-forge/linux-64/liblapack-3.9.0-34_hc41d3b0_mkl.conda + url: https://repo.prefix.dev/conda-forge/linux-64/liblapack-3.9.0-35_hc41d3b0_mkl.conda hash: - md5: 77f13fe82430578ec2ff162fc89a13a0 - sha256: 167db8be4c6d6efaad88e4fb6c8649ab6d5277ea20592a7ae0d49733c2d276fd + md5: 5b4f86e5bc48d347eaf1ca2d180780ad + sha256: 81bbecf7c06d50f48b2af2a1e7b3706a0ff0190ed8ab8f46444d4475bfa1e360 category: main optional: false - name: liblapack @@ -3750,10 +3750,10 @@ package: platform: win-64 dependencies: libblas: 3.9.0 - url: https://repo.prefix.dev/conda-forge/win-64/liblapack-3.9.0-34_hf9ab0e9_mkl.conda + url: https://repo.prefix.dev/conda-forge/win-64/liblapack-3.9.0-35_hf9ab0e9_mkl.conda hash: - md5: ba80d9feadfbafceafb0bf46d35f5886 - sha256: c65298d584551cba1b7a42537f8e0093ec9fd0e871fc80ddf9cf6ffa0efa25ae + md5: 0c6ed9d722cecda18f50f17fb3c30002 + sha256: 56e0992fb58eed8f0d5fa165b8621fa150b84aa9af1467ea0a7a9bb7e2fced4f category: main optional: false - name: liblzma @@ -3784,21 +3784,21 @@ package: category: main optional: false - name: libnghttp2 - version: 1.64.0 + version: 1.67.0 manager: conda platform: linux-64 dependencies: __glibc: '>=2.17,<3.0.a0' - c-ares: '>=1.32.3,<2.0a0' + c-ares: '>=1.34.5,<2.0a0' libev: '>=4.33,<5.0a0' - libgcc: '>=13' - libstdcxx: '>=13' + libgcc: '>=14' + libstdcxx: '>=14' libzlib: '>=1.3.1,<2.0a0' - openssl: '>=3.3.2,<4.0a0' - url: https://repo.prefix.dev/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + openssl: '>=3.5.2,<4.0a0' + url: https://repo.prefix.dev/conda-forge/linux-64/libnghttp2-1.67.0-had1ee68_0.conda hash: - md5: 19e57602824042dfd0446292ef90488b - sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 + md5: b499ce4b026493a13774bcf0f4c33849 + sha256: a4a7dab8db4dc81c736e9a9b42bdfd97b087816e029e221380511960ac46c690 category: main optional: false - name: libnsl @@ -4222,15 +4222,15 @@ package: category: dev optional: true - name: llvm-openmp - version: 20.1.8 + version: 21.1.0 manager: conda platform: linux-64 dependencies: __glibc: '>=2.17,<3.0.a0' - url: https://repo.prefix.dev/conda-forge/linux-64/llvm-openmp-20.1.8-h4922eb0_2.conda + url: https://repo.prefix.dev/conda-forge/linux-64/llvm-openmp-21.1.0-h4922eb0_0.conda hash: - md5: fab9b7d973248580e0300196a80c9a24 - sha256: fd5a656cfa064add64455e3b7ea046376046911c56d14dc04049e670f3b48190 + md5: d9965f88b86534360e8fce160efb67f1 + sha256: eb42c041e2913e4a8da3e248e4e690b5500c9b9a7533b4f99e959a22064ac599 category: main optional: false - name: llvm-openmp @@ -4499,29 +4499,29 @@ package: category: main optional: false - name: mistune - version: 3.1.3 + version: 3.1.4 manager: conda platform: linux-64 dependencies: - python: '>=3.9' + python: '>=3.10' typing_extensions: '' - url: https://repo.prefix.dev/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda + url: https://repo.prefix.dev/conda-forge/noarch/mistune-3.1.4-pyhcf101f3_0.conda hash: - md5: 7ec6576e328bc128f4982cd646eeba85 - sha256: a67484d7dd11e815a81786580f18b6e4aa2392f292f29183631a6eccc8dc37b3 + md5: f5a4d548d1d3bdd517260409fc21e205 + sha256: 609ea628ace5c6cdbdce772704e6cb159ead26969bb2f386ca1757632b0f74c6 category: dev optional: true - name: mistune - version: 3.1.3 + version: 3.1.4 manager: conda platform: win-64 dependencies: - python: '>=3.9' + python: '>=3.10' typing_extensions: '' - url: https://repo.prefix.dev/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda + url: https://repo.prefix.dev/conda-forge/noarch/mistune-3.1.4-pyhcf101f3_0.conda hash: - md5: 7ec6576e328bc128f4982cd646eeba85 - sha256: a67484d7dd11e815a81786580f18b6e4aa2392f292f29183631a6eccc8dc37b3 + md5: f5a4d548d1d3bdd517260409fc21e205 + sha256: 609ea628ace5c6cdbdce772704e6cb159ead26969bb2f386ca1757632b0f74c6 category: dev optional: true - name: mkl @@ -4557,14 +4557,14 @@ package: platform: linux-64 dependencies: __glibc: '>=2.17,<3.0.a0' - libgcc: '>=13' - libstdcxx: '>=13' + libgcc: '>=14' + libstdcxx: '>=14' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://repo.prefix.dev/conda-forge/linux-64/msgpack-python-1.1.1-py312h68727a3_0.conda + url: https://repo.prefix.dev/conda-forge/linux-64/msgpack-python-1.1.1-py312hd9148b4_1.conda hash: - md5: 6998b34027ecc577efe4e42f4b022a98 - sha256: 969b8e50922b592228390c25ac417c0761fd6f98fccad870ac5cc84f35da301a + md5: f81ef4109d77d92188bdc25712c0ff17 + sha256: 5c1a49c4afecfc7c542760711e8075cb8115997c47f52b7af0fc554f6f260b5c category: main optional: false - name: msgpack-python @@ -4575,12 +4575,12 @@ package: python: '>=3.12,<3.13.0a0' python_abi: 3.12.* ucrt: '>=10.0.20348.0' - vc: '>=14.2,<15' - vc14_runtime: '>=14.29.30139' - url: https://repo.prefix.dev/conda-forge/win-64/msgpack-python-1.1.1-py312hd5eb7cc_0.conda + vc: '>=14.3,<15' + vc14_runtime: '>=14.44.35208' + url: https://repo.prefix.dev/conda-forge/win-64/msgpack-python-1.1.1-py312hf90b1b7_1.conda hash: - md5: 732a1b46ab8c8ee0dce4aac014e66006 - sha256: 41d9b229e0654400d81bfe417675b4603e4cd7d13ffc1b1aa9c748c67d5bd39f + md5: 68c7f6ff972bd7a9d8e52ce67a8c1a94 + sha256: b2b51d00a7ebd11a21cbb09f768dd084f2f2630009606187c7055905e6c8523e category: main optional: false - name: mumps-include @@ -6018,7 +6018,7 @@ package: category: main optional: false - name: pytest - version: 8.4.1 + version: 8.4.2 manager: conda platform: linux-64 dependencies: @@ -6028,16 +6028,16 @@ package: packaging: '>=20' pluggy: '>=1.5,<2' pygments: '>=2.7.2' - python: '>=3.9' + python: '>=3.10' tomli: '>=1' - url: https://repo.prefix.dev/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + url: https://repo.prefix.dev/conda-forge/noarch/pytest-8.4.2-pyhd8ed1ab_0.conda hash: - md5: a49c2283f24696a7b30367b7346a0144 - sha256: 93e267e4ec35353e81df707938a6527d5eb55c97bf54c3b87229b69523afb59d + md5: 1f987505580cb972cf28dc5f74a0f81b + sha256: 41053d9893e379a3133bb9b557b98a3d2142fca474fb6b964ba5d97515f78e2d category: dev optional: true - name: pytest - version: 8.4.1 + version: 8.4.2 manager: conda platform: win-64 dependencies: @@ -6047,12 +6047,12 @@ package: packaging: '>=20' pluggy: '>=1.5,<2' pygments: '>=2.7.2' - python: '>=3.9' + python: '>=3.10' tomli: '>=1' - url: https://repo.prefix.dev/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + url: https://repo.prefix.dev/conda-forge/noarch/pytest-8.4.2-pyhd8ed1ab_0.conda hash: - md5: a49c2283f24696a7b30367b7346a0144 - sha256: 93e267e4ec35353e81df707938a6527d5eb55c97bf54c3b87229b69523afb59d + md5: 1f987505580cb972cf28dc5f74a0f81b + sha256: 41053d9893e379a3133bb9b557b98a3d2142fca474fb6b964ba5d97515f78e2d category: dev optional: true - name: pytest-cov @@ -6637,10 +6637,10 @@ package: libgcc: '>=14' python: '' python_abi: 3.12.* - url: https://repo.prefix.dev/conda-forge/linux-64/rpds-py-0.27.1-py312h868fb18_0.conda + url: https://repo.prefix.dev/conda-forge/linux-64/rpds-py-0.27.1-py312h868fb18_1.conda hash: - md5: 2c5c390ddeffeb6eecc79df2416783d0 - sha256: d9ace02196f551cbe608fd9d64628239a2101815a96a8a095e7a426b19956176 + md5: 0e32f9c8ca00c1b926a1b77be6937112 + sha256: 76efba673e02d4d47bc2de6e48a8787ed98bae4933233dee5ce810fa3de6ef2b category: dev optional: true - name: rpds-py @@ -6653,10 +6653,10 @@ package: ucrt: '>=10.0.20348.0' vc: '>=14.3,<15' vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/rpds-py-0.27.1-py312hdabe01f_0.conda + url: https://repo.prefix.dev/conda-forge/win-64/rpds-py-0.27.1-py312hdabe01f_1.conda hash: - md5: 995d26b9ef26e098ddb6a14d999a5a1b - sha256: 3d475dd9aba7517c744ba7e78e5a902dc37029de2b74be7e04d6885bfba65904 + md5: b918460732f2e1de583e831e1388648d + sha256: 67f9ba28a0fd97cecba1203770c60c501adcefa86330f96a1581de34ec79f22e category: dev optional: true - name: rtree @@ -7789,10 +7789,10 @@ package: libgcc: '>=14' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://repo.prefix.dev/conda-forge/linux-64/tornado-6.5.2-py312h4c3975b_0.conda + url: https://repo.prefix.dev/conda-forge/linux-64/tornado-6.5.2-py312h4c3975b_1.conda hash: - md5: 82dacd4832dcde0c2b7888248a3b3d7c - sha256: 891965f8e495ad5cef399db03a13df48df7add06ae131f4b77a88749c74b2060 + md5: 66b988f7f1dc9fcc9541483cb0ab985b + sha256: 7cd30a558a00293a33ab9bfe0e174311546f0a1573c9f6908553ecd9a9bc417b category: main optional: false - name: tornado @@ -7805,10 +7805,10 @@ package: ucrt: '>=10.0.20348.0' vc: '>=14.3,<15' vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/tornado-6.5.2-py312he06e257_0.conda + url: https://repo.prefix.dev/conda-forge/win-64/tornado-6.5.2-py312he06e257_1.conda hash: - md5: ef13034aef592637ce6e2dc1ca126bca - sha256: bc5f5b20aa13e3ba343685c54d75a02c737ae6a5fe778908caf563d9f2273cb2 + md5: 62097a4eaf874377d299ff2719a2b70a + sha256: 67f4c82c7cf49701fce306a8e208817e815e7819c85b17e37a2b1e77b128f9b8 category: main optional: false - name: tqdm @@ -8369,10 +8369,10 @@ package: libgcc: '>=14' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://repo.prefix.dev/conda-forge/linux-64/wrapt-1.17.3-py312h4c3975b_0.conda + url: https://repo.prefix.dev/conda-forge/linux-64/wrapt-1.17.3-py312h4c3975b_1.conda hash: - md5: 28f4b2672dab90c896adf9acf2b774c1 - sha256: af711a6449d2ca3fa4c245dee78665050c6ff3a08e8ea5d4bed8472f290c8b67 + md5: 8af3faf88325836e46c6cb79828e058c + sha256: 8320d5af37eb8933e5d129884ea013b2687e75b08aff5216193df3378eaea92f category: main optional: false - name: wrapt @@ -8385,10 +8385,10 @@ package: ucrt: '>=10.0.20348.0' vc: '>=14.3,<15' vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/wrapt-1.17.3-py312he06e257_0.conda + url: https://repo.prefix.dev/conda-forge/win-64/wrapt-1.17.3-py312he06e257_1.conda hash: - md5: 9e51c355d0931cb422e944170a3acc17 - sha256: b19a904449fa7f63ea7db07faa4a0ff831cdf624e9e7989ce63cbd0f7a65d82b + md5: fc10fd823d05bde83cda9e90dbef34ed + sha256: f9e9e28ef3a0564a5588427b9503ed08e5fe3624b8f8132d60383439a47baafc category: main optional: false - name: xorg-libxau @@ -8609,7 +8609,7 @@ package: category: main optional: false - name: zstandard - version: 0.23.0 + version: 0.24.0 manager: conda platform: linux-64 dependencies: @@ -8618,14 +8618,15 @@ package: libgcc: '>=14' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://repo.prefix.dev/conda-forge/linux-64/zstandard-0.23.0-py312h4c3975b_3.conda + zstd: '>=1.5.7,<1.5.8.0a0' + url: https://repo.prefix.dev/conda-forge/linux-64/zstandard-0.24.0-py312h3fa7853_1.conda hash: - md5: 7a2c6e25a4fabf9fab62ee1977beabe5 - sha256: 40c76563f3a398f27b4036e468881a1f909a8c66d100a16a28c1379a0940a59c + md5: e14ae4525748c648ba9cc6b6116349b6 + sha256: 0c9a5cd2a38361af58d29351dcaa9b16f45784b885562875ed96be315d025439 category: main optional: false - name: zstandard - version: 0.23.0 + version: 0.24.0 manager: conda platform: win-64 dependencies: @@ -8635,10 +8636,11 @@ package: ucrt: '>=10.0.20348.0' vc: '>=14.3,<15' vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/zstandard-0.23.0-py312he06e257_3.conda + zstd: '>=1.5.7,<1.5.8.0a0' + url: https://repo.prefix.dev/conda-forge/win-64/zstandard-0.24.0-py312ha680012_1.conda hash: - md5: e23097165ce8ba29c30854c2a9e84449 - sha256: 13f43231e22173473ba300d9a128caf386ec73a18a5b9b192858ba18ea2e78f1 + md5: 2af048668bbb6802972d469bd038110b + sha256: d700928eee50c6df515d21303f7efc731a14c02978f0712a23579e86be52e3d1 category: main optional: false - name: zstd @@ -8672,41 +8674,41 @@ package: category: main optional: false - name: geoapps-utils - version: 0.6.0a2.dev61+655afd7 + version: 0.6.0a1.dev63+1241642 manager: pip platform: linux-64 dependencies: - geoh5py: 0.12.0a2.dev58+2c9248c6 + geoh5py: 0.12.0a2.dev60+3a91dd92 numpy: '>=1.26.0,<1.27.0' pydantic: '>=2.5.2,<3.0.0' scipy: '>=1.14.0,<1.15.0' - url: git+https://github.com/MiraGeoscience/geoapps-utils.git@655afd735989270d5d03b80a98cbe22844b47066 + url: git+https://github.com/MiraGeoscience/geoapps-utils.git@1241642d40693ee9c58f83ce46b317cba43dc68b hash: - sha256: 655afd735989270d5d03b80a98cbe22844b47066 + sha256: 1241642d40693ee9c58f83ce46b317cba43dc68b source: type: url - url: git+https://github.com/MiraGeoscience/geoapps-utils.git@655afd735989270d5d03b80a98cbe22844b47066 + url: git+https://github.com/MiraGeoscience/geoapps-utils.git@1241642d40693ee9c58f83ce46b317cba43dc68b category: main optional: false - name: geoapps-utils - version: 0.6.0a2.dev61+655afd7 + version: 0.6.0a1.dev63+1241642 manager: pip platform: win-64 dependencies: - geoh5py: 0.12.0a2.dev58+2c9248c6 + geoh5py: 0.12.0a2.dev60+3a91dd92 numpy: '>=1.26.0,<1.27.0' pydantic: '>=2.5.2,<3.0.0' scipy: '>=1.14.0,<1.15.0' - url: git+https://github.com/MiraGeoscience/geoapps-utils.git@655afd735989270d5d03b80a98cbe22844b47066 + url: git+https://github.com/MiraGeoscience/geoapps-utils.git@1241642d40693ee9c58f83ce46b317cba43dc68b hash: - sha256: 655afd735989270d5d03b80a98cbe22844b47066 + sha256: 1241642d40693ee9c58f83ce46b317cba43dc68b source: type: url - url: git+https://github.com/MiraGeoscience/geoapps-utils.git@655afd735989270d5d03b80a98cbe22844b47066 + url: git+https://github.com/MiraGeoscience/geoapps-utils.git@1241642d40693ee9c58f83ce46b317cba43dc68b category: main optional: false - name: geoh5py - version: 0.12.0a2.dev58+2c9248c6 + version: 0.12.0a2.dev60+3a91dd92 manager: pip platform: linux-64 dependencies: @@ -8714,16 +8716,16 @@ package: numpy: '>=1.26.0,<1.27.0' pillow: '>=10.3.0,<10.4.0' pydantic: '>=2.5.2,<3.0.0' - url: git+https://github.com/MiraGeoscience/geoh5py.git@2c9248c60e4166fadb973fcd4f1777bb2ee964f6 + url: git+https://github.com/MiraGeoscience/geoh5py.git@3a91dd92144a34b3c1ad1e5885029a7102e6337c hash: - sha256: 2c9248c60e4166fadb973fcd4f1777bb2ee964f6 + sha256: 3a91dd92144a34b3c1ad1e5885029a7102e6337c source: type: url - url: git+https://github.com/MiraGeoscience/geoh5py.git@2c9248c60e4166fadb973fcd4f1777bb2ee964f6 + url: git+https://github.com/MiraGeoscience/geoh5py.git@3a91dd92144a34b3c1ad1e5885029a7102e6337c category: main optional: false - name: geoh5py - version: 0.12.0a2.dev58+2c9248c6 + version: 0.12.0a2.dev60+3a91dd92 manager: pip platform: win-64 dependencies: @@ -8731,12 +8733,12 @@ package: numpy: '>=1.26.0,<1.27.0' pillow: '>=10.3.0,<10.4.0' pydantic: '>=2.5.2,<3.0.0' - url: git+https://github.com/MiraGeoscience/geoh5py.git@2c9248c60e4166fadb973fcd4f1777bb2ee964f6 + url: git+https://github.com/MiraGeoscience/geoh5py.git@3a91dd92144a34b3c1ad1e5885029a7102e6337c hash: - sha256: 2c9248c60e4166fadb973fcd4f1777bb2ee964f6 + sha256: 3a91dd92144a34b3c1ad1e5885029a7102e6337c source: type: url - url: git+https://github.com/MiraGeoscience/geoh5py.git@2c9248c60e4166fadb973fcd4f1777bb2ee964f6 + url: git+https://github.com/MiraGeoscience/geoh5py.git@3a91dd92144a34b3c1ad1e5885029a7102e6337c category: main optional: false - name: grid-apps @@ -8745,8 +8747,8 @@ package: platform: linux-64 dependencies: discretize: '>=0.11.0,<0.12.dev' - geoapps-utils: 0.6.0a2.dev61+655afd7 - geoh5py: 0.12.0a2.dev58+2c9248c6 + geoapps-utils: 0.6.0a1.dev63+1241642 + geoh5py: 0.12.0a2.dev60+3a91dd92 numpy: '>=1.26.0,<1.27.0' pydantic: '>=2.5.2,<3.0.0' scipy: '>=1.14.0,<1.15.0' @@ -8764,8 +8766,8 @@ package: platform: win-64 dependencies: discretize: '>=0.11.0,<0.12.dev' - geoapps-utils: 0.6.0a2.dev61+655afd7 - geoh5py: 0.12.0a2.dev58+2c9248c6 + geoapps-utils: 0.6.0a1.dev63+1241642 + geoh5py: 0.12.0a2.dev60+3a91dd92 numpy: '>=1.26.0,<1.27.0' pydantic: '>=2.5.2,<3.0.0' scipy: '>=1.14.0,<1.15.0' @@ -8778,7 +8780,7 @@ package: category: main optional: false - name: mira-simpeg - version: 0.23.0.1.post2.dev61+mira.gd794a0b24 + version: 0.23.0.1.post2.dev91+mira.g5561fb544 manager: pip platform: linux-64 dependencies: @@ -8790,16 +8792,16 @@ package: numpy: '>=1.22' pymatsolver: '>=0.3' scipy: '>=1.8' - url: git+https://github.com/MiraGeoscience/simpeg.git@d794a0b24aafb4beccc7984e68b6904be44f860f + url: git+https://github.com/MiraGeoscience/simpeg.git@5561fb5441be2cceaf8e1ca5fa05f6e3b19ee6bb hash: - sha256: d794a0b24aafb4beccc7984e68b6904be44f860f + sha256: 5561fb5441be2cceaf8e1ca5fa05f6e3b19ee6bb source: type: url - url: git+https://github.com/MiraGeoscience/simpeg.git@d794a0b24aafb4beccc7984e68b6904be44f860f + url: git+https://github.com/MiraGeoscience/simpeg.git@5561fb5441be2cceaf8e1ca5fa05f6e3b19ee6bb category: main optional: false - name: mira-simpeg - version: 0.23.0.1.post2.dev61+mira.gd794a0b24 + version: 0.23.0.1.post2.dev91+mira.g5561fb544 manager: pip platform: win-64 dependencies: @@ -8811,11 +8813,11 @@ package: numpy: '>=1.22' pymatsolver: '>=0.3' scipy: '>=1.8' - url: git+https://github.com/MiraGeoscience/simpeg.git@d794a0b24aafb4beccc7984e68b6904be44f860f + url: git+https://github.com/MiraGeoscience/simpeg.git@5561fb5441be2cceaf8e1ca5fa05f6e3b19ee6bb hash: - sha256: d794a0b24aafb4beccc7984e68b6904be44f860f + sha256: 5561fb5441be2cceaf8e1ca5fa05f6e3b19ee6bb source: type: url - url: git+https://github.com/MiraGeoscience/simpeg.git@d794a0b24aafb4beccc7984e68b6904be44f860f + url: git+https://github.com/MiraGeoscience/simpeg.git@5561fb5441be2cceaf8e1ca5fa05f6e3b19ee6bb category: main optional: false diff --git a/pyproject.toml b/pyproject.toml index 21843076e..9ffff8fb3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,6 +11,7 @@ requires = [ ] build-backend = "poetry_dynamic_versioning.backend" + [project] name = "simpeg-drivers" requires-python = '>=3.10,<4.0' diff --git a/simpeg_drivers-assets/uijson/tdem_inversion.ui.json b/simpeg_drivers-assets/uijson/tdem_inversion.ui.json index 363d79875..d735c666e 100644 --- a/simpeg_drivers-assets/uijson/tdem_inversion.ui.json +++ b/simpeg_drivers-assets/uijson/tdem_inversion.ui.json @@ -321,7 +321,9 @@ ], "label": "Gradient rotation", "parent": "mesh", - "value": "" + "value": "", + "optional": true, + "enabled": false }, "s_norm": { "association": "Cell", diff --git a/simpeg_drivers/components/factories/misfit_factory.py b/simpeg_drivers/components/factories/misfit_factory.py index 439b3e0da..4b1b1aa4a 100644 --- a/simpeg_drivers/components/factories/misfit_factory.py +++ b/simpeg_drivers/components/factories/misfit_factory.py @@ -15,44 +15,37 @@ import numpy as np from simpeg import objective_function -from simpeg.simulation import BaseSimulation +from simpeg.dask import objective_function as dask_objective_function +from simpeg.objective_function import ComboObjectiveFunction from simpeg_drivers.components.factories.simpeg_factory import SimPEGFactory from simpeg_drivers.utils.nested import create_misfit if TYPE_CHECKING: - from geoapps_utils.driver.params import BaseParams - from simpeg_drivers.options import BaseOptions class MisfitFactory(SimPEGFactory): """Build SimPEG global misfit function.""" - def __init__(self, params: BaseParams | BaseOptions, simulation: BaseSimulation): + def __init__(self, params, client, simulation, workers): """ :param params: Options object containing SimPEG object parameters. """ super().__init__(params) + self.simpeg_object = self.concrete_object() self.factory_type = self.params.inversion_type self.simulation = simulation + self.client = client + self.workers = workers def concrete_object(self): return objective_function.ComboObjectiveFunction - def build(self, tiles, split_list): # pylint: disable=arguments-differ - global_misfit = super().build( - tiles=tiles, - split_list=split_list, - ) - return global_misfit - def assemble_arguments( # pylint: disable=arguments-differ - self, - tiles, - split_list, + self, tiles ): # Base slice over frequencies if self.factory_type in ["magnetotellurics", "tipper", "fdem"]: @@ -60,43 +53,106 @@ def assemble_arguments( # pylint: disable=arguments-differ else: channels = [None] - futures = [] - # TODO bring back on GEOPY-2182 - # with ProcessPoolExecutor() as executor: - count = 0 + use_futures = self.client + + if use_futures: + delayed_simulation = self.client.scatter(self.simulation) + else: + delayed_simulation = self.simulation + + misfits = [] + tile_count = 0 for channel in channels: - tile_count = 0 for local_indices in tiles: - if len(local_indices) == 0: - continue - - n_split = split_list[count] - futures.append( - # executor.submit( - create_misfit( - self.simulation, - local_indices, - channel, - tile_count, - n_split, - self.params.padding_cells, - self.params.inversion_type, - self.params.forward_only, - ) - ) - tile_count += np.sum(n_split) - count += 1 - - local_misfits = [] - local_orderings = [] - for future in futures: # as_completed(futures): - misfits, orderings = future # future.result() - local_misfits += misfits - local_orderings += orderings + for sub_ind in local_indices: + if len(sub_ind) == 0: + continue + + # Distribute the work across workers round-robin style + if use_futures: + worker_ind = tile_count % len(self.workers) + misfits.append( + self.client.submit( + create_misfit, + delayed_simulation, + sub_ind, + channel, + tile_count, + self.params.padding_cells, + self.params.inversion_type, + self.params.forward_only, + shared_indices=np.hstack(local_indices), + workers=self.workers[worker_ind], + ) + ) + else: + misfits.append( + create_misfit( + delayed_simulation, + sub_ind, + channel, + tile_count, + self.params.padding_cells, + self.params.inversion_type, + self.params.forward_only, + shared_indices=np.hstack(local_indices), + ) + ) + tile_count += 1 + + local_orderings = self.collect_ordering_from_misfits(misfits) self.simulation.survey.ordering = np.vstack(local_orderings) - return [local_misfits] + + return misfits def assemble_keyword_arguments(self, **_): """Implementation of abstract method from SimPEGFactory.""" - return {} + + def build(self, tiles, **_): + """To be over-ridden in factory implementations.""" + + misfits = self.assemble_arguments(tiles) + + if self.client: + return dask_objective_function.DistributedComboMisfits( + misfits, + client=self.client, + ) + + return self.simpeg_object( # pylint: disable=not-callable + misfits + ) + + def collect_ordering_from_misfits(self, misfits): + """Collect attributes from misfit objects. + + :param misfits : List of misfit objects. + :param attribute : Attribute to collect. + + :return: List of collected attributes. + """ + attributes = [] + for misfit in misfits: + if self.client: + attributes.append(self.client.submit(_get_ordering, misfit)) + else: + attributes += _get_ordering(misfit) + + if self.client: + ordering = [] + for future in self.client.gather(attributes): + ordering += future + return ordering + return attributes + + +def _get_ordering(obj): + """Recursively get ordering from components of misfit function.""" + attributes = [] + if isinstance(obj, ComboObjectiveFunction): + for misfit in obj.objfcts: + attributes += _get_ordering(misfit) + + return attributes + return [obj.simulation.simulations[0].survey.ordering] diff --git a/simpeg_drivers/components/topography.py b/simpeg_drivers/components/topography.py index 62cf0e8ff..1fac37a65 100644 --- a/simpeg_drivers/components/topography.py +++ b/simpeg_drivers/components/topography.py @@ -32,6 +32,7 @@ from simpeg_drivers.components.data import InversionData from simpeg_drivers.components.locations import InversionLocations from simpeg_drivers.components.models import InversionModel +from simpeg_drivers.electromagnetics.base_1d_options import Base1DOptions from simpeg_drivers.utils.utils import ( active_from_xyz, floating_active, @@ -92,6 +93,9 @@ def active_cells(self, mesh: InversionMesh, data: InversionData) -> np.ndarray: "induced polarization 2d", ] or isinstance(data.entity, LargeLoopGroundEMSurvey) + if isinstance(self.params, Base1DOptions): + return np.ones(mesh.mesh.n_cells, dtype=bool) + if isinstance(self.params.active_cells.active_model, NumericData): active_cells = InversionModel.obj_2_mesh( self.params.active_cells.active_model, mesh.entity diff --git a/simpeg_drivers/driver.py b/simpeg_drivers/driver.py index 4152ef1d2..41f450876 100644 --- a/simpeg_drivers/driver.py +++ b/simpeg_drivers/driver.py @@ -50,7 +50,8 @@ optimization, simulation, ) -from simpeg.potential_fields.base import BasePFSimulation +from simpeg.electromagnetics.frequency_domain.simulation_1d import Simulation1DLayered + from simpeg.regularization import ( BaseRegularization, RegularizationMesh, @@ -86,7 +87,6 @@ class InversionDriver(Driver): _options_class = BaseForwardOptions | BaseInversionOptions _inversion_type: str | None = None - _validations = None def __init__(self, params: BaseForwardOptions | BaseInversionOptions): super().__init__(params) @@ -106,19 +106,18 @@ def __init__(self, params: BaseForwardOptions | BaseInversionOptions): self._optimization: optimization.ProjectedGNCG | None = None self._regularization: None = None self._simulation: simulation.BaseSimulation | None = None - self._sorting: list[np.ndarray] | None = None + self._ordering: list[np.ndarray] | None = None self._mappings: list[maps.IdentityMap] | None = None self._window = None - self._client: Client | None = None + self._client: Client | bool | None = None self._workers: list[str] | None = None @property - def client(self): + def client(self) -> Client | bool | None: if self._client is None: try: self._client = get_client() - # self._workers = [worker.worker_address for worker in self.client.cluster.workers.values()] except ValueError: self._client = False @@ -129,35 +128,44 @@ def workers(self): """List of workers""" if self._workers is None: if self.client: - self._workers = list(self.client.cluster.workers.values()) + self._workers = [ + (worker.worker_address,) + for worker in self.client.cluster.workers.values() + ] else: self._workers = [] return self._workers - @property - def split_list(self): + def split_list(self, tiles: list[np.ndarray]) -> list[np.ndarray]: """ Number of splits for the data misfit to be distributed evenly among workers. """ - n_misfits = self.params.compute.tile_spatial + if len(self.workers) == 0: + return [[tile] for tile in tiles] - if isinstance(self.params.data_object, FEMSurvey): - n_misfits *= len(self.params.data_object.channels) + n_tiles = self.params.compute.tile_spatial - split_list = [1] * n_misfits + n_channels = 1 + if isinstance(self.params.data_object, FEMSurvey) and not isinstance( + self.simulation, Simulation1DLayered + ): + n_channels = len(self.params.data_object.channels) - if len(self.workers) == 0: - return split_list + split_list = [1] * n_tiles count = 0 - while np.sum(split_list) % len(self.workers) != 0: - split_list[count % n_misfits] += 1 + while (np.sum(split_list) * n_channels) % len(self.workers) != 0: + split_list[count % n_tiles] += 1 count += 1 self.logger.write( f"Number of misfits: {np.sum(split_list)} distributed over {len(self.workers)} workers.\n" ) - return split_list + + flat_tile_list = [] + for tile, split in zip(tiles, split_list): + flat_tile_list.append(np.array_split(tile, split)) + return flat_tile_list @property def data_misfit(self): @@ -169,22 +177,12 @@ def data_misfit(self): self.logger.write(f"Setting up {len(tiles)} tile(s) . . .\n") # Build tiled misfits and combine to form global misfit - self._data_misfit = MisfitFactory(self.params, self.simulation).build( - tiles, - self.split_list, + self._data_misfit = MisfitFactory( + self.params, self.client, self.simulation, self.workers + ).build( + self.split_list(tiles), ) self.logger.write("Saving data to file...\n") - self._sorting = tiles - if isinstance(self.params, BaseInversionOptions): - self._data_misfit.multipliers = np.asarray( - self._data_misfit.multipliers, dtype=float - ) - - if self.client: - self.logger.write( - "Broadcasting simulations to distributed workers...\n" - ) - self.distributed_misfits() return self._data_misfit @@ -195,17 +193,6 @@ def directives(self): self._directives = DirectivesFactory(self) return self._directives - def distributed_misfits(self): - """ - Method to convert MetaSimulations to DaskMetaSimulations with futures. - """ - distributed_misfits = dask.objective_function.DaskComboMisfits( - self.data_misfit.objfcts, - multipliers=self.data_misfit.multipliers, - client=self.client, - ) - self._data_misfit = distributed_misfits - @property def inverse_problem(self): if getattr(self, "_inverse_problem", None) is None: @@ -404,13 +391,6 @@ def simulation(self): return self._simulation - @property - def sorting(self) -> list[np.ndarray] | None: - """ - Sorting of the data locations. - """ - return self._sorting - @property def window(self): """Inversion window""" @@ -424,10 +404,10 @@ def run(self): self.logger.start() self.configure_dask() - simpeg_inversion = self.inversion + with fetch_active_workspace(self.workspace, mode="r+"): + simpeg_inversion = self.inversion - if Path(self.params.input_file.path_name).is_file(): - with fetch_active_workspace(self.workspace, mode="r+"): + if Path(self.params.input_file.path_name).is_file(): self.out_group.add_file(self.params.input_file.path_name) predicted = None @@ -627,7 +607,7 @@ def get_tiles(self): return [np.arange(self.inversion_data.mask.sum())] if "1d" in self.params.inversion_type: - return np.arange(self.inversion_data.mask.sum()).reshape((-1, 1)) + return [np.arange(self.inversion_data.mask.sum())] return tile_locations( self.inversion_data.locations, @@ -770,6 +750,11 @@ def get_path(self, filepath: str | Path) -> str: n_threads = input_file.data.get("n_threads", None) save_report = input_file.data.get("performance_report", False) + # Force distributed on 1D problems + if "1D" in input_file.data["title"] and n_workers is None: + n_threads = n_threads or 2 + n_workers = multiprocessing.cpu_count() // n_threads + cluster = ( LocalCluster(processes=True, n_workers=n_workers, threads_per_worker=n_threads) if ((n_workers is not None and n_workers > 1) or n_threads is not None) diff --git a/simpeg_drivers/electromagnetics/base_1d_driver.py b/simpeg_drivers/electromagnetics/base_1d_driver.py index b3b85c873..2b10ffc12 100644 --- a/simpeg_drivers/electromagnetics/base_1d_driver.py +++ b/simpeg_drivers/electromagnetics/base_1d_driver.py @@ -11,6 +11,7 @@ from __future__ import annotations +import multiprocessing from logging import getLogger import numpy as np @@ -105,10 +106,14 @@ def simulation(self): return self._simulation @property - def split_list(self): - """ - Split the list of data into chunks for parallel processing. - """ - n_misfits = self.inversion_data.mask.sum() - - return [1] * n_misfits + def workers(self): + """List of workers""" + if self._workers is None: + if self.client: + self._workers = [ + (worker.worker_address,) + for worker in self.client.cluster.workers.values() + ] + else: + self._workers = np.arange(multiprocessing.cpu_count()).tolist() + return self._workers diff --git a/simpeg_drivers/electromagnetics/base_1d_options.py b/simpeg_drivers/electromagnetics/base_1d_options.py new file mode 100644 index 000000000..558005d27 --- /dev/null +++ b/simpeg_drivers/electromagnetics/base_1d_options.py @@ -0,0 +1,37 @@ +# ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +# Copyright (c) 2025 Mira Geoscience Ltd. ' +# ' +# This file is part of simpeg-drivers package. ' +# ' +# simpeg-drivers is distributed under the terms and conditions of the MIT License ' +# (see LICENSE file at the root of this source code package). ' +# ' +# ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' + + +from __future__ import annotations + +from pydantic import BaseModel, ConfigDict + +from simpeg_drivers.options import DrapeModelOptions + + +class Base1DOptions(BaseModel): + """ + Frequency Domain Electromagnetic forward options. + + :param drape_model: Drape model options. + """ + + model_config = ConfigDict( + arbitrary_types_allowed=True, + ) + + drape_model: DrapeModelOptions = DrapeModelOptions( + u_cell_size=10.0, + v_cell_size=10.0, + depth_core=100.0, + horizontal_padding=0.0, + vertical_padding=100.0, + expansion_factor=1.1, + ) diff --git a/simpeg_drivers/electromagnetics/frequency_domain_1d/options.py b/simpeg_drivers/electromagnetics/frequency_domain_1d/options.py index 5bbbe3ee7..8f013a0f4 100644 --- a/simpeg_drivers/electromagnetics/frequency_domain_1d/options.py +++ b/simpeg_drivers/electromagnetics/frequency_domain_1d/options.py @@ -17,17 +17,15 @@ from geoh5py.groups import PropertyGroup from simpeg_drivers import assets_path +from simpeg_drivers.electromagnetics.base_1d_options import Base1DOptions from simpeg_drivers.electromagnetics.frequency_domain.options import ( FDEMForwardOptions, FDEMInversionOptions, ) -from simpeg_drivers.options import ( - DirectiveOptions, - DrapeModelOptions, -) +from simpeg_drivers.options import DirectiveOptions -class FDEM1DForwardOptions(FDEMForwardOptions): +class FDEM1DForwardOptions(FDEMForwardOptions, Base1DOptions): """ Frequency Domain Electromagnetic forward options. @@ -45,17 +43,8 @@ class FDEM1DForwardOptions(FDEMForwardOptions): z_real_channel_bool: bool z_imag_channel_bool: bool - drape_model: DrapeModelOptions = DrapeModelOptions( - u_cell_size=10.0, - v_cell_size=10.0, - depth_core=100.0, - horizontal_padding=0.0, - vertical_padding=100.0, - expansion_factor=1.1, - ) - -class FDEM1DInversionOptions(FDEMInversionOptions): +class FDEM1DInversionOptions(FDEMInversionOptions, Base1DOptions): """ Frequency Domain Electromagnetic Inversion options. @@ -71,14 +60,6 @@ class FDEM1DInversionOptions(FDEMInversionOptions): title: str = "Frequency-domain EM-1D (FEM-1D) Inversion" inversion_type: str = "fdem 1d" - drape_model: DrapeModelOptions = DrapeModelOptions( - u_cell_size=10.0, - v_cell_size=10.0, - depth_core=100.0, - horizontal_padding=0.0, - vertical_padding=100.0, - expansion_factor=1.1, - ) directives: DirectiveOptions = DirectiveOptions( sens_wts_threshold=100.0, ) diff --git a/simpeg_drivers/electromagnetics/time_domain_1d/options.py b/simpeg_drivers/electromagnetics/time_domain_1d/options.py index 60dd7af0e..181ba6b35 100644 --- a/simpeg_drivers/electromagnetics/time_domain_1d/options.py +++ b/simpeg_drivers/electromagnetics/time_domain_1d/options.py @@ -22,13 +22,13 @@ ) from simpeg_drivers import assets_path +from simpeg_drivers.electromagnetics.base_1d_options import Base1DOptions from simpeg_drivers.electromagnetics.time_domain.options import ( TDEMForwardOptions, TDEMInversionOptions, ) from simpeg_drivers.options import ( DirectiveOptions, - DrapeModelOptions, ) @@ -37,7 +37,7 @@ ) -class TDEM1DForwardOptions(TDEMForwardOptions): +class TDEM1DForwardOptions(TDEMForwardOptions, Base1DOptions): """ Time Domain Electromagnetic forward options. @@ -53,17 +53,8 @@ class TDEM1DForwardOptions(TDEMForwardOptions): z_channel_bool: bool = True - drape_model: DrapeModelOptions = DrapeModelOptions( - u_cell_size=10.0, - v_cell_size=10.0, - depth_core=100.0, - horizontal_padding=0.0, - vertical_padding=100.0, - expansion_factor=1.1, - ) - -class TDEM1DInversionOptions(TDEMInversionOptions): +class TDEM1DInversionOptions(TDEMInversionOptions, Base1DOptions): """ Time Domain Electromagnetic Inversion options. @@ -84,11 +75,3 @@ class TDEM1DInversionOptions(TDEMInversionOptions): directives: DirectiveOptions = DirectiveOptions( sens_wts_threshold=100.0, ) - drape_model: DrapeModelOptions = DrapeModelOptions( - u_cell_size=10.0, - v_cell_size=10.0, - depth_core=100.0, - horizontal_padding=0.0, - vertical_padding=100.0, - expansion_factor=1.1, - ) diff --git a/simpeg_drivers/joint/driver.py b/simpeg_drivers/joint/driver.py index 7a989644b..3221e2fe1 100644 --- a/simpeg_drivers/joint/driver.py +++ b/simpeg_drivers/joint/driver.py @@ -18,6 +18,7 @@ from pathlib import Path import numpy as np +import simpeg.dask.objective_function as dask_objective_function from geoh5py.groups.property_group_type import GroupTypeEnum from geoh5py.shared.utils import fetch_active_workspace from grid_apps.utils import ( @@ -60,13 +61,20 @@ def data_misfit(self): if driver.data_misfit is not None: objective_functions += driver.data_misfit.objfcts - for fun in driver.data_misfit.objfcts: - fun.name = f"Group {label.upper()} {fun.name}" + for ii, fun in enumerate(driver.data_misfit.objfcts): + fun.name = f"Group_{label.upper()}:Tile_{ii}" multipliers += [ getattr(self.params, f"group_{label}_multiplier") ** 2.0 ] * len(driver.data_misfit.objfcts) + if self.client: + return dask_objective_function.DistributedComboMisfits( + objfcts=objective_functions, + multipliers=multipliers, + client=self.client, + ) + self._data_misfit = ComboObjectiveFunction( objfcts=objective_functions, multipliers=multipliers ) @@ -125,20 +133,17 @@ def initialize(self): enforce_active=False, components=driver.n_blocks, ) + tile_map = projection * wire driver.params.active_model = None driver.models.active_cells = projection.local_active - driver.data_misfit.model_map = projection * wire + driver.data_misfit.model_map = tile_map multipliers = [] - for mult, func in driver.data_misfit: - mappings = [] - for mapping in func.simulation.mappings: - mappings.append(mapping * projection * wire) - - func.simulation.mappings = mappings - multipliers.append( - mult * (func.simulation.mappings[0].shape[0] / projection.shape[1]) - ) + mappings = self._get_set_simulation_mappings(driver.data_misfit, tile_map) + for mult, mapping in zip( + driver.data_misfit.multipliers, mappings, strict=False + ): + multipliers.append(mult * (mapping[0].shape[0] / projection.shape[1])) driver.data_misfit.multipliers = multipliers self.validate_create_models() @@ -227,9 +232,6 @@ def run(self): with fetch_active_workspace(self.workspace, mode="r+"): self.out_group.add_file(self.params.input_file.path_name) - if self.client: - self.distributed_misfits() - if self.params.forward_only: print("Running the forward simulation ...") predicted = self.inverse_problem.get_dpred( @@ -363,6 +365,12 @@ def _get_drivers_directives(self) -> list[directives.Directive]: self._directives = DirectivesFactory(self) directives_list = [] count = 0 + + if self.client: + misfits = np.hstack(self.data_misfit._workloads).tolist() # pylint: disable=protected-access + else: + misfits = self.data_misfit.objfcts + for driver in self.drivers: driver_directives = DirectivesFactory(driver) @@ -397,7 +405,9 @@ def _get_drivers_directives(self) -> list[directives.Directive]: ]: directive = getattr(driver_directives, name) if directive is not None: - directive.joint_index = [count + ii for ii in range(n_tiles)] + directive.joint_index = [ + misfits.index(fun) for fun in driver.data_misfit.objfcts + ] directives_list.append(directive) count += n_tiles @@ -466,3 +476,37 @@ def _update_log(self): for directive in self.directives.directive_list: if isinstance(directive, directives.SaveLogFilesGeoH5): directive.write(1) + + def _get_set_simulation_mappings(self, misfits, mapping): + """Collect attributes from misfit objects. + + :param misfits : List of misfit objects. + :param attribute : Attribute to collect. + + :return: List of collected attributes. + """ + futures = [] + for misfit in misfits.objfcts: + if self.client: + futures.append(self.client.submit(_get_set_mapping, misfit, mapping)) + else: + futures.append(_get_set_mapping(misfit, mapping)) + + if self.client: + mappings = [] + for future in self.client.gather(futures): + mappings.append(future) + return mappings + return futures + + +def _get_set_mapping(obj, mapping) -> list: + """Recursively get ordering from components of misfit function.""" + + mappings = [] + for fun in obj.simulation.mappings: + mappings.append(fun * mapping) + + obj.simulation.mappings = mappings + + return mappings diff --git a/simpeg_drivers/joint/joint_surveys/driver.py b/simpeg_drivers/joint/joint_surveys/driver.py index 7c325a6f5..b688df457 100644 --- a/simpeg_drivers/joint/joint_surveys/driver.py +++ b/simpeg_drivers/joint/joint_surveys/driver.py @@ -41,40 +41,34 @@ def __init__(self, params: JointSurveysOptions): def validate_create_models(self): """Check if all models were provided, otherwise use the first driver models.""" for model_type in self.models.model_types: - model_class = getattr(self.models, model_type) - if ( - model_class is None - and getattr(self.drivers[0].models, model_type) is not None - ): - model_local_values = getattr(self.drivers[0].models, model_type) - projection = ( - self.drivers[0] - .data_misfit.model_map.deriv(np.ones(self.models.n_active)) - .T - ) - norm = np.array(np.sum(projection, axis=1)).flatten() - model = (projection * model_local_values) / (norm + 1e-8) - - if self.drivers[0].models.is_sigma and model_type in [ - "starting", - "reference", - "lower_bound", - "upper_bound", - "conductivity", - ]: - model = np.exp(model) - if ( - getattr(self.params.models, "model_type", None) - == "Resistivity (Ohm-m)" - ): - logger.info( - "Converting input %s model to %s", - model_type, - getattr(self.params.models, "model_type", None), - ) - model = 1.0 / model - - getattr(self.models, f"_{model_type}").model = model + model = getattr(self.models, model_type) + if model is not None or getattr(self.drivers[0].models, model_type) is None: + continue + + model_local_values = getattr(self.drivers[0].models, model_type) + projection = ( + self.drivers[0] + .data_misfit.model_map.deriv(np.ones(self.models.n_active)) + .T + ) + norm = np.array(np.sum(projection, axis=1)).flatten() + model = (projection * model_local_values) / (norm + 1e-8) + + if self.drivers[0].models.is_sigma and model_type in [ + "starting_model", + "reference_model", + "lower_bound", + "upper_bound", + "conductivity_model", + ]: + model = np.exp(model) + if ( + getattr(self.params.models, "model_type", None) + == "Resistivity (Ohm-m)" + ): + model = 1.0 / model + + getattr(self.models, f"_{model_type}").model = model @property def wires(self): diff --git a/simpeg_drivers/joint/joint_surveys/options.py b/simpeg_drivers/joint/joint_surveys/options.py index 0b2c85485..296bdf77d 100644 --- a/simpeg_drivers/joint/joint_surveys/options.py +++ b/simpeg_drivers/joint/joint_surveys/options.py @@ -42,4 +42,6 @@ def all_groups_same_physical_property(self): "All physical properties must be the same. " f"Provided SimPEG groups for {physical_properties}." ) + + self.physical_property = physical_properties[0] return self diff --git a/simpeg_drivers/utils/nested.py b/simpeg_drivers/utils/nested.py index d50dced88..b8ecdf781 100644 --- a/simpeg_drivers/utils/nested.py +++ b/simpeg_drivers/utils/nested.py @@ -10,6 +10,7 @@ from __future__ import annotations import warnings +from collections.abc import Iterable from copy import copy from pathlib import Path @@ -18,7 +19,7 @@ from scipy.optimize import linear_sum_assignment from scipy.spatial import cKDTree from scipy.spatial.distance import cdist -from simpeg import data, data_misfit, maps, meta +from simpeg import data, data_misfit, maps, meta, objective_function from simpeg.electromagnetics.base_1d import BaseEM1DSimulation from simpeg.electromagnetics.frequency_domain.simulation import BaseFDEMSimulation from simpeg.electromagnetics.frequency_domain.sources import ( @@ -116,10 +117,10 @@ def create_misfit( local_indices, channel, tile_count, - n_split, padding_cells, inversion_type, forward_only, + shared_indices=None, ): """ Create a list of local misfits based on the local indices. @@ -129,65 +130,75 @@ def create_misfit( :param simulation: SimPEG simulation object. :param local_indices: Indices of the receiver locations belonging to the tile. - :param channel: Channel of the simulationm, for frequency systems only. + :param channel: Channel of the simulation, for frequency systems only. :param tile_count: Current tile ID, used to name the file on disk and for sampling of topography for 1D simulations. - :param n_split: Number of splits to create for the local indices. :param padding_cells: Number of padding cells around the local survey. :param inversion_type: Type of inversion, used to name the misfit (joint inversion). :param forward_only: If False, data is transferred to the local simulation. + :param shared_indices: Indices used to create a shared mesh for multiple tiles. :return: List of local misfits and data slices. """ - local_sim, _, _ = create_simulation( + # Split into smaller chunks + if isinstance(simulation, BaseEM1DSimulation) and isinstance( + local_indices, Iterable + ): + misfit_list = [ + create_misfit( + simulation, + ind, + channel, + tile_count, + padding_cells, + inversion_type, + forward_only, + ) + for ind in local_indices + ] + return objective_function.ComboObjectiveFunction(misfit_list) + + local_mesh = None + if shared_indices is not None: + local_survey = create_survey( + simulation.survey, indices=shared_indices, channel=channel + ) + local_mesh = create_mesh( + local_survey, + simulation.mesh, + minimum_level=3, + padding_cells=padding_cells, + ) + + local_sim, mapping = create_simulation( simulation, - None, + local_mesh, local_indices, channel=channel, tile_id=tile_count, padding_cells=padding_cells, ) + meta_simulation = meta.MetaSimulation(simulations=[local_sim], mappings=[mapping]) - local_mesh = getattr(local_sim, "mesh", None) - local_misfits = [] - data_slices = [] - for split_ind in np.array_split(local_indices, n_split): - local_sim, mapping, data_slice = create_simulation( - simulation, - local_mesh, - split_ind, - channel=channel, - tile_id=tile_count, - padding_cells=padding_cells, - ) - meta_simulation = meta.MetaSimulation( - simulations=[local_sim], mappings=[mapping] - ) + local_data = data.Data(local_sim.survey) + local_misfit = data_misfit.L2DataMisfit(local_data, meta_simulation) + if not forward_only: + local_data.dobs = local_sim.survey.dobs + local_data.standard_deviation = local_sim.survey.std + name = inversion_type + name += f": Tile {tile_count + 1}" + if channel is not None: + name += f": Channel {channel}" - local_data = data.Data(local_sim.survey) - lmisfit = data_misfit.L2DataMisfit(local_data, meta_simulation) - if not forward_only: - local_data.dobs = local_sim.survey.dobs - local_data.standard_deviation = local_sim.survey.std - name = inversion_type - name += f": Tile {tile_count + 1}" - if channel is not None: - name += f": Channel {channel}" + local_misfit.name = f"{name}" - lmisfit.name = f"{name}" - - local_misfits.append(lmisfit) - data_slices.append(data_slice) - - tile_count += 1 - - return local_misfits, data_slices + return local_misfit def create_simulation( simulation: BaseSimulation, - local_mesh: TreeMesh | None, - indices: np.ndarray, + local_mesh: TreeMesh | TensorMesh | None, + indices: np.ndarray | int, *, channel: int | None = None, tile_id: int | None = None, @@ -205,9 +216,7 @@ def create_simulation( :return: Local simulation, mapping and local ordering. """ - local_survey, local_ordering = create_survey( - simulation.survey, indices=indices, channel=channel - ) + local_survey = create_survey(simulation.survey, indices=indices, channel=channel) kwargs = {"survey": local_survey} if local_mesh is None: @@ -223,10 +232,10 @@ def create_simulation( local_mesh = simulation.layers_mesh actives = np.ones(simulation.layers_mesh.n_cells, dtype=bool) model_slice = np.arange( - tile_id, simulation.mesh.n_cells, simulation.mesh.shape_cells[0] + indices, simulation.mesh.n_cells, simulation.mesh.shape_cells[0] )[::-1] mapping = maps.Projection(simulation.mesh.n_cells, model_slice) - kwargs["topo"] = simulation.active_cells[tile_id] + kwargs["topo"] = simulation.active_cells[indices] args = () elif isinstance(local_mesh, TreeMesh): @@ -252,14 +261,14 @@ def create_simulation( kwargs["chiMap"] = maps.IdentityMap(nP=n_actives) kwargs["active_cells"] = actives - kwargs["sensitivity_path"] = ( + kwargs["sensitivity_path"] = str( Path(simulation.sensitivity_path).parent / f"Tile{tile_id}.zarr" ) if getattr(simulation, "_rhoMap", None) is not None: kwargs["rhoMap"] = maps.IdentityMap(nP=n_actives) kwargs["active_cells"] = actives - kwargs["sensitivity_path"] = ( + kwargs["sensitivity_path"] = str( Path(simulation.sensitivity_path).parent / f"Tile{tile_id}.zarr" ) @@ -297,7 +306,7 @@ def create_simulation( compute_dc_projections( simulation.survey.locations, simulation.survey.cells, local_sim ) - return local_sim, mapping, local_ordering + return local_sim, mapping def create_survey(survey, indices, channel=None): @@ -309,13 +318,6 @@ def create_survey(survey, indices, channel=None): :param channel: Channel of the survey, for frequency systems only. """ sources = [] - - # Return the subset of data that belongs to the tile - slice_inds = np.isin(survey.ordering[:, 2], indices) - if channel is not None: - ind = np.where(np.asarray(survey.frequencies) == channel)[0] - slice_inds *= np.isin(survey.ordering[:, 0], ind) - for src in survey.source_list or [survey.source_field]: if channel is not None and getattr(src, "frequency", None) != channel: continue @@ -349,7 +351,11 @@ def create_survey(survey, indices, channel=None): else: new_survey = type(survey)(sources) + slice_inds = slice_from_ordering(survey, indices, channel=channel) + new_survey.ordering = survey.ordering[slice_inds, :] if hasattr(survey, "dobs") and survey.dobs is not None: + # Return the subset of data that belongs to the tile + # For FEM surveys only new_survey.dobs = survey.dobs[ survey.ordering[slice_inds, 0], @@ -361,8 +367,30 @@ def create_survey(survey, indices, channel=None): survey.ordering[slice_inds, 1], survey.ordering[slice_inds, 2], ] + return new_survey + + +def slice_from_ordering( + survey: BaseSurvey, + receiver_indices: np.ndarray, + channel: int | None = None, +): + """ + Create an ordering array from the survey and slice indices. + + :param survey: SimPEG survey object. + :param slice_inds: Indices of the receivers belonging to the tile. + :param channel: Channel of the survey, for frequency systems only. + + :return: Ordering array. + """ + ordering_slice = np.isin(survey.ordering[:, 2], receiver_indices) + + if channel is not None: + ind = np.where(np.asarray(survey.frequencies) == channel)[0] + ordering_slice *= np.isin(survey.ordering[:, 0], ind) - return new_survey, survey.ordering[slice_inds, :] + return ordering_slice def tile_locations( diff --git a/simpeg_drivers/utils/tile_estimate.py b/simpeg_drivers/utils/tile_estimate.py index bd245a91e..51a1cf3e2 100644 --- a/simpeg_drivers/utils/tile_estimate.py +++ b/simpeg_drivers/utils/tile_estimate.py @@ -36,7 +36,6 @@ from simpeg_drivers import assets_path from simpeg_drivers.components.data import InversionData -from simpeg_drivers.components.factories.misfit_factory import MisfitFactory from simpeg_drivers.driver import InversionDriver from simpeg_drivers.utils.nested import create_simulation, tile_locations from simpeg_drivers.utils.utils import ( @@ -100,7 +99,7 @@ def get_results(self, max_tiles: int = 13) -> dict: # Get the median tile ind = int(np.argsort([len(tile) for tile in tiles])[int(count / 2)]) self.driver.params.compute.tile_spatial = int(count) - sim, mapping, _ = create_simulation( + sim, mapping = create_simulation( self.driver.simulation, None, tiles[ind], @@ -186,7 +185,7 @@ def active_cells(self) -> np.ndarray: """ if self._active_cells is None: self._active_cells = active_from_xyz( - self.driver.inversion_mesh.entity, self.data.locations, method="nearest" + self.driver.inversion_mesh.entity, self.data.locations ) return self._active_cells diff --git a/tests/data_test.py b/tests/data_test.py index c44acb89a..5490efb30 100644 --- a/tests/data_test.py +++ b/tests/data_test.py @@ -38,10 +38,11 @@ SurveyOptions, SyntheticsComponentsOptions, ) +from tests.utils.targets import get_workspace def get_mvi_params(tmp_path: Path, **kwargs) -> MVIInversionOptions: - with Workspace.create(tmp_path / "inversion_test.ui.geoh5") as geoh5: + with get_workspace(tmp_path / "inversion_test.ui.geoh5") as geoh5: opts = SyntheticsComponentsOptions( method="magnetic_vector", survey=SurveyOptions(n_stations=2, n_lines=2), @@ -159,7 +160,7 @@ def test_survey_data(tmp_path: Path): # test locations np.testing.assert_array_equal( - verts[np.hstack(driver.sorting), :2], + verts[np.hstack(driver.ordering[::3, -1]), :2], np.vstack( [ local_survey_a.receiver_locations[:, :2], @@ -174,7 +175,7 @@ def test_survey_data(tmp_path: Path): # test observed data expected_dobs = np.column_stack( [bxx_data.values, byy_data.values, bzz_data.values] - )[np.hstack(driver.sorting)].ravel() + )[np.hstack(driver.ordering[::3, -1])].ravel() survey_dobs = [local_survey_a.dobs, local_survey_b.dobs] np.testing.assert_array_equal(expected_dobs, np.hstack(survey_dobs)) @@ -257,7 +258,7 @@ def test_data_parts(tmp_path: Path): mesh=MeshOptions(), model=ModelOptions(background=0.01, anomaly=10.0), ) - with Workspace.create(tmp_path / "inversion_test.ui.geoh5") as geoh5: + with get_workspace(tmp_path / "inversion_test.ui.geoh5") as geoh5: components = SyntheticsComponents(geoh5, options=opts) params = DC3DForwardOptions.build( geoh5=geoh5, diff --git a/tests/driver_test.py b/tests/driver_test.py index 60c413a1a..5fd7e430d 100644 --- a/tests/driver_test.py +++ b/tests/driver_test.py @@ -22,6 +22,7 @@ SurveyOptions, SyntheticsComponentsOptions, ) +from tests.utils.targets import get_workspace def test_smallness_terms(tmp_path: Path): @@ -34,7 +35,7 @@ def test_smallness_terms(tmp_path: Path): mesh=MeshOptions(refinement=refinement), model=ModelOptions(anomaly=0.75), ) - with Workspace.create(tmp_path / "inversion_test.ui.geoh5") as geoh5: + with get_workspace(tmp_path / "inversion_test.ui.geoh5") as geoh5: components = SyntheticsComponents(geoh5, options=opts) gz = components.survey.add_data( @@ -73,7 +74,7 @@ def test_target_chi(tmp_path: Path, caplog): mesh=MeshOptions(refinement=refinement), model=ModelOptions(anomaly=0.75), ) - with Workspace.create(tmp_path / "inversion_test.ui.geoh5") as geoh5: + with get_workspace(tmp_path / "inversion_test.ui.geoh5") as geoh5: components = SyntheticsComponents(geoh5, options=opts) gz = components.survey.add_data( {"gz": {"values": np.ones(components.survey.n_vertices)}} diff --git a/tests/locations_test.py b/tests/locations_test.py index 3b57951f5..c9fbc2a8c 100644 --- a/tests/locations_test.py +++ b/tests/locations_test.py @@ -27,6 +27,7 @@ SurveyOptions, SyntheticsComponentsOptions, ) +from tests.utils.targets import get_workspace def get_mvi_params(tmp_path: Path) -> MVIInversionOptions: @@ -36,7 +37,7 @@ def get_mvi_params(tmp_path: Path) -> MVIInversionOptions: mesh=MeshOptions(refinement=(2,)), model=ModelOptions(background=0.0, anomaly=0.05), ) - with Workspace.create(tmp_path / "inversion_test.ui.geoh5") as geoh5: + with get_workspace(tmp_path / "inversion_test.ui.geoh5") as geoh5: components = SyntheticsComponents(geoh5, options=opts) tmi_channel = components.survey.add_data( {"tmi": {"values": np.random.rand(components.survey.n_vertices)}} diff --git a/tests/meshes_test.py b/tests/meshes_test.py index f8604fd5f..502ae3faf 100644 --- a/tests/meshes_test.py +++ b/tests/meshes_test.py @@ -29,6 +29,7 @@ SurveyOptions, SyntheticsComponentsOptions, ) +from tests.utils.targets import get_workspace def get_mvi_params(tmp_path: Path) -> MVIInversionOptions: @@ -38,7 +39,7 @@ def get_mvi_params(tmp_path: Path) -> MVIInversionOptions: mesh=MeshOptions(refinement=(2,)), model=ModelOptions(anomaly=0.05), ) - with Workspace.create(tmp_path / "inversion_test.ui.geoh5") as geoh5: + with get_workspace(tmp_path / "inversion_test.ui.geoh5") as geoh5: components = SyntheticsComponents(geoh5, options=opts) mesh = components.model.parent tmi_channel, gyz_channel = components.survey.add_data( diff --git a/tests/models_test.py b/tests/models_test.py index 1a6a03d65..c2f5421b5 100644 --- a/tests/models_test.py +++ b/tests/models_test.py @@ -33,6 +33,7 @@ SurveyOptions, SyntheticsComponentsOptions, ) +from tests.utils.targets import get_workspace def get_mvi_params(tmp_path: Path) -> MVIInversionOptions: @@ -42,7 +43,7 @@ def get_mvi_params(tmp_path: Path) -> MVIInversionOptions: mesh=MeshOptions(refinement=(2,)), model=ModelOptions(anomaly=0.05), ) - with Workspace.create(tmp_path / "inversion_test.ui.geoh5") as geoh5: + with get_workspace(tmp_path / "inversion_test.ui.geoh5") as geoh5: components = SyntheticsComponents(geoh5, options=opts) mesh = components.model.parent ref_inducing = mesh.add_data( diff --git a/tests/plate_simulation/runtest/driver_test.py b/tests/plate_simulation/runtest/driver_test.py index 351503f7a..6b8770f44 100644 --- a/tests/plate_simulation/runtest/driver_test.py +++ b/tests/plate_simulation/runtest/driver_test.py @@ -30,6 +30,7 @@ SurveyOptions, SyntheticsComponentsOptions, ) +from tests.utils.targets import get_workspace # pylint: disable=too-many-statements @@ -40,7 +41,7 @@ def test_plate_simulation_params_from_input_file(tmp_path): mesh=SyntheticsMeshOptions(), model=SyntheticsModelOptions(anomaly=0.0), ) - with Workspace.create(tmp_path / "inversion_test.ui.geoh5") as geoh5: + with get_workspace(tmp_path / "inversion_test.ui.geoh5") as geoh5: components = SyntheticsComponents(geoh5, options=opts) ifile = InputFile.read_ui_json( diff --git a/tests/plate_simulation/runtest/gravity_test.py b/tests/plate_simulation/runtest/gravity_test.py index 95ded8602..c0815ab7f 100644 --- a/tests/plate_simulation/runtest/gravity_test.py +++ b/tests/plate_simulation/runtest/gravity_test.py @@ -31,6 +31,7 @@ SurveyOptions, SyntheticsComponentsOptions, ) +from tests.utils.targets import get_workspace def test_gravity_plate_simulation(tmp_path): @@ -40,7 +41,7 @@ def test_gravity_plate_simulation(tmp_path): mesh=SyntheticsMeshOptions(), model=SyntheticsModelOptions(anomaly=0.0), ) - with Workspace.create(tmp_path / "inversion_test.ui.geoh5") as geoh5: + with get_workspace(tmp_path / "inversion_test.ui.geoh5") as geoh5: components = SyntheticsComponents(geoh5, options=opts) mesh_params = MeshOptions( u_cell_size=10.0, diff --git a/tests/run_tests/driver_2d_rotated_gradients_test.py b/tests/run_tests/driver_2d_rotated_gradients_test.py index 2107cdee2..fe6f77cd4 100644 --- a/tests/run_tests/driver_2d_rotated_gradients_test.py +++ b/tests/run_tests/driver_2d_rotated_gradients_test.py @@ -36,10 +36,7 @@ SurveyOptions, SyntheticsComponentsOptions, ) -from tests.utils.targets import ( - check_target, - get_inversion_output, -) +from tests.utils.targets import check_target, get_inversion_output, get_workspace # To test the full run and validate the inversion. diff --git a/tests/run_tests/driver_airborne_fem_1d_test.py b/tests/run_tests/driver_airborne_fem_1d_test.py index 9bf6b0526..5b9d4b254 100644 --- a/tests/run_tests/driver_airborne_fem_1d_test.py +++ b/tests/run_tests/driver_airborne_fem_1d_test.py @@ -35,10 +35,7 @@ SurveyOptions, SyntheticsComponentsOptions, ) -from tests.utils.targets import ( - check_target, - get_inversion_output, -) +from tests.utils.targets import check_target, get_inversion_output, get_workspace # To test the full run and validate the inversion. @@ -64,7 +61,7 @@ def test_fem_fwr_1d_run( ), model=ModelOptions(background=1e-4, anomaly=0.1), ) - with Workspace.create(tmp_path / "inversion_test.ui.geoh5") as geoh5: + with get_workspace(tmp_path / "inversion_test.ui.geoh5") as geoh5: components = SyntheticsComponents(geoh5=geoh5, options=opts) params = FDEM1DForwardOptions.build( geoh5=geoh5, diff --git a/tests/run_tests/driver_airborne_tem_1d_test.py b/tests/run_tests/driver_airborne_tem_1d_test.py index 9eb0244d6..fcf34a821 100644 --- a/tests/run_tests/driver_airborne_tem_1d_test.py +++ b/tests/run_tests/driver_airborne_tem_1d_test.py @@ -33,15 +33,12 @@ SurveyOptions, SyntheticsComponentsOptions, ) -from tests.utils.targets import ( - check_target, - get_inversion_output, -) +from tests.utils.targets import check_target, get_inversion_output, get_workspace # To test the full run and validate the inversion. # Move this file out of the test directory and run. -target_run = {"data_norm": 6.15712e-10, "phi_d": 109, "phi_m": 102000} +target_run = {"data_norm": 6.15712e-10, "phi_d": 57.8, "phi_m": 124000} def test_airborne_tem_1d_fwr_run( @@ -61,7 +58,7 @@ def test_airborne_tem_1d_fwr_run( ), model=ModelOptions(background=0.1), ) - with Workspace.create(tmp_path / "inversion_test.ui.geoh5") as geoh5: + with get_workspace(tmp_path / "inversion_test.ui.geoh5") as geoh5: components = SyntheticsComponents( geoh5, options=opts, diff --git a/tests/run_tests/driver_airborne_tem_test.py b/tests/run_tests/driver_airborne_tem_test.py index f29d0c4e1..86114119c 100644 --- a/tests/run_tests/driver_airborne_tem_test.py +++ b/tests/run_tests/driver_airborne_tem_test.py @@ -34,10 +34,7 @@ SurveyOptions, SyntheticsComponentsOptions, ) -from tests.utils.targets import ( - check_target, - get_inversion_output, -) +from tests.utils.targets import check_target, get_inversion_output, get_workspace # To test the full run and validate the inversion. @@ -57,7 +54,7 @@ def test_bad_waveform(tmp_path: Path): mesh=MeshOptions(refinement=refinement, padding_distance=400.0), model=ModelOptions(background=0.001), ) - with Workspace.create(tmp_path / "inversion_test.ui.geoh5") as geoh5: + with get_workspace(tmp_path / "inversion_test.ui.geoh5") as geoh5: components = SyntheticsComponents(geoh5, options=opts) params = TDEMForwardOptions.build( geoh5=geoh5, @@ -95,7 +92,7 @@ def test_airborne_tem_fwr_run( ), model=ModelOptions(background=0.001), ) - with Workspace.create(tmp_path / "inversion_test.ui.geoh5") as geoh5: + with get_workspace(tmp_path / "inversion_test.ui.geoh5") as geoh5: components = SyntheticsComponents(geoh5, options=opts) params = TDEMForwardOptions.build( geoh5=geoh5, diff --git a/tests/run_tests/driver_dc_2d_test.py b/tests/run_tests/driver_dc_2d_test.py index 6e32ec8f2..83e62d096 100644 --- a/tests/run_tests/driver_dc_2d_test.py +++ b/tests/run_tests/driver_dc_2d_test.py @@ -37,10 +37,7 @@ SurveyOptions, SyntheticsComponentsOptions, ) -from tests.utils.targets import ( - check_target, - get_inversion_output, -) +from tests.utils.targets import check_target, get_inversion_output, get_workspace # To test the full run and validate the inversion. @@ -62,7 +59,7 @@ def test_dc_2d_fwr_run( mesh=MeshOptions(refinement=refinement), model=ModelOptions(background=0.01, anomaly=10), ) - with Workspace.create(tmp_path / "inversion_test.ui.geoh5") as geoh5: + with get_workspace(tmp_path / "inversion_test.ui.geoh5") as geoh5: components = SyntheticsComponents(geoh5, options=opts) line_selection = LineSelectionOptions( diff --git a/tests/run_tests/driver_dc_b2d_rotated_gradients_test.py b/tests/run_tests/driver_dc_b2d_rotated_gradients_test.py index 0318d766d..68e2c74ac 100644 --- a/tests/run_tests/driver_dc_b2d_rotated_gradients_test.py +++ b/tests/run_tests/driver_dc_b2d_rotated_gradients_test.py @@ -43,10 +43,7 @@ SurveyOptions, SyntheticsComponentsOptions, ) -from tests.utils.targets import ( - check_target, - get_inversion_output, -) +from tests.utils.targets import check_target, get_inversion_output, get_workspace # To test the full run and validate the inversion. @@ -75,7 +72,7 @@ def test_dc_rotated_p3d_fwr_run( ), ), ) - with Workspace.create(tmp_path / "inversion_test.ui.geoh5") as geoh5: + with get_workspace(tmp_path / "inversion_test.ui.geoh5") as geoh5: components = SyntheticsComponents(geoh5, options=opts) params = DCBatch2DForwardOptions.build( geoh5=geoh5, diff --git a/tests/run_tests/driver_dc_b2d_test.py b/tests/run_tests/driver_dc_b2d_test.py index 99027fd08..626afb3fa 100644 --- a/tests/run_tests/driver_dc_b2d_test.py +++ b/tests/run_tests/driver_dc_b2d_test.py @@ -41,10 +41,7 @@ SurveyOptions, SyntheticsComponentsOptions, ) -from tests.utils.targets import ( - check_target, - get_inversion_output, -) +from tests.utils.targets import check_target, get_inversion_output, get_workspace # To test the full run and validate the inversion. @@ -66,7 +63,7 @@ def test_dc_p3d_fwr_run( mesh=MeshOptions(refinement=refinement), model=ModelOptions(background=0.01, anomaly=10.0), ) - with Workspace.create(tmp_path / "inversion_test.ui.geoh5") as geoh5: + with get_workspace(tmp_path / "inversion_test.ui.geoh5") as geoh5: components = SyntheticsComponents(geoh5=geoh5, options=opts) params = DCBatch2DForwardOptions.build( geoh5=geoh5, diff --git a/tests/run_tests/driver_dc_test.py b/tests/run_tests/driver_dc_test.py index 7db008fa5..827c110ff 100644 --- a/tests/run_tests/driver_dc_test.py +++ b/tests/run_tests/driver_dc_test.py @@ -32,10 +32,7 @@ SurveyOptions, SyntheticsComponentsOptions, ) -from tests.utils.targets import ( - check_target, - get_inversion_output, -) +from tests.utils.targets import check_target, get_inversion_output, get_workspace # To test the full run and validate the inversion. @@ -57,7 +54,7 @@ def test_dc_3d_fwr_run( mesh=MeshOptions(refinement=refinement), model=ModelOptions(background=0.01, anomaly=10.0), ) - with Workspace.create(tmp_path / "inversion_test.ui.geoh5") as geoh5: + with get_workspace(tmp_path / "inversion_test.ui.geoh5") as geoh5: components = SyntheticsComponents(geoh5, options=opts) # Randomly flip order of receivers @@ -156,7 +153,7 @@ def test_dc_single_line_fwr_run( mesh=MeshOptions(refinement=refinement), model=ModelOptions(background=0.01, anomaly=10.0), ) - with Workspace.create(tmp_path / "inversion_test.ui.geoh5") as geoh5: + with get_workspace(tmp_path / "inversion_test.ui.geoh5") as geoh5: components = SyntheticsComponents(geoh5, options=opts) params = DC3DForwardOptions.build( geoh5=geoh5, diff --git a/tests/run_tests/driver_fem_test.py b/tests/run_tests/driver_fem_test.py index f4fb09180..e82ff9673 100644 --- a/tests/run_tests/driver_fem_test.py +++ b/tests/run_tests/driver_fem_test.py @@ -37,10 +37,7 @@ SurveyOptions, SyntheticsComponentsOptions, ) -from tests.utils.targets import ( - check_target, - get_inversion_output, -) +from tests.utils.targets import check_target, get_inversion_output, get_workspace # To test the full run and validate the inversion. @@ -57,7 +54,7 @@ def test_fem_name_change(tmp_path, caplog): mesh=MeshOptions(refinement=(2,), padding_distance=400.0), model=ModelOptions(background=1e-3), ) - with Workspace.create(tmp_path / "inversion_test.ui.geoh5") as geoh5: + with get_workspace(tmp_path / "inversion_test.ui.geoh5") as geoh5: components = SyntheticsComponents(geoh5, options=opts) with caplog.at_level(logging.WARNING): FDEMForwardOptions.build( @@ -101,7 +98,7 @@ def test_fem_fwr_run( ), ), ) - with Workspace.create(tmp_path / "inversion_test.ui.geoh5") as geoh5: + with get_workspace(tmp_path / "inversion_test.ui.geoh5") as geoh5: components = SyntheticsComponents(geoh5, options=opts) params = FDEMForwardOptions.build( geoh5=geoh5, diff --git a/tests/run_tests/driver_grav_test.py b/tests/run_tests/driver_grav_test.py index 8c7917b72..3dc485391 100644 --- a/tests/run_tests/driver_grav_test.py +++ b/tests/run_tests/driver_grav_test.py @@ -34,10 +34,7 @@ SurveyOptions, SyntheticsComponentsOptions, ) -from tests.utils.targets import ( - check_target, - get_inversion_output, -) +from tests.utils.targets import check_target, get_inversion_output, get_workspace # To test the full run and validate the inversion. diff --git a/tests/run_tests/driver_ground_tem_test.py b/tests/run_tests/driver_ground_tem_test.py index f8c430ac0..3298da274 100644 --- a/tests/run_tests/driver_ground_tem_test.py +++ b/tests/run_tests/driver_ground_tem_test.py @@ -35,10 +35,7 @@ SurveyOptions, SyntheticsComponentsOptions, ) -from tests.utils.targets import ( - check_target, - get_inversion_output, -) +from tests.utils.targets import check_target, get_inversion_output, get_workspace logger = getLogger(__name__) @@ -78,7 +75,7 @@ def test_tiling_ground_tem( ), ), ) - with Workspace.create(tmp_path / "inversion_test.ui.geoh5") as geoh5: + with get_workspace(tmp_path / "inversion_test.ui.geoh5") as geoh5: components = SyntheticsComponents(geoh5, options=opts) params = TDEMForwardOptions.build( geoh5=geoh5, @@ -137,7 +134,7 @@ def test_ground_tem_fwr_run( ), ), ) - with Workspace.create(tmp_path / "inversion_test.ui.geoh5") as geoh5: + with get_workspace(tmp_path / "inversion_test.ui.geoh5") as geoh5: components = SyntheticsComponents(geoh5, options=opts) components.survey.transmitters.remove_cells([15]) params = TDEMForwardOptions.build( diff --git a/tests/run_tests/driver_ip_2d_test.py b/tests/run_tests/driver_ip_2d_test.py index b70c55b8e..47a09b057 100644 --- a/tests/run_tests/driver_ip_2d_test.py +++ b/tests/run_tests/driver_ip_2d_test.py @@ -33,10 +33,7 @@ SurveyOptions, SyntheticsComponentsOptions, ) -from tests.utils.targets import ( - check_target, - get_inversion_output, -) +from tests.utils.targets import check_target, get_inversion_output, get_workspace # To test the full run and validate the inversion. @@ -58,7 +55,7 @@ def test_ip_2d_fwr_run( mesh=MeshOptions(refinement=refinement), model=ModelOptions(background=1e-6, anomaly=1e-1), ) - with Workspace.create(tmp_path / "inversion_test.ui.geoh5") as geoh5: + with get_workspace(tmp_path / "inversion_test.ui.geoh5") as geoh5: components = SyntheticsComponents(geoh5, options=opts) params = IP2DForwardOptions.build( geoh5=geoh5, diff --git a/tests/run_tests/driver_ip_b2d_test.py b/tests/run_tests/driver_ip_b2d_test.py index 62d00cf68..0bf0eb80f 100644 --- a/tests/run_tests/driver_ip_b2d_test.py +++ b/tests/run_tests/driver_ip_b2d_test.py @@ -41,10 +41,7 @@ SurveyOptions, SyntheticsComponentsOptions, ) -from tests.utils.targets import ( - check_target, - get_inversion_output, -) +from tests.utils.targets import check_target, get_inversion_output, get_workspace # To test the full run and validate the inversion. @@ -66,7 +63,7 @@ def test_ip_p3d_fwr_run( mesh=MeshOptions(refinement=refinement), model=ModelOptions(background=1e-6, anomaly=1e-1), ) - with Workspace.create(tmp_path / "inversion_test.ui.geoh5") as geoh5: + with get_workspace(tmp_path / "inversion_test.ui.geoh5") as geoh5: components = SyntheticsComponents(geoh5, options=opts) params = IPBatch2DForwardOptions.build( diff --git a/tests/run_tests/driver_ip_test.py b/tests/run_tests/driver_ip_test.py index eaf2279a8..6f828a41a 100644 --- a/tests/run_tests/driver_ip_test.py +++ b/tests/run_tests/driver_ip_test.py @@ -31,10 +31,7 @@ SurveyOptions, SyntheticsComponentsOptions, ) -from tests.utils.targets import ( - check_target, - get_inversion_output, -) +from tests.utils.targets import check_target, get_inversion_output, get_workspace # To test the full run and validate the inversion. @@ -56,7 +53,7 @@ def test_ip_3d_fwr_run( mesh=MeshOptions(refinement=refinement), model=ModelOptions(background=1e-6, anomaly=1e-1), ) - with Workspace.create(tmp_path / "inversion_test.ui.geoh5") as geoh5: + with get_workspace(tmp_path / "inversion_test.ui.geoh5") as geoh5: components = SyntheticsComponents(geoh5, options=opts) params = IP3DForwardOptions.build( geoh5=geoh5, diff --git a/tests/run_tests/driver_joint_cross_gradient_test.py b/tests/run_tests/driver_joint_cross_gradient_test.py index c7d10530d..eb478245a 100644 --- a/tests/run_tests/driver_joint_cross_gradient_test.py +++ b/tests/run_tests/driver_joint_cross_gradient_test.py @@ -51,10 +51,7 @@ SurveyOptions, SyntheticsComponentsOptions, ) -from tests.utils.targets import ( - check_target, - get_inversion_output, -) +from tests.utils.targets import check_target, get_inversion_output, get_workspace # To test the full run and validate the inversion. @@ -80,7 +77,7 @@ def test_joint_cross_gradient_fwr_run( model=ModelOptions(anomaly=0.75, name="model A"), active=SyntheticsActiveCellsOptions(name="active A"), ) - with Workspace.create(tmp_path / "inversion_test.ui.geoh5") as geoh5: + with get_workspace(tmp_path / "inversion_test.ui.geoh5") as geoh5: components = SyntheticsComponents(geoh5, options=opts) params = GravityForwardOptions.build( geoh5=geoh5, diff --git a/tests/run_tests/driver_joint_pgi_homogeneous_test.py b/tests/run_tests/driver_joint_pgi_homogeneous_test.py index 244249951..73c3521cf 100644 --- a/tests/run_tests/driver_joint_pgi_homogeneous_test.py +++ b/tests/run_tests/driver_joint_pgi_homogeneous_test.py @@ -48,10 +48,7 @@ SurveyOptions, SyntheticsComponentsOptions, ) -from tests.utils.targets import ( - check_target, - get_inversion_output, -) +from tests.utils.targets import check_target, get_inversion_output, get_workspace # To test the full run and validate the inversion. @@ -79,7 +76,7 @@ def test_homogeneous_fwr_run( model=ModelOptions(anomaly=0.75, name="model A"), active=SyntheticsActiveCellsOptions(name="active A"), ) - with Workspace.create(tmp_path / "inversion_test.ui.geoh5") as geoh5: + with get_workspace(tmp_path / "inversion_test.ui.geoh5") as geoh5: components = SyntheticsComponents(geoh5, options=opts) # Change half the model diff --git a/tests/run_tests/driver_joint_surveys_test.py b/tests/run_tests/driver_joint_surveys_test.py index 1aa1fb8b1..3fe5c2804 100644 --- a/tests/run_tests/driver_joint_surveys_test.py +++ b/tests/run_tests/driver_joint_surveys_test.py @@ -14,6 +14,12 @@ from geoh5py.objects import Octree from geoh5py.workspace import Workspace +from simpeg_drivers.electricals.direct_current.three_dimensions.driver import ( + DC3DInversionDriver, +) +from simpeg_drivers.electricals.direct_current.three_dimensions.options import ( + DC3DInversionOptions, +) from simpeg_drivers.joint.joint_surveys import JointSurveysOptions from simpeg_drivers.joint.joint_surveys.driver import JointSurveyDriver from simpeg_drivers.options import ActiveCellsOptions @@ -34,10 +40,7 @@ SurveyOptions, SyntheticsComponentsOptions, ) -from tests.utils.targets import ( - check_target, - get_inversion_output, -) +from tests.utils.targets import check_target, get_inversion_output, get_workspace # To test the full run and validate the inversion. @@ -61,7 +64,7 @@ def test_joint_surveys_fwr_run( model=ModelOptions(anomaly=0.75, name="model A"), active=SyntheticsActiveCellsOptions(name="active A"), ) - with Workspace.create(tmp_path / "inversion_test.ui.geoh5") as geoh5: + with get_workspace(tmp_path / "inversion_test.ui.geoh5") as geoh5: components = SyntheticsComponents(geoh5, options=opts) params = GravityForwardOptions.build( geoh5=geoh5, @@ -189,6 +192,61 @@ def test_joint_surveys_inv_run( check_target(output, target_run) +def test_joint_surveys_conductivity_run( + tmp_path, +): + opts = SyntheticsComponentsOptions( + method="direct-current", + survey=SurveyOptions(n_stations=4, n_lines=4, name="survey A"), + mesh=MeshOptions(refinement=(2, 2, 2), name="mesh A"), + model=ModelOptions(anomaly=0.1, name="model A"), + active=SyntheticsActiveCellsOptions(name="active A"), + ) + + with Workspace.create(tmp_path / f"{__name__}.geoh5") as geoh5: + components = SyntheticsComponents(geoh5, options=opts) + + survey = components.survey + obs, uncrt = survey.add_data( + { + "Potentials": {"values": np.random.randn(survey.n_cells)}, + "Uncertainty": {"values": np.ones(survey.n_cells) * 1e-3}, + } + ) + params = DC3DInversionOptions.build( + geoh5=geoh5, + mesh=components.mesh, + topography_object=components.topography, + potential_channel=obs, + potential_uncertainty=uncrt, + data_object=components.survey, + starting_model=components.model, + reference_model=5.0, + model_type="Resistivity (Ohm-m)", + ) + driver_A = DC3DInversionDriver(params) + driver_B = DC3DInversionDriver(params) + + # Run the inverse + joint_params = JointSurveysOptions.build( + geoh5=geoh5, + active_cells=ActiveCellsOptions(topography_object=components.topography), + mesh=components.mesh, + group_a=driver_A.params.out_group, + group_b=driver_B.params.out_group, + starting_model=20.0, + # Default to Conductivity (S/m) + ) + + driver = JointSurveyDriver(joint_params) + assert np.isclose( + driver.models.reference_model[0], np.log(1 / 5.0) + ) # Took it from driver_A + assert np.isclose( + driver.models.starting_model[0], np.log(20.0) + ) # Took it from joint params + + if __name__ == "__main__": # Full run test_joint_surveys_fwr_run( diff --git a/tests/run_tests/driver_mag_test.py b/tests/run_tests/driver_mag_test.py index a6d95cf05..cd822cb61 100644 --- a/tests/run_tests/driver_mag_test.py +++ b/tests/run_tests/driver_mag_test.py @@ -33,10 +33,7 @@ SurveyOptions, SyntheticsComponentsOptions, ) -from tests.utils.targets import ( - check_target, - get_inversion_output, -) +from tests.utils.targets import check_target, get_inversion_output, get_workspace # To test the full run and validate the inversion. @@ -59,7 +56,7 @@ def test_susceptibility_fwr_run( mesh=MeshOptions(refinement=refinement), model=ModelOptions(anomaly=0.05), ) - with Workspace.create(tmp_path / "inversion_test.ui.geoh5") as geoh5: + with get_workspace(tmp_path / "inversion_test.ui.geoh5") as geoh5: components = SyntheticsComponents(geoh5, options=opts) inducing_field = (49999.8, 90.0, 0.0) diff --git a/tests/run_tests/driver_mt_test.py b/tests/run_tests/driver_mt_test.py index 51f859617..059fa193c 100644 --- a/tests/run_tests/driver_mt_test.py +++ b/tests/run_tests/driver_mt_test.py @@ -35,10 +35,7 @@ SurveyOptions, SyntheticsComponentsOptions, ) -from tests.utils.targets import ( - check_target, - get_inversion_output, -) +from tests.utils.targets import check_target, get_inversion_output, get_workspace # To test the full run and validate the inversion. @@ -107,7 +104,7 @@ def test_magnetotellurics_fwr_run( mesh=MeshOptions(cell_size=cell_size, refinement=refinement), model=ModelOptions(background=0.01), ) - with Workspace.create(tmp_path / "inversion_test.ui.geoh5") as geoh5: + with get_workspace(tmp_path / "inversion_test.ui.geoh5") as geoh5: components = SyntheticsComponents(geoh5, options=opts) params = MTForwardOptions.build( geoh5=geoh5, @@ -187,29 +184,47 @@ def test_magnetotellurics_run(tmp_path: Path, max_iterations=1, pytest=True): inactive_ind = run_ws.get_entity("active_cells")[0].values == 0 assert np.all(nan_ind == inactive_ind) - # test that one channel works - data_kwargs = {k: v for k, v in data_kwargs.items() if "zxx_real" in k} - geoh5.open() - params = MTInversionOptions.build( - geoh5=geoh5, - mesh=geoh5.get_entity("mesh")[0], - topography_object=topography, - data_object=survey, - starting_model=0.01, - background_conductivity=1e-2, - max_global_iterations=0, - **data_kwargs, + +def test_magnetotellurics_tiles( + tmp_path: Path, + n_grid_points=32, + refinement=(2,), + cell_size=(20.0, 20.0, 20.0), +): + workpath = tmp_path / f"{__name__}.geoh5" + opts = SyntheticsComponentsOptions( + method="magnetotellurics", + survey=SurveyOptions(n_stations=n_grid_points, n_lines=n_grid_points), + mesh=MeshOptions(cell_size=cell_size, refinement=refinement), + model=ModelOptions(background=0.01), ) - params.write_ui_json(path=tmp_path / "Inv_run.ui.json") - MTInversionDriver.start(str(tmp_path / "Inv_run.ui.json")) + with Workspace.create(workpath) as geoh5: + components = SyntheticsComponents(geoh5, options=opts) + geoh5.open() + params = MTForwardOptions.build( + geoh5=geoh5, + mesh=components.mesh, + topography_object=components.topography, + data_object=components.survey, + starting_model=components.model, + background_conductivity=1e-2, + zxx_real_channel_bool=True, + zxx_imag_channel_bool=True, + zxy_real_channel_bool=True, + zxy_imag_channel_bool=True, + zyx_real_channel_bool=True, + zyx_imag_channel_bool=True, + zyy_real_channel_bool=True, + zyy_imag_channel_bool=True, + tile_spatial=3, + solver_type="Mumps", + ) driver = MTInversionDriver(params) # Fake a distributed cluster - n_workers = 5 - params.n_workers = n_workers - driver._workers = ["abc"] * n_workers # pylint: disable=protected-access - assert len(driver.data_misfit.objfcts) == 5 + driver._workers = ["abc"] * 4 # pylint: disable=protected-access + assert len(driver.data_misfit.objfcts) == 12 if __name__ == "__main__": diff --git a/tests/run_tests/driver_mvi_test.py b/tests/run_tests/driver_mvi_test.py index 48fc2cec5..5308d2635 100644 --- a/tests/run_tests/driver_mvi_test.py +++ b/tests/run_tests/driver_mvi_test.py @@ -37,16 +37,13 @@ SurveyOptions, SyntheticsComponentsOptions, ) -from tests.utils.targets import ( - check_target, - get_inversion_output, -) +from tests.utils.targets import check_target, get_inversion_output, get_workspace # To test the full run and validate the inversion. # Move this file out of the test directory and run. -target_mvi_run = {"data_norm": 149.10117594929326, "phi_d": 58.6, "phi_m": 0.0079} +target_mvi_run = {"data_norm": 149.10117594929326, "phi_d": 19.3, "phi_m": 0.00797} def test_magnetic_vector_fwr_run( @@ -63,7 +60,7 @@ def test_magnetic_vector_fwr_run( mesh=MeshOptions(refinement=refinement), model=ModelOptions(anomaly=0.05), ) - with Workspace.create(tmp_path / "inversion_test.ui.geoh5") as geoh5: + with get_workspace(tmp_path / "inversion_test.ui.geoh5") as geoh5: components = SyntheticsComponents(geoh5, options=opts) # Unitest dealing with Curve @@ -175,7 +172,7 @@ def test_magnetic_vector_run( mesh = out_group.get_entity("mesh")[0] assert len(mesh.property_groups) == 6 assert len(mesh.fetch_property_group("Iteration_0").properties) == 2 - assert len(mesh.fetch_property_group("LP models").properties) == 6 + assert len(mesh.fetch_property_group("LP models").properties) == 3 assert ( mesh.fetch_property_group("Iteration_1").property_group_type == GroupTypeEnum.DIPDIR diff --git a/tests/run_tests/driver_rotated_gradients_test.py b/tests/run_tests/driver_rotated_gradients_test.py index 8b29ded0d..be4f32a2f 100644 --- a/tests/run_tests/driver_rotated_gradients_test.py +++ b/tests/run_tests/driver_rotated_gradients_test.py @@ -35,10 +35,7 @@ SurveyOptions, SyntheticsComponentsOptions, ) -from tests.utils.targets import ( - check_target, - get_inversion_output, -) +from tests.utils.targets import check_target, get_inversion_output, get_workspace # To test the full run and validate the inversion. @@ -76,7 +73,7 @@ def test_gravity_rotated_grad_fwr_run( ), ), ) - with Workspace.create(tmp_path / "inversion_test.ui.geoh5") as geoh5: + with get_workspace(tmp_path / "inversion_test.ui.geoh5") as geoh5: components = SyntheticsComponents(geoh5, options=opts) params = GravityForwardOptions.build( diff --git a/tests/run_tests/driver_tile_estimator_test.py b/tests/run_tests/driver_tile_estimator_test.py index 70b40e84f..c7955b204 100644 --- a/tests/run_tests/driver_tile_estimator_test.py +++ b/tests/run_tests/driver_tile_estimator_test.py @@ -28,6 +28,7 @@ ) from simpeg_drivers.utils.tile_estimate import TileEstimator, TileParameters from simpeg_drivers.utils.utils import simpeg_group_to_driver +from tests.utils.targets import get_workspace def test_tile_estimator_run( @@ -44,7 +45,7 @@ def test_tile_estimator_run( mesh=MeshOptions(refinement=refinement), model=ModelOptions(anomaly=0.05), ) - with Workspace.create(tmp_path / "inversion_test.ui.geoh5") as geoh5: + with get_workspace(tmp_path / "inversion_test.ui.geoh5") as geoh5: components = SyntheticsComponents(geoh5, options=opts) tmi_channel = components.survey.add_data( { diff --git a/tests/run_tests/driver_tipper_test.py b/tests/run_tests/driver_tipper_test.py index e865f7cb9..fd34ff463 100644 --- a/tests/run_tests/driver_tipper_test.py +++ b/tests/run_tests/driver_tipper_test.py @@ -33,10 +33,7 @@ SurveyOptions, SyntheticsComponentsOptions, ) -from tests.utils.targets import ( - check_target, - get_inversion_output, -) +from tests.utils.targets import check_target, get_inversion_output, get_workspace # To test the full run and validate the inversion. @@ -60,7 +57,7 @@ def test_tipper_fwr_run( mesh=MeshOptions(cell_size=cell_size, refinement=refinement), model=ModelOptions(background=100.0), ) - with Workspace.create(tmp_path / "inversion_test.ui.geoh5") as geoh5: + with get_workspace(tmp_path / "inversion_test.ui.geoh5") as geoh5: components = SyntheticsComponents(geoh5, options=opts) params = TipperForwardOptions.build( diff --git a/tests/run_tests/sensitivity_cutoff_test.py b/tests/run_tests/sensitivity_cutoff_test.py index 945f5e3bb..b1de45121 100644 --- a/tests/run_tests/sensitivity_cutoff_test.py +++ b/tests/run_tests/sensitivity_cutoff_test.py @@ -30,6 +30,7 @@ SurveyOptions, SyntheticsComponentsOptions, ) +from tests.utils.targets import get_workspace def setup_inversion_results( @@ -45,7 +46,7 @@ def setup_inversion_results( mesh=MeshOptions(refinement=refinement), model=ModelOptions(anomaly=0.75), ) - with Workspace.create(tmp_path / "inversion_test.ui.geoh5") as geoh5: + with get_workspace(tmp_path / "inversion_test.ui.geoh5") as geoh5: components = SyntheticsComponents(geoh5, options=opts) # Run the inverse with save_sensitivities=True diff --git a/tests/topography_test.py b/tests/topography_test.py index c3c0b2bb3..ed187d923 100644 --- a/tests/topography_test.py +++ b/tests/topography_test.py @@ -25,6 +25,7 @@ SurveyOptions, SyntheticsComponentsOptions, ) +from tests.utils.targets import get_workspace def test_get_locations(tmp_path: Path): @@ -34,7 +35,7 @@ def test_get_locations(tmp_path: Path): mesh=MeshOptions(refinement=(2,)), model=ModelOptions(anomaly=0.05), ) - with Workspace.create(tmp_path / "inversion_test.ui.geoh5") as geoh5: + with get_workspace(tmp_path / "inversion_test.ui.geoh5") as geoh5: components = SyntheticsComponents(geoh5, options=opts) tmi_channel, gyz_channel = components.survey.add_data( { diff --git a/tests/uijson_test.py b/tests/uijson_test.py index 486d3a813..2c836c308 100644 --- a/tests/uijson_test.py +++ b/tests/uijson_test.py @@ -36,6 +36,7 @@ SurveyOptions, SyntheticsComponentsOptions, ) +from tests.utils.targets import get_workspace logger = logging.getLogger(__name__) @@ -252,7 +253,7 @@ def test_gravity_uijson(tmp_path): opts = SyntheticsComponentsOptions( method="gravity", model=ModelOptions(anomaly=0.75) ) - with Workspace.create(tmp_path / "inversion_test.ui.geoh5") as geoh5: + with get_workspace(tmp_path / "inversion_test.ui.geoh5") as geoh5: components = SyntheticsComponents(geoh5, options=opts) gz_channel = components.survey.add_data( {"gz": {"values": np.ones(components.survey.n_vertices)}} diff --git a/tests/utils/targets.py b/tests/utils/targets.py index ca12a074c..87ef585b0 100644 --- a/tests/utils/targets.py +++ b/tests/utils/targets.py @@ -9,6 +9,8 @@ # ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' import warnings +from contextlib import contextmanager +from pathlib import Path from uuid import UUID import numpy as np @@ -70,3 +72,16 @@ def check_target(output: dict, target: dict, tolerance=0.05): np.testing.assert_array_less( np.abs(output["phi_d"][1] - target["phi_d"]) / target["phi_d"], tolerance ) + + +@contextmanager +def get_workspace(filepath: Path | str): + try: + if filepath.is_file(): + filepath.unlink() + geoh5 = Workspace.create(filepath) + + yield geoh5 + + finally: + geoh5.close() diff --git a/tests/version_test.py b/tests/version_test.py index 7f967740e..009cfd694 100644 --- a/tests/version_test.py +++ b/tests/version_test.py @@ -45,7 +45,6 @@ def test_version_is_consistent(): def _version_module_exists(): try: importlib.import_module("simpeg_drivers._version") - return True except ModuleNotFoundError: return False