diff --git a/.codespellignore b/.codespellignore index ca33a46..07f0f60 100644 --- a/.codespellignore +++ b/.codespellignore @@ -1,2 +1,3 @@ ba nd +astroid diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..db51f47 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,33 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates + +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + target-branch: "develop" + schedule: + interval: "weekly" + cooldown: + default-days: 1 + groups: + github-actions: + patterns: + - actions/* + mirageo-ci-tools: + patterns: + - MiraGeoscience/CI-tools/.github/actions/* + - MiraGeoscience/CI-tools/.github/workflows/* + - package-ecosystem: "pre-commit" + directory: "/" + target-branch: "develop" + schedule: + interval: "weekly" + cooldown: + default-days: 1 + groups: + pre-commit-hooks: + patterns: + - "*" diff --git a/.github/workflows/dependabot-auto-merge.yml b/.github/workflows/dependabot-auto-merge.yml new file mode 100644 index 0000000..e929723 --- /dev/null +++ b/.github/workflows/dependabot-auto-merge.yml @@ -0,0 +1,16 @@ +name: Dependabot auto-merge + +on: + pull_request: + types: [opened, synchronize, reopened] + +jobs: + call-workflow-dependabot-auto-merge: + uses: MiraGeoscience/CI-tools/.github/workflows/reusable-dependabot-auto-merge.yml@9e46551783cee8a8c2c7a30794af4b98e2671729 # v3.13.6 + permissions: + contents: write + pull-requests: write + statuses: write + checks: read + with: + dependabot-groups: mirageo-ci-tools,pre-commit-hooks diff --git a/.github/workflows/pr_jira_actions.yml b/.github/workflows/pr_jira_actions.yml new file mode 100644 index 0000000..bcc83f3 --- /dev/null +++ b/.github/workflows/pr_jira_actions.yml @@ -0,0 +1,17 @@ +name: JIRA actions + +on: + pull_request: + types: [opened, synchronize, reopened, ready_for_review, edited] + +jobs: + call-workflow-pr_jira_actions: + uses: MiraGeoscience/CI-tools/.github/workflows/reusable-jira-pr_actions.yml@9e46551783cee8a8c2c7a30794af4b98e2671729 # v3.13.6 + permissions: + contents: read + pull-requests: write + statuses: write + secrets: + JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }} + JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }} + JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }} diff --git a/.github/workflows/security_scan.yml b/.github/workflows/security_scan.yml new file mode 100644 index 0000000..e6d4ef2 --- /dev/null +++ b/.github/workflows/security_scan.yml @@ -0,0 +1,42 @@ +name: Security Scan + +on: + pull_request: + types: [opened, synchronize, reopened, ready_for_review] + branches: + - develop + - main + - release/** + - feature/** + - hotfix/** + push: + branches: + - develop + - main + - release/** + - feature/** + - hotfix/** + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +permissions: {} + +jobs: + call-workflow-zizmor-annotate: + name: Zizmor analysis (annotate) + if: ${{ github.event_name == 'pull_request' }} + permissions: + checks: write + contents: read + actions: read + uses: MiraGeoscience/CI-tools/.github/workflows/reusable-zizmor-annotate.yml@9e46551783cee8a8c2c7a30794af4b98e2671729 # v3.13.6 + + call-workflow-zizmor: + name: Zizmor analysis + if: ${{ github.event_name != 'pull_request' }} + permissions: + contents: read + actions: read + uses: MiraGeoscience/CI-tools/.github/workflows/reusable-zizmor-security.yml@9e46551783cee8a8c2c7a30794af4b98e2671729 # v3.13.6 diff --git a/.github/workflows/static_analysis.yml b/.github/workflows/static_analysis.yml new file mode 100644 index 0000000..1b5ebe6 --- /dev/null +++ b/.github/workflows/static_analysis.yml @@ -0,0 +1,31 @@ +name: Static analysis + +on: + pull_request: + types: [opened, synchronize, reopened, ready_for_review] + branches: + - develop + - main + - release/** + - feature/** + - hotfix/** + push: + branches: + - develop + - main + - release/** + - feature/** + - hotfix/** + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + call-workflow-pre-commit: + name: Pre-Commit + uses: MiraGeoscience/CI-tools/.github/workflows/reusable-pre_commit.yml@9e46551783cee8a8c2c7a30794af4b98e2671729 # v3.13.6 + permissions: + contents: read + with: + python-version: "3.12" diff --git a/.github/workflows/wip-status.yml b/.github/workflows/wip-status.yml new file mode 100644 index 0000000..11a8ab8 --- /dev/null +++ b/.github/workflows/wip-status.yml @@ -0,0 +1,12 @@ +name: WIP status + +on: + pull_request: + types: [opened, synchronize, reopened, ready_for_review, edited] + +jobs: + call-workflow-wip-status: + uses: MiraGeoscience/CI-tools/.github/workflows/reusable-wip-status.yml@9e46551783cee8a8c2c7a30794af4b98e2671729 # v3.13.6 + permissions: + contents: read + statuses: write diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index ea012e1..c75f3c7 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -11,11 +11,6 @@ ci: autoupdate_schedule: quarterly repos: -- repo: https://github.com/python-poetry/poetry - rev: 2.4.1 - hooks: - - id: poetry-check - args: [--lock, --no-plugins] - repo: https://github.com/hadialqattan/pycln rev: v2.6.0 hooks: @@ -41,22 +36,7 @@ repos: types-toml, types-PyYAML, ] - exclude: | - (?x)(^ - geoh5py/interfaces/__init__.py| - geoh5py/handlers/__init__.py| - geoh5py/interfaces/.*| - geoh5py/handlers/.*| - tests/.*| - geoh5py/shared/utils.py| - geoh5py/shared/entity_type.py| - geoh5py/data/data_type.py| - geoh5py/objects/cell_object.py| - geoh5py/shared/concatenation/drillhole.py| - geoh5py/shared/concatenation/concatenator.py| - geoh5py/workspace/workspace.py| - geoh5py/ui_json/validation.py - )$ + exclude: ^tests/ - repo: https://github.com/codingjoe/relint rev: 3.3.1 hooks: @@ -66,25 +46,24 @@ repos: rev: v1.1.0 hooks: - id: check-copyright - entry: python devtools/check-copyright.py - exclude: (^\.|\.yml|\.toml|^setup.py$|(docs|assets|environments)/) + files: (^LICENSE|^README(|-dev)\.rst|\.py|\.pyi)$ + exclude: (^\.|^docs/|^assets/) - id: prepare-commit-msg - id: check-commit-msg - repo: local hooks: - id: pylint name: pylint - entry: poetry run pylint + entry: .\\devtools\\conda_env_pylint.bat language: system require_serial: true # pylint does its own parallelism - types: [text] - types_or: [python, pyi] - exclude: ^(devtools|docs|geoh5py/interfaces|geoh5py/handlers)/ + types: [python] + exclude: ^(devtools|docs)/ - repo: https://github.com/codespell-project/codespell rev: v2.4.2 hooks: - id: codespell - exclude: (\.lock|\.ipynb|^THIRD_PARTY_SOFTWARE\.rst)$ + exclude: (\.lock|\.ipynb|\.bib|^THIRD_PARTY_SOFTWARE\.rst)$ entry: codespell -I .codespellignore - repo: https://github.com/pre-commit/pre-commit-hooks rev: v6.0.0 diff --git a/assets/mag_dipole_app.py b/assets/mag_dipole_app.py index 01dc7c9..04873ee 100644 --- a/assets/mag_dipole_app.py +++ b/assets/mag_dipole_app.py @@ -107,7 +107,9 @@ def vectorize(entity): # Loop over the dipoles fields = np.zeros_like(observations) - for source, moment, inclination, declination in zip(dipoles, mom, inc, dec): + for source, moment, inclination, declination in zip( + dipoles, mom, inc, dec, strict=True + ): fields += b_field(source, observations, moment, inclination, declination) tmi = tmi_projection(fields, (earth_inc, earth_dec)) diff --git a/assets/training/0-core.ipynb b/assets/training/0-core.ipynb index 0b06b2f..aee6c1f 100644 --- a/assets/training/0-core.ipynb +++ b/assets/training/0-core.ipynb @@ -283,4 +283,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +} diff --git a/assets/training/1-collections.ipynb b/assets/training/1-collections.ipynb index feec476..1c6484e 100644 --- a/assets/training/1-collections.ipynb +++ b/assets/training/1-collections.ipynb @@ -308,6 +308,7 @@ "source": [ "import numpy as np\n", "\n", + "\n", "array = np.array([[1, 2, 3], [4, 5, 6]]) # Create a 2D array\n", "array.sum(axis=0)" ] @@ -382,4 +383,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +} diff --git a/assets/training/2-functions.ipynb b/assets/training/2-functions.ipynb index e33f856..c5a9c1d 100644 --- a/assets/training/2-functions.ipynb +++ b/assets/training/2-functions.ipynb @@ -351,4 +351,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +} diff --git a/assets/training/3-classes.ipynb b/assets/training/3-classes.ipynb index 2d35c1e..15501af 100644 --- a/assets/training/3-classes.ipynb +++ b/assets/training/3-classes.ipynb @@ -252,4 +252,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +} diff --git a/assets/training/4-modules.ipynb b/assets/training/4-modules.ipynb index 242660f..770e4ac 100644 --- a/assets/training/4-modules.ipynb +++ b/assets/training/4-modules.ipynb @@ -83,4 +83,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +} diff --git a/assets/training/5-geoh5_api.ipynb b/assets/training/5-geoh5_api.ipynb index 185e886..5870f0d 100644 --- a/assets/training/5-geoh5_api.ipynb +++ b/assets/training/5-geoh5_api.ipynb @@ -21,19 +21,22 @@ }, { "cell_type": "code", + "execution_count": null, "id": "7c9d3cb4", "metadata": {}, + "outputs": [], "source": [ "from __future__ import annotations\n", "\n", + "import shutil\n", + "import tempfile\n", + "from pathlib import Path\n", + "\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "from geoh5py.objects import Points\n", "from geoh5py.workspace import Workspace\n", "\n", - "import shutil\n", - "import tempfile\n", - "from pathlib import Path\n", "\n", "source_file = \"../../assets/suncity.geoh5\"\n", "\n", @@ -43,9 +46,7 @@ "dest_path = Path(tmp_dir.name) / Path(source_file).name\n", "copied_file_path = shutil.copy2(source_file, dest_path)\n", "print(copied_file_path)" - ], - "outputs": [], - "execution_count": null + ] }, { "cell_type": "markdown", @@ -77,15 +78,15 @@ }, { "cell_type": "code", + "execution_count": null, "id": "11f786f0", "metadata": { "tags": [ "clear-form" ] }, - "source": [], "outputs": [], - "execution_count": null + "source": [] }, { "cell_type": "markdown", @@ -99,15 +100,15 @@ }, { "cell_type": "code", + "execution_count": null, "id": "4a021b4a", "metadata": { "tags": [ "clear-form" ] }, - "source": [], "outputs": [], - "execution_count": null + "source": [] }, { "cell_type": "markdown", @@ -136,15 +137,15 @@ }, { "cell_type": "code", + "execution_count": null, "id": "ba689201", "metadata": { "tags": [ "clear-form" ] }, - "source": [], "outputs": [], - "execution_count": null + "source": [] }, { "cell_type": "markdown", @@ -156,15 +157,15 @@ }, { "cell_type": "code", + "execution_count": null, "id": "cb475a1e", "metadata": { "tags": [ "clear-form" ] }, - "source": [], "outputs": [], - "execution_count": null + "source": [] }, { "cell_type": "markdown", @@ -176,15 +177,15 @@ }, { "cell_type": "code", + "execution_count": null, "id": "8e42a9e9", "metadata": { "tags": [ "clear-form" ] }, - "source": [], "outputs": [], - "execution_count": null + "source": [] }, { "cell_type": "markdown", @@ -196,15 +197,15 @@ }, { "cell_type": "code", + "execution_count": null, "id": "d78d212f", "metadata": { "tags": [ "clear-form" ] }, - "source": [], "outputs": [], - "execution_count": null + "source": [] }, { "cell_type": "markdown", @@ -217,15 +218,15 @@ }, { "cell_type": "code", + "execution_count": null, "id": "df642611", "metadata": { "tags": [ "clear-form" ] }, - "source": [], "outputs": [], - "execution_count": null + "source": [] }, { "cell_type": "markdown", @@ -238,15 +239,15 @@ }, { "cell_type": "code", + "execution_count": null, "id": "694490e4", "metadata": { "tags": [ "clear-form" ] }, - "source": [], "outputs": [], - "execution_count": null + "source": [] }, { "cell_type": "markdown", @@ -258,15 +259,15 @@ }, { "cell_type": "code", + "execution_count": null, "id": "ef4d05ae", "metadata": { "tags": [ "clear-form" ] }, - "source": [], "outputs": [], - "execution_count": null + "source": [] }, { "cell_type": "markdown", @@ -279,15 +280,15 @@ }, { "cell_type": "code", + "execution_count": null, "id": "b6081761", "metadata": { "tags": [ "clear-form" ] }, - "source": [], "outputs": [], - "execution_count": null + "source": [] }, { "cell_type": "markdown", @@ -310,15 +311,15 @@ }, { "cell_type": "code", + "execution_count": null, "id": "b77c6801", "metadata": { "tags": [ "clear-form" ] }, - "source": [], "outputs": [], - "execution_count": null + "source": [] }, { "cell_type": "markdown", @@ -342,15 +343,15 @@ }, { "cell_type": "code", + "execution_count": null, "id": "80ba771e", "metadata": { "tags": [ "clear-form" ] }, - "source": [], "outputs": [], - "execution_count": null + "source": [] }, { "cell_type": "markdown", @@ -362,13 +363,13 @@ }, { "cell_type": "code", + "execution_count": null, "id": "df658cac", "metadata": {}, + "outputs": [], "source": [ "workspace.close()" - ], - "outputs": [], - "execution_count": null + ] }, { "cell_type": "markdown", @@ -413,4 +414,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +} diff --git a/assets/training/6-uijson.ipynb b/assets/training/6-uijson.ipynb index 834ab15..ca375c7 100644 --- a/assets/training/6-uijson.ipynb +++ b/assets/training/6-uijson.ipynb @@ -184,4 +184,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +} diff --git a/assets/training/7-mag_dipole_app.ipynb b/assets/training/7-mag_dipole_app.ipynb index 3af8729..0781890 100644 --- a/assets/training/7-mag_dipole_app.ipynb +++ b/assets/training/7-mag_dipole_app.ipynb @@ -86,25 +86,28 @@ }, { "cell_type": "code", + "execution_count": null, "id": "f7d1ce79282a571e", "metadata": {}, + "outputs": [], "source": [ "# Import all the necessary packages for this notebook and create a temporary copy of the original\n", "from __future__ import annotations\n", + "\n", "import numpy as np\n", "from geoh5py.data import Data, DataAssociationEnum, PrimitiveTypeEnum\n", - "from geoh5py.objects import ObjectBase, Grid2D, Points\n", + "from geoh5py.objects import Grid2D, ObjectBase, Points\n", "from geoh5py.ui_json import UIJson, forms\n", "from geoh5py.ui_json.utils import monitored_directory_copy\n", "from geoh5py.workspace import Workspace" - ], - "outputs": [], - "execution_count": null + ] }, { "cell_type": "code", + "execution_count": null, "id": "3183bf87", "metadata": {}, + "outputs": [], "source": [ "def inclination_declination_2_xyz(inclination, declination):\n", " \"\"\"Convert inclination and declination angles (degrees) to unit vector (xyz).\"\"\"\n", @@ -113,9 +116,7 @@ " xyz = np.c_[np.sin(phi) * np.cos(theta), np.sin(phi) * np.sin(theta), np.cos(phi)]\n", "\n", " return xyz" - ], - "outputs": [], - "execution_count": null + ] }, { "cell_type": "markdown", @@ -138,15 +139,15 @@ }, { "cell_type": "code", + "execution_count": null, "id": "50bf6890", "metadata": { "tags": [ "clear-form" ] }, - "source": [], "outputs": [], - "execution_count": null + "source": [] }, { "cell_type": "markdown", @@ -158,24 +159,26 @@ }, { "cell_type": "code", + "execution_count": null, "id": "0ea27211-50b4-4a53-8de2-b8c1ff7eddbf", "metadata": {}, + "outputs": [], "source": [ "import shutil\n", "import tempfile\n", "from pathlib import Path\n", "\n", + "\n", "# Create a copy of the original file to avoid corrupting it\n", "source_file = \"../../assets/suncity.geoh5\"\n", "tmp_dir = tempfile.TemporaryDirectory()\n", "dest_path = Path(tmp_dir.name) / Path(source_file).name\n", "copied_file_path = shutil.copy2(source_file, dest_path)" - ], - "outputs": [], - "execution_count": null + ] }, { "cell_type": "code", + "execution_count": null, "id": "2fa94446", "metadata": { "lines_to_end_of_cell_marker": 2, @@ -183,9 +186,8 @@ "clear-form" ] }, - "source": [], "outputs": [], - "execution_count": null + "source": [] }, { "cell_type": "markdown", @@ -209,16 +211,16 @@ }, { "cell_type": "code", + "execution_count": null, "id": "5cc39ad6", "metadata": {}, + "outputs": [], "source": [ "def tmi_projection(b_components, earth_field):\n", " \"\"\"Project magnetic field onto Earth's field.\"\"\"\n", " h0 = inclination_declination_2_xyz(earth_field[0], earth_field[1])\n", " return np.dot(h0, b_components.T).flatten()" - ], - "outputs": [], - "execution_count": null + ] }, { "cell_type": "markdown", @@ -230,15 +232,15 @@ }, { "cell_type": "code", + "execution_count": null, "id": "7b360a2c", "metadata": { "tags": [ "clear-form" ] }, - "source": [], "outputs": [], - "execution_count": null + "source": [] }, { "cell_type": "markdown", @@ -254,15 +256,15 @@ }, { "cell_type": "code", + "execution_count": null, "id": "862e2e83", "metadata": { "tags": [ "clear-form" ] }, - "source": [], "outputs": [], - "execution_count": null + "source": [] }, { "cell_type": "markdown", @@ -278,15 +280,15 @@ }, { "cell_type": "code", + "execution_count": null, "id": "aa3f4dd8", "metadata": { "tags": [ "clear-form" ] }, - "source": [], "outputs": [], - "execution_count": null + "source": [] }, { "cell_type": "markdown", @@ -320,15 +322,15 @@ }, { "cell_type": "code", + "execution_count": null, "id": "7fbc38eb", "metadata": { "tags": [ "clear-form" ] }, - "source": [], "outputs": [], - "execution_count": null + "source": [] }, { "cell_type": "markdown", @@ -349,15 +351,15 @@ }, { "cell_type": "code", + "execution_count": null, "id": "dddf3554", "metadata": { "tags": [ "clear-form" ] }, - "source": [], "outputs": [], - "execution_count": null + "source": [] }, { "cell_type": "markdown", @@ -385,6 +387,7 @@ }, { "cell_type": "code", + "execution_count": null, "id": "36ebdb81", "metadata": { "lines_to_end_of_cell_marker": 2, @@ -392,9 +395,8 @@ "clear-form" ] }, - "source": [], "outputs": [], - "execution_count": null + "source": [] }, { "cell_type": "markdown", @@ -471,4 +473,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +} diff --git a/content/conf.py b/content/conf.py index d58d626..f63491c 100644 --- a/content/conf.py +++ b/content/conf.py @@ -1,12 +1,18 @@ +# Copyright (c) 2026 Mira Geoscience Ltd. +# +# This file is part of python-training. + # Configuration file for the Sphinx documentation builder. # # For the full list of built-in configuration values, see the documentation: # https://www.sphinx-doc.org/en/master/usage/configuration.html -from importlib.metadata import version from datetime import datetime +from importlib.metadata import version + from packaging.version import Version + # -- Project information ----------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information diff --git a/content/fundamentals/1-collections.ipynb b/content/fundamentals/1-collections.ipynb index a3319ed..a28d4bf 100644 --- a/content/fundamentals/1-collections.ipynb +++ b/content/fundamentals/1-collections.ipynb @@ -336,6 +336,7 @@ "source": [ "import numpy as np\n", "\n", + "\n", "array = np.array([[1, 2, 3], [4, 5, 6]]) # Create a 2D array\n", "array.sum(axis=0)" ] diff --git a/content/fundamentals/2-functions.ipynb b/content/fundamentals/2-functions.ipynb index 081cd12..d0b162c 100644 --- a/content/fundamentals/2-functions.ipynb +++ b/content/fundamentals/2-functions.ipynb @@ -325,7 +325,7 @@ " Extract interval of values from bool logic\n", " \"\"\"\n", " output = []\n", - " for val, cond in zip(values, conditions):\n", + " for val, cond in zip(values, conditions, strict=True):\n", " if cond:\n", " output.append(val)\n", " return output" diff --git a/content/fundamentals/3-classes.ipynb b/content/fundamentals/3-classes.ipynb index 814a5f1..6c8ba66 100644 --- a/content/fundamentals/3-classes.ipynb +++ b/content/fundamentals/3-classes.ipynb @@ -72,7 +72,7 @@ " Extract interval of values from bool logic\n", " \"\"\"\n", " output = []\n", - " for val, cond in zip(self.depths, self.anomalous()):\n", + " for val, cond in zip(self.depths, self.anomalous(), strict=True):\n", " if cond:\n", " output.append(val)\n", " return output\n", @@ -246,7 +246,7 @@ " Extract interval of values from bool logic\n", " \"\"\"\n", " output = []\n", - " for val, cond in zip(self.depths, self.anomalous()):\n", + " for val, cond in zip(self.depths, self.anomalous(), strict=True):\n", " if cond:\n", " output.append(val)\n", " return output\n", diff --git a/content/fundamentals/5-geoh5_api.ipynb b/content/fundamentals/5-geoh5_api.ipynb index 6da5e61..db21415 100644 --- a/content/fundamentals/5-geoh5_api.ipynb +++ b/content/fundamentals/5-geoh5_api.ipynb @@ -21,19 +21,22 @@ }, { "cell_type": "code", + "execution_count": null, "id": "7c9d3cb4", "metadata": {}, + "outputs": [], "source": [ "from __future__ import annotations\n", "\n", + "import shutil\n", + "import tempfile\n", + "from pathlib import Path\n", + "\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "from geoh5py.objects import Points\n", "from geoh5py.workspace import Workspace\n", "\n", - "import shutil\n", - "import tempfile\n", - "from pathlib import Path\n", "\n", "source_file = \"../../assets/suncity.geoh5\"\n", "\n", @@ -43,9 +46,7 @@ "dest_path = Path(tmp_dir.name) / Path(source_file).name\n", "copied_file_path = shutil.copy2(source_file, dest_path)\n", "print(copied_file_path)" - ], - "outputs": [], - "execution_count": null + ] }, { "cell_type": "markdown", @@ -77,18 +78,18 @@ }, { "cell_type": "code", + "execution_count": null, "id": "11f786f0", "metadata": { "tags": [ "clear-form" ] }, + "outputs": [], "source": [ "with Workspace(copied_file_path) as workspace:\n", " print(workspace.geoh5)" - ], - "outputs": [], - "execution_count": null + ] }, { "cell_type": "markdown", @@ -102,18 +103,18 @@ }, { "cell_type": "code", + "execution_count": null, "id": "4a021b4a", "metadata": { "tags": [ "clear-form" ] }, + "outputs": [], "source": [ "workspace.open()\n", "workspace.geoh5" - ], - "outputs": [], - "execution_count": null + ] }, { "cell_type": "markdown", @@ -142,17 +143,17 @@ }, { "cell_type": "code", + "execution_count": null, "id": "ba689201", "metadata": { "tags": [ "clear-form" ] }, + "outputs": [], "source": [ "workspace.root.children" - ], - "outputs": [], - "execution_count": null + ] }, { "cell_type": "markdown", @@ -164,17 +165,17 @@ }, { "cell_type": "code", + "execution_count": null, "id": "cb475a1e", "metadata": { "tags": [ "clear-form" ] }, + "outputs": [], "source": [ "workspace.groups, workspace.objects, workspace.data" - ], - "outputs": [], - "execution_count": null + ] }, { "cell_type": "markdown", @@ -186,17 +187,17 @@ }, { "cell_type": "code", + "execution_count": null, "id": "8e42a9e9", "metadata": { "tags": [ "clear-form" ] }, + "outputs": [], "source": [ "grid = workspace.get_entity(\"SunCity\")[0]" - ], - "outputs": [], - "execution_count": null + ] }, { "cell_type": "markdown", @@ -208,17 +209,17 @@ }, { "cell_type": "code", + "execution_count": null, "id": "d78d212f", "metadata": { "tags": [ "clear-form" ] }, + "outputs": [], "source": [ "f\"I have recovered a {type(grid)} with uuid: {grid.uid}\"" - ], - "outputs": [], - "execution_count": null + ] }, { "cell_type": "markdown", @@ -231,17 +232,17 @@ }, { "cell_type": "code", + "execution_count": null, "id": "df642611", "metadata": { "tags": [ "clear-form" ] }, + "outputs": [], "source": [ "workspace.get_entity(grid.uid)[0] == grid" - ], - "outputs": [], - "execution_count": null + ] }, { "cell_type": "markdown", @@ -254,17 +255,17 @@ }, { "cell_type": "code", + "execution_count": null, "id": "694490e4", "metadata": { "tags": [ "clear-form" ] }, + "outputs": [], "source": [ "grid.children" - ], - "outputs": [], - "execution_count": null + ] }, { "cell_type": "markdown", @@ -276,17 +277,17 @@ }, { "cell_type": "code", + "execution_count": null, "id": "ef4d05ae", "metadata": { "tags": [ "clear-form" ] }, + "outputs": [], "source": [ "dem = grid.get_data(\"Band 1\")[0]" - ], - "outputs": [], - "execution_count": null + ] }, { "cell_type": "markdown", @@ -299,21 +300,21 @@ }, { "cell_type": "code", + "execution_count": null, "id": "b6081761", "metadata": { "tags": [ "clear-form" ] }, + "outputs": [], "source": [ "plt.pcolormesh(\n", " grid.origin[0] + grid.cell_center_u,\n", " grid.origin[1] + grid.cell_center_v,\n", " dem.values.reshape(grid.shape),\n", ")" - ], - "outputs": [], - "execution_count": null + ] }, { "cell_type": "markdown", @@ -336,17 +337,17 @@ }, { "cell_type": "code", + "execution_count": null, "id": "b77c6801", "metadata": { "tags": [ "clear-form" ] }, + "outputs": [], "source": [ "point = Points.create(workspace, vertices=np.c_[510000, 7196500, 1150], name=\"Points\")" - ], - "outputs": [], - "execution_count": null + ] }, { "cell_type": "markdown", @@ -370,12 +371,14 @@ }, { "cell_type": "code", + "execution_count": null, "id": "80ba771e", "metadata": { "tags": [ "clear-form" ] }, + "outputs": [], "source": [ "params = point.add_data(\n", " {\n", @@ -387,9 +390,7 @@ "prop_group = point.find_or_create_property_group(\n", " name=\"dipole\", property_group_type=\"Dip direction & dip\", properties=params[1:]\n", ")" - ], - "outputs": [], - "execution_count": null + ] }, { "cell_type": "markdown", @@ -401,13 +402,13 @@ }, { "cell_type": "code", + "execution_count": null, "id": "df658cac", "metadata": {}, + "outputs": [], "source": [ "workspace.close()" - ], - "outputs": [], - "execution_count": null + ] }, { "cell_type": "markdown", diff --git a/content/fundamentals/7-mag_dipole_app.ipynb b/content/fundamentals/7-mag_dipole_app.ipynb index ce49cf1..427108d 100644 --- a/content/fundamentals/7-mag_dipole_app.ipynb +++ b/content/fundamentals/7-mag_dipole_app.ipynb @@ -86,25 +86,28 @@ }, { "cell_type": "code", + "execution_count": null, "id": "f7d1ce79282a571e", "metadata": {}, + "outputs": [], "source": [ "# Import all the necessary packages for this notebook and create a temporary copy of the original\n", "from __future__ import annotations\n", + "\n", "import numpy as np\n", "from geoh5py.data import Data, DataAssociationEnum, PrimitiveTypeEnum\n", - "from geoh5py.objects import ObjectBase, Grid2D, Points\n", + "from geoh5py.objects import Grid2D, ObjectBase, Points\n", "from geoh5py.ui_json import UIJson, forms\n", "from geoh5py.ui_json.utils import monitored_directory_copy\n", "from geoh5py.workspace import Workspace" - ], - "outputs": [], - "execution_count": null + ] }, { "cell_type": "code", + "execution_count": null, "id": "3183bf87", "metadata": {}, + "outputs": [], "source": [ "def inclination_declination_2_xyz(inclination, declination):\n", " \"\"\"Convert inclination and declination angles (degrees) to unit vector (xyz).\"\"\"\n", @@ -113,9 +116,7 @@ " xyz = np.c_[np.sin(phi) * np.cos(theta), np.sin(phi) * np.sin(theta), np.cos(phi)]\n", "\n", " return xyz" - ], - "outputs": [], - "execution_count": null + ] }, { "cell_type": "markdown", @@ -138,12 +139,14 @@ }, { "cell_type": "code", + "execution_count": null, "id": "50bf6890", "metadata": { "tags": [ "clear-form" ] }, + "outputs": [], "source": [ "def b_field(source, locations, moment, inclination, declination):\n", " \"\"\"\n", @@ -173,9 +176,7 @@ " )\n", "\n", " return fields" - ], - "outputs": [], - "execution_count": null + ] }, { "cell_type": "markdown", @@ -187,24 +188,26 @@ }, { "cell_type": "code", + "execution_count": null, "id": "0ea27211-50b4-4a53-8de2-b8c1ff7eddbf", "metadata": {}, + "outputs": [], "source": [ "import shutil\n", "import tempfile\n", "from pathlib import Path\n", "\n", + "\n", "# Create a copy of the original file to avoid corrupting it\n", "source_file = \"../../assets/suncity.geoh5\"\n", "tmp_dir = tempfile.TemporaryDirectory()\n", "dest_path = Path(tmp_dir.name) / Path(source_file).name\n", "copied_file_path = shutil.copy2(source_file, dest_path)" - ], - "outputs": [], - "execution_count": null + ] }, { "cell_type": "code", + "execution_count": null, "id": "2fa94446", "metadata": { "lines_to_end_of_cell_marker": 2, @@ -212,6 +215,7 @@ "clear-form" ] }, + "outputs": [], "source": [ "with Workspace(copied_file_path) as workspace:\n", " # get variables\n", @@ -231,9 +235,7 @@ " \"bz\": {\"values\": field[:, 2]},\n", " }\n", " )" - ], - "outputs": [], - "execution_count": null + ] }, { "cell_type": "markdown", @@ -257,16 +259,16 @@ }, { "cell_type": "code", + "execution_count": null, "id": "5cc39ad6", "metadata": {}, + "outputs": [], "source": [ "def tmi_projection(b_components, earth_field):\n", " \"\"\"Project magnetic field onto Earth's field.\"\"\"\n", " h0 = inclination_declination_2_xyz(earth_field[0], earth_field[1])\n", " return np.dot(h0, b_components.T).flatten()" - ], - "outputs": [], - "execution_count": null + ] }, { "cell_type": "markdown", @@ -278,12 +280,14 @@ }, { "cell_type": "code", + "execution_count": null, "id": "7b360a2c", "metadata": { "tags": [ "clear-form" ] }, + "outputs": [], "source": [ "with Workspace(copied_file_path) as workspace:\n", " # get variables\n", @@ -299,9 +303,7 @@ "\n", " # write back to workspace\n", " output_entity.add_data({\"tmi_45\": {\"values\": tmi}})" - ], - "outputs": [], - "execution_count": null + ] }, { "cell_type": "markdown", @@ -317,12 +319,14 @@ }, { "cell_type": "code", + "execution_count": null, "id": "862e2e83", "metadata": { "tags": [ "clear-form" ] }, + "outputs": [], "source": [ "def magnetic_simulator(\n", " sources: ObjectBase,\n", @@ -375,7 +379,9 @@ " # Loop over the dipoles\n", " fields = np.zeros_like(observations)\n", "\n", - " for source, moment, inclination, declination in zip(dipoles, mom, inc, dec):\n", + " for source, moment, inclination, declination in zip(\n", + " dipoles, mom, inc, dec, strict=True\n", + " ):\n", " fields += b_field(source, observations, moment, inclination, declination)\n", "\n", " tmi = tmi_projection(fields, (earth_inc, earth_dec))\n", @@ -391,9 +397,7 @@ " )\n", "\n", " return data" - ], - "outputs": [], - "execution_count": null + ] }, { "cell_type": "markdown", @@ -409,12 +413,14 @@ }, { "cell_type": "code", + "execution_count": null, "id": "aa3f4dd8", "metadata": { "tags": [ "clear-form" ] }, + "outputs": [], "source": [ "with Workspace(copied_file_path) as workspace:\n", " # get variables\n", @@ -426,9 +432,7 @@ " #\n", " data = magnetic_simulator(source, output_entity, m, -67, -17, -67, -17)\n", " print(data)" - ], - "outputs": [], - "execution_count": null + ] }, { "cell_type": "markdown", @@ -462,12 +466,14 @@ }, { "cell_type": "code", + "execution_count": null, "id": "7fbc38eb", "metadata": { "tags": [ "clear-form" ] }, + "outputs": [], "source": [ "class MyUIJson(UIJson):\n", " title: str = \"Magnetic Dipole App\"\n", @@ -514,9 +520,7 @@ " association=DataAssociationEnum.VERTEX,\n", " data_type=PrimitiveTypeEnum.FLOAT,\n", " )" - ], - "outputs": [], - "execution_count": null + ] }, { "cell_type": "markdown", @@ -537,18 +541,18 @@ }, { "cell_type": "code", + "execution_count": null, "id": "dddf3554", "metadata": { "tags": [ "clear-form" ] }, + "outputs": [], "source": [ "mag_app_ui = MyUIJson(geoh5=\"\")\n", "mag_app_ui.write(\"../../assets/magnetic_dipole.ui.json\", exclude_unset=False)" - ], - "outputs": [], - "execution_count": null + ] }, { "cell_type": "markdown", @@ -576,6 +580,7 @@ }, { "cell_type": "code", + "execution_count": null, "id": "36ebdb81", "metadata": { "lines_to_end_of_cell_marker": 2, @@ -583,6 +588,7 @@ "clear-form" ] }, + "outputs": [], "source": [ "def run(file: str):\n", " \"\"\"\n", @@ -603,9 +609,7 @@ "\n", " if ifile[\"monitoring_directory\"] is not None:\n", " monitored_directory_copy(ifile[\"monitoring_directory\"], ifile[\"receivers\"])" - ], - "outputs": [], - "execution_count": null + ] }, { "cell_type": "markdown", diff --git a/devtools/add_url_tag_sha256.py b/devtools/add_url_tag_sha256.py deleted file mode 100644 index b636116..0000000 --- a/devtools/add_url_tag_sha256.py +++ /dev/null @@ -1,92 +0,0 @@ -#!/usr/bin/env python3 - -# Copyright (c) 2024 Mira Geoscience Ltd. -# -# This file is part of curve-apps package. -# -# All rights reserved. - -""" -Patch pyproject.toml with the computed sha256 for pip dependencies with a tag URL. - -Usage: at the root of the project: -> python devtools/add_url_tag_sha256.py -""" - -from __future__ import annotations - -import re -import subprocess -import tempfile -import warnings -from pathlib import Path -from urllib import request - -_url_filename_re = re.compile(".*/([^/]*)") - - -def compute_sha256(url: str, base_name: str | None = None) -> str: - filename_match = _url_filename_re.match(url) - assert filename_match - - filename = filename_match[1] - if base_name: - filename = f"{base_name}-{filename}" - with tempfile.TemporaryDirectory() as tmpdirname: - copy = Path(tmpdirname) / filename - print(f"# Fetching {url} ...") - request.urlretrieve(url, str(copy)) - return ( - subprocess.check_output(["pip", "hash", "--algorithm", "sha256", copy]) - .decode("utf-8") - .splitlines()[1] - .split(":")[1] - ) - - -def patch_pyproject_toml() -> None: - pyproject = Path("pyproject.toml") - assert pyproject.is_file() - - if has_git_branches(pyproject): - warnings.warn( - f"{pyproject} contains git branches: not computing the sha256 for any git dependency." - ) - return - - tag_url_re = re.compile( - r"""^(\s*[^#]\S+\s*=\s*{\s*url\s*=\s*)"(.*/archive/refs/tags/.*)#sha256=\w*"(.*}.*)""" - ) - pyproject_sha = Path("pyproject-sha.toml") - with open(pyproject_sha, mode="w", encoding="utf-8") as patched: - with open(pyproject, encoding="utf-8") as original: - for line in original: - match = tag_url_re.match(line) - if not match: - patched.write(line) - else: - line_start = match[1] - package_name = line_start.strip() - url = match[2] - line_end = match[3] - sha = compute_sha256(url, package_name) - patched_line = f"""{line_start}"{url}#sha256={sha}"{line_end}\n""" - patched.write(patched_line) - - pyproject_sha.replace(pyproject) - - -def has_git_branches(pyproject: Path) -> bool: - branch_url_re = re.compile( - r"""^(\s*[^#]\S+\s*=\s*{\s*url\s*=\s*)"(.*/archive/refs/heads/.*)\S*"(.*}.*)""" - ) - with open(pyproject, encoding="utf-8") as f: - for line in f: - match = branch_url_re.match(line) - if match: - return True - return False - - -if __name__ == "__main__": - patch_pyproject_toml() diff --git a/devtools/check-copyright.py b/devtools/check-copyright.py deleted file mode 100644 index edc04e1..0000000 --- a/devtools/check-copyright.py +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/env python3 - -# Copyright (c) 2024 Mira Geoscience Ltd. -# -# This file is part of curve-apps package. -# -# All rights reserved. - -from __future__ import annotations - -import re -import sys -from datetime import date - -if __name__ == "__main__": - current_year = date.today().year - copyright_re = re.compile( - rf"\bcopyright \(c\) (:?\d{{4}}-|)\b{current_year}\b", re.IGNORECASE - ) - files = sys.argv[1:] - max_lines = 10 - report_files = [] - for f in files: - with open(f, encoding="utf-8") as file: - count = 0 - has_dated_copyright = False - for line in file: - count += 1 - if count >= max_lines and not ( - f.endswith("README.rst") or f.endswith("README-dev.rst") - ): - break - if re.search(copyright_re, line): - has_dated_copyright = True - break - - if not has_dated_copyright: - report_files.append(f) - - if len(report_files) > 0: - for f in report_files: - sys.stderr.write(f"{f}: No copyright or invalid year\n") - exit(1) - -# readonly CURRENT_YEAR=$(date +"%Y") - -# if ! grep -e "Copyright (c) .*$CURRENT_YEAR" $(head -10 $f) 2>&1 1>/dev/null; then -# echo "File '$f' has no copyright or an invalid year" -# exit 1 -# fi diff --git a/devtools/conda_env_pylint.bat b/devtools/conda_env_pylint.bat index c15a3da..705f0d9 100644 --- a/devtools/conda_env_pylint.bat +++ b/devtools/conda_env_pylint.bat @@ -8,5 +8,4 @@ if !errorlevel! neq 0 ( ) set env_path=%project_dir%\.conda-env -call !MY_CONDA_EXE! activate %env_path% -pylint %* +call !MY_CONDA_EXE! run -p %env_path% pylint %* diff --git a/devtools/git_message_hook.py b/devtools/git_message_hook.py deleted file mode 100644 index 08c0ca7..0000000 --- a/devtools/git_message_hook.py +++ /dev/null @@ -1,226 +0,0 @@ -#!/usr/bin/env python3 - -# Copyright (c) 2024 Mira Geoscience Ltd. -# -# This file is part of curve-apps package. -# -# All rights reserved. - -"""Some Git pre-commit hooks implementations.""" - -from __future__ import annotations - -import argparse -import re -import shlex -import subprocess -import sys - - -def get_jira_id(text) -> str: - """Detect a JIRA issue ID at the begging of the given text. - - :return: the JIRA issue ID if found, else empty string - """ - - class JiraPattern: - """Internal class that encapsulates the regular expression for the JIRA pattern, - making sure it gets compiled only once.""" - - __pattern = re.compile( - r"(?:GEOPY|GI|GA|GMS|VPem1D|VPem3D|VPmg|UBCGIF|LICMGR)-\d+" - ) - - @staticmethod - def get(): - """:return: the compiled regular expression for the JIRA pattern""" - return JiraPattern.__pattern - - # use re.match() rather than re.search() to enforce the JIRA reference to be at the beginning - match = re.match(JiraPattern.get(), text.strip()) - return match.group(0) if match else "" - - -def get_branch_name() -> str | None: - """:return: the name of the current branch""" - - git_proc = subprocess.run( - shlex.split("git branch --list"), - stdout=subprocess.PIPE, - text=True, - ) - - # cannot use HEAD during rebase - # git_proc = subprocess.run( - # shlex.split('git symbolic-ref --short HEAD'), stdout=subprocess.PIPE, universal_newlines=True - # ) - # Note: version above suggested by Atlassian. Could also use: git rev-parse --abbrev-ref HEAD - - if git_proc.returncode != 0: - return None - - current_branch = None - # current branch is prefixed by '*' - for line in git_proc.stdout.splitlines(): - stripped = line.strip() - if stripped and stripped[0] == "*": - current_branch = stripped[1:] - break - assert current_branch is not None - - class RebasingPattern: - """Internal class that encapsulates the regular expression for the rebasing - message pattern, making sure it gets compiled only once.""" - - __pattern = re.compile(r"\(.*\s(\S+)\s*\)") - - @staticmethod - def get(): - """:return: the compiled regular expression for the Rebasing pattern""" - return RebasingPattern.__pattern - - match = re.match(RebasingPattern.get(), current_branch.strip()) - if match: - return match.group(1) - - return current_branch - - -def check_commit_message(filepath: str) -> tuple[bool, str]: - """Check if the branch name or the commit message starts with a reference to JIRA, - and if the message meets the minimum required length for the summary line. - - The JIRA reference has to be at the beginning of the branch name, or of the commit - message. - :return: a tuple telling whether the commit message is valid or not, and an error - message (empty in case the message is valid). - """ - - branch_jira_id = "" - branch_name = get_branch_name() - if branch_name: - branch_jira_id = get_jira_id(branch_name) - - message_jira_id = "" - first_line = None - with open(filepath) as message_file: - for line in message_file: - if not line.startswith("#") and len(line.strip()) > 0: - # test only the first non-comment line that is not empty - # (should we reject messages with empty first line?) - first_line = line - message_jira_id = get_jira_id(first_line) - break - assert first_line is not None - - if not branch_jira_id and not ( - message_jira_id or first_line.strip().lower().startswith("merge") - ): - return ( - False, - "Either the branch name or the commit message must start with a JIRA ID.", - ) - - if branch_jira_id and message_jira_id and branch_jira_id != message_jira_id: - return ( - False, - "Different JIRA ID in commit message %s and in branch name %s." - % (message_jira_id, branch_jira_id), - ) - - stripped_message_line = "" - if first_line: - stripped_message_line = first_line.strip() - if message_jira_id: - stripped_message_line = stripped_message_line[ - len(message_jira_id) + 1 : - ].strip() - - min_required_length = 10 - if len(stripped_message_line) < min_required_length: - return ( - False, - "First line of commit message must be at least %s characters long, " - "beyond the JIRA ID." % min_required_length, - ) - - return True, "" - - -def check_commit_msg(filepath: str) -> None: - """To be used a the Git commit-msg hook. - - Exit with non-0 status if the commit message is deemed invalid. - """ - - (is_valid, error_message) = check_commit_message(filepath) - if not is_valid: - print( - """commit-msg hook: **ERROR** %s - Message has been saved to %s.""" - % (error_message, filepath) - ) - sys.exit(1) - - -def prepare_commit_msg(filepath: str, source: str | None = None) -> None: - """To be used a the Git prepare-commit-msg hook. - - Will add the JIRA ID found in the branch name in case it is missing from the commit - message. - """ - - branch_jira_id = "" - branch_name = get_branch_name() - if branch_name: - branch_jira_id = get_jira_id(branch_name) - - if not branch_jira_id: - return - - if source not in [None, "message", "template"]: - return - - with open( - filepath, - "r+", - ) as message_file: - message_has_jira_id = False - message_lines = message_file.readlines() - for line_index, line_content in enumerate(message_lines): - if not line_content.startswith("#"): - # test only the first non-comment line - message_jira_id = get_jira_id(line_content) - if not message_jira_id: - message_lines[line_index] = branch_jira_id + ": " + line_content - message_has_jira_id = True - break - - if not message_has_jira_id: - # message is empty or all lines are comments: insert JIRA ID at the very beginning - message_lines.insert(0, branch_jira_id + ": ") - - message_file.seek(0, 0) - message_file.write("".join(message_lines)) - - -if __name__ == "__main__": - parser = argparse.ArgumentParser() - parser.add_argument("msg_file", help="the message file") - group = parser.add_mutually_exclusive_group(required=True) - group.add_argument( - "-p", "--prepare", action="store_true", help="prepare the commit message" - ) - group.add_argument( - "-c", - "--check", - action="store_true", - help="check if the commit message is valid", - ) - parser.add_argument("args", nargs=argparse.REMAINDER) - - args = parser.parse_args() - if args.prepare: - prepare_commit_msg(args.msg_file, *args.args) - elif args.check: - check_commit_msg(args.msg_file) diff --git a/devtools/run_conda_lock.bat b/devtools/run_conda_lock.bat deleted file mode 100644 index df42807..0000000 --- a/devtools/run_conda_lock.bat +++ /dev/null @@ -1,23 +0,0 @@ -:: Creates conda locked environments from pyproject.toml -:: (see run_conda_lock.py for details). -:: -:: The script has no parameters, and can be executed by double-clicking -:: the .bat file from Windows Explorer. -:: -:: Usage: run_conda_lock.bat - -@echo off -setlocal EnableDelayedExpansion - -set project_dir=%~dp0.. -cd %project_dir% -call get_conda_exec.bat -if !errorlevel! neq 0 ( - exit /B !errorlevel! -) - -call !MY_CONDA_EXE! activate -python devtools\run_conda_lock.py - -pause -cmd /k diff --git a/devtools/run_conda_lock.py b/devtools/run_conda_lock.py deleted file mode 100644 index 8f7c558..0000000 --- a/devtools/run_conda_lock.py +++ /dev/null @@ -1,444 +0,0 @@ -#!/usr/bin/env python3 - -# Copyright (c) 2024 Mira Geoscience Ltd. -# -# This file is part of curve-apps package. -# -# All rights reserved. - -""" -Creates cross-platform lock files for each python version and per-platform conda environment files. - -Cross-platform lock files are created at the root of the project. -Per-platform conda environment files with and without dev dependencies, are placed under the `environments` sub-folder. - -Usage: from the conda base environment, at the root of the project: -> python devtools/run_conda_lock.py - -To prepare the conda base environment, see devtools/setup-conda-base.bat -""" - -from __future__ import annotations - -import os -import re -import subprocess -import tempfile -from collections.abc import Generator -from contextlib import contextmanager -from pathlib import Path - -import networkx as nx -import tomli as toml -from add_url_tag_sha256 import patch_pyproject_toml -from ruamel.yaml import YAML - -env_file_variables_section_ = """ -variables: - KMP_WARNINGS: 0 -""" - -_environments_folder = Path("environments") - -_python_versions = ["3.12"] - - -@contextmanager -def print_execution_time(name: str = "") -> Generator: - from datetime import datetime - - start = datetime.now() - try: - yield - finally: - duration = datetime.now() - start - message_prefix = f" {name} -" if name else "" - print(f"--{message_prefix} execution time: {duration}") - - -def create_multi_platform_lock(py_ver: str, platforms: list[str] | None = None) -> Path: - print(f"# Creating multi-platform lock file for Python {py_ver} ...") - platform_option = " ".join(f"-p {p}" for p in platforms) if platforms else "" - with print_execution_time(f"conda-lock for {py_ver}"): - subprocess.run( - ( - "conda-lock lock --no-mamba --micromamba -f pyproject.toml" - f" -f {_environments_folder}/env-python-{py_ver}.yml {platform_option}" - f" --lockfile py-{py_ver}.conda-lock.yml" - ), - env=dict(os.environ, PYTHONUTF8="1", CONDA_CHANNEL_PRIORITY="strict"), - shell=True, - check=True, - stderr=subprocess.STDOUT, - ) - file = Path(f"py-{py_ver}.conda-lock.yml") - patch_absolute_path(file) - return file - - -def per_platform_env( - py_ver: str, extras: list[str] | None = None, dev=False, suffix="" -) -> None: - if extras is None: - extras = [] - print( - f"# Creating per platform Conda env files for Python {py_ver} ({'WITH' if dev else 'NO'} dev dependencies) ... " - ) - dev_dep_option = "--dev-dependencies" if dev else "--no-dev-dependencies" - name_suffix = full_name_suffix(dev, suffix) - extras_option = " ".join(f"--extras {i}" for i in extras) if extras else "" - subprocess.run( - ( - f"conda-lock render {dev_dep_option} {extras_option} -k env" - f" --filename-template {_environments_folder}/py-{py_ver}-{{platform}}{name_suffix}.conda.lock py-{py_ver}.conda-lock.yml" - ), - env=dict(os.environ, PYTHONUTF8="1", CONDA_CHANNEL_PRIORITY="strict"), - shell=True, - check=True, - stderr=subprocess.STDOUT, - ) - - -def finalize_per_platform_envs(py_ver: str, dev=False, suffix="") -> None: - platform_glob = "*-64" - name_suffix = full_name_suffix(dev, suffix) - for lock_env_file in _environments_folder.glob( - f"py-{py_ver}-{platform_glob}{name_suffix}.conda.lock.yml" - ): - LockFilePatcher(lock_env_file).patch() - - -def full_name_suffix(dev: bool, suffix: str) -> str: - dev_suffix = "-dev" if dev else "" - return f"{dev_suffix}{suffix}" - - -def patch_absolute_path(file: Path) -> None: - """ - Patch the given file to remove reference with absolute file path. - """ - - abs_path_base = str(_environments_folder.absolute().parent) + os.sep - - with tempfile.TemporaryDirectory(dir=str(file.parent)) as tmpdirname: - patched_file = Path(tmpdirname) / file.name - with open(patched_file, mode="w", encoding="utf-8") as patched: - with open(file, encoding="utf-8") as f: - for line in f: - patched.write( - line.replace(abs_path_base, "").replace( - _environments_folder.name + os.sep, - _environments_folder.name + "/", - ) - ) - os.replace(patched_file, file) - - -class LockFilePatcher: - """ - Patch the given file to remove hash information on pip dependency if any hash is missing. - - As soon as one hash is specified, pip requires all hashes to be specified. - """ - - def __init__(self, lock_file: Path) -> None: - self.lock_file = lock_file - self.pip_section_re = re.compile(r"^\s*- pip:\s*$") - self.sha_re = re.compile(r"(.*)(\s--hash|#sha256)=\S*") - - def add_variables_section(self): - """ - Add the variables section to the lock file. - """ - - with open(self.lock_file, mode="a", encoding="utf-8") as f: - f.write(env_file_variables_section_) - - def patch_none_hash(self) -> None: - """ - Patch the lock file to remove --hash=md5:None and #sha25=None - - - pip does not want hash with md5 (but accepts sha256 or others). - - #sha256=None will conflict with the actual sha256 - """ - - none_hash_re = re.compile( - r"(.*)(?:\s--hash=(?:md5:|sha256:)|#sha256=)(?:None|)\s*$" - ) - with tempfile.TemporaryDirectory(dir=str(self.lock_file.parent)) as tmpdirname: - patched_file = Path(tmpdirname) / self.lock_file.name - with open(patched_file, mode="w", encoding="utf-8") as patched, open( - self.lock_file, encoding="utf-8" - ) as f: - for line in f: - match = none_hash_re.match(line) - if not match: - patched.write(line) - else: - patched.write(f"{match[1]}\n") - patched_file.replace(self.lock_file) - - def is_missing_pip_hash(self) -> bool: - """ - Check if the lock file contains pip dependencies with missing hash. - """ - - pip_dependency_re = re.compile(r"^\s*- (\S+) (@|===) .*") - with open(self.lock_file, encoding="utf-8") as file: - # advance until the pip section - for line in file: - if self.pip_section_re.match(line): - break - - for line in file: - if pip_dependency_re.match(line) and not self.sha_re.match(line): - return True - return False - - def remove_pip_hashes(self) -> None: - """ - Remove all hashes from the pip dependencies. - """ - - with tempfile.TemporaryDirectory(dir=str(self.lock_file.parent)) as tmpdirname: - patched_file = Path(tmpdirname) / self.lock_file.name - with open(patched_file, mode="w", encoding="utf-8") as patched, open( - self.lock_file, encoding="utf-8" - ) as f: - for line in f: - patched_line = self.sha_re.sub(r"\1", line) - patched.write(patched_line) - patched_file.replace(self.lock_file) - - def patch(self, force_no_pip_hash=False) -> None: - """ - Apply all patches to the lock file. - """ - - self.patch_none_hash() - if force_no_pip_hash or self.is_missing_pip_hash(): - self.remove_pip_hashes() - self.add_variables_section() - - -def get_multiplatform_lock_files() -> list[Path]: - return list(Path().glob("*.conda-lock.yml")) - - -def delete_multiplatform_lock_files() -> None: - for f in get_multiplatform_lock_files(): - f.unlink() - - -def recreate_multiplatform_lock_files() -> list[Path]: - delete_multiplatform_lock_files() - - # also delete per-platform lock files to make it obvious that - # they must be cre-created after the multi-platform files were updated - delete_per_platform_lock_files() - - non_optional_deps = non_optional_dependencies() - created_files: list[Path] = [] - with print_execution_time("create_multi_platform_lock"): - for py_ver in _python_versions: - file = create_multi_platform_lock(py_ver) - created_files.append(file) - remove_redundant_pip_from_lock_file(file) - force_non_optional_packages(file, non_optional_deps) - return created_files - - -def delete_per_platform_lock_files() -> None: - if _environments_folder.exists(): - for f in _environments_folder.glob("*.lock.yml"): - f.unlink() - - -def recreate_per_platform_lock_files() -> None: - delete_per_platform_lock_files() - with print_execution_time("create_per_platform_lock"): - for py_ver in _python_versions: - per_platform_env(py_ver, dev=False) - finalize_per_platform_envs(py_ver, dev=False) - per_platform_env(py_ver, dev=True) - finalize_per_platform_envs(py_ver, dev=True) - - -def non_optional_dependencies() -> list[str]: - """ - List the names of non-optional dependencies from pyproject.toml - """ - - pyproject_toml = Path("pyproject.toml") - assert pyproject_toml.is_file() - - non_optional_packages: list[str] = [] - with open(pyproject_toml, "rb") as pyproject: - content = toml.load(pyproject) - for name, spec in content["tool"]["poetry"]["dependencies"].items(): - if isinstance(spec, str) or ( - isinstance(spec, dict) and not spec.get("optional", False) - ): - non_optional_packages.append(name) - return non_optional_packages - - -def force_non_optional_packages(lock_file: Path, force_packages: list[str]) -> None: - """ - Patch the multi-platform lock file to force some packages not to be optional. - """ - - if len(force_packages) == 0: - return - - assert lock_file.is_file() - print("## Force packages as non-optional: " + ", ".join(force_packages)) - - yaml = YAML() - yaml.width = 1200 - - with open(lock_file, encoding="utf-8") as file: - yaml_content = yaml.load(file) - assert yaml_content is not None - - # collect packages from that list that are already in the lock file as optional - packages_to_change = [ - package - for package in yaml_content["package"] - if package["name"] in force_packages and package["optional"] - ] - - # change all packages in the dependency tree to be non-optional - graph = build_dependency_tree(packages_to_change) - for package in graph.nodes: - for p in yaml_content["package"]: - if p["name"] == package: - p["optional"] = False - p["category"] = "main" - - with open(lock_file, mode="w", encoding="utf-8") as file: - yaml.dump(yaml_content, file) - - -def remove_redundant_pip_from_lock_file(lock_file: Path) -> None: - """ - Remove pip packages that are also fetched from conda. - - If a package version is different between pip and conda, exit with an error. - """ - - assert lock_file.is_file() - print("## Removing redundant pip packages ...") - - yaml = YAML() - yaml.width = 1200 - - with open(lock_file, encoding="utf-8") as file: - yaml_content = yaml.load(file) - assert yaml_content is not None - - packages = yaml_content["package"] - remaining_pip_per_platform: dict[str, list[str]] = {} - for platform in ["linux-64", "osx-64", "win-64"]: - # parse the yml file - pip_packages = [ - p for p in packages if p["manager"] == "pip" and p["platform"] == platform - ] - if len(pip_packages) == 0: - continue - - conda_packages = { - p["name"]: p["version"] - for p in packages - if p["manager"] == "conda" and p["platform"] == platform - } - redundant_pip_names = list_redundant_pip_packages(pip_packages, conda_packages) - graph = build_dependency_tree(pip_packages) - graph = trim_dependency_tree(graph, redundant_pip_names) - remaining_pip_names = list(graph.nodes) - remaining_pip_packages = [ - p for p in pip_packages if p["name"] in remaining_pip_names - ] - assert ( - len(list_redundant_pip_packages(remaining_pip_packages, conda_packages)) - == 0 - ), "Could not eliminate all redundant pip packages (likely due mismatch on versions)" - remaining_pip_per_platform[platform] = remaining_pip_names - - yaml_content["package"] = [ - p - for p in packages - if p["manager"] != "pip" - or p["name"] in remaining_pip_per_platform[p["platform"]] - ] - with open(lock_file, mode="w", encoding="utf-8") as file: - yaml.dump(yaml_content, file) - - -def list_redundant_pip_packages( - pip_packages: list[dict], conda_packages: dict[str, str] -) -> list[str]: - """ - Return the names of pip packages that are also listed as conda packages. - - If some packages are present for both pip and conda but with different versions, exit with an error. - :param pip_packages: list of pip packages, where each package is a dict with its full description. - :param conda_packages: list of conda packages as a dict with the package name as key and its version as value. - :return: names of the pip packages that are also listed as conda packages. - """ - - redundant_pip_packages: list[str] = [] - for pip_package in pip_packages: - package_name = pip_package["name"] - version_from_conda = conda_packages.get(package_name, None) - if version_from_conda is None: - continue - - if version_from_conda == pip_package["version"]: - print( - f"package {pip_package['name']} ({version_from_conda} {pip_package['platform']}) is fetched from pip and conda" - ) - redundant_pip_packages.append(package_name) - else: - print( - f"package {pip_package['name']} ({pip_package['platform']}) is fetched with a different version " - f"from pip ({pip_package['version']}) and conda ({version_from_conda})" - ) - return redundant_pip_packages - - -def build_dependency_tree(packages: list[dict]) -> nx.DiGraph: - graph = nx.DiGraph() - for package in packages: - graph.add_node(package["name"]) - for dependency in package["dependencies"].keys(): - graph.add_edge(package["name"], dependency) - return graph - - -def trim_dependency_tree( - graph: nx.DiGraph, packages_to_remove: list[str] -) -> nx.DiGraph: - # Remove the specified packages - for package in packages_to_remove: - if package in graph: - graph.remove_node(package) - - orphaned_nodes = [node for node, degree in graph.degree() if degree == 0] - for node in orphaned_nodes: - graph.remove_node(node) - - return graph - - -def main(): - assert _environments_folder.is_dir() - - patch_pyproject_toml() - - recreate_multiplatform_lock_files() - recreate_per_platform_lock_files() - - -if __name__ == "__main__": - main() diff --git a/devtools/setup-conda-base.bat b/devtools/setup-conda-base.bat deleted file mode 100644 index 6540401..0000000 --- a/devtools/setup-conda-base.bat +++ /dev/null @@ -1,22 +0,0 @@ -:: Setup the conda base environment with mamba, conda-lock and conda-pack -:: -:: The script has no parameters, and can be executed by double-clicking -:: the .bat file from Windows Explorer. -:: -:: Usage: setup-conda-base.bat - -@echo off -setlocal EnableDelayedExpansion - -set project_dir=%~dp0.. -call %project_dir%\get_conda_exec.bat -if !errorlevel! neq 0 ( - exit /B !errorlevel! -) - -call !MY_CONDA_EXE! install -n base -c conda-forge mamba -y -call !MY_CONDA_EXE! activate base -pip install conda-lock[pip_support] - -pause -cmd /k diff --git a/devtools/setup-dev.bat b/devtools/setup-dev.bat deleted file mode 100644 index c596c1b..0000000 --- a/devtools/setup-dev.bat +++ /dev/null @@ -1,27 +0,0 @@ -:: Setup a local conda dev environment under .conda-dev -:: with all dependencies for geoapps, -:: and local editable installation of geoh5py. -:: Note: geoapps itself is not installed in the environment. -:: -:: The script has no parameters, and can be executed by double-clicking -:: the .bat file from Windows Explorer. -:: -:: Usage: setup-dev.bat - -@echo off -setlocal EnableDelayedExpansion - -set project_dir=%~dp0.. -call %project_dir%\get_conda_exec.bat -if !errorlevel! neq 0 ( - exit /B !errorlevel! -) - -set env_path=%project_dir%\.conda-env -call !MY_CONDA_EXE! activate -call mamba env update -p %env_path% -f %project_dir%\environments\conda-py-3.9-win-64-dev.lock.yml -call conda activate %env_path% -pip install --upgrade --force-reinstall -e %project_dir%\..\python-training --no-deps - -pause -cmd /k diff --git a/devtools/start-app.bat b/devtools/start-app.bat deleted file mode 100644 index 41f8d28..0000000 --- a/devtools/start-app.bat +++ /dev/null @@ -1,14 +0,0 @@ -@echo off -setlocal EnableDelayedExpansion - -set project_dir=%~dp0.. -call %project_dir%\get_conda_exec.bat -if !errorlevel! neq 0 ( - exit /B !errorlevel! -) - -set env_path=%project_dir%\.conda-env -cd %project_dir%\geoapps -set "PYTHONPATH=%project_dir%;%PYTHONPATH%" -call !MY_CONDA_EXE! activate %env_path% && jupyter notebook Index.ipynb -cmd /k diff --git a/devtools/update_tutorials.py b/devtools/update_tutorials.py index 799a6a7..db161e9 100644 --- a/devtools/update_tutorials.py +++ b/devtools/update_tutorials.py @@ -1,9 +1,9 @@ -# Copyright (c) 2022 Mira Geoscience Ltd. +# Copyright (c) 2022-2026 Mira Geoscience Ltd. # # This file is part of python-training. -import os import json +import os from pathlib import Path from shutil import copy @@ -12,7 +12,7 @@ def update_forms(): os.makedirs("training", exist_ok=True) - for dirpath, dirnames, filenames in Path("../content").walk(): + for dirpath, _, filenames in Path("../content").walk(): if ( "checkpoints" in str(dirpath) or "_build" in str(dirpath) 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 1624131..4e1a8bc 100644 --- a/environments/py-3.12-linux-64-dev.conda.lock.yml +++ b/environments/py-3.12-linux-64-dev.conda.lock.yml @@ -1,6 +1,6 @@ # Generated by conda-lock. # platform: linux-64 -# input_hash: 582a4e11a542b2c2e9ce49b56b9365261818938b7fa31d8a336991b50a760f31 +# input_hash: 9ab7bd68a853718efd7b8e537d4fd5b55b498320b051f41aeb048496ec2d770c channels: - conda-forge @@ -10,39 +10,37 @@ dependencies: - _python_abi3_support=1.0=hd8ed1ab_3 - accessible-pygments=0.0.5=pyhd8ed1ab_1 - alabaster=0.7.16=pyhd8ed1ab_0 - - astroid=2.15.8=py312h7900ff3_0 + - annotated-types=0.8.0=pyhd8ed1ab_0 + - anyio=4.15.1=pyh5ded981_1 + - argon2-cffi=25.1.0=pyhd8ed1ab_0 + - argon2-cffi-bindings=26.1.0=py312h5cc1888_2 + - arrow=1.4.0=pyhcf101f3_0 + - astroid=4.3.4=py312h20c3967_0 - asttokens=3.0.2=pyhd8ed1ab_0 + - async-lru=2.4.0=pyh5ded981_0 - attrs=26.1.0=pyhcf101f3_0 - - aws-c-auth=0.10.4=h4610da3_2 - - aws-c-cal=0.9.15=h6bbde05_1 - - aws-c-common=0.14.3=hb03c661_0 - - aws-c-compression=0.3.2=h01ee8f8_5 - - aws-c-http=0.11.0=hbe094ff_5 - - aws-c-io=0.27.5=h4f381ba_1 - - aws-c-s3=0.13.1=h7508075_1 - - aws-c-sdkutils=0.2.7=h01ee8f8_3 - - aws-checksums=0.2.10=h01ee8f8_5 - babel=2.18.0=pyhcf101f3_1 - - backports.zstd=1.8.0=py312h3f22e6b_0 + - backports.zstd=1.8.0=py312hf114f2f_1 - beautifulsoup4=4.15.0=pyha770c72_0 - bleach=6.4.0=pyhcf101f3_0 - bleach-with-css=6.4.0=hac0b51c_0 - - brotli=1.2.0=h505cf86_4 - - brotli-bin=1.2.0=h9908984_4 - - brotli-python=1.2.0=py312he9c40d5_4 + - brotli=1.2.1=h505cf86_0 + - brotli-bin=1.2.1=h9908984_0 + - brotli-python=1.2.1=py312he9c40d5_0 - bzip2=1.0.8=hda65f42_10 - - c-ares=1.34.8=hebe6cf0_2 - - ca-certificates=2026.7.22=hbd8a1cb_0 + - c-ares=1.34.9=hebe6cf0_0 + - ca-certificates=2026.10.23=hbd8a1cb_0 - cached-property=2.0.1=pyhcf101f3_0 - cached_property=2.0.1=pyhcf101f3_0 - - certifi=2026.7.22=pyhd8ed1ab_0 + - certifi=2026.10.23=pyhd8ed1ab_0 + - cffi=2.1.1=py312h703531f_3 - charset-normalizer=3.5.2=h1114479_0 - click=8.5.0=pyh5ded981_0 - colorama=0.4.6=pyhd8ed1ab_1 - comm=0.2.3=pyhe01879c_0 - contourpy=1.4.0=py312h9be0db6_1 - - coverage=7.16.2=py312h8b7ec3f_1 - - cpython=3.12.15=py312hd8ed1ab_2 + - coverage=7.17.0=py312h8b7ec3f_0 + - cpython=3.12.16=py312hd8ed1ab_0 - cycler=0.12.1=pyhcf101f3_2 - debugpy=1.8.22=py312h80505a6_0 - defusedxml=0.7.1=pyhd8ed1ab_0 @@ -50,50 +48,65 @@ dependencies: - docutils=0.21.2=pyhd8ed1ab_1 - exceptiongroup=1.3.1=pyhd8ed1ab_0 - executing=2.3.0=pyhd8ed1ab_0 - - fonttools=4.67.0=py312hfd18d64_0 + - fonttools=4.67.0=py312hfd18d64_1 + - fqdn=1.6.0=pyh5ded981_0 - freetype=2.14.3=ha770c72_2 + - h11=0.16.0=pyhcf101f3_1 - h2=4.4.1=pyhcf101f3_0 - - h5py=3.16.0=nompi_py312h7082e50_105 - - hdf5=2.2.0=nompi_hc529623_100 + - h5py=3.15.1=nompi_py312ha4f8f14_101 + - hdf5=1.14.6=nompi_h19486de_110 - hpack=4.2.0=pyhd8ed1ab_0 + - httpcore=1.0.9=pyh29332c3_0 + - httpx=0.28.1=pyhd8ed1ab_0 - hyperframe=6.1.0=pyhd8ed1ab_0 - idna=3.20=pyh5ded981_0 - imagesize=2.0.1=pyhd8ed1ab_0 - - importlib-metadata=9.0.1=pyhcf101f3_0 + - importlib-metadata=10.0.0=pyh5ded981_0 - iniconfig=2.3.1=pyhd8ed1ab_0 - ipykernel=7.4.0=pyh4a3486f_0 - ipython=9.17.1=pyh53cf698_0 - ipython_pygments_lexers=1.1.1=pyhd8ed1ab_0 - - isort=5.13.2=pyhd8ed1ab_1 + - isoduration=20.11.0=pyhd8ed1ab_1 + - isort=9.0.2=pyhd8ed1ab_0 - jedi=0.20.1=pyh5ded981_0 - jinja2=3.1.6=pyhcf101f3_1 + - json5=0.17.3=pyhd8ed1ab_0 + - jsonpointer=3.6=pyh5ded981_0 - jsonschema=4.26.0=pyhcf101f3_1 - jsonschema-specifications=2025.9.1=pyhcf101f3_0 + - jsonschema-with-format-nongpl=4.26.0=hcf101f3_1 - jupyter-book=1.0.4.post1=pyh29332c3_0 + - jupyter-builder=1.2.3=pyh5ded981_0 - jupyter-cache=1.0.1=pyhff2d567_0 + - jupyter-lsp=2.3.1=pyhcf101f3_0 - jupyter_client=8.10.0=pyhcf101f3_0 - jupyter_core=5.9.1=pyhc90fa1f_0 + - jupyter_events=0.12.1=pyhcf101f3_0 + - jupyter_server=2.21.1=pyh5ded981_0 + - jupyter_server_terminals=0.5.4=pyhcf101f3_0 + - jupyterlab=4.6.4=pyhd8ed1ab_0 - jupyterlab_pygments=0.3.0=pyhd8ed1ab_2 + - jupyterlab_server=2.28.1=pyh5ded981_0 - jupytext=1.19.6=pyhb6928c1_1 - keyutils=1.6.3=h7cc23a3_1 - kiwisolver=1.5.1=py312h9be0db6_3 - krb5=1.22.2=hbc21106_2 + - lark=1.3.1=pyhd8ed1ab_0 - latexcodec=2.0.1=pyh9f0ad1d_0 - - lazy-object-proxy=1.12.0=py312h1b36aeb_5 - lcms2=2.19.1=h9073bf1_3 - ld_impl_linux-64=2.46.1=default_hbd61a6d_103 - lerc=4.2.0=hdb68285_0 - libaec=1.1.5=h088129d_0 - libblas=3.11.0=11_h4a7cf45_openblas - - libbrotlicommon=1.2.0=h39a168f_4 - - libbrotlidec=1.2.0=ha411449_4 - - libbrotlienc=1.2.0=h018ffa1_4 + - libbrotlicommon=1.2.1=h39a168f_0 + - libbrotlidec=1.2.1=ha411449_0 + - libbrotlienc=1.2.1=h018ffa1_0 - libcblas=3.11.0=11_h0358290_openblas - libcurl=8.21.0=hcf29cc6_1 - libdeflate=1.25=hd45a770_1 - libedit=3.1.20260512=pl5321h373387f_0 - libev=4.33=h280c20c_3 - - libexpat=2.8.5=hd2095e1_0 + - libexpat=2.9.0=hd2095e1_0 - libffi=3.7.0=h81df57d_1 - libfreetype=2.14.3=ha770c72_2 - libfreetype6=2.14.3=h5e6c136_2 @@ -109,9 +122,9 @@ dependencies: - libnsl=2.0.1=hb9d3cd8_1 - libopenblas=0.3.34=pthreads_hf13c14d_2 - libpng=1.6.59=h922cc85_0 - - libpython=3.12.15=ha57cdbe_2_cpython + - libpython=3.12.16=ha57cdbe_0_cpython - libsodium=1.0.22=hebe6cf0_3 - - libsqlite=3.54.0=h0737f62_101 + - libsqlite=3.54.1=h0737f62_101 - libssh2=1.11.1=h6154650_1 - libstdcxx=16.2.0=h934c35e_7 - libstdcxx-ng=16.2.0=hdf11a46_7 @@ -123,14 +136,15 @@ dependencies: - libzlib=1.3.2=h25fd6f3_3 - linkify-it-py=2.2.0=pyhcf101f3_0 - markdown-it-py=3.0.0=pyhd8ed1ab_1 - - markupsafe=3.0.4=py312h8b7ec3f_1 + - markupsafe=3.0.4=py312h8b7ec3f_2 - matplotlib-base=3.10.9=py312he3d6523_0 - matplotlib-inline=0.2.2=pyhd8ed1ab_0 - mccabe=0.7.0=pyhd8ed1ab_1 - mdit-py-plugins=0.6.1=pyhd8ed1ab_0 - mdurl=0.1.2=pyhd8ed1ab_1 - - mistune=3.3.4=pyhcf101f3_0 + - mistune=3.4.0=pyh5ded981_0 - munkres=1.1.4=pyhd8ed1ab_1 + - mypy_extensions=1.1.0=pyha770c72_0 - myst-nb=1.4.0=pyhcf101f3_0 - myst-parser=3.0.1=pyhd8ed1ab_0 - nbclient=0.11.0=pyhcf101f3_1 @@ -139,19 +153,23 @@ dependencies: - nbconvert-pandoc=7.16.6=h7d6f222_1 - nbformat=5.11.1=pyhcf101f3_0 - ncurses=6.6=hdb14827_1 - - nest-asyncio2=1.7.3=pyh5ded981_0 + - nest-asyncio2=1.7.4=pyh5ded981_0 + - notebook=7.6.3=pyh5ded981_0 + - notebook-shim=0.2.4=pyhd8ed1ab_1 - numpy=2.4.6=py312h33ff503_0 - openjpeg=2.5.4=heb1ab33_2 - openssl=3.6.5=h781a0a9_0 + - overrides=7.7.0=pyhd8ed1ab_1 - packaging=26.3=pyhc364b38_0 - - pandoc=3.12.1=ha770c72_0 + - pandoc=3.13=ha770c72_0 - pandocfilters=1.5.1=pyh5ded981_0 - parso=0.8.7=pyhcf101f3_0 - pexpect=4.9.0=pyhd8ed1ab_1 - pillow=12.3.0=py312h38079b3_4 - - pip=26.2.1=pyh8b19718_0 - - platformdirs=4.13.3=pyh5ded981_0 + - pip=26.2.2=pyh8b19718_0 + - platformdirs=4.13.6=pyh5ded981_0 - pluggy=1.7.0=pyh5ded981_0 + - prometheus_client=0.26.0=pyhd8ed1ab_0 - prompt-toolkit=3.0.53=pyha770c72_0 - psutil=7.2.2=py312h1b36aeb_3 - pthread-stubs=0.4=h7cc23a3_1004 @@ -159,18 +177,23 @@ dependencies: - pure_eval=0.2.4=pyhd8ed1ab_0 - pybtex=0.26.1=pyhcf101f3_0 - pybtex-docutils=1.0.3=pyhcf101f3_4 + - pycparser=3.12=pyh5ded981_1 + - pydantic=2.12.5=pyhcf101f3_1 + - pydantic-core=2.41.5=py312h868fb18_1 - pydata-sphinx-theme=0.16.1=pyhd8ed1ab_0 - pygments=2.21.0=pyhcf101f3_0 - - pylint=2.17.7=pyhd8ed1ab_0 + - pylint=4.1.3=pyh5ded981_0 - pyparsing=3.3.3=pyh5ded981_0 - pysocks=1.7.1=pyha55dd90_7 - - pytest=7.4.4=pyhd8ed1ab_0 - - pytest-cov=3.0.0=pyhd8ed1ab_0 - - python=3.12.15=h5f976f7_2_cpython + - pytest=9.1.1=pyhc364b38_2 + - pytest-cov=7.1.0=pyhcf101f3_0 + - python=3.12.16=h5f976f7_0_cpython - python-abi3=3.12=he1d15d4_3 - - python-dateutil=2.9.0.post0=pyhe01879c_2 + - python-dateutil=3.0.0=pyh5ded981_0 - python-fastjsonschema=2.22.2=pyhcf101f3_0 - - python-gil=3.12.15=hd8ed1ab_2 + - python-gil=3.12.16=hd8ed1ab_0 + - python-json-logger=4.2.0=pyhd8ed1ab_0 + - python-tzdata=2026.5=pyh5ded981_0 - python_abi=3.12=9_cp312 - pyyaml=6.0.3=py312h8a5da7c_1 - pyzmq=27.2.0=py312h8a5ba0d_2 @@ -178,12 +201,16 @@ dependencies: - readline=8.3=hd6e31c0_1 - referencing=0.37.0=pyhcf101f3_0 - requests=2.34.2=pyhcf101f3_0 + - rfc3339-validator=0.1.4=pyhd8ed1ab_1 + - rfc3986-validator=0.1.1=pyh9f0ad1d_0 + - rfc3987-syntax=1.1.0=pyhe01879c_1 - rpds-py=2026.9.1=py312hc767a74_0 - - s2n=1.7.6=h7e3ee7f_0 - - setuptools=84.0.0=pyh332efcf_0 + - send2trash=2.1.0=pyha191276_1 + - setuptools=84.2.1=pyhe730653_0 - six=1.17.0=pyhe01879c_1 + - sniffio=1.3.1=pyhd8ed1ab_2 - snowballstemmer=3.1.1=pyhd8ed1ab_0 - - soupsieve=3.0.3=pyhd8ed1ab_0 + - soupsieve=3.0.4=pyhd8ed1ab_0 - sphinx=7.4.7=pyhd8ed1ab_0 - sphinx-book-theme=1.2.0=pyhc364b38_0 - sphinx-comments=0.0.3=pyhd8ed1ab_1 @@ -198,42 +225,42 @@ dependencies: - sphinxcontrib-bibtex=2.7.0=pyhd8ed1ab_0 - sphinxcontrib-devhelp=2.0.0=pyhd8ed1ab_1 - sphinxcontrib-htmlhelp=2.1.0=pyhd8ed1ab_1 - - sphinxcontrib-jsmath=1.0.1=pyhd8ed1ab_1 + - sphinxcontrib-jsmath=2.0.0=pyh5ded981_0 - sphinxcontrib-qthelp=2.0.0=pyhd8ed1ab_1 - sphinxcontrib-serializinghtml=2.0.0=pyhd8ed1ab_0 - - sqlalchemy=2.1.4=py312h1b36aeb_0 + - sqlalchemy=2.1.6=py312h1b36aeb_0 - stack_data=0.6.3=pyhd8ed1ab_1 - tabulate=0.10.0=pyhcf101f3_0 + - terminado=0.18.1=pyhc90fa1f_1 - tinycss2=1.4.0=pyhd8ed1ab_0 - tk=8.6.13=noxft_h1df4ec4_4 - - toml=0.10.2=pyhcf101f3_3 - tomli=2.5.0=pyh5ded981_0 - tomlkit=0.15.2=pyh5ded981_0 - tornado=6.5.10=py312h5cc1888_0 - traitlets=5.16.1=pyhcf101f3_0 - typing-extensions=4.16.0=h69aa097_0 + - typing-inspection=0.4.4=pyhcf101f3_0 - typing_extensions=4.16.0=pyhcf101f3_0 - - tzdata=2026c=h151e31d_0 + - typing_utils=0.1.0=pyhd8ed1ab_1 + - tzdata=2026e=h5d301ff_0 - uc-micro-py=2.0.0=pyhcf101f3_0 - unicodedata2=18.0.0=py312h5cc1888_0 + - uri-template=1.3.0=pyhd8ed1ab_1 - urllib3=2.8.0=pyhd8ed1ab_0 - - wcwidth=0.9.2=py311hd139983_0 - - webencodings=0.5.1=pyhd8ed1ab_3 + - wcwidth=0.9.4=py311hd139983_0 + - webcolors=25.10.0=pyhd8ed1ab_0 + - webencodings=0.6.1=pyh5ded981_0 + - websocket-client=1.9.2=pyh5ded981_1 - wheel=0.48.0=pyhd8ed1ab_0 - - wrapt=1.17.3=py312h4c3975b_1 - xorg-libxau=1.0.12=h7cc23a3_2 - xorg-libxdmcp=1.1.5=h7cc23a3_2 - yaml=0.2.5=hebe6cf0_3 - zeromq=4.3.5=h901266b_12 - - zipp=4.1.1=pyh5ded981_0 + - zipp=4.1.2=pyh5ded981_0 - zlib-ng=2.3.3=hce19668_1 - zstd=1.5.7=hb78ec9c_7 - pip: - - annotated-types == 0.8.0 - - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@e7318ecca512e9b1f5498dad92733b55cff0aa3b - - pydantic == 2.12.5 - - pydantic-core == 2.41.5 - - typing-inspection == 0.4.4 + - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@3d3e27086f07c86373ac1721d4334a60e58d36e9 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 5543026..165c820 100644 --- a/environments/py-3.12-linux-64.conda.lock.yml +++ b/environments/py-3.12-linux-64.conda.lock.yml @@ -1,6 +1,6 @@ # Generated by conda-lock. # platform: linux-64 -# input_hash: 582a4e11a542b2c2e9ce49b56b9365261818938b7fa31d8a336991b50a760f31 +# input_hash: 9ab7bd68a853718efd7b8e537d4fd5b55b498320b051f41aeb048496ec2d770c channels: - conda-forge @@ -8,85 +8,89 @@ channels: dependencies: - _openmp_mutex=4.5=20_gnu - _python_abi3_support=1.0=hd8ed1ab_3 - - accessible-pygments=0.0.5=pyhd8ed1ab_1 - - alabaster=0.7.16=pyhd8ed1ab_0 + - annotated-types=0.8.0=pyhd8ed1ab_0 + - anyio=4.15.1=pyh5ded981_1 + - argon2-cffi=25.1.0=pyhd8ed1ab_0 + - argon2-cffi-bindings=26.1.0=py312h5cc1888_2 + - arrow=1.4.0=pyhcf101f3_0 - asttokens=3.0.2=pyhd8ed1ab_0 + - async-lru=2.4.0=pyh5ded981_0 - attrs=26.1.0=pyhcf101f3_0 - - aws-c-auth=0.10.4=h4610da3_2 - - aws-c-cal=0.9.15=h6bbde05_1 - - aws-c-common=0.14.3=hb03c661_0 - - aws-c-compression=0.3.2=h01ee8f8_5 - - aws-c-http=0.11.0=hbe094ff_5 - - aws-c-io=0.27.5=h4f381ba_1 - - aws-c-s3=0.13.1=h7508075_1 - - aws-c-sdkutils=0.2.7=h01ee8f8_3 - - aws-checksums=0.2.10=h01ee8f8_5 - babel=2.18.0=pyhcf101f3_1 - - backports.zstd=1.8.0=py312h3f22e6b_0 + - backports.zstd=1.8.0=py312hf114f2f_1 - beautifulsoup4=4.15.0=pyha770c72_0 - bleach=6.4.0=pyhcf101f3_0 - bleach-with-css=6.4.0=hac0b51c_0 - - brotli=1.2.0=h505cf86_4 - - brotli-bin=1.2.0=h9908984_4 - - brotli-python=1.2.0=py312he9c40d5_4 + - brotli=1.2.1=h505cf86_0 + - brotli-bin=1.2.1=h9908984_0 + - brotli-python=1.2.1=py312he9c40d5_0 - bzip2=1.0.8=hda65f42_10 - - c-ares=1.34.8=hebe6cf0_2 - - ca-certificates=2026.7.22=hbd8a1cb_0 + - c-ares=1.34.9=hebe6cf0_0 + - ca-certificates=2026.10.23=hbd8a1cb_0 - cached-property=2.0.1=pyhcf101f3_0 - cached_property=2.0.1=pyhcf101f3_0 - - certifi=2026.7.22=pyhd8ed1ab_0 + - certifi=2026.10.23=pyhd8ed1ab_0 + - cffi=2.1.1=py312h703531f_3 - charset-normalizer=3.5.2=h1114479_0 - - click=8.5.0=pyh5ded981_0 - - colorama=0.4.6=pyhd8ed1ab_1 - comm=0.2.3=pyhe01879c_0 - contourpy=1.4.0=py312h9be0db6_1 - - cpython=3.12.15=py312hd8ed1ab_2 + - cpython=3.12.16=py312hd8ed1ab_0 - cycler=0.12.1=pyhcf101f3_2 - debugpy=1.8.22=py312h80505a6_0 - defusedxml=0.7.1=pyhd8ed1ab_0 - - docutils=0.21.2=pyhd8ed1ab_1 - executing=2.3.0=pyhd8ed1ab_0 - - fonttools=4.67.0=py312hfd18d64_0 + - fonttools=4.67.0=py312hfd18d64_1 + - fqdn=1.6.0=pyh5ded981_0 - freetype=2.14.3=ha770c72_2 + - h11=0.16.0=pyhcf101f3_1 - h2=4.4.1=pyhcf101f3_0 - - h5py=3.16.0=nompi_py312h7082e50_105 - - hdf5=2.2.0=nompi_hc529623_100 + - h5py=3.15.1=nompi_py312ha4f8f14_101 + - hdf5=1.14.6=nompi_h19486de_110 - hpack=4.2.0=pyhd8ed1ab_0 + - httpcore=1.0.9=pyh29332c3_0 + - httpx=0.28.1=pyhd8ed1ab_0 - hyperframe=6.1.0=pyhd8ed1ab_0 - idna=3.20=pyh5ded981_0 - - imagesize=2.0.1=pyhd8ed1ab_0 - - importlib-metadata=9.0.1=pyhcf101f3_0 + - importlib-metadata=10.0.0=pyh5ded981_0 - ipykernel=7.4.0=pyh4a3486f_0 - ipython=9.17.1=pyh53cf698_0 - ipython_pygments_lexers=1.1.1=pyhd8ed1ab_0 + - isoduration=20.11.0=pyhd8ed1ab_1 - jedi=0.20.1=pyh5ded981_0 - jinja2=3.1.6=pyhcf101f3_1 + - json5=0.17.3=pyhd8ed1ab_0 + - jsonpointer=3.6=pyh5ded981_0 - jsonschema=4.26.0=pyhcf101f3_1 - jsonschema-specifications=2025.9.1=pyhcf101f3_0 - - jupyter-book=1.0.4.post1=pyh29332c3_0 - - jupyter-cache=1.0.1=pyhff2d567_0 + - jsonschema-with-format-nongpl=4.26.0=hcf101f3_1 + - jupyter-builder=1.2.3=pyh5ded981_0 + - jupyter-lsp=2.3.1=pyhcf101f3_0 - jupyter_client=8.10.0=pyhcf101f3_0 - jupyter_core=5.9.1=pyhc90fa1f_0 + - jupyter_events=0.12.1=pyhcf101f3_0 + - jupyter_server=2.21.1=pyh5ded981_0 + - jupyter_server_terminals=0.5.4=pyhcf101f3_0 + - jupyterlab=4.6.4=pyhd8ed1ab_0 - jupyterlab_pygments=0.3.0=pyhd8ed1ab_2 - - jupytext=1.19.6=pyhb6928c1_1 + - jupyterlab_server=2.28.1=pyh5ded981_0 - keyutils=1.6.3=h7cc23a3_1 - kiwisolver=1.5.1=py312h9be0db6_3 - krb5=1.22.2=hbc21106_2 - - latexcodec=2.0.1=pyh9f0ad1d_0 + - lark=1.3.1=pyhd8ed1ab_0 - lcms2=2.19.1=h9073bf1_3 - ld_impl_linux-64=2.46.1=default_hbd61a6d_103 - lerc=4.2.0=hdb68285_0 - libaec=1.1.5=h088129d_0 - libblas=3.11.0=11_h4a7cf45_openblas - - libbrotlicommon=1.2.0=h39a168f_4 - - libbrotlidec=1.2.0=ha411449_4 - - libbrotlienc=1.2.0=h018ffa1_4 + - libbrotlicommon=1.2.1=h39a168f_0 + - libbrotlidec=1.2.1=ha411449_0 + - libbrotlienc=1.2.1=h018ffa1_0 - libcblas=3.11.0=11_h0358290_openblas - libcurl=8.21.0=hcf29cc6_1 - libdeflate=1.25=hd45a770_1 - libedit=3.1.20260512=pl5321h373387f_0 - libev=4.33=h280c20c_3 - - libexpat=2.8.5=hd2095e1_0 + - libexpat=2.9.0=hd2095e1_0 - libffi=3.7.0=h81df57d_1 - libfreetype=2.14.3=ha770c72_2 - libfreetype6=2.14.3=h5e6c136_2 @@ -102,9 +106,9 @@ dependencies: - libnsl=2.0.1=hb9d3cd8_1 - libopenblas=0.3.34=pthreads_hf13c14d_2 - libpng=1.6.59=h922cc85_0 - - libpython=3.12.15=ha57cdbe_2_cpython + - libpython=3.12.16=ha57cdbe_0_cpython - libsodium=1.0.22=hebe6cf0_3 - - libsqlite=3.54.0=h0737f62_101 + - libsqlite=3.54.1=h0737f62_101 - libssh2=1.11.1=h6154650_1 - libstdcxx=16.2.0=h934c35e_7 - libstdcxx-ng=16.2.0=hdf11a46_7 @@ -114,51 +118,48 @@ dependencies: - libxcb=1.17.0=hb83e432_2 - libxcrypt=4.4.38=h280c20c_0 - libzlib=1.3.2=h25fd6f3_3 - - linkify-it-py=2.2.0=pyhcf101f3_0 - - markdown-it-py=3.0.0=pyhd8ed1ab_1 - - markupsafe=3.0.4=py312h8b7ec3f_1 + - markupsafe=3.0.4=py312h8b7ec3f_2 - matplotlib-base=3.10.9=py312he3d6523_0 - matplotlib-inline=0.2.2=pyhd8ed1ab_0 - - mdit-py-plugins=0.6.1=pyhd8ed1ab_0 - - mdurl=0.1.2=pyhd8ed1ab_1 - - mistune=3.3.4=pyhcf101f3_0 + - mistune=3.4.0=pyh5ded981_0 - munkres=1.1.4=pyhd8ed1ab_1 - - myst-nb=1.4.0=pyhcf101f3_0 - - myst-parser=3.0.1=pyhd8ed1ab_0 - nbclient=0.11.0=pyhcf101f3_1 - - nbconvert=7.16.6=hc388f54_1 - nbconvert-core=7.16.6=pyhcf101f3_1 - - nbconvert-pandoc=7.16.6=h7d6f222_1 - nbformat=5.11.1=pyhcf101f3_0 - ncurses=6.6=hdb14827_1 - - nest-asyncio2=1.7.3=pyh5ded981_0 + - nest-asyncio2=1.7.4=pyh5ded981_0 + - notebook=7.6.3=pyh5ded981_0 + - notebook-shim=0.2.4=pyhd8ed1ab_1 - numpy=2.4.6=py312h33ff503_0 - openjpeg=2.5.4=heb1ab33_2 - openssl=3.6.5=h781a0a9_0 + - overrides=7.7.0=pyhd8ed1ab_1 - packaging=26.3=pyhc364b38_0 - - pandoc=3.12.1=ha770c72_0 - pandocfilters=1.5.1=pyh5ded981_0 - parso=0.8.7=pyhcf101f3_0 - pexpect=4.9.0=pyhd8ed1ab_1 - pillow=12.3.0=py312h38079b3_4 - - pip=26.2.1=pyh8b19718_0 - - platformdirs=4.13.3=pyh5ded981_0 + - pip=26.2.2=pyh8b19718_0 + - platformdirs=4.13.6=pyh5ded981_0 + - prometheus_client=0.26.0=pyhd8ed1ab_0 - prompt-toolkit=3.0.53=pyha770c72_0 - psutil=7.2.2=py312h1b36aeb_3 - pthread-stubs=0.4=h7cc23a3_1004 - ptyprocess=0.7.0=pyhd8ed1ab_1 - pure_eval=0.2.4=pyhd8ed1ab_0 - - pybtex=0.26.1=pyhcf101f3_0 - - pybtex-docutils=1.0.3=pyhcf101f3_4 - - pydata-sphinx-theme=0.16.1=pyhd8ed1ab_0 + - pycparser=3.12=pyh5ded981_1 + - pydantic=2.12.5=pyhcf101f3_1 + - pydantic-core=2.41.5=py312h868fb18_1 - pygments=2.21.0=pyhcf101f3_0 - pyparsing=3.3.3=pyh5ded981_0 - pysocks=1.7.1=pyha55dd90_7 - - python=3.12.15=h5f976f7_2_cpython + - python=3.12.16=h5f976f7_0_cpython - python-abi3=3.12=he1d15d4_3 - - python-dateutil=2.9.0.post0=pyhe01879c_2 + - python-dateutil=3.0.0=pyh5ded981_0 - python-fastjsonschema=2.22.2=pyhcf101f3_0 - - python-gil=3.12.15=hd8ed1ab_2 + - python-gil=3.12.16=hd8ed1ab_0 + - python-json-logger=4.2.0=pyhd8ed1ab_0 + - python-tzdata=2026.5=pyh5ded981_0 - python_abi=3.12=9_cp312 - pyyaml=6.0.3=py312h8a5da7c_1 - pyzmq=27.2.0=py312h8a5ba0d_2 @@ -166,59 +167,44 @@ dependencies: - readline=8.3=hd6e31c0_1 - referencing=0.37.0=pyhcf101f3_0 - requests=2.34.2=pyhcf101f3_0 + - rfc3339-validator=0.1.4=pyhd8ed1ab_1 + - rfc3986-validator=0.1.1=pyh9f0ad1d_0 + - rfc3987-syntax=1.1.0=pyhe01879c_1 - rpds-py=2026.9.1=py312hc767a74_0 - - s2n=1.7.6=h7e3ee7f_0 - - setuptools=84.0.0=pyh332efcf_0 + - send2trash=2.1.0=pyha191276_1 + - setuptools=84.2.1=pyhe730653_0 - six=1.17.0=pyhe01879c_1 - - snowballstemmer=3.1.1=pyhd8ed1ab_0 - - soupsieve=3.0.3=pyhd8ed1ab_0 - - sphinx=7.4.7=pyhd8ed1ab_0 - - sphinx-book-theme=1.2.0=pyhc364b38_0 - - sphinx-comments=0.0.3=pyhd8ed1ab_1 - - sphinx-copybutton=0.5.2=pyhd8ed1ab_1 - - sphinx-design=0.7.0=pyhd8ed1ab_0 - - sphinx-external-toc=1.1.0=pyhd8ed1ab_0 - - sphinx-jupyterbook-latex=1.0.0=pyhd8ed1ab_1 - - sphinx-multitoc-numbering=0.1.3=pyhd8ed1ab_1 - - sphinx-thebe=0.3.1=pyhd8ed1ab_1 - - sphinx-togglebutton=0.3.2=pyhd8ed1ab_0 - - sphinxcontrib-applehelp=2.0.0=pyhd8ed1ab_1 - - sphinxcontrib-bibtex=2.7.0=pyhd8ed1ab_0 - - sphinxcontrib-devhelp=2.0.0=pyhd8ed1ab_1 - - sphinxcontrib-htmlhelp=2.1.0=pyhd8ed1ab_1 - - sphinxcontrib-jsmath=1.0.1=pyhd8ed1ab_1 - - sphinxcontrib-qthelp=2.0.0=pyhd8ed1ab_1 - - sphinxcontrib-serializinghtml=2.0.0=pyhd8ed1ab_0 - - sqlalchemy=2.1.4=py312h1b36aeb_0 + - sniffio=1.3.1=pyhd8ed1ab_2 + - soupsieve=3.0.4=pyhd8ed1ab_0 - stack_data=0.6.3=pyhd8ed1ab_1 - - tabulate=0.10.0=pyhcf101f3_0 + - terminado=0.18.1=pyhc90fa1f_1 - tinycss2=1.4.0=pyhd8ed1ab_0 - tk=8.6.13=noxft_h1df4ec4_4 - tomli=2.5.0=pyh5ded981_0 - tornado=6.5.10=py312h5cc1888_0 - traitlets=5.16.1=pyhcf101f3_0 - typing-extensions=4.16.0=h69aa097_0 + - typing-inspection=0.4.4=pyhcf101f3_0 - typing_extensions=4.16.0=pyhcf101f3_0 - - tzdata=2026c=h151e31d_0 - - uc-micro-py=2.0.0=pyhcf101f3_0 + - typing_utils=0.1.0=pyhd8ed1ab_1 + - tzdata=2026e=h5d301ff_0 - unicodedata2=18.0.0=py312h5cc1888_0 + - uri-template=1.3.0=pyhd8ed1ab_1 - urllib3=2.8.0=pyhd8ed1ab_0 - - wcwidth=0.9.2=py311hd139983_0 - - webencodings=0.5.1=pyhd8ed1ab_3 + - wcwidth=0.9.4=py311hd139983_0 + - webcolors=25.10.0=pyhd8ed1ab_0 + - webencodings=0.6.1=pyh5ded981_0 + - websocket-client=1.9.2=pyh5ded981_1 - wheel=0.48.0=pyhd8ed1ab_0 - xorg-libxau=1.0.12=h7cc23a3_2 - xorg-libxdmcp=1.1.5=h7cc23a3_2 - yaml=0.2.5=hebe6cf0_3 - zeromq=4.3.5=h901266b_12 - - zipp=4.1.1=pyh5ded981_0 + - zipp=4.1.2=pyh5ded981_0 - zlib-ng=2.3.3=hce19668_1 - zstd=1.5.7=hb78ec9c_7 - pip: - - annotated-types == 0.8.0 - - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@e7318ecca512e9b1f5498dad92733b55cff0aa3b - - pydantic == 2.12.5 - - pydantic-core == 2.41.5 - - typing-inspection == 0.4.4 + - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@3d3e27086f07c86373ac1721d4334a60e58d36e9 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 b85a15f..fc01198 100644 --- a/environments/py-3.12-win-64-dev.conda.lock.yml +++ b/environments/py-3.12-win-64-dev.conda.lock.yml @@ -1,6 +1,6 @@ # Generated by conda-lock. # platform: win-64 -# input_hash: 7c3be9a479cc8ea7426282be1b59ca616222dc7b5b04e5854c2674bce497932a +# input_hash: 790458d94ed514a898bd62abae075ef329cca3e5b923830cd9ad880883f29d56 channels: - conda-forge @@ -9,38 +9,36 @@ dependencies: - _python_abi3_support=1.0=hd8ed1ab_3 - accessible-pygments=0.0.5=pyhd8ed1ab_1 - alabaster=0.7.16=pyhd8ed1ab_0 - - astroid=2.15.8=py312h2e8e312_0 + - annotated-types=0.8.0=pyhd8ed1ab_0 + - anyio=4.15.1=pyh5ded981_1 + - argon2-cffi=25.1.0=pyhd8ed1ab_0 + - argon2-cffi-bindings=26.1.0=py312he06e257_2 + - arrow=1.4.0=pyhcf101f3_0 + - astroid=4.3.4=py312h209ec74_0 - asttokens=3.0.2=pyhd8ed1ab_0 + - async-lru=2.4.0=pyh5ded981_0 - attrs=26.1.0=pyhcf101f3_0 - - aws-c-auth=1.0.0=h6467a12_2 - - aws-c-cal=1.0.0=h83b9fca_1 - - aws-c-common=1.0.3=h6a83c73_0 - - aws-c-compression=1.0.0=h83b9fca_1 - - aws-c-http=1.0.0=hfc53fa4_1 - - aws-c-io=1.0.0=hf08500a_0 - - aws-c-s3=1.0.0=h9752aa2_1 - - aws-c-sdkutils=1.0.0=h83b9fca_1 - - aws-checksums=1.0.1=h83b9fca_0 - babel=2.18.0=pyhcf101f3_1 - - backports.zstd=1.8.0=py312h06d0912_0 + - backports.zstd=1.8.0=py312h301c71d_1 - beautifulsoup4=4.15.0=pyha770c72_0 - bleach=6.4.0=pyhcf101f3_0 - bleach-with-css=6.4.0=hac0b51c_0 - - brotli=1.2.0=hc8c2fe1_4 - - brotli-bin=1.2.0=hd477307_4 - - brotli-python=1.2.0=py312ha763cb9_4 + - brotli=1.2.1=hc8c2fe1_0 + - brotli-bin=1.2.1=hd477307_0 + - brotli-python=1.2.1=py312ha763cb9_0 - bzip2=1.0.8=h0ad9c76_10 - - ca-certificates=2026.7.22=h4c7d964_0 + - ca-certificates=2026.10.23=h4c7d964_0 - cached-property=2.0.1=pyhcf101f3_0 - cached_property=2.0.1=pyhcf101f3_0 - - certifi=2026.7.22=pyhd8ed1ab_0 + - certifi=2026.10.23=pyhd8ed1ab_0 + - cffi=2.1.1=py312he06e257_3 - charset-normalizer=3.5.2=h308a848_0 - click=8.5.0=pyh5ded981_0 - colorama=0.4.6=pyhd8ed1ab_1 - comm=0.2.3=pyhe01879c_0 - contourpy=1.4.0=py312h78d62e6_1 - - coverage=7.16.2=py312h6fa65f5_1 - - cpython=3.12.15=py312hd8ed1ab_2 + - coverage=7.17.0=py312h6fa65f5_0 + - cpython=3.12.16=py312hd8ed1ab_0 - cycler=0.12.1=pyhcf101f3_2 - debugpy=1.8.22=py312ha1a9051_0 - defusedxml=0.7.1=pyhd8ed1ab_0 @@ -48,47 +46,62 @@ dependencies: - docutils=0.21.2=pyhd8ed1ab_1 - exceptiongroup=1.3.1=pyhd8ed1ab_0 - executing=2.3.0=pyhd8ed1ab_0 - - fonttools=4.67.0=py312h05f76fc_0 + - fonttools=4.67.0=py312h05f76fc_1 + - fqdn=1.6.0=pyh5ded981_0 - freetype=2.14.3=h57928b3_2 + - h11=0.16.0=pyhcf101f3_1 - h2=4.4.1=pyhcf101f3_0 - - h5py=3.16.0=nompi_py312h5ddec8c_105 - - hdf5=2.2.0=nompi_hd8f1e69_101 + - h5py=3.15.1=nompi_py312h03cd2ba_101 + - hdf5=1.14.6=nompi_hae35d4c_110 - hpack=4.2.0=pyhd8ed1ab_0 + - httpcore=1.0.9=pyh29332c3_0 + - httpx=0.28.1=pyhd8ed1ab_0 - hyperframe=6.1.0=pyhd8ed1ab_0 - icu=78.3=h5112557_2 - idna=3.20=pyh5ded981_0 - imagesize=2.0.1=pyhd8ed1ab_0 - - importlib-metadata=9.0.1=pyhcf101f3_0 + - importlib-metadata=10.0.0=pyh5ded981_0 - iniconfig=2.3.1=pyhd8ed1ab_0 - ipykernel=7.4.0=pyhe2676ad_0 - ipython=9.17.1=pyhe2676ad_0 - ipython_pygments_lexers=1.1.1=pyhd8ed1ab_0 - - isort=5.13.2=pyhd8ed1ab_1 + - isoduration=20.11.0=pyhd8ed1ab_1 + - isort=9.0.2=pyhd8ed1ab_0 - jedi=0.20.1=pyh5ded981_0 - jinja2=3.1.6=pyhcf101f3_1 + - json5=0.17.3=pyhd8ed1ab_0 + - jsonpointer=3.6=pyh5ded981_0 - jsonschema=4.26.0=pyhcf101f3_1 - jsonschema-specifications=2025.9.1=pyhcf101f3_0 + - jsonschema-with-format-nongpl=4.26.0=hcf101f3_1 - jupyter-book=1.0.4.post1=pyh29332c3_0 + - jupyter-builder=1.2.3=pyh5ded981_0 - jupyter-cache=1.0.1=pyhff2d567_0 + - jupyter-lsp=2.3.1=pyhcf101f3_0 - jupyter_client=8.10.0=pyhcf101f3_0 - jupyter_core=5.9.1=pyh6dadd2b_0 + - jupyter_events=0.12.1=pyhcf101f3_0 + - jupyter_server=2.21.1=pyh5ded981_0 + - jupyter_server_terminals=0.5.4=pyhcf101f3_0 + - jupyterlab=4.6.4=pyhd8ed1ab_0 - jupyterlab_pygments=0.3.0=pyhd8ed1ab_2 + - jupyterlab_server=2.28.1=pyh5ded981_0 - jupytext=1.19.6=pyhb6928c1_1 - kiwisolver=1.5.1=py312h78d62e6_3 - krb5=1.22.2=h719d79b_2 + - lark=1.3.1=pyhd8ed1ab_0 - latexcodec=2.0.1=pyh9f0ad1d_0 - - lazy-object-proxy=1.12.0=py312he5662c2_5 - lcms2=2.19.1=hf2c6c5f_3 - lerc=4.2.0=hd936e49_0 - libaec=1.1.5=haf901d7_0 - libblas=3.11.0=11_h8455456_mkl - - libbrotlicommon=1.2.0=hf02afa3_4 - - libbrotlidec=1.2.0=h84f9c24_4 - - libbrotlienc=1.2.0=he2a975b_4 + - libbrotlicommon=1.2.1=hf02afa3_0 + - libbrotlidec=1.2.1=h84f9c24_0 + - libbrotlienc=1.2.1=he2a975b_0 - libcblas=3.11.0=11_h2a3cdd5_mkl - libcurl=8.23.0=hdb0ef4a_0 - libdeflate=1.25=h1a1d4e4_1 - - libexpat=2.8.5=hac47afa_0 + - libexpat=2.9.0=hac47afa_0 - libffi=3.7.0=h3d046cb_1 - libfreetype=2.14.3=h57928b3_2 - libfreetype6=2.14.3=hdbac1cb_2 @@ -99,28 +112,29 @@ dependencies: - liblzma=5.8.3=hfd05255_1 - libpng=1.6.59=hdc8cecf_0 - libpsl=0.23.1=h9b16d47_1 - - libpython=3.12.15=hfb4101e_2_cpython + - libpython=3.12.16=hfb4101e_0_cpython - libsodium=1.0.22=h6a83c73_3 - - libsqlite=3.54.0=hf5d6505_101 + - libsqlite=3.54.1=hf5d6505_101 - libssh2=1.11.1=h734d217_1 - libtiff=4.7.2=h8f73337_1 - libwebp-base=1.6.0=h4d5522a_1 - - libwinpthread=12.0.0.r4.gg4f2fc60ca=h11686cb_11 + - libwinpthread=12.0.0.r688.g6b2176247.1=h57928b3_0 - libxml2=2.15.4=he095d88_1 - libxml2-16=2.15.4=h3cfd58e_1 - libzlib=1.3.2=hfd05255_3 - linkify-it-py=2.2.0=pyhcf101f3_0 - - llvm-openmp=23.1.3=h49e36cd_1 + - llvm-openmp=23.1.4=h49e36cd_0 - markdown-it-py=3.0.0=pyhd8ed1ab_1 - - markupsafe=3.0.4=py312h6fa65f5_1 + - markupsafe=3.0.4=py312h6fa65f5_2 - matplotlib-base=3.10.9=py312h0ebf65c_0 - matplotlib-inline=0.2.2=pyhd8ed1ab_0 - mccabe=0.7.0=pyhd8ed1ab_1 - mdit-py-plugins=0.6.1=pyhd8ed1ab_0 - mdurl=0.1.2=pyhd8ed1ab_1 - - mistune=3.3.4=pyhcf101f3_0 - - mkl=2026.1.0=hac47afa_235 + - mistune=3.4.0=pyh5ded981_0 + - mkl=2026.2.0=hac47afa_882 - munkres=1.1.4=pyhd8ed1ab_1 + - mypy_extensions=1.1.0=pyha770c72_0 - myst-nb=1.4.0=pyhcf101f3_0 - myst-parser=3.0.1=pyhd8ed1ab_0 - nbclient=0.11.0=pyhcf101f3_1 @@ -128,47 +142,62 @@ dependencies: - nbconvert-core=7.16.6=pyhcf101f3_1 - nbconvert-pandoc=7.16.6=h7d6f222_1 - nbformat=5.11.1=pyhcf101f3_0 - - nest-asyncio2=1.7.3=pyh5ded981_0 + - nest-asyncio2=1.7.4=pyh5ded981_0 + - notebook=7.6.3=pyh5ded981_0 + - notebook-shim=0.2.4=pyhd8ed1ab_1 - numpy=2.4.6=py312ha3f287d_0 - openjpeg=2.5.4=h90fa87c_2 - openssl=3.6.5=hf411b9b_0 + - overrides=7.7.0=pyhd8ed1ab_1 - packaging=26.3=pyhc364b38_0 - - pandoc=3.12.1=h57928b3_0 + - pandoc=3.13=h57928b3_0 - pandocfilters=1.5.1=pyh5ded981_0 - parso=0.8.7=pyhcf101f3_0 - pillow=12.3.0=py312h7bb5964_4 - - pip=26.2.1=pyh8b19718_0 - - platformdirs=4.13.3=pyh5ded981_0 + - pip=26.2.2=pyh8b19718_0 + - platformdirs=4.13.6=pyh5ded981_0 - pluggy=1.7.0=pyh5ded981_0 + - prometheus_client=0.26.0=pyhd8ed1ab_0 - prompt-toolkit=3.0.53=pyha770c72_0 - psutil=7.2.2=py312he5662c2_3 - pure_eval=0.2.4=pyhd8ed1ab_0 - pybtex=0.26.1=pyhcf101f3_0 - pybtex-docutils=1.0.3=pyhcf101f3_4 + - pycparser=3.12=pyh5ded981_1 + - pydantic=2.12.5=pyhcf101f3_1 + - pydantic-core=2.41.5=py312hdabe01f_1 - pydata-sphinx-theme=0.16.1=pyhd8ed1ab_0 - pygments=2.21.0=pyhcf101f3_0 - - pylint=2.17.7=pyhd8ed1ab_0 + - pylint=4.1.3=pyh5ded981_0 - pyparsing=3.3.3=pyh5ded981_0 - pysocks=1.7.1=pyh09c184e_7 - - pytest=7.4.4=pyhd8ed1ab_0 - - pytest-cov=3.0.0=pyhd8ed1ab_0 - - python=3.12.15=hb12b558_2_cpython + - pytest=9.1.1=pyhc364b38_2 + - pytest-cov=7.1.0=pyhcf101f3_0 + - python=3.12.16=hb12b558_0_cpython - python-abi3=3.12=hd2c606e_3 - - python-dateutil=2.9.0.post0=pyhe01879c_2 + - python-dateutil=3.0.0=pyh5ded981_0 - python-fastjsonschema=2.22.2=pyhcf101f3_0 - - python-gil=3.12.15=hd8ed1ab_2 + - python-gil=3.12.16=hd8ed1ab_0 + - python-json-logger=4.2.0=pyhd8ed1ab_0 + - python-tzdata=2026.5=pyh5ded981_0 - python_abi=3.12=9_cp312 - pywin32=312=py312h95189c4_2 + - pywinpty=3.1.0=py312h275cf98_0 - pyyaml=6.0.3=py312h05f76fc_1 - pyzmq=27.2.0=py312h343a6d4_2 - qhull=2020.2=hc790b64_5 - referencing=0.37.0=pyhcf101f3_0 - requests=2.34.2=pyhcf101f3_0 + - rfc3339-validator=0.1.4=pyhd8ed1ab_1 + - rfc3986-validator=0.1.1=pyh9f0ad1d_0 + - rfc3987-syntax=1.1.0=pyhe01879c_1 - rpds-py=2026.9.1=py312hdabe01f_0 - - setuptools=84.0.0=pyh332efcf_0 + - send2trash=2.1.0=pyh6dadd2b_1 + - setuptools=84.2.1=pyhe730653_0 - six=1.17.0=pyhe01879c_1 + - sniffio=1.3.1=pyhd8ed1ab_2 - snowballstemmer=3.1.1=pyhd8ed1ab_0 - - soupsieve=3.0.3=pyhd8ed1ab_0 + - soupsieve=3.0.4=pyhd8ed1ab_0 - sphinx=7.4.7=pyhd8ed1ab_0 - sphinx-book-theme=1.2.0=pyhc364b38_0 - sphinx-comments=0.0.3=pyhd8ed1ab_1 @@ -183,47 +212,48 @@ dependencies: - sphinxcontrib-bibtex=2.7.0=pyhd8ed1ab_0 - sphinxcontrib-devhelp=2.0.0=pyhd8ed1ab_1 - sphinxcontrib-htmlhelp=2.1.0=pyhd8ed1ab_1 - - sphinxcontrib-jsmath=1.0.1=pyhd8ed1ab_1 + - sphinxcontrib-jsmath=2.0.0=pyh5ded981_0 - sphinxcontrib-qthelp=2.0.0=pyhd8ed1ab_1 - sphinxcontrib-serializinghtml=2.0.0=pyhd8ed1ab_0 - - sqlalchemy=2.1.4=py312he5662c2_0 + - sqlalchemy=2.1.6=py312he5662c2_0 - stack_data=0.6.3=pyhd8ed1ab_1 - tabulate=0.10.0=pyhcf101f3_0 - tbb=2023.1.0=h272cf33_2 + - terminado=0.18.1=pyh6dadd2b_1 - tinycss2=1.4.0=pyhd8ed1ab_0 - tk=8.6.13=h967ab96_4 - - toml=0.10.2=pyhcf101f3_3 - tomli=2.5.0=pyh5ded981_0 - tomlkit=0.15.2=pyh5ded981_0 - tornado=6.5.10=py312he06e257_0 - traitlets=5.16.1=pyhcf101f3_0 - typing-extensions=4.16.0=h69aa097_0 + - typing-inspection=0.4.4=pyhcf101f3_0 - typing_extensions=4.16.0=pyhcf101f3_0 - - tzdata=2026c=h151e31d_0 + - typing_utils=0.1.0=pyhd8ed1ab_1 + - tzdata=2026e=h5d301ff_0 - uc-micro-py=2.0.0=pyhcf101f3_0 - ucrt=10.0.26100.0=h57928b3_0 - unicodedata2=18.0.0=py312he06e257_0 + - uri-template=1.3.0=pyhd8ed1ab_1 - urllib3=2.8.0=pyhd8ed1ab_0 - vc=14.5=ha367084_41 - vc14_runtime=14.51.36247=habf1de7_41 - vcomp14=14.51.36247=habf1de7_41 - - wcwidth=0.9.2=py311hdbcae8a_0 - - webencodings=0.5.1=pyhd8ed1ab_3 + - wcwidth=0.9.4=py311hdbcae8a_0 + - webcolors=25.10.0=pyhd8ed1ab_0 + - webencodings=0.6.1=pyh5ded981_0 + - websocket-client=1.9.2=pyh5ded981_1 - wheel=0.48.0=pyhd8ed1ab_0 - win_inet_pton=1.1.0=pyh7428d3b_8 - - wrapt=1.17.3=py312he06e257_1 + - winpty=0.4.3=h57928b3_5 - yaml=0.2.5=h6a83c73_3 - zeromq=4.3.5=h3a581c9_12 - - zipp=4.1.1=pyh5ded981_0 + - zipp=4.1.2=pyh5ded981_0 - zlib=1.3.2=hfd05255_3 - zlib-ng=2.3.3=h0261ad2_1 - zstd=1.5.7=h534d264_7 - pip: - - annotated-types == 0.8.0 - - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@e7318ecca512e9b1f5498dad92733b55cff0aa3b - - pydantic == 2.12.5 - - pydantic-core == 2.41.5 - - typing-inspection == 0.4.4 + - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@3d3e27086f07c86373ac1721d4334a60e58d36e9 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 daf76e3..f859872 100644 --- a/environments/py-3.12-win-64.conda.lock.yml +++ b/environments/py-3.12-win-64.conda.lock.yml @@ -1,87 +1,92 @@ # Generated by conda-lock. # platform: win-64 -# input_hash: 7c3be9a479cc8ea7426282be1b59ca616222dc7b5b04e5854c2674bce497932a +# input_hash: 790458d94ed514a898bd62abae075ef329cca3e5b923830cd9ad880883f29d56 channels: - conda-forge - nodefaults dependencies: - _python_abi3_support=1.0=hd8ed1ab_3 - - accessible-pygments=0.0.5=pyhd8ed1ab_1 - - alabaster=0.7.16=pyhd8ed1ab_0 + - annotated-types=0.8.0=pyhd8ed1ab_0 + - anyio=4.15.1=pyh5ded981_1 + - argon2-cffi=25.1.0=pyhd8ed1ab_0 + - argon2-cffi-bindings=26.1.0=py312he06e257_2 + - arrow=1.4.0=pyhcf101f3_0 - asttokens=3.0.2=pyhd8ed1ab_0 + - async-lru=2.4.0=pyh5ded981_0 - attrs=26.1.0=pyhcf101f3_0 - - aws-c-auth=1.0.0=h6467a12_2 - - aws-c-cal=1.0.0=h83b9fca_1 - - aws-c-common=1.0.3=h6a83c73_0 - - aws-c-compression=1.0.0=h83b9fca_1 - - aws-c-http=1.0.0=hfc53fa4_1 - - aws-c-io=1.0.0=hf08500a_0 - - aws-c-s3=1.0.0=h9752aa2_1 - - aws-c-sdkutils=1.0.0=h83b9fca_1 - - aws-checksums=1.0.1=h83b9fca_0 - babel=2.18.0=pyhcf101f3_1 - - backports.zstd=1.8.0=py312h06d0912_0 + - backports.zstd=1.8.0=py312h301c71d_1 - beautifulsoup4=4.15.0=pyha770c72_0 - bleach=6.4.0=pyhcf101f3_0 - bleach-with-css=6.4.0=hac0b51c_0 - - brotli=1.2.0=hc8c2fe1_4 - - brotli-bin=1.2.0=hd477307_4 - - brotli-python=1.2.0=py312ha763cb9_4 + - brotli=1.2.1=hc8c2fe1_0 + - brotli-bin=1.2.1=hd477307_0 + - brotli-python=1.2.1=py312ha763cb9_0 - bzip2=1.0.8=h0ad9c76_10 - - ca-certificates=2026.7.22=h4c7d964_0 + - ca-certificates=2026.10.23=h4c7d964_0 - cached-property=2.0.1=pyhcf101f3_0 - cached_property=2.0.1=pyhcf101f3_0 - - certifi=2026.7.22=pyhd8ed1ab_0 + - certifi=2026.10.23=pyhd8ed1ab_0 + - cffi=2.1.1=py312he06e257_3 - charset-normalizer=3.5.2=h308a848_0 - - click=8.5.0=pyh5ded981_0 - colorama=0.4.6=pyhd8ed1ab_1 - comm=0.2.3=pyhe01879c_0 - contourpy=1.4.0=py312h78d62e6_1 - - cpython=3.12.15=py312hd8ed1ab_2 + - cpython=3.12.16=py312hd8ed1ab_0 - cycler=0.12.1=pyhcf101f3_2 - debugpy=1.8.22=py312ha1a9051_0 - defusedxml=0.7.1=pyhd8ed1ab_0 - - docutils=0.21.2=pyhd8ed1ab_1 - executing=2.3.0=pyhd8ed1ab_0 - - fonttools=4.67.0=py312h05f76fc_0 + - fonttools=4.67.0=py312h05f76fc_1 + - fqdn=1.6.0=pyh5ded981_0 - freetype=2.14.3=h57928b3_2 + - h11=0.16.0=pyhcf101f3_1 - h2=4.4.1=pyhcf101f3_0 - - h5py=3.16.0=nompi_py312h5ddec8c_105 - - hdf5=2.2.0=nompi_hd8f1e69_101 + - h5py=3.15.1=nompi_py312h03cd2ba_101 + - hdf5=1.14.6=nompi_hae35d4c_110 - hpack=4.2.0=pyhd8ed1ab_0 + - httpcore=1.0.9=pyh29332c3_0 + - httpx=0.28.1=pyhd8ed1ab_0 - hyperframe=6.1.0=pyhd8ed1ab_0 - icu=78.3=h5112557_2 - idna=3.20=pyh5ded981_0 - - imagesize=2.0.1=pyhd8ed1ab_0 - - importlib-metadata=9.0.1=pyhcf101f3_0 + - importlib-metadata=10.0.0=pyh5ded981_0 - ipykernel=7.4.0=pyhe2676ad_0 - ipython=9.17.1=pyhe2676ad_0 - ipython_pygments_lexers=1.1.1=pyhd8ed1ab_0 + - isoduration=20.11.0=pyhd8ed1ab_1 - jedi=0.20.1=pyh5ded981_0 - jinja2=3.1.6=pyhcf101f3_1 + - json5=0.17.3=pyhd8ed1ab_0 + - jsonpointer=3.6=pyh5ded981_0 - jsonschema=4.26.0=pyhcf101f3_1 - jsonschema-specifications=2025.9.1=pyhcf101f3_0 - - jupyter-book=1.0.4.post1=pyh29332c3_0 - - jupyter-cache=1.0.1=pyhff2d567_0 + - jsonschema-with-format-nongpl=4.26.0=hcf101f3_1 + - jupyter-builder=1.2.3=pyh5ded981_0 + - jupyter-lsp=2.3.1=pyhcf101f3_0 - jupyter_client=8.10.0=pyhcf101f3_0 - jupyter_core=5.9.1=pyh6dadd2b_0 + - jupyter_events=0.12.1=pyhcf101f3_0 + - jupyter_server=2.21.1=pyh5ded981_0 + - jupyter_server_terminals=0.5.4=pyhcf101f3_0 + - jupyterlab=4.6.4=pyhd8ed1ab_0 - jupyterlab_pygments=0.3.0=pyhd8ed1ab_2 - - jupytext=1.19.6=pyhb6928c1_1 + - jupyterlab_server=2.28.1=pyh5ded981_0 - kiwisolver=1.5.1=py312h78d62e6_3 - krb5=1.22.2=h719d79b_2 - - latexcodec=2.0.1=pyh9f0ad1d_0 + - lark=1.3.1=pyhd8ed1ab_0 - lcms2=2.19.1=hf2c6c5f_3 - lerc=4.2.0=hd936e49_0 - libaec=1.1.5=haf901d7_0 - libblas=3.11.0=11_h8455456_mkl - - libbrotlicommon=1.2.0=hf02afa3_4 - - libbrotlidec=1.2.0=h84f9c24_4 - - libbrotlienc=1.2.0=he2a975b_4 + - libbrotlicommon=1.2.1=hf02afa3_0 + - libbrotlidec=1.2.1=h84f9c24_0 + - libbrotlienc=1.2.1=he2a975b_0 - libcblas=3.11.0=11_h2a3cdd5_mkl - libcurl=8.23.0=hdb0ef4a_0 - libdeflate=1.25=h1a1d4e4_1 - - libexpat=2.8.5=hac47afa_0 + - libexpat=2.9.0=hac47afa_0 - libffi=3.7.0=h3d046cb_1 - libfreetype=2.14.3=h57928b3_2 - libfreetype6=2.14.3=hdbac1cb_2 @@ -92,123 +97,108 @@ dependencies: - liblzma=5.8.3=hfd05255_1 - libpng=1.6.59=hdc8cecf_0 - libpsl=0.23.1=h9b16d47_1 - - libpython=3.12.15=hfb4101e_2_cpython + - libpython=3.12.16=hfb4101e_0_cpython - libsodium=1.0.22=h6a83c73_3 - - libsqlite=3.54.0=hf5d6505_101 + - libsqlite=3.54.1=hf5d6505_101 - libssh2=1.11.1=h734d217_1 - libtiff=4.7.2=h8f73337_1 - libwebp-base=1.6.0=h4d5522a_1 - - libwinpthread=12.0.0.r4.gg4f2fc60ca=h11686cb_11 + - libwinpthread=12.0.0.r688.g6b2176247.1=h57928b3_0 - libxml2=2.15.4=he095d88_1 - libxml2-16=2.15.4=h3cfd58e_1 - libzlib=1.3.2=hfd05255_3 - - linkify-it-py=2.2.0=pyhcf101f3_0 - - llvm-openmp=23.1.3=h49e36cd_1 - - markdown-it-py=3.0.0=pyhd8ed1ab_1 - - markupsafe=3.0.4=py312h6fa65f5_1 + - llvm-openmp=23.1.4=h49e36cd_0 + - markupsafe=3.0.4=py312h6fa65f5_2 - matplotlib-base=3.10.9=py312h0ebf65c_0 - matplotlib-inline=0.2.2=pyhd8ed1ab_0 - - mdit-py-plugins=0.6.1=pyhd8ed1ab_0 - - mdurl=0.1.2=pyhd8ed1ab_1 - - mistune=3.3.4=pyhcf101f3_0 - - mkl=2026.1.0=hac47afa_235 + - mistune=3.4.0=pyh5ded981_0 + - mkl=2026.2.0=hac47afa_882 - munkres=1.1.4=pyhd8ed1ab_1 - - myst-nb=1.4.0=pyhcf101f3_0 - - myst-parser=3.0.1=pyhd8ed1ab_0 - nbclient=0.11.0=pyhcf101f3_1 - - nbconvert=7.16.6=hc388f54_1 - nbconvert-core=7.16.6=pyhcf101f3_1 - - nbconvert-pandoc=7.16.6=h7d6f222_1 - nbformat=5.11.1=pyhcf101f3_0 - - nest-asyncio2=1.7.3=pyh5ded981_0 + - nest-asyncio2=1.7.4=pyh5ded981_0 + - notebook=7.6.3=pyh5ded981_0 + - notebook-shim=0.2.4=pyhd8ed1ab_1 - numpy=2.4.6=py312ha3f287d_0 - openjpeg=2.5.4=h90fa87c_2 - openssl=3.6.5=hf411b9b_0 + - overrides=7.7.0=pyhd8ed1ab_1 - packaging=26.3=pyhc364b38_0 - - pandoc=3.12.1=h57928b3_0 - pandocfilters=1.5.1=pyh5ded981_0 - parso=0.8.7=pyhcf101f3_0 - pillow=12.3.0=py312h7bb5964_4 - - pip=26.2.1=pyh8b19718_0 - - platformdirs=4.13.3=pyh5ded981_0 + - pip=26.2.2=pyh8b19718_0 + - platformdirs=4.13.6=pyh5ded981_0 + - prometheus_client=0.26.0=pyhd8ed1ab_0 - prompt-toolkit=3.0.53=pyha770c72_0 - psutil=7.2.2=py312he5662c2_3 - pure_eval=0.2.4=pyhd8ed1ab_0 - - pybtex=0.26.1=pyhcf101f3_0 - - pybtex-docutils=1.0.3=pyhcf101f3_4 - - pydata-sphinx-theme=0.16.1=pyhd8ed1ab_0 + - pycparser=3.12=pyh5ded981_1 + - pydantic=2.12.5=pyhcf101f3_1 + - pydantic-core=2.41.5=py312hdabe01f_1 - pygments=2.21.0=pyhcf101f3_0 - pyparsing=3.3.3=pyh5ded981_0 - pysocks=1.7.1=pyh09c184e_7 - - python=3.12.15=hb12b558_2_cpython + - python=3.12.16=hb12b558_0_cpython - python-abi3=3.12=hd2c606e_3 - - python-dateutil=2.9.0.post0=pyhe01879c_2 + - python-dateutil=3.0.0=pyh5ded981_0 - python-fastjsonschema=2.22.2=pyhcf101f3_0 - - python-gil=3.12.15=hd8ed1ab_2 + - python-gil=3.12.16=hd8ed1ab_0 + - python-json-logger=4.2.0=pyhd8ed1ab_0 + - python-tzdata=2026.5=pyh5ded981_0 - python_abi=3.12=9_cp312 - pywin32=312=py312h95189c4_2 + - pywinpty=3.1.0=py312h275cf98_0 - pyyaml=6.0.3=py312h05f76fc_1 - pyzmq=27.2.0=py312h343a6d4_2 - qhull=2020.2=hc790b64_5 - referencing=0.37.0=pyhcf101f3_0 - requests=2.34.2=pyhcf101f3_0 + - rfc3339-validator=0.1.4=pyhd8ed1ab_1 + - rfc3986-validator=0.1.1=pyh9f0ad1d_0 + - rfc3987-syntax=1.1.0=pyhe01879c_1 - rpds-py=2026.9.1=py312hdabe01f_0 - - setuptools=84.0.0=pyh332efcf_0 + - send2trash=2.1.0=pyh6dadd2b_1 + - setuptools=84.2.1=pyhe730653_0 - six=1.17.0=pyhe01879c_1 - - snowballstemmer=3.1.1=pyhd8ed1ab_0 - - soupsieve=3.0.3=pyhd8ed1ab_0 - - sphinx=7.4.7=pyhd8ed1ab_0 - - sphinx-book-theme=1.2.0=pyhc364b38_0 - - sphinx-comments=0.0.3=pyhd8ed1ab_1 - - sphinx-copybutton=0.5.2=pyhd8ed1ab_1 - - sphinx-design=0.7.0=pyhd8ed1ab_0 - - sphinx-external-toc=1.1.0=pyhd8ed1ab_0 - - sphinx-jupyterbook-latex=1.0.0=pyhd8ed1ab_1 - - sphinx-multitoc-numbering=0.1.3=pyhd8ed1ab_1 - - sphinx-thebe=0.3.1=pyhd8ed1ab_1 - - sphinx-togglebutton=0.3.2=pyhd8ed1ab_0 - - sphinxcontrib-applehelp=2.0.0=pyhd8ed1ab_1 - - sphinxcontrib-bibtex=2.7.0=pyhd8ed1ab_0 - - sphinxcontrib-devhelp=2.0.0=pyhd8ed1ab_1 - - sphinxcontrib-htmlhelp=2.1.0=pyhd8ed1ab_1 - - sphinxcontrib-jsmath=1.0.1=pyhd8ed1ab_1 - - sphinxcontrib-qthelp=2.0.0=pyhd8ed1ab_1 - - sphinxcontrib-serializinghtml=2.0.0=pyhd8ed1ab_0 - - sqlalchemy=2.1.4=py312he5662c2_0 + - sniffio=1.3.1=pyhd8ed1ab_2 + - soupsieve=3.0.4=pyhd8ed1ab_0 - stack_data=0.6.3=pyhd8ed1ab_1 - - tabulate=0.10.0=pyhcf101f3_0 - tbb=2023.1.0=h272cf33_2 + - terminado=0.18.1=pyh6dadd2b_1 - tinycss2=1.4.0=pyhd8ed1ab_0 - tk=8.6.13=h967ab96_4 - tomli=2.5.0=pyh5ded981_0 - tornado=6.5.10=py312he06e257_0 - traitlets=5.16.1=pyhcf101f3_0 - typing-extensions=4.16.0=h69aa097_0 + - typing-inspection=0.4.4=pyhcf101f3_0 - typing_extensions=4.16.0=pyhcf101f3_0 - - tzdata=2026c=h151e31d_0 - - uc-micro-py=2.0.0=pyhcf101f3_0 + - typing_utils=0.1.0=pyhd8ed1ab_1 + - tzdata=2026e=h5d301ff_0 - ucrt=10.0.26100.0=h57928b3_0 - unicodedata2=18.0.0=py312he06e257_0 + - uri-template=1.3.0=pyhd8ed1ab_1 - urllib3=2.8.0=pyhd8ed1ab_0 - vc=14.5=ha367084_41 - vc14_runtime=14.51.36247=habf1de7_41 - vcomp14=14.51.36247=habf1de7_41 - - wcwidth=0.9.2=py311hdbcae8a_0 - - webencodings=0.5.1=pyhd8ed1ab_3 + - wcwidth=0.9.4=py311hdbcae8a_0 + - webcolors=25.10.0=pyhd8ed1ab_0 + - webencodings=0.6.1=pyh5ded981_0 + - websocket-client=1.9.2=pyh5ded981_1 - wheel=0.48.0=pyhd8ed1ab_0 - win_inet_pton=1.1.0=pyh7428d3b_8 + - winpty=0.4.3=h57928b3_5 - yaml=0.2.5=h6a83c73_3 - zeromq=4.3.5=h3a581c9_12 - - zipp=4.1.1=pyh5ded981_0 + - zipp=4.1.2=pyh5ded981_0 - zlib=1.3.2=hfd05255_3 - zlib-ng=2.3.3=h0261ad2_1 - zstd=1.5.7=h534d264_7 - pip: - - annotated-types == 0.8.0 - - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@e7318ecca512e9b1f5498dad92733b55cff0aa3b - - pydantic == 2.12.5 - - pydantic-core == 2.41.5 - - typing-inspection == 0.4.4 + - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@3d3e27086f07c86373ac1721d4334a60e58d36e9 variables: KMP_WARNINGS: 0 diff --git a/get_conda_exec.bat b/get_conda_exec.bat index 496bc57..3870287 100644 --- a/get_conda_exec.bat +++ b/get_conda_exec.bat @@ -38,15 +38,20 @@ set conda_distributions=^ "Continuum\anaconda3";^ -set conda_bat_subpath=Library\bin\conda.bat +set conda_bat_subpaths=^ + condabin\conda.bat;^ + Library\bin\conda.bat;^ + for %%p in (%usual_conda_install_locations%) do ( for %%d in (%conda_distributions%) do ( - set base_path=%%p\%%d - set conda_path="!base_path:"=!\%conda_bat_subpath%" - if exist !conda_path! ( - set MY_CONDA_EXE=!conda_path! - goto success + for %%s in (%conda_bat_subpaths%) do ( + set base_path=%%p\%%d + set conda_path="!base_path:"=!\%%s" + if exist !conda_path! ( + set MY_CONDA_EXE=!conda_path! + goto success + ) ) ) ) @@ -55,6 +60,11 @@ echo You can define a custom Conda location with in !custom_script! exit /B 1 :success + :: if mamba.bat is here too, use it instead of conda.bat + set mamba_path=!MY_CONDA_EXE:conda.bat=mamba.bat! + if exist !mamba_path! ( + set MY_CONDA_EXE=!mamba_path! + ) echo Using Conda: !MY_CONDA_EXE! endlocal & set MY_CONDA_EXE=%MY_CONDA_EXE% exit /B 0 diff --git a/py-3.12.conda-lock.yml b/py-3.12.conda-lock.yml index 5f62b3c..a30ed9c 100644 --- a/py-3.12.conda-lock.yml +++ b/py-3.12.conda-lock.yml @@ -15,8 +15,8 @@ version: 1 metadata: content_hash: - win-64: 7c3be9a479cc8ea7426282be1b59ca616222dc7b5b04e5854c2674bce497932a - linux-64: 582a4e11a542b2c2e9ce49b56b9365261818938b7fa31d8a336991b50a760f31 + win-64: 790458d94ed514a898bd62abae075ef329cca3e5b923830cd9ad880883f29d56 + linux-64: 9ab7bd68a853718efd7b8e537d4fd5b55b498320b051f41aeb048496ec2d770c channels: - url: conda-forge used_env_vars: [] @@ -79,8 +79,8 @@ package: hash: md5: 74ac5069774cdbc53910ec4d631a3999 sha256: 1307719f0d8ee694fc923579a39c0621c23fdaa14ccdf9278a5aac5665ac58e9 - category: main - optional: false + category: dev + optional: true - name: accessible-pygments version: 0.0.5 manager: conda @@ -92,8 +92,8 @@ package: hash: md5: 74ac5069774cdbc53910ec4d631a3999 sha256: 1307719f0d8ee694fc923579a39c0621c23fdaa14ccdf9278a5aac5665ac58e9 - category: main - optional: false + category: dev + optional: true - name: alabaster version: 0.7.16 manager: conda @@ -104,8 +104,8 @@ package: hash: md5: def531a3ac77b7fb8c21d17bb5d0badb sha256: fd39ad2fabec1569bbb0dfdae34ab6ce7de6ec09dcec8638f83dad0373594069 - category: main - optional: false + category: dev + optional: true - name: alabaster version: 0.7.16 manager: conda @@ -116,372 +116,247 @@ package: hash: md5: def531a3ac77b7fb8c21d17bb5d0badb sha256: fd39ad2fabec1569bbb0dfdae34ab6ce7de6ec09dcec8638f83dad0373594069 - category: main - optional: false -- name: astroid - version: 2.15.8 - manager: conda - platform: linux-64 - dependencies: - lazy-object-proxy: '>=1.4.0' - python: '>=3.12.0rc3,<3.13.0a0' - python_abi: 3.12.* - wrapt: <2,>=1.14 - url: https://repo.prefix.dev/conda-forge/linux-64/astroid-2.15.8-py312h7900ff3_0.conda - hash: - md5: ea50b35296792cb8c25d9569a484e9d9 - sha256: 347faea9c4887ae00ed870a53c6329c0c84ebef43808304678d78df3ba021110 - category: dev - optional: true -- name: astroid - version: 2.15.8 - manager: conda - platform: win-64 - dependencies: - lazy-object-proxy: '>=1.4.0' - python: '>=3.12.0rc3,<3.13.0a0' - python_abi: 3.12.* - wrapt: <2,>=1.14 - url: https://repo.prefix.dev/conda-forge/win-64/astroid-2.15.8-py312h2e8e312_0.conda - hash: - md5: 64fb302b5466d84a82500a464d16e848 - sha256: ad8530faafc30cce4f89e4cd51e7a7ccacf588b560a2ff4d28c089595444d388 category: dev optional: true -- name: asttokens - version: 3.0.2 +- name: annotated-types + version: 0.8.0 manager: conda platform: linux-64 dependencies: python: '>=3.10' - url: https://repo.prefix.dev/conda-forge/noarch/asttokens-3.0.2-pyhd8ed1ab_0.conda + typing-extensions: '>=4.0.0' + url: https://repo.prefix.dev/conda-forge/noarch/annotated-types-0.8.0-pyhd8ed1ab_0.conda hash: - md5: 89d495168582cb00428dad699d149624 - sha256: fbbd8ce60cbd5c16f3fe559eb644551f94285caff30985ea961ff851c1cf25ac + md5: 108c928d2a8551832dbc762b535e90bb + sha256: b8fcb994134d3918d1c64a9d62f4168ff85d5bfb89e698102fe4ed679fe0df24 category: main optional: false -- name: asttokens - version: 3.0.2 +- name: annotated-types + version: 0.8.0 manager: conda platform: win-64 dependencies: python: '>=3.10' - url: https://repo.prefix.dev/conda-forge/noarch/asttokens-3.0.2-pyhd8ed1ab_0.conda + typing-extensions: '>=4.0.0' + url: https://repo.prefix.dev/conda-forge/noarch/annotated-types-0.8.0-pyhd8ed1ab_0.conda hash: - md5: 89d495168582cb00428dad699d149624 - sha256: fbbd8ce60cbd5c16f3fe559eb644551f94285caff30985ea961ff851c1cf25ac + md5: 108c928d2a8551832dbc762b535e90bb + sha256: b8fcb994134d3918d1c64a9d62f4168ff85d5bfb89e698102fe4ed679fe0df24 category: main optional: false -- name: attrs - version: 26.1.0 +- name: anyio + version: 4.15.1 manager: conda platform: linux-64 dependencies: + idna: '>=2.8' python: '' - url: https://repo.prefix.dev/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda + typing_extensions: '>=4.16.0' + url: https://repo.prefix.dev/conda-forge/noarch/anyio-4.15.1-pyh5ded981_1.conda hash: - md5: c6b0543676ecb1fb2d7643941fe375f2 - sha256: 1b6124230bb4e571b1b9401537ecff575b7b109cc3a21ee019f65e083b8399ab + md5: 33cdc5ba7c481b371f08f88e6c048c55 + sha256: fc25a84c9c1ad4b48c136ad2363100e8b0faa3b0ab8985e61c9c8fa0b3431945 category: main optional: false -- name: attrs - version: 26.1.0 +- name: anyio + version: 4.15.1 manager: conda platform: win-64 dependencies: + idna: '>=2.8' python: '' - url: https://repo.prefix.dev/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda - hash: - md5: c6b0543676ecb1fb2d7643941fe375f2 - sha256: 1b6124230bb4e571b1b9401537ecff575b7b109cc3a21ee019f65e083b8399ab - category: main - optional: false -- name: aws-c-auth - version: 0.10.4 - manager: conda - platform: linux-64 - dependencies: - __glibc: '>=2.17,<3.0.a0' - aws-c-cal: '>=0.9.15,<0.9.16.0a0' - aws-c-common: '>=0.14.3,<0.14.4.0a0' - aws-c-http: '>=0.11.0,<0.11.1.0a0' - aws-c-io: '>=0.27.5,<0.27.6.0a0' - aws-c-sdkutils: '>=0.2.7,<0.2.8.0a0' - libgcc: '>=14' - url: https://repo.prefix.dev/conda-forge/linux-64/aws-c-auth-0.10.4-h4610da3_2.conda - hash: - md5: cefa84dbf94066e7a6902af288a2fedd - sha256: 0c92dc5ddf4edd4038a63adb79f9f0b03f61e9455ce3253b7d2cf708e06ff99e - category: main - optional: false -- name: aws-c-auth - version: 1.0.0 - manager: conda - platform: win-64 - dependencies: - aws-c-cal: '>=1.0.0,<1.0.1.0a0' - aws-c-common: '>=1.0.2,<1.1.0a0' - aws-c-http: '>=1.0.0,<1.1.0a0' - aws-c-io: '>=1.0.0,<1.1.0a0' - aws-c-sdkutils: '>=1.0.0,<1.1.0a0' - ucrt: '>=10.0.20348.0' - vc: '>=14.3,<15' - vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/aws-c-auth-1.0.0-h6467a12_2.conda - hash: - md5: d8df87583c89ecb03164b923f4748fdf - sha256: 54144c56efadc92a9d7ac94113c481c2cc53d6d194f6c85cfd58928524686e27 - category: main - optional: false -- name: aws-c-cal - version: 0.9.15 - manager: conda - platform: linux-64 - dependencies: - __glibc: '>=2.17,<3.0.a0' - aws-c-common: '>=0.14.3,<0.14.4.0a0' - libgcc: '>=14' - openssl: '>=3.5.7,<4.0a0' - url: https://repo.prefix.dev/conda-forge/linux-64/aws-c-cal-0.9.15-h6bbde05_1.conda - hash: - md5: 8f2b374c79908f271be3d0e9f1c462a8 - sha256: 6eb21a0129e0aa7c6be733c7f2d1de6bc97a60c8382c1016f19dced722600d73 - category: main - optional: false -- name: aws-c-cal - version: 1.0.0 - manager: conda - platform: win-64 - dependencies: - aws-c-common: '>=1.0.2,<1.1.0a0' - ucrt: '>=10.0.20348.0' - vc: '>=14.3,<15' - vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/aws-c-cal-1.0.0-h83b9fca_1.conda + typing_extensions: '>=4.16.0' + url: https://repo.prefix.dev/conda-forge/noarch/anyio-4.15.1-pyh5ded981_1.conda hash: - md5: d9ea5b31ecb95f391993a6623578efc6 - sha256: 3b392d35692652d9acb952f039239eb117ce44797eb3dba63789dd341d8a8caa + md5: 33cdc5ba7c481b371f08f88e6c048c55 + sha256: fc25a84c9c1ad4b48c136ad2363100e8b0faa3b0ab8985e61c9c8fa0b3431945 category: main optional: false -- name: aws-c-common - version: 0.14.3 +- name: argon2-cffi + version: 25.1.0 manager: conda platform: linux-64 dependencies: - __glibc: '>=2.17,<3.0.a0' - libgcc: '>=14' - url: https://repo.prefix.dev/conda-forge/linux-64/aws-c-common-0.14.3-hb03c661_0.conda + argon2-cffi-bindings: '' + python: '>=3.9' + typing-extensions: '' + url: https://repo.prefix.dev/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda hash: - md5: ce8664d7c01d4a598ad38107b289b5ec - sha256: 8ea79f36d50ba90d7147fe1a047f9a7f2d33b114a3d4bacf1360cd8df43986e4 + md5: 8ac12aff0860280ee0cff7fa2cf63f3b + sha256: bea62005badcb98b1ae1796ec5d70ea0fc9539e7d59708ac4e7d41e2f4bb0bad category: main optional: false -- name: aws-c-common - version: 1.0.3 +- name: argon2-cffi + version: 25.1.0 manager: conda platform: win-64 dependencies: - ucrt: '>=10.0.20348.0' - vc: '>=14.3,<15' - vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/aws-c-common-1.0.3-h6a83c73_0.conda + argon2-cffi-bindings: '' + python: '>=3.9' + typing-extensions: '' + url: https://repo.prefix.dev/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda hash: - md5: 71da05249e02953254449a2c6496fa70 - sha256: 6b91b56d95caa16f0beadaa9109254b709f4646b07fa95342c75bab92f657f25 + md5: 8ac12aff0860280ee0cff7fa2cf63f3b + sha256: bea62005badcb98b1ae1796ec5d70ea0fc9539e7d59708ac4e7d41e2f4bb0bad category: main optional: false -- name: aws-c-compression - version: 0.3.2 +- name: argon2-cffi-bindings + version: 26.1.0 manager: conda platform: linux-64 dependencies: __glibc: '>=2.17,<3.0.a0' - aws-c-common: '>=0.14.3,<0.14.4.0a0' - libgcc: '>=14' - url: https://repo.prefix.dev/conda-forge/linux-64/aws-c-compression-0.3.2-h01ee8f8_5.conda + cffi: '>=1.0.1' + libgcc: '>=15' + python: '>=3.12,<3.13.0a0' + python_abi: 3.12.* + url: https://repo.prefix.dev/conda-forge/linux-64/argon2-cffi-bindings-26.1.0-py312h5cc1888_2.conda hash: - md5: ae862abdbb3160f97478d3d4749164c0 - sha256: 27f8581573c533a92a1a9619516ebb66d390b9923d296331985cfd342dc32d29 + md5: ee98bca1934072b6628eaf59359b056a + sha256: c8bc12162019d6f07427729971ba6e6ed425a3b45ed5927406bc2dc7a11b0e95 category: main optional: false -- name: aws-c-compression - version: 1.0.0 +- name: argon2-cffi-bindings + version: 26.1.0 manager: conda platform: win-64 dependencies: - aws-c-common: '>=1.0.2,<1.1.0a0' + cffi: '>=1.0.1' + python: '>=3.12,<3.13.0a0' + python_abi: 3.12.* ucrt: '>=10.0.20348.0' vc: '>=14.3,<15' vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/aws-c-compression-1.0.0-h83b9fca_1.conda + url: https://repo.prefix.dev/conda-forge/win-64/argon2-cffi-bindings-26.1.0-py312he06e257_2.conda hash: - md5: 11056cea4308ef4a36477df9e473c6a6 - sha256: b540b1455753a09b10656461a097d1fb0fea04ef13791ca8b23c70f489f4320e + md5: 2fd49876c884972ece179d10da8b97fb + sha256: 59ba8ea4be38d291b6fa82d5df2873d51c7ece6ffdea97f2091b310b2edf65d1 category: main optional: false -- name: aws-c-http - version: 0.11.0 +- name: arrow + version: 1.4.0 manager: conda platform: linux-64 dependencies: - __glibc: '>=2.17,<3.0.a0' - aws-c-cal: '>=0.9.15,<0.9.16.0a0' - aws-c-common: '>=0.14.3,<0.14.4.0a0' - aws-c-compression: '>=0.3.2,<0.3.3.0a0' - aws-c-io: '>=0.27.5,<0.27.6.0a0' - libgcc: '>=14' - url: https://repo.prefix.dev/conda-forge/linux-64/aws-c-http-0.11.0-hbe094ff_5.conda + python: '' + python-dateutil: '>=2.7.0' + python-tzdata: '' + url: https://repo.prefix.dev/conda-forge/noarch/arrow-1.4.0-pyhcf101f3_0.conda hash: - md5: c09f7ec7327b8bd52fc2d6eacaa18d3b - sha256: a4a5e24b398e7c0ef64de5a341ecb3f0fa87c2879177695c5d0bcbde0c4f8b5e + md5: 85c4f19f377424eafc4ed7911b291642 + sha256: 792da8131b1b53ff667bd6fc617ea9087b570305ccb9913deb36b8e12b3b5141 category: main optional: false -- name: aws-c-http - version: 1.0.0 +- name: arrow + version: 1.4.0 manager: conda platform: win-64 dependencies: - aws-c-cal: '>=1.0.0,<1.0.1.0a0' - aws-c-common: '>=1.0.2,<1.1.0a0' - aws-c-compression: '>=1.0.0,<1.1.0a0' - aws-c-io: '>=1.0.0,<1.1.0a0' - ucrt: '>=10.0.20348.0' - vc: '>=14.3,<15' - vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/aws-c-http-1.0.0-hfc53fa4_1.conda + python: '' + python-dateutil: '>=2.7.0' + python-tzdata: '' + url: https://repo.prefix.dev/conda-forge/noarch/arrow-1.4.0-pyhcf101f3_0.conda hash: - md5: e3b9d6b77067336b94fcf1ccd09794a2 - sha256: 87cbe3fdcc5f74115d458541c8b57851deb1a73a2854004791e59ca62f60b828 + md5: 85c4f19f377424eafc4ed7911b291642 + sha256: 792da8131b1b53ff667bd6fc617ea9087b570305ccb9913deb36b8e12b3b5141 category: main optional: false -- name: aws-c-io - version: 0.27.5 +- name: astroid + version: 4.3.4 manager: conda platform: linux-64 dependencies: - __glibc: '>=2.17,<3.0.a0' - aws-c-cal: '>=0.9.15,<0.9.16.0a0' - aws-c-common: '>=0.14.3,<0.14.4.0a0' - libgcc: '>=14' - s2n: '>=1.7.6,<1.7.7.0a0' - url: https://repo.prefix.dev/conda-forge/linux-64/aws-c-io-0.27.5-h4f381ba_1.conda + python: '' + python_abi: 3.12.* + url: https://repo.prefix.dev/conda-forge/linux-64/astroid-4.3.4-py312h20c3967_0.conda hash: - md5: 948f5a4fddac779b7942626e5807caba - sha256: 76ab4eb6cae12e14244cb1fe11ecccc2f103f8ffa7e80e222099c6b16c19ae20 - category: main - optional: false -- name: aws-c-io - version: 1.0.0 + md5: 1005a63ba4d50a2bbf267bb63fc41da0 + sha256: 636f4aa4231aa8ec20dbb39b2cf77addd547f3daa77098a3320ff6963bbbca8f + category: dev + optional: true +- name: astroid + version: 4.3.4 manager: conda platform: win-64 dependencies: - aws-c-cal: '>=1.0.0,<1.0.1.0a0' - aws-c-common: '>=1.0.2,<1.1.0a0' - ucrt: '>=10.0.20348.0' - vc: '>=14.3,<15' - vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/aws-c-io-1.0.0-hf08500a_0.conda + python: '' + python_abi: 3.12.* + url: https://repo.prefix.dev/conda-forge/win-64/astroid-4.3.4-py312h209ec74_0.conda hash: - md5: 537b2a69583a2273c661668834d46558 - sha256: 8984af8d802880d68593523e44979a5606215116fa0746743065b247d071d586 - category: main - optional: false -- name: aws-c-s3 - version: 0.13.1 + md5: 452258326098d9c5880ea42ddf46d3f1 + sha256: 8bc8876e0ea8652420ad863549baf92006895e7889236312f31ce53a3d6d24b1 + category: dev + optional: true +- name: asttokens + version: 3.0.2 manager: conda platform: linux-64 dependencies: - __glibc: '>=2.17,<3.0.a0' - aws-c-auth: '>=0.10.4,<0.10.5.0a0' - aws-c-cal: '>=0.9.15,<0.9.16.0a0' - aws-c-common: '>=0.14.3,<0.14.4.0a0' - aws-c-http: '>=0.11.0,<0.11.1.0a0' - aws-c-io: '>=0.27.5,<0.27.6.0a0' - aws-checksums: '>=0.2.10,<0.2.11.0a0' - libgcc: '>=14' - openssl: '>=3.5.7,<4.0a0' - url: https://repo.prefix.dev/conda-forge/linux-64/aws-c-s3-0.13.1-h7508075_1.conda + python: '>=3.10' + url: https://repo.prefix.dev/conda-forge/noarch/asttokens-3.0.2-pyhd8ed1ab_0.conda hash: - md5: 2daf54d3eef87b757f68d7597534dd2f - sha256: d24f7f34b3b564535b533b17176e71f71b6944aa2cb71813283bece139908d9f + md5: 89d495168582cb00428dad699d149624 + sha256: fbbd8ce60cbd5c16f3fe559eb644551f94285caff30985ea961ff851c1cf25ac category: main optional: false -- name: aws-c-s3 - version: 1.0.0 +- name: asttokens + version: 3.0.2 manager: conda platform: win-64 dependencies: - aws-c-auth: '>=1.0.0,<1.0.1.0a0' - aws-c-cal: '>=1.0.0,<1.0.1.0a0' - aws-c-common: '>=1.0.2,<1.1.0a0' - aws-c-http: '>=1.0.0,<1.1.0a0' - aws-c-io: '>=1.0.0,<1.1.0a0' - aws-checksums: '>=1.0.1,<1.0.2.0a0' - ucrt: '>=10.0.20348.0' - vc: '>=14.3,<15' - vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/aws-c-s3-1.0.0-h9752aa2_1.conda + python: '>=3.10' + url: https://repo.prefix.dev/conda-forge/noarch/asttokens-3.0.2-pyhd8ed1ab_0.conda hash: - md5: d24879b3539c23613354a3b725182e65 - sha256: 4698147acccb38e3e8b5a354acca12d39d7f5a25d4a4258ac0786ebe2a5fb2af + md5: 89d495168582cb00428dad699d149624 + sha256: fbbd8ce60cbd5c16f3fe559eb644551f94285caff30985ea961ff851c1cf25ac category: main optional: false -- name: aws-c-sdkutils - version: 0.2.7 +- name: async-lru + version: 2.4.0 manager: conda platform: linux-64 dependencies: - __glibc: '>=2.17,<3.0.a0' - aws-c-common: '>=0.14.3,<0.14.4.0a0' - libgcc: '>=14' - url: https://repo.prefix.dev/conda-forge/linux-64/aws-c-sdkutils-0.2.7-h01ee8f8_3.conda + python: '' + url: https://repo.prefix.dev/conda-forge/noarch/async-lru-2.4.0-pyh5ded981_0.conda hash: - md5: 412f0cf18cc4c4945655dba954ca2d76 - sha256: b308c393a3db78cef29942c6b83ca7321f86d357fbb47504d59f55254601c87a + md5: 6db849521a38ec0cd85c90e2e5c0a6bd + sha256: b9dc6d90fd922001712bbdacc0987d981e22c803b22250d7685e89188881fcc6 category: main optional: false -- name: aws-c-sdkutils - version: 1.0.0 +- name: async-lru + version: 2.4.0 manager: conda platform: win-64 dependencies: - aws-c-common: '>=1.0.2,<1.1.0a0' - ucrt: '>=10.0.20348.0' - vc: '>=14.3,<15' - vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/aws-c-sdkutils-1.0.0-h83b9fca_1.conda + python: '' + url: https://repo.prefix.dev/conda-forge/noarch/async-lru-2.4.0-pyh5ded981_0.conda hash: - md5: 85108093e055090597c0a73c00c97d1c - sha256: 3d84c8bb092c2d6188a799774ce1dfdc20f05276c5e4918a0dc5d40f76985658 + md5: 6db849521a38ec0cd85c90e2e5c0a6bd + sha256: b9dc6d90fd922001712bbdacc0987d981e22c803b22250d7685e89188881fcc6 category: main optional: false -- name: aws-checksums - version: 0.2.10 +- name: attrs + version: 26.1.0 manager: conda platform: linux-64 dependencies: - __glibc: '>=2.17,<3.0.a0' - aws-c-common: '>=0.14.3,<0.14.4.0a0' - libgcc: '>=14' - url: https://repo.prefix.dev/conda-forge/linux-64/aws-checksums-0.2.10-h01ee8f8_5.conda + python: '' + url: https://repo.prefix.dev/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda hash: - md5: 4d70caf5260e0787675c3bf61ae5b64c - sha256: f8d2cd9faccb273df739fc28431b484a90aca10027ef44f7fec1d4f0bd229a76 + md5: c6b0543676ecb1fb2d7643941fe375f2 + sha256: 1b6124230bb4e571b1b9401537ecff575b7b109cc3a21ee019f65e083b8399ab category: main optional: false -- name: aws-checksums - version: 1.0.1 +- name: attrs + version: 26.1.0 manager: conda platform: win-64 dependencies: - aws-c-common: '>=1.0.1,<1.1.0a0' - ucrt: '>=10.0.20348.0' - vc: '>=14.3,<15' - vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/aws-checksums-1.0.1-h83b9fca_0.conda + python: '' + url: https://repo.prefix.dev/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda hash: - md5: e7835d62ef614704407355bcaf6395fd - sha256: 62e87aa770e69e3c20632a9170da1087fd14eae6e9bad1fc135a5d2302b98bb3 + md5: c6b0543676ecb1fb2d7643941fe375f2 + sha256: 1b6124230bb4e571b1b9401537ecff575b7b109cc3a21ee019f65e083b8399ab category: main optional: false - name: babel @@ -518,10 +393,10 @@ package: python: '' python_abi: 3.12.* zstd: '>=1.5.7,<1.6.0a0' - url: https://repo.prefix.dev/conda-forge/linux-64/backports.zstd-1.8.0-py312h3f22e6b_0.conda + url: https://repo.prefix.dev/conda-forge/linux-64/backports.zstd-1.8.0-py312hf114f2f_1.conda hash: - md5: 0f5fe32a47138697efdd6d8ee40a00d0 - sha256: cc868eb4cf1fba1b4ff6686250136d0cf4cfedec9b4029b6e3b3f592da1cac97 + md5: 74bdbdc14677bccd670c2f07168985d7 + sha256: f3d597ccd76e058a040520432c699dc338d46968621a083418f0e985c110d060 category: main optional: false - name: backports.zstd @@ -535,10 +410,10 @@ package: vc: '>=14.3,<15' vc14_runtime: '>=14.44.35208' zstd: '>=1.5.7,<1.6.0a0' - url: https://repo.prefix.dev/conda-forge/win-64/backports.zstd-1.8.0-py312h06d0912_0.conda + url: https://repo.prefix.dev/conda-forge/win-64/backports.zstd-1.8.0-py312h301c71d_1.conda hash: - md5: 566eaa3af4467ba7b67460ca8085a1b6 - sha256: bde30c9d99a650fe3b137e1ba5a0ec80e051e689dc2bc37690f5e5982fc697f6 + md5: 7a83b308271147e4b5ae03b36752b5ef + sha256: 27f2630dbba2038f2d87701d1a2575fe77568dfd1446189ff193545867eb68ef category: main optional: false - name: beautifulsoup4 @@ -622,71 +497,71 @@ package: category: main optional: false - name: brotli - version: 1.2.0 + version: 1.2.1 manager: conda platform: linux-64 dependencies: __glibc: '>=2.17,<3.0.a0' - brotli-bin: 1.2.0 - libbrotlidec: 1.2.0 - libbrotlienc: 1.2.0 + brotli-bin: 1.2.1 + libbrotlidec: 1.2.1 + libbrotlienc: 1.2.1 libgcc: '>=15' - url: https://repo.prefix.dev/conda-forge/linux-64/brotli-1.2.0-h505cf86_4.conda + url: https://repo.prefix.dev/conda-forge/linux-64/brotli-1.2.1-h505cf86_0.conda hash: - md5: 746aa619a1bcaf4da541101179d7c60e - sha256: 61b78574f002390b6a7fc79834fc344beaab09550068a51100eea5a485dac741 + md5: 65f1fc5f6a3a984a8a25641d0e60fc25 + sha256: 3efb8e6ac07f12773f02e876567700f554965e33a8e30ee05ddd891c303f7aa3 category: main optional: false - name: brotli - version: 1.2.0 + version: 1.2.1 manager: conda platform: win-64 dependencies: - brotli-bin: 1.2.0 - libbrotlidec: 1.2.0 - libbrotlienc: 1.2.0 + brotli-bin: 1.2.1 + libbrotlidec: 1.2.1 + libbrotlienc: 1.2.1 ucrt: '>=10.0.20348.0' vc: '>=14.3,<15' vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/brotli-1.2.0-hc8c2fe1_4.conda + url: https://repo.prefix.dev/conda-forge/win-64/brotli-1.2.1-hc8c2fe1_0.conda hash: - md5: bdbb2939efe8af10e7c5885367395710 - sha256: 7a4110b57f0e957ca4cfd2fc60cede2ccea42b80b404f646339bd874ace18845 + md5: 3a9fba387cf04f21cd6194cb96bb3e24 + sha256: f62f3a4e872f9045dcb1ff8d680bb6e42d26b10c5a7c7fb272f548f927732757 category: main optional: false - name: brotli-bin - version: 1.2.0 + version: 1.2.1 manager: conda platform: linux-64 dependencies: __glibc: '>=2.17,<3.0.a0' - libbrotlidec: 1.2.0 - libbrotlienc: 1.2.0 + libbrotlidec: 1.2.1 + libbrotlienc: 1.2.1 libgcc: '>=15' - url: https://repo.prefix.dev/conda-forge/linux-64/brotli-bin-1.2.0-h9908984_4.conda + url: https://repo.prefix.dev/conda-forge/linux-64/brotli-bin-1.2.1-h9908984_0.conda hash: - md5: c48c09444f3736800ea0b9550c365baf - sha256: ce7db81d5fd4b222ee1a27c52ccf7af44faaf88283017103a8e288f9c372b973 + md5: 903eceb31743f0ce070abb9b9f879714 + sha256: c64939f0ade0fea29525d2f549a700841a331c0886b3694083d08eb4769936ce category: main optional: false - name: brotli-bin - version: 1.2.0 + version: 1.2.1 manager: conda platform: win-64 dependencies: - libbrotlidec: 1.2.0 - libbrotlienc: 1.2.0 + libbrotlidec: 1.2.1 + libbrotlienc: 1.2.1 ucrt: '>=10.0.20348.0' vc: '>=14.3,<15' vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/brotli-bin-1.2.0-hd477307_4.conda + url: https://repo.prefix.dev/conda-forge/win-64/brotli-bin-1.2.1-hd477307_0.conda hash: - md5: 5353bd43aaade891fc9b614c5d537ce3 - sha256: 740b171b2cdf793891b36e1e2f81d7829e9b93c8a0d1a72d9ffaebef58eab016 + md5: 932de28fe259679ef5664fd63c2358f5 + sha256: 3ba0c29413ddaf6418c9f74552d7070b92746577a42e6a029ab8a6ce7bc69a2b category: main optional: false - name: brotli-python - version: 1.2.0 + version: 1.2.1 manager: conda platform: linux-64 dependencies: @@ -695,14 +570,14 @@ package: libstdcxx: '>=15' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* - url: https://repo.prefix.dev/conda-forge/linux-64/brotli-python-1.2.0-py312he9c40d5_4.conda + url: https://repo.prefix.dev/conda-forge/linux-64/brotli-python-1.2.1-py312he9c40d5_0.conda hash: - md5: edb667e7ce56106424e8afab2dc0f0cb - sha256: 6e4f440a7015d7d78120b3a3f90a4ec3d7bb6de7bc65458123c52433755db5f0 + md5: c813f38fa69f34c13f2c01cdc8f65ece + sha256: eaefe3a5d0dc0e586b38ea943c406b768cd4fa5886c424f88039526fc31ab62e category: main optional: false - name: brotli-python - version: 1.2.0 + version: 1.2.1 manager: conda platform: win-64 dependencies: @@ -711,10 +586,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/brotli-python-1.2.0-py312ha763cb9_4.conda + url: https://repo.prefix.dev/conda-forge/win-64/brotli-python-1.2.1-py312ha763cb9_0.conda hash: - md5: fd844f78ba9802979d0e6d856d7bcac3 - sha256: 7405f86135a42bd82fe79abc8f9bfdc0dde866b96d600dc51150f24aef09da36 + md5: 9eacffbcd3b2fbc5a45f6696c8116aee + sha256: ae8b788e5902e333724a709f1ea81c8baed03e8b6634f78323046abc78436645 category: main optional: false - name: bzip2 @@ -745,40 +620,40 @@ package: category: main optional: false - name: c-ares - version: 1.34.8 + version: 1.34.9 manager: conda platform: linux-64 dependencies: __glibc: '>=2.17,<3.0.a0' libgcc: '>=15' - url: https://repo.prefix.dev/conda-forge/linux-64/c-ares-1.34.8-hebe6cf0_2.conda + url: https://repo.prefix.dev/conda-forge/linux-64/c-ares-1.34.9-hebe6cf0_0.conda hash: - md5: 3ad2b403be8fc5612b9159e2ce621f69 - sha256: 9c37cc233238adf366ea75b0e845662a5be07ceadf62e458183516369340274b + md5: 78b505af04bf7a87ca957ef0cb5946f5 + sha256: bd95dd25b80b5c4faf5349542377bf89b2794e23d0f7aa7f1c431e4f3b633f3c category: main optional: false - name: ca-certificates - version: 2026.7.22 + version: 2026.10.23 manager: conda platform: linux-64 dependencies: __unix: '' - url: https://repo.prefix.dev/conda-forge/noarch/ca-certificates-2026.7.22-hbd8a1cb_0.conda + url: https://repo.prefix.dev/conda-forge/noarch/ca-certificates-2026.10.23-hbd8a1cb_0.conda hash: - md5: 0f51e2391ade309db462a55611263e9c - sha256: 0a0544cf95f64394fe4959286f5c71f5444ad58feb0602e53becb27448d24da6 + md5: 3fd02989038a1e1cee627c14c2d73f29 + sha256: 95619b9c1184be7175392eeb0ee7eeb5ccf25d280951f4225f2d62e725790be3 category: main optional: false - name: ca-certificates - version: 2026.7.22 + version: 2026.10.23 manager: conda platform: win-64 dependencies: __win: '' - url: https://repo.prefix.dev/conda-forge/noarch/ca-certificates-2026.7.22-h4c7d964_0.conda + url: https://repo.prefix.dev/conda-forge/noarch/ca-certificates-2026.10.23-h4c7d964_0.conda hash: - md5: e27d2ac27b096dc51fedfcf775a53f9b - sha256: 95e8e74062a5fe5f870ac8c90302b6e89945165fdaed7810606e84ddee6aac12 + md5: ea9dc39dcd2815202749c1e5bc2a8973 + sha256: f1d280d2618de987204102090e83733089c092dc2dd45686fd3dcbe809034f6a category: main optional: false - name: cached-property @@ -830,27 +705,61 @@ package: category: main optional: false - name: certifi - version: 2026.7.22 + version: 2026.10.23 manager: conda platform: linux-64 dependencies: - python: '>=3.10' - url: https://repo.prefix.dev/conda-forge/noarch/certifi-2026.7.22-pyhd8ed1ab_0.conda + python: '>=3.11' + url: https://repo.prefix.dev/conda-forge/noarch/certifi-2026.10.23-pyhd8ed1ab_0.conda hash: - md5: 37e13edbe3b48f1095a9d085ef9cd83b - sha256: fb167de4388e64e52aa3907ed099afab944c1fa6e5f74b281a312dae1bcf7f3b + md5: 484e26532435808425148c83bf58aa0b + sha256: 04e641ccaa58278b431e97f2a43090bafc676436d04b5860dfd9b18166f2b326 category: main optional: false - name: certifi - version: 2026.7.22 + version: 2026.10.23 manager: conda platform: win-64 dependencies: - python: '>=3.10' - url: https://repo.prefix.dev/conda-forge/noarch/certifi-2026.7.22-pyhd8ed1ab_0.conda + python: '>=3.11' + url: https://repo.prefix.dev/conda-forge/noarch/certifi-2026.10.23-pyhd8ed1ab_0.conda + hash: + md5: 484e26532435808425148c83bf58aa0b + sha256: 04e641ccaa58278b431e97f2a43090bafc676436d04b5860dfd9b18166f2b326 + category: main + optional: false +- name: cffi + version: 2.1.1 + manager: conda + platform: linux-64 + dependencies: + __glibc: '>=2.17,<3.0.a0' + libffi: '>=3.7.0,<3.8.0a0' + libgcc: '>=15' + pycparser: '' + python: '>=3.12,<3.13.0a0' + python_abi: 3.12.* + url: https://repo.prefix.dev/conda-forge/linux-64/cffi-2.1.1-py312h703531f_3.conda + hash: + md5: 41f019d067f8c52c6d9283d8afb28889 + sha256: 7c6e8b24d62e0bfa5d14050cd29053778f399feefa7d6887b04575210285a849 + category: main + optional: false +- name: cffi + version: 2.1.1 + manager: conda + platform: win-64 + dependencies: + pycparser: '' + python: '>=3.12,<3.13.0a0' + python_abi: 3.12.* + ucrt: '>=10.0.20348.0' + vc: '>=14.3,<15' + vc14_runtime: '>=14.44.35208' + url: https://repo.prefix.dev/conda-forge/win-64/cffi-2.1.1-py312he06e257_3.conda hash: - md5: 37e13edbe3b48f1095a9d085ef9cd83b - sha256: fb167de4388e64e52aa3907ed099afab944c1fa6e5f74b281a312dae1bcf7f3b + md5: 486d6ff4078c164f18f7141c490aa315 + sha256: b6ac6b6668b623c8d80457344e464d701bfe977f8470410ab713fae65df4b21f category: main optional: false - name: charset-normalizer @@ -896,8 +805,8 @@ package: hash: md5: dea5b13a211bbf99876deb980b408a66 sha256: 9afb0c2c089330321a219c7ee5a25313bd574d4024be606cbb33e7a5735df662 - category: main - optional: false + category: dev + optional: true - name: click version: 8.5.0 manager: conda @@ -908,8 +817,8 @@ package: hash: md5: dea5b13a211bbf99876deb980b408a66 sha256: 9afb0c2c089330321a219c7ee5a25313bd574d4024be606cbb33e7a5735df662 - category: main - optional: false + category: dev + optional: true - name: colorama version: 0.4.6 manager: conda @@ -920,8 +829,8 @@ package: hash: md5: 962b9857ee8e7018c22f2776ffa0b2d7 sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 - category: main - optional: false + category: dev + optional: true - name: colorama version: 0.4.6 manager: conda @@ -993,7 +902,7 @@ package: category: main optional: false - name: coverage - version: 7.16.2 + version: 7.17.0 manager: conda platform: linux-64 dependencies: @@ -1001,14 +910,14 @@ package: libgcc: '>=15' python: '' python_abi: 3.12.* - url: https://repo.prefix.dev/conda-forge/linux-64/coverage-7.16.2-py312h8b7ec3f_1.conda + url: https://repo.prefix.dev/conda-forge/linux-64/coverage-7.17.0-py312h8b7ec3f_0.conda hash: - md5: 10471ab5b1d6e4e095d6d6072e95db8c - sha256: 8f1e15238953756ea5b6ac52e9d9ef685dee457574bad502dcb0350137187297 + md5: a81316d9901afe9d5ecf4b911fea5ef0 + sha256: 7c4000ad2433ff3a9cd94c6d4350e6a101fd4ac6d28f9adcb1a8a08bf9b2b3c9 category: dev optional: true - name: coverage - version: 7.16.2 + version: 7.17.0 manager: conda platform: win-64 dependencies: @@ -1017,36 +926,36 @@ 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.16.2-py312h6fa65f5_1.conda + url: https://repo.prefix.dev/conda-forge/win-64/coverage-7.17.0-py312h6fa65f5_0.conda hash: - md5: 7cfccc1df8eaec7888ccb2a86d0ce2ee - sha256: 98c22c0f4e115cce00c343442dfa7cdf4c7fa35e174c37f1ab806bac4baf28dc + md5: fba4fec309860b8d3c40f87196236e70 + sha256: 6b038219d51992c34bd56662982cea7f2bce685fe3ce2daa38f83a66ff59efb6 category: dev optional: true - name: cpython - version: 3.12.15 + version: 3.12.16 manager: conda platform: linux-64 dependencies: python: '>=3.12,<3.13.0a0' python_abi: '*' - url: https://repo.prefix.dev/conda-forge/noarch/cpython-3.12.15-py312hd8ed1ab_2.conda + url: https://repo.prefix.dev/conda-forge/noarch/cpython-3.12.16-py312hd8ed1ab_0.conda hash: - md5: 34ff082ed834c6a62f4b11f877820c1d - sha256: 69444bf2d39b7385194cf3481ed1910f39a5d0c86c8f6ca3884e761f6e6dedee + md5: 43352168a612c5c29c468bbd46ebdfa6 + sha256: a42d8eb23bf9ac1c70355875b336605bd264d1167cb7174f4510da392b417da7 category: main optional: false - name: cpython - version: 3.12.15 + version: 3.12.16 manager: conda platform: win-64 dependencies: python: '>=3.12,<3.13.0a0' python_abi: '*' - url: https://repo.prefix.dev/conda-forge/noarch/cpython-3.12.15-py312hd8ed1ab_2.conda + url: https://repo.prefix.dev/conda-forge/noarch/cpython-3.12.16-py312hd8ed1ab_0.conda hash: - md5: 34ff082ed834c6a62f4b11f877820c1d - sha256: 69444bf2d39b7385194cf3481ed1910f39a5d0c86c8f6ca3884e761f6e6dedee + md5: 43352168a612c5c29c468bbd46ebdfa6 + sha256: a42d8eb23bf9ac1c70355875b336605bd264d1167cb7174f4510da392b417da7 category: main optional: false - name: cycler @@ -1163,8 +1072,8 @@ package: hash: md5: 24c1ca34138ee57de72a943237cde4cc sha256: fa5966bb1718bbf6967a85075e30e4547901410cc7cb7b16daf68942e9a94823 - category: main - optional: false + category: dev + optional: true - name: docutils version: 0.21.2 manager: conda @@ -1175,8 +1084,8 @@ package: hash: md5: 24c1ca34138ee57de72a943237cde4cc sha256: fa5966bb1718bbf6967a85075e30e4547901410cc7cb7b16daf68942e9a94823 - category: main - optional: false + category: dev + optional: true - name: exceptiongroup version: 1.3.1 manager: conda @@ -1239,10 +1148,10 @@ package: python: '>=3.12,<3.13.0a0' python_abi: 3.12.* unicodedata2: '>=15.1.0' - url: https://repo.prefix.dev/conda-forge/linux-64/fonttools-4.67.0-py312hfd18d64_0.conda + url: https://repo.prefix.dev/conda-forge/linux-64/fonttools-4.67.0-py312hfd18d64_1.conda hash: - md5: 7aaeef0292f5426c77e4469141aab8c9 - sha256: d6d97e42c76d8e25c9ad23a61f7ab0fa104b4813e72551a6ccc67ee24308957b + md5: 231c5a5d9d291d9d8a25e55c67a9f585 + sha256: b63f6241b7b89ef8def2caa35e98bc695cd678030691c0cdd2ff2a296d3a31be category: main optional: false - name: fonttools @@ -1258,10 +1167,34 @@ package: unicodedata2: '>=15.1.0' vc: '>=14.3,<15' vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/fonttools-4.67.0-py312h05f76fc_0.conda + url: https://repo.prefix.dev/conda-forge/win-64/fonttools-4.67.0-py312h05f76fc_1.conda + hash: + md5: 1272a8c45acd62cad3ad82bc6e070159 + sha256: 54c64f70bcd22461d01da90539b512b27e0490d12a902cea60f668baece8f612 + category: main + optional: false +- name: fqdn + version: 1.6.0 + manager: conda + platform: linux-64 + dependencies: + python: '' + url: https://repo.prefix.dev/conda-forge/noarch/fqdn-1.6.0-pyh5ded981_0.conda + hash: + md5: 239078c29cd5e17134522f6f61e9507b + sha256: ccdb3a4e7b74978977cd29d6cd7cb8fbaab84700318f79ffa87ed5cedb8e7781 + category: main + optional: false +- name: fqdn + version: 1.6.0 + manager: conda + platform: win-64 + dependencies: + python: '' + url: https://repo.prefix.dev/conda-forge/noarch/fqdn-1.6.0-pyh5ded981_0.conda hash: - md5: cfd3b5fce518637bccf4df79cba9685a - sha256: 7df336922ae1adb43b87f1ab95bcc0124be8376c847395552bc6481ec8559403 + md5: 239078c29cd5e17134522f6f61e9507b + sha256: ccdb3a4e7b74978977cd29d6cd7cb8fbaab84700318f79ffa87ed5cedb8e7781 category: main optional: false - name: freetype @@ -1291,12 +1224,38 @@ package: sha256: 32f7dd8ffe62fd485e9e6570e871f5be45af74c84fde62241a2417046a373efd category: main optional: false -- name: h2 - version: 4.4.1 +- name: h11 + version: 0.16.0 manager: conda platform: linux-64 dependencies: - hpack: '>=4.2,<5' + python: '' + typing_extensions: '' + url: https://repo.prefix.dev/conda-forge/noarch/h11-0.16.0-pyhcf101f3_1.conda + hash: + md5: b8993c19b0c32a2f7b66cbb58ca27069 + sha256: 96cac6573fd35ae151f4d6979bab6fbc90cb6b1fb99054ba19eb075da9822fcb + category: main + optional: false +- name: h11 + version: 0.16.0 + manager: conda + platform: win-64 + dependencies: + python: '' + typing_extensions: '' + url: https://repo.prefix.dev/conda-forge/noarch/h11-0.16.0-pyhcf101f3_1.conda + hash: + md5: b8993c19b0c32a2f7b66cbb58ca27069 + sha256: 96cac6573fd35ae151f4d6979bab6fbc90cb6b1fb99054ba19eb075da9822fcb + category: main + optional: false +- name: h2 + version: 4.4.1 + manager: conda + platform: linux-64 + dependencies: + hpack: '>=4.2,<5' hyperframe: '>=6.1,<7' python: '' url: https://repo.prefix.dev/conda-forge/noarch/h2-4.4.1-pyhcf101f3_0.conda @@ -1320,90 +1279,78 @@ package: category: main optional: false - name: h5py - version: 3.16.0 + version: 3.15.1 manager: conda platform: linux-64 dependencies: __glibc: '>=2.17,<3.0.a0' cached-property: '' - hdf5: '>=2.2.0,<3.0a0' - libgcc: '>=15' - numpy: '>=1.25,<3' + hdf5: '>=1.14.6,<1.14.7.0a0' + 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.16.0-nompi_py312h7082e50_105.conda + url: https://repo.prefix.dev/conda-forge/linux-64/h5py-3.15.1-nompi_py312ha4f8f14_101.conda hash: - md5: c9170f7de1da203ccfad21cfb82f68dd - sha256: fe79650b3842d3665bbcdb4c83e3abdee626ae12947835980f76b0e51c8265ce + md5: 23965cb240cb534649dfe2327ecec4fa + sha256: bb5cefbe5b54195a54f749189fc6797568d52e8790b2f542143c681b98a92b71 category: main optional: false - name: h5py - version: 3.16.0 + version: 3.15.1 manager: conda platform: win-64 dependencies: cached-property: '' - hdf5: '>=2.2.0,<3.0a0' - numpy: '>=1.25,<3' + hdf5: '>=1.14.6,<1.14.7.0a0' + numpy: '>=1.23,<3' python: '>=3.12,<3.13.0a0' python_abi: 3.12.* ucrt: '>=10.0.20348.0' vc: '>=14.3,<15' vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/h5py-3.16.0-nompi_py312h5ddec8c_105.conda + url: https://repo.prefix.dev/conda-forge/win-64/h5py-3.15.1-nompi_py312h03cd2ba_101.conda hash: - md5: 3da9ca1d15d3ae5504316d8ef9af442b - sha256: 7688948616e158ba8e0421d5417b66242fb84599fb32544e713179a28b34d4d1 + md5: 555b01f3a74e7ca56445c20555b78cff + sha256: 15ddb5420b289cd048ffef089514c31cdc90c77d5cef7e36667563335be2769d category: main optional: false - name: hdf5 - version: 2.2.0 + version: 1.14.6 manager: conda platform: linux-64 dependencies: __glibc: '>=2.17,<3.0.a0' - aws-c-auth: '>=0.10.4,<0.10.5.0a0' - aws-c-common: '>=0.14.3,<0.14.4.0a0' - aws-c-http: '>=0.11.0,<0.11.1.0a0' - aws-c-io: '>=0.27.5,<0.27.6.0a0' - aws-c-s3: '>=0.13.1,<0.13.2.0a0' - aws-c-sdkutils: '>=0.2.7,<0.2.8.0a0' libaec: '>=1.1.5,<2.0a0' - libcurl: '>=8.21.0,<9.0a0' + libcurl: '>=8.20.0,<9.0a0' libgcc: '>=14' libgfortran: '' - libgfortran5: '>=14.4.0' + libgfortran5: '>=14.3.0' libstdcxx: '>=14' libzlib: '>=1.3.2,<2.0a0' - openssl: '>=3.5.7,<4.0a0' - url: https://repo.prefix.dev/conda-forge/linux-64/hdf5-2.2.0-nompi_hc529623_100.conda + openssl: '>=3.5.6,<4.0a0' + url: https://repo.prefix.dev/conda-forge/linux-64/hdf5-1.14.6-nompi_h19486de_110.conda hash: - md5: 336f7fb9af0c49cc246e2cff0992c3c4 - sha256: 786d126bfb33b923dd1341a92c2a3edd0ff5d0a71db8557fca9324ea4e93d677 + md5: 9c6e11a83468e1d5decae516077a73fb + sha256: ac57ce3abbda2a82d6192bc36fbd7fe96e867d84c999ef81a3da034dfd01a995 category: main optional: false - name: hdf5 - version: 2.2.0 + version: 1.14.6 manager: conda platform: win-64 dependencies: - aws-c-auth: '>=1.0.0,<1.0.1.0a0' - aws-c-common: '>=1.0.2,<1.1.0a0' - aws-c-http: '>=1.0.0,<1.1.0a0' - aws-c-io: '>=1.0.0,<1.1.0a0' - aws-c-s3: '>=1.0.0,<1.1.0a0' - aws-c-sdkutils: '>=1.0.0,<1.1.0a0' libaec: '>=1.1.5,<2.0a0' - libcurl: '>=8.22.0,<9.0a0' + libcurl: '>=8.20.0,<9.0a0' libzlib: '>=1.3.2,<2.0a0' - openssl: '>=3.5.8,<4.0a0' + openssl: '>=3.5.6,<4.0a0' ucrt: '>=10.0.20348.0' vc: '>=14.3,<15' vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/hdf5-2.2.0-nompi_hd8f1e69_101.conda + url: https://repo.prefix.dev/conda-forge/win-64/hdf5-1.14.6-nompi_hae35d4c_110.conda hash: - md5: 55afc9d4e6d70eeeadfc35d10b3a8904 - sha256: 3a3191ae123eb6da52235abfafa1103eea5071d55892a45614fde29124fad7a4 + md5: 4c94504a694781771108b07bf4a9370f + sha256: 54f5211e698a468fd74def162e277d834e956c5b24a9ba4f9cf6298209328475 category: main optional: false - name: hpack @@ -1430,6 +1377,72 @@ package: sha256: fdcea5d7cb314485d3907192ef024c704311548c5b0cbeb390cd1951051e29d2 category: main optional: false +- name: httpcore + version: 1.0.9 + manager: conda + platform: linux-64 + dependencies: + anyio: '>=4.0,<5.0' + certifi: '' + h11: '>=0.16' + h2: '>=3,<5' + python: '' + sniffio: 1.* + url: https://repo.prefix.dev/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda + hash: + md5: 4f14640d58e2cc0aa0819d9d8ba125bb + sha256: 04d49cb3c42714ce533a8553986e1642d0549a05dc5cc48e0d43ff5be6679a5b + category: main + optional: false +- name: httpcore + version: 1.0.9 + manager: conda + platform: win-64 + dependencies: + anyio: '>=4.0,<5.0' + certifi: '' + h11: '>=0.16' + h2: '>=3,<5' + python: '' + sniffio: 1.* + url: https://repo.prefix.dev/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda + hash: + md5: 4f14640d58e2cc0aa0819d9d8ba125bb + sha256: 04d49cb3c42714ce533a8553986e1642d0549a05dc5cc48e0d43ff5be6679a5b + category: main + optional: false +- name: httpx + version: 0.28.1 + manager: conda + platform: linux-64 + dependencies: + anyio: '' + certifi: '' + httpcore: 1.* + idna: '' + python: '>=3.9' + url: https://repo.prefix.dev/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + hash: + md5: d6989ead454181f4f9bc987d3dc4e285 + sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 + category: main + optional: false +- name: httpx + version: 0.28.1 + manager: conda + platform: win-64 + dependencies: + anyio: '' + certifi: '' + httpcore: 1.* + idna: '' + python: '>=3.9' + url: https://repo.prefix.dev/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + hash: + md5: d6989ead454181f4f9bc987d3dc4e285 + sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 + category: main + optional: false - name: hyperframe version: 6.1.0 manager: conda @@ -1502,8 +1515,8 @@ package: hash: md5: ebc56022e4ef7e74a829be94c53797ca sha256: 4e787f9ccc31053ccea56d98ecd284a4f788988a3f9c4627db72fdd0b127529b - category: main - optional: false + category: dev + optional: true - name: imagesize version: 2.0.1 manager: conda @@ -1514,32 +1527,32 @@ package: hash: md5: ebc56022e4ef7e74a829be94c53797ca sha256: 4e787f9ccc31053ccea56d98ecd284a4f788988a3f9c4627db72fdd0b127529b - category: main - optional: false + category: dev + optional: true - name: importlib-metadata - version: 9.0.1 + version: 10.0.0 manager: conda platform: linux-64 dependencies: python: '' zipp: '>=3.20' - url: https://repo.prefix.dev/conda-forge/noarch/importlib-metadata-9.0.1-pyhcf101f3_0.conda + url: https://repo.prefix.dev/conda-forge/noarch/importlib-metadata-10.0.0-pyh5ded981_0.conda hash: - md5: 77ec68e0aa61c3fff9ecbf840f93d64e - sha256: 95a074a7d3f58b3494c068d4789c364dcb591c56b70ca6b12f149a540f9aeea4 + md5: 8401f0ee3de84b5a549c47cf3038909b + sha256: 43151c94c02fa67e8105cfe64c8c27a1b260b22bae6ddbe9c33b56a9c302e459 category: main optional: false - name: importlib-metadata - version: 9.0.1 + version: 10.0.0 manager: conda platform: win-64 dependencies: python: '' zipp: '>=3.20' - url: https://repo.prefix.dev/conda-forge/noarch/importlib-metadata-9.0.1-pyhcf101f3_0.conda + url: https://repo.prefix.dev/conda-forge/noarch/importlib-metadata-10.0.0-pyh5ded981_0.conda hash: - md5: 77ec68e0aa61c3fff9ecbf840f93d64e - sha256: 95a074a7d3f58b3494c068d4789c364dcb591c56b70ca6b12f149a540f9aeea4 + md5: 8401f0ee3de84b5a549c47cf3038909b + sha256: 43151c94c02fa67e8105cfe64c8c27a1b260b22bae6ddbe9c33b56a9c302e459 category: main optional: false - name: iniconfig @@ -1686,30 +1699,58 @@ package: sha256: 894682a42a7d659ae12878dbcb274516a7031bbea9104e92f8e88c1f2765a104 category: main optional: false +- name: isoduration + version: 20.11.0 + manager: conda + platform: linux-64 + dependencies: + arrow: '>=0.15.0' + python: '>=3.9' + url: https://repo.prefix.dev/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + hash: + md5: 0b0154421989637d424ccf0f104be51a + sha256: 08e838d29c134a7684bca0468401d26840f41c92267c4126d7b43a6b533b0aed + category: main + optional: false +- name: isoduration + version: 20.11.0 + manager: conda + platform: win-64 + dependencies: + arrow: '>=0.15.0' + python: '>=3.9' + url: https://repo.prefix.dev/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + hash: + md5: 0b0154421989637d424ccf0f104be51a + sha256: 08e838d29c134a7684bca0468401d26840f41c92267c4126d7b43a6b533b0aed + category: main + optional: false - name: isort - version: 5.13.2 + version: 9.0.2 manager: conda platform: linux-64 dependencies: - python: '>=3.9,<4.0' - setuptools: '' - url: https://repo.prefix.dev/conda-forge/noarch/isort-5.13.2-pyhd8ed1ab_1.conda + importlib-metadata: '>=4.6.0' + mypy_extensions: '>=1.1.0' + python: '>=3.11,<4.0' + url: https://repo.prefix.dev/conda-forge/noarch/isort-9.0.2-pyhd8ed1ab_0.conda hash: - md5: ef7dc847f19fe4859d5aaa33385bf509 - sha256: 6ebf6e83c2d449760ad5c5cc344711d6404f9e3cf6952811b8678aca5a4ab01f + md5: 1cb324e5e21a3993150cba63ad3b918f + sha256: 91d0a0d92f1dacc4217c7e2d566f7c0ac5fb8db9bad51aa3fa607645f219cb0a category: dev optional: true - name: isort - version: 5.13.2 + version: 9.0.2 manager: conda platform: win-64 dependencies: - python: '>=3.9,<4.0' - setuptools: '' - url: https://repo.prefix.dev/conda-forge/noarch/isort-5.13.2-pyhd8ed1ab_1.conda + importlib-metadata: '>=4.6.0' + mypy_extensions: '>=1.1.0' + python: '>=3.11,<4.0' + url: https://repo.prefix.dev/conda-forge/noarch/isort-9.0.2-pyhd8ed1ab_0.conda hash: - md5: ef7dc847f19fe4859d5aaa33385bf509 - sha256: 6ebf6e83c2d449760ad5c5cc344711d6404f9e3cf6952811b8678aca5a4ab01f + md5: 1cb324e5e21a3993150cba63ad3b918f + sha256: 91d0a0d92f1dacc4217c7e2d566f7c0ac5fb8db9bad51aa3fa607645f219cb0a category: dev optional: true - name: jedi @@ -1764,6 +1805,54 @@ package: sha256: fc9ca7348a4f25fed2079f2153ecdcf5f9cf2a0bc36c4172420ca09e1849df7b category: main optional: false +- name: json5 + version: 0.17.3 + manager: conda + platform: linux-64 + dependencies: + python: '>=3.11' + url: https://repo.prefix.dev/conda-forge/noarch/json5-0.17.3-pyhd8ed1ab_0.conda + hash: + md5: 7ac68bd458d6876b9aa2d7bdb094f8df + sha256: 7928ceed3bab4f3ff773f749b236a8867a077c6625596f757751e3206833632b + category: main + optional: false +- name: json5 + version: 0.17.3 + manager: conda + platform: win-64 + dependencies: + python: '>=3.11' + url: https://repo.prefix.dev/conda-forge/noarch/json5-0.17.3-pyhd8ed1ab_0.conda + hash: + md5: 7ac68bd458d6876b9aa2d7bdb094f8df + sha256: 7928ceed3bab4f3ff773f749b236a8867a077c6625596f757751e3206833632b + category: main + optional: false +- name: jsonpointer + version: '3.6' + manager: conda + platform: linux-64 + dependencies: + python: '' + url: https://repo.prefix.dev/conda-forge/noarch/jsonpointer-3.6-pyh5ded981_0.conda + hash: + md5: 16631ef886dd29911347425656adb73e + sha256: bb138714570efa8876befc618e7e95610c23096ecdbb91412ced5eec7cadc351 + category: main + optional: false +- name: jsonpointer + version: '3.6' + manager: conda + platform: win-64 + dependencies: + python: '' + url: https://repo.prefix.dev/conda-forge/noarch/jsonpointer-3.6-pyh5ded981_0.conda + hash: + md5: 16631ef886dd29911347425656adb73e + sha256: bb138714570efa8876befc618e7e95610c23096ecdbb91412ced5eec7cadc351 + category: main + optional: false - name: jsonschema version: 4.26.0 manager: conda @@ -1822,6 +1911,48 @@ package: sha256: 0a4f3b132f0faca10c89fdf3b60e15abb62ded6fa80aebfc007d05965192aa04 category: main optional: false +- name: jsonschema-with-format-nongpl + version: 4.26.0 + manager: conda + platform: linux-64 + dependencies: + fqdn: '' + idna: '' + isoduration: '' + jsonpointer: '>1.13' + jsonschema: '>=4.26.0,<4.26.1.0a0' + rfc3339-validator: '' + rfc3986-validator: '>0.1.0' + rfc3987-syntax: '>=1.1.0' + uri-template: '' + webcolors: '>=24.6.0' + url: https://repo.prefix.dev/conda-forge/noarch/jsonschema-with-format-nongpl-4.26.0-hcf101f3_1.conda + hash: + md5: ae36c895b9e25a127d2acbdbaa87e301 + sha256: 1b8ed25276ceae973e21d269fbe11f08d0b5f73c7ac9584e2d6a9dd763b8707a + category: main + optional: false +- name: jsonschema-with-format-nongpl + version: 4.26.0 + manager: conda + platform: win-64 + dependencies: + fqdn: '' + idna: '' + isoduration: '' + jsonpointer: '>1.13' + jsonschema: '>=4.26.0,<4.26.1.0a0' + rfc3339-validator: '' + rfc3986-validator: '>0.1.0' + rfc3987-syntax: '>=1.1.0' + uri-template: '' + webcolors: '>=24.6.0' + url: https://repo.prefix.dev/conda-forge/noarch/jsonschema-with-format-nongpl-4.26.0-hcf101f3_1.conda + hash: + md5: ae36c895b9e25a127d2acbdbaa87e301 + sha256: 1b8ed25276ceae973e21d269fbe11f08d0b5f73c7ac9584e2d6a9dd763b8707a + category: main + optional: false - name: jupyter-book version: 1.0.4.post1 manager: conda @@ -1851,8 +1982,8 @@ package: hash: md5: b5ca0ebe1794ac80769af8394e3f14cf sha256: 0ef2582aeba805abd92090bcd7f04213806c629f8be0712f1c62d12406e7b28e - category: main - optional: false + category: dev + optional: true - name: jupyter-book version: 1.0.4.post1 manager: conda @@ -1882,6 +2013,36 @@ package: hash: md5: b5ca0ebe1794ac80769af8394e3f14cf sha256: 0ef2582aeba805abd92090bcd7f04213806c629f8be0712f1c62d12406e7b28e + category: dev + optional: true +- name: jupyter-builder + version: 1.2.3 + manager: conda + platform: linux-64 + dependencies: + jupyter_core: '' + python: '' + tomli: '' + traitlets: '' + url: https://repo.prefix.dev/conda-forge/noarch/jupyter-builder-1.2.3-pyh5ded981_0.conda + hash: + md5: bac0e43cada154f38a627bde5e7e6016 + sha256: 3eba9c6b859a217ad8de382d1af76983611c221364a059bfd379f2f09dd663ef + category: main + optional: false +- name: jupyter-builder + version: 1.2.3 + manager: conda + platform: win-64 + dependencies: + jupyter_core: '' + python: '' + tomli: '' + traitlets: '' + url: https://repo.prefix.dev/conda-forge/noarch/jupyter-builder-1.2.3-pyh5ded981_0.conda + hash: + md5: bac0e43cada154f38a627bde5e7e6016 + sha256: 3eba9c6b859a217ad8de382d1af76983611c221364a059bfd379f2f09dd663ef category: main optional: false - name: jupyter-cache @@ -1902,8 +2063,8 @@ package: hash: md5: b0ee650829b8974202a7abe7f8b81e5a sha256: 054d397dd45ed08bffb0976702e553dfb0d0b0a477da9cff36e2ea702e928f48 - category: main - optional: false + category: dev + optional: true - name: jupyter-cache version: 1.0.1 manager: conda @@ -1922,6 +2083,34 @@ package: hash: md5: b0ee650829b8974202a7abe7f8b81e5a sha256: 054d397dd45ed08bffb0976702e553dfb0d0b0a477da9cff36e2ea702e928f48 + category: dev + optional: true +- name: jupyter-lsp + version: 2.3.1 + manager: conda + platform: linux-64 + dependencies: + importlib-metadata: '>=4.8.3' + jupyter_server: '>=1.1.2' + python: '' + url: https://repo.prefix.dev/conda-forge/noarch/jupyter-lsp-2.3.1-pyhcf101f3_0.conda + hash: + md5: 0c3b465ceee138b9c39279cc02e5c4a0 + sha256: 3766e2ae59641c172cec8a821528bfa6bf9543ffaaeb8b358bfd5259dcf18e4e + category: main + optional: false +- name: jupyter-lsp + version: 2.3.1 + manager: conda + platform: win-64 + dependencies: + importlib-metadata: '>=4.8.3' + jupyter_server: '>=1.1.2' + python: '' + url: https://repo.prefix.dev/conda-forge/noarch/jupyter-lsp-2.3.1-pyhcf101f3_0.conda + hash: + md5: 0c3b465ceee138b9c39279cc02e5c4a0 + sha256: 3766e2ae59641c172cec8a821528bfa6bf9543ffaaeb8b358bfd5259dcf18e4e category: main optional: false - name: jupyter_client @@ -1991,6 +2180,184 @@ package: sha256: ed709a6c25b731e01563521ef338b93986cd14b5bc17f35e9382000864872ccc category: main optional: false +- name: jupyter_events + version: 0.12.1 + manager: conda + platform: linux-64 + dependencies: + jsonschema-with-format-nongpl: '>=4.18.0' + packaging: '' + python: '' + python-json-logger: '>=2.0.4' + pyyaml: '>=5.3' + referencing: '' + rfc3339-validator: '' + rfc3986-validator: '>=0.1.1' + traitlets: '>=5.3' + url: https://repo.prefix.dev/conda-forge/noarch/jupyter_events-0.12.1-pyhcf101f3_0.conda + hash: + md5: bf42ee94c750c0b2e7e998b79ac299ea + sha256: c7edb5682c6316a95ad781dccb1b6589cd2ec0bf94f23c21152974eb0363b5d7 + category: main + optional: false +- name: jupyter_events + version: 0.12.1 + manager: conda + platform: win-64 + dependencies: + jsonschema-with-format-nongpl: '>=4.18.0' + packaging: '' + python: '' + python-json-logger: '>=2.0.4' + pyyaml: '>=5.3' + referencing: '' + rfc3339-validator: '' + rfc3986-validator: '>=0.1.1' + traitlets: '>=5.3' + url: https://repo.prefix.dev/conda-forge/noarch/jupyter_events-0.12.1-pyhcf101f3_0.conda + hash: + md5: bf42ee94c750c0b2e7e998b79ac299ea + sha256: c7edb5682c6316a95ad781dccb1b6589cd2ec0bf94f23c21152974eb0363b5d7 + category: main + optional: false +- name: jupyter_server + version: 2.21.1 + manager: conda + platform: linux-64 + dependencies: + anyio: '>=3.1.0' + argon2-cffi: '>=21.1' + jinja2: '>=3.0.3' + jupyter_client: '>=7.4.4' + jupyter_core: '>=4.12,!=5.0.*' + jupyter_events: '>=0.11.0' + jupyter_server_terminals: '>=0.4.4' + nbconvert-core: '>=6.4.4' + nbformat: '>=5.3.0' + overrides: '>=5.0' + packaging: '>=22.0' + prometheus_client: '>=0.9' + python: '' + pyzmq: '>=24' + send2trash: '>=1.8.2' + terminado: '>=0.8.3' + tornado: '>=6.2.0' + traitlets: '>=5.6.0' + websocket-client: '>=1.7' + url: https://repo.prefix.dev/conda-forge/noarch/jupyter_server-2.21.1-pyh5ded981_0.conda + hash: + md5: 421d2fbcc3a265fe9d843d382efeb4e0 + sha256: 158e75eda032e05f3a9836947de91915ad66169a136e01bf5ad6ae8a15e38584 + category: main + optional: false +- name: jupyter_server + version: 2.21.1 + manager: conda + platform: win-64 + dependencies: + anyio: '>=3.1.0' + argon2-cffi: '>=21.1' + jinja2: '>=3.0.3' + jupyter_client: '>=7.4.4' + jupyter_core: '>=4.12,!=5.0.*' + jupyter_events: '>=0.11.0' + jupyter_server_terminals: '>=0.4.4' + nbconvert-core: '>=6.4.4' + nbformat: '>=5.3.0' + overrides: '>=5.0' + packaging: '>=22.0' + prometheus_client: '>=0.9' + python: '' + pyzmq: '>=24' + send2trash: '>=1.8.2' + terminado: '>=0.8.3' + tornado: '>=6.2.0' + traitlets: '>=5.6.0' + websocket-client: '>=1.7' + url: https://repo.prefix.dev/conda-forge/noarch/jupyter_server-2.21.1-pyh5ded981_0.conda + hash: + md5: 421d2fbcc3a265fe9d843d382efeb4e0 + sha256: 158e75eda032e05f3a9836947de91915ad66169a136e01bf5ad6ae8a15e38584 + category: main + optional: false +- name: jupyter_server_terminals + version: 0.5.4 + manager: conda + platform: linux-64 + dependencies: + python: '' + terminado: '>=0.8.3' + url: https://repo.prefix.dev/conda-forge/noarch/jupyter_server_terminals-0.5.4-pyhcf101f3_0.conda + hash: + md5: 7b8bace4943e0dc345fc45938826f2b8 + sha256: 5eda79ed9f53f590031d29346abd183051263227dd9ee667b5ca1133ce297654 + category: main + optional: false +- name: jupyter_server_terminals + version: 0.5.4 + manager: conda + platform: win-64 + dependencies: + python: '' + terminado: '>=0.8.3' + url: https://repo.prefix.dev/conda-forge/noarch/jupyter_server_terminals-0.5.4-pyhcf101f3_0.conda + hash: + md5: 7b8bace4943e0dc345fc45938826f2b8 + sha256: 5eda79ed9f53f590031d29346abd183051263227dd9ee667b5ca1133ce297654 + category: main + optional: false +- name: jupyterlab + version: 4.6.4 + manager: conda + platform: linux-64 + dependencies: + async-lru: '>=1.0.0' + httpx: '>=0.25.0,<1' + ipykernel: '>=6.5.0,!=6.30.0' + jinja2: '>=3.0.3' + jupyter-builder: '>=1.0.2' + jupyter-lsp: '>=2.0.0' + jupyter_core: '' + jupyter_server: '>=2.19.0,<3' + jupyterlab_server: '>=2.28.0,<3' + notebook-shim: '>=0.2' + packaging: '>=23.2' + python: '>=3.11' + tornado: '>=6.2.0' + traitlets: '' + typing_extensions: '>=4.4.0' + url: https://repo.prefix.dev/conda-forge/noarch/jupyterlab-4.6.4-pyhd8ed1ab_0.conda + hash: + md5: e02640feae12005b7c3f3260173d3658 + sha256: 4a62d5b49faefea568c5448442977d075db778b5ebda6fecc6e6766d60fbabb0 + category: main + optional: false +- name: jupyterlab + version: 4.6.4 + manager: conda + platform: win-64 + dependencies: + async-lru: '>=1.0.0' + httpx: '>=0.25.0,<1' + ipykernel: '>=6.5.0,!=6.30.0' + jinja2: '>=3.0.3' + jupyter-builder: '>=1.0.2' + jupyter-lsp: '>=2.0.0' + jupyter_core: '' + jupyter_server: '>=2.19.0,<3' + jupyterlab_server: '>=2.28.0,<3' + notebook-shim: '>=0.2' + packaging: '>=23.2' + python: '>=3.11' + tornado: '>=6.2.0' + traitlets: '' + typing_extensions: '>=4.4.0' + url: https://repo.prefix.dev/conda-forge/noarch/jupyterlab-4.6.4-pyhd8ed1ab_0.conda + hash: + md5: e02640feae12005b7c3f3260173d3658 + sha256: 4a62d5b49faefea568c5448442977d075db778b5ebda6fecc6e6766d60fbabb0 + category: main + optional: false - name: jupyterlab_pygments version: 0.3.0 manager: conda @@ -2017,6 +2384,44 @@ package: sha256: dc24b900742fdaf1e077d9a3458fd865711de80bca95fe3c6d46610c532c6ef0 category: main optional: false +- name: jupyterlab_server + version: 2.28.1 + manager: conda + platform: linux-64 + dependencies: + babel: '>=2.10' + jinja2: '>=3.0.3' + json5: '>=0.9.0' + jsonschema: '>=4.18.0' + jupyter_server: '>=1.21,<3' + packaging: '>=21.3' + python: '' + requests: '>=2.31' + url: https://repo.prefix.dev/conda-forge/noarch/jupyterlab_server-2.28.1-pyh5ded981_0.conda + hash: + md5: 7f8cd7ef088f7149f81d6d0f4e258519 + sha256: f0e0e25d75e5f93905cf50adcded9a2524a936810d14fbc67c9de3119ce77589 + category: main + optional: false +- name: jupyterlab_server + version: 2.28.1 + manager: conda + platform: win-64 + dependencies: + babel: '>=2.10' + jinja2: '>=3.0.3' + json5: '>=0.9.0' + jsonschema: '>=4.18.0' + jupyter_server: '>=1.21,<3' + packaging: '>=21.3' + python: '' + requests: '>=2.31' + url: https://repo.prefix.dev/conda-forge/noarch/jupyterlab_server-2.28.1-pyh5ded981_0.conda + hash: + md5: 7f8cd7ef088f7149f81d6d0f4e258519 + sha256: f0e0e25d75e5f93905cf50adcded9a2524a936810d14fbc67c9de3119ce77589 + category: main + optional: false - name: jupytext version: 1.19.6 manager: conda @@ -2033,8 +2438,8 @@ package: hash: md5: 4b867666de61f0bf0290ff13ba5adaa0 sha256: 5d5f4c3e0062722e58b266a530cca13267641e056a057b182494b2c9c72ffd22 - category: main - optional: false + category: dev + optional: true - name: jupytext version: 1.19.6 manager: conda @@ -2051,8 +2456,8 @@ package: hash: md5: 4b867666de61f0bf0290ff13ba5adaa0 sha256: 5d5f4c3e0062722e58b266a530cca13267641e056a057b182494b2c9c72ffd22 - category: main - optional: false + category: dev + optional: true - name: keyutils version: 1.6.3 manager: conda @@ -2130,61 +2535,54 @@ package: sha256: 63ff03324e903eb01a715ccf357df56d66224e61952fd6615d86490ebefb3285 category: main optional: false -- name: latexcodec - version: 2.0.1 +- name: lark + version: 1.3.1 manager: conda platform: linux-64 dependencies: - python: '' - six: '' - url: https://repo.prefix.dev/conda-forge/noarch/latexcodec-2.0.1-pyh9f0ad1d_0.tar.bz2 + python: '>=3.10' + url: https://repo.prefix.dev/conda-forge/noarch/lark-1.3.1-pyhd8ed1ab_0.conda hash: - md5: 8d67904973263afd2985ba56aa2d6bb4 - sha256: 5210d31c8f2402dd1ad1b3edcf7a53292b9da5de20cd14d9c243dbf9278b1c4f + md5: 9b965c999135d43a3d0f7bd7d024e26a + sha256: 49570840fb15f5df5d4b4464db8ee43a6d643031a2bc70ef52120a52e3809699 category: main optional: false -- name: latexcodec - version: 2.0.1 +- name: lark + version: 1.3.1 manager: conda platform: win-64 dependencies: - python: '' - six: '' - url: https://repo.prefix.dev/conda-forge/noarch/latexcodec-2.0.1-pyh9f0ad1d_0.tar.bz2 + python: '>=3.10' + url: https://repo.prefix.dev/conda-forge/noarch/lark-1.3.1-pyhd8ed1ab_0.conda hash: - md5: 8d67904973263afd2985ba56aa2d6bb4 - sha256: 5210d31c8f2402dd1ad1b3edcf7a53292b9da5de20cd14d9c243dbf9278b1c4f + md5: 9b965c999135d43a3d0f7bd7d024e26a + sha256: 49570840fb15f5df5d4b4464db8ee43a6d643031a2bc70ef52120a52e3809699 category: main optional: false -- name: lazy-object-proxy - version: 1.12.0 +- name: latexcodec + version: 2.0.1 manager: conda platform: linux-64 dependencies: - __glibc: '>=2.17,<3.0.a0' - libgcc: '>=15' python: '' - python_abi: 3.12.* - url: https://repo.prefix.dev/conda-forge/linux-64/lazy-object-proxy-1.12.0-py312h1b36aeb_5.conda + six: '' + url: https://repo.prefix.dev/conda-forge/noarch/latexcodec-2.0.1-pyh9f0ad1d_0.tar.bz2 hash: - md5: e0ad027181c2486a5199fd4fe7e80662 - sha256: b962fa5c6334e5ad6eb4464e23fa894fef725d3f67e6957bd957b437826b3c59 + md5: 8d67904973263afd2985ba56aa2d6bb4 + sha256: 5210d31c8f2402dd1ad1b3edcf7a53292b9da5de20cd14d9c243dbf9278b1c4f category: dev optional: true -- name: lazy-object-proxy - version: 1.12.0 +- name: latexcodec + version: 2.0.1 manager: conda platform: win-64 dependencies: python: '' - python_abi: 3.12.* - ucrt: '>=10.0.20348.0' - vc: '>=14.3,<15' - vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/lazy-object-proxy-1.12.0-py312he5662c2_5.conda + six: '' + url: https://repo.prefix.dev/conda-forge/noarch/latexcodec-2.0.1-pyh9f0ad1d_0.tar.bz2 hash: - md5: 3d154ced22be22c10d181c194f9622e9 - sha256: 2830cf2138a7152ee7888f51b411743c48853f24b51925c937fa7e56bb8c70ac + md5: 8d67904973263afd2985ba56aa2d6bb4 + sha256: 5210d31c8f2402dd1ad1b3edcf7a53292b9da5de20cd14d9c243dbf9278b1c4f category: dev optional: true - name: lcms2 @@ -2312,88 +2710,88 @@ package: category: main optional: false - name: libbrotlicommon - version: 1.2.0 + version: 1.2.1 manager: conda platform: linux-64 dependencies: __glibc: '>=2.17,<3.0.a0' libgcc: '>=15' - url: https://repo.prefix.dev/conda-forge/linux-64/libbrotlicommon-1.2.0-h39a168f_4.conda + url: https://repo.prefix.dev/conda-forge/linux-64/libbrotlicommon-1.2.1-h39a168f_0.conda hash: - md5: df210655e30a05e3b069c91b7aaddd2d - sha256: c4e9854c585f3ee1785f651287ecdf8c28f30a2ea1b159a513005f8a0f6453a3 + md5: 9460bdde20bcdf9e6bbef0232b14ad2d + sha256: 8eccfbfdb8ecba32eabfb6ee92f70e818e5f3a35a01c507f7b6bd56e00e4c617 category: main optional: false - name: libbrotlicommon - version: 1.2.0 + version: 1.2.1 manager: conda platform: win-64 dependencies: ucrt: '>=10.0.20348.0' vc: '>=14.3,<15' vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/libbrotlicommon-1.2.0-hf02afa3_4.conda + url: https://repo.prefix.dev/conda-forge/win-64/libbrotlicommon-1.2.1-hf02afa3_0.conda hash: - md5: 35d7e4a581c8364e8c675f6b95d183d0 - sha256: 88247c467f77d99abfe2596fa5c91c2ec0f2942d6fc292d5729ab3538d1b0a0f + md5: c523d6047d24f21716fca89302bd92a1 + sha256: dc2d23fff23a10ee424e946314344c35c9a222eddca93eb53fc6b897d37f6d03 category: main optional: false - name: libbrotlidec - version: 1.2.0 + version: 1.2.1 manager: conda platform: linux-64 dependencies: __glibc: '>=2.17,<3.0.a0' - libbrotlicommon: 1.2.0 + libbrotlicommon: 1.2.1 libgcc: '>=15' - url: https://repo.prefix.dev/conda-forge/linux-64/libbrotlidec-1.2.0-ha411449_4.conda + url: https://repo.prefix.dev/conda-forge/linux-64/libbrotlidec-1.2.1-ha411449_0.conda hash: - md5: 0cfd601eb03cca403dcc248844787486 - sha256: d5ed24da3e583a92227fe77280978b7933f07a39a2b60156c5ad95e5c76733fa + md5: 6d934e235f4d452ebec720ec7c3638a6 + sha256: 4b4bda6f70ad511bdff95fdd958dca74b6e0534ae335ddcb1d8c6569774d2429 category: main optional: false - name: libbrotlidec - version: 1.2.0 + version: 1.2.1 manager: conda platform: win-64 dependencies: - libbrotlicommon: 1.2.0 + libbrotlicommon: 1.2.1 ucrt: '>=10.0.20348.0' vc: '>=14.3,<15' vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/libbrotlidec-1.2.0-h84f9c24_4.conda + url: https://repo.prefix.dev/conda-forge/win-64/libbrotlidec-1.2.1-h84f9c24_0.conda hash: - md5: 1b4637ca71b21c0d31ab28c3c0b34c8e - sha256: ddcf50274ccdd863c176190726c524903e0b875aa13e9d60c3755b2fa221fc62 + md5: ae23c3860627923ff10795db781304d9 + sha256: 9b0c2c98dd0d054c1b3f4583645d1b867b575daeb28d807f36da3d9c6867bf4f category: main optional: false - name: libbrotlienc - version: 1.2.0 + version: 1.2.1 manager: conda platform: linux-64 dependencies: __glibc: '>=2.17,<3.0.a0' - libbrotlicommon: 1.2.0 + libbrotlicommon: 1.2.1 libgcc: '>=15' - url: https://repo.prefix.dev/conda-forge/linux-64/libbrotlienc-1.2.0-h018ffa1_4.conda + url: https://repo.prefix.dev/conda-forge/linux-64/libbrotlienc-1.2.1-h018ffa1_0.conda hash: - md5: 4136f6e4ef4835cc7df39a707cbd511c - sha256: b9f3cb510337655485c2e79ce5f7dd468991b19ad29723ffa1175a0aed1b69ae + md5: 8f3078564b4a4cd9602ebaafe78e0b87 + sha256: 61974cf9bb07115ed6725dacf83d0d985443d78dd123cc4f2758856fda5376ec category: main optional: false - name: libbrotlienc - version: 1.2.0 + version: 1.2.1 manager: conda platform: win-64 dependencies: - libbrotlicommon: 1.2.0 + libbrotlicommon: 1.2.1 ucrt: '>=10.0.20348.0' vc: '>=14.3,<15' vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/libbrotlienc-1.2.0-he2a975b_4.conda + url: https://repo.prefix.dev/conda-forge/win-64/libbrotlienc-1.2.1-he2a975b_0.conda hash: - md5: 562b5e39b7797423e7fd04bae1c6ad70 - sha256: d6744e57961728e12e4ac8e54bb0edd235a1c34d663a9df0dd153f9540a799bc + md5: e30d98aaf0db9ba411860d4f5bb66410 + sha256: bf61cccd9f825ca405241ded17806181e02fb383a5a295e6d38ac8fd5774b80d category: main optional: false - name: libcblas @@ -2512,30 +2910,30 @@ package: category: main optional: false - name: libexpat - version: 2.8.5 + version: 2.9.0 manager: conda platform: linux-64 dependencies: __glibc: '>=2.17,<3.0.a0' libgcc: '>=15' - url: https://repo.prefix.dev/conda-forge/linux-64/libexpat-2.8.5-hd2095e1_0.conda + url: https://repo.prefix.dev/conda-forge/linux-64/libexpat-2.9.0-hd2095e1_0.conda hash: - md5: 72cfd2b95b0540247220b42f58a148d7 - sha256: 6de73033a7c5f712c9c5a54124e4581e025691029835e5bceaf10a333a7e7bc0 + md5: 317ecabe4a58b3068c7958dc5eb89e43 + sha256: 7b930a8b6bc6553cb754b4977a11f9c862c719a652fc2d128d89270992ce8beb category: main optional: false - name: libexpat - version: 2.8.5 + version: 2.9.0 manager: conda platform: win-64 dependencies: ucrt: '>=10.0.20348.0' vc: '>=14.3,<15' vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/libexpat-2.8.5-hac47afa_0.conda + url: https://repo.prefix.dev/conda-forge/win-64/libexpat-2.9.0-hac47afa_0.conda hash: - md5: 4969128c45f9e71adbb6a1696679ce7f - sha256: 70c73d9fd24ad996f2821d1501adae2ca70984b4e2d8faed76227f348ce86078 + md5: 74ac404611024dc488ae71cfb7a5bf8f + sha256: d4a8e5aac8999a90cd71aa6f9f5c40d8594ed2b89cd7f898f997767ecc6cd52d category: main optional: false - name: libffi @@ -2882,30 +3280,30 @@ package: category: main optional: false - name: libpython - version: 3.12.15 + version: 3.12.16 manager: conda platform: linux-64 dependencies: __glibc: '>=2.17,<3.0.a0' libgcc: '>=15' - url: https://repo.prefix.dev/conda-forge/linux-64/libpython-3.12.15-ha57cdbe_2_cpython.conda + url: https://repo.prefix.dev/conda-forge/linux-64/libpython-3.12.16-ha57cdbe_0_cpython.conda hash: - md5: fe256863f652549334a81a8e49fdf097 - sha256: 37017ac4a784c50f1fc73c7b0eb090c7f29f4541c9014c4b4e10daa275488fdd + md5: e1442492859319edcd76293a2488156e + sha256: 71126cad347dfd1be645b1207baa3729e64f055edb5f785dadeb84872480a015 category: main optional: false - name: libpython - version: 3.12.15 + version: 3.12.16 manager: conda platform: win-64 dependencies: ucrt: '>=10.0.20348.0' vc: '>=14.3,<15' vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/libpython-3.12.15-hfb4101e_2_cpython.conda + url: https://repo.prefix.dev/conda-forge/win-64/libpython-3.12.16-hfb4101e_0_cpython.conda hash: - md5: 436ac63cfc19db379c2277abf142bf2d - sha256: 1b0a0afd12f3b4c207cd8b03ed9a5e577adb761d3b1c46a3e5ae14f149ec49b5 + md5: 134d0d3f298ff8dde24757d46acfd71e + sha256: dd208ae5026d15eb90763f6f41b26c502a52c66f77687fa7a8682b7ef33ffd5c category: main optional: false - name: libsodium @@ -2936,31 +3334,31 @@ package: category: main optional: false - name: libsqlite - version: 3.54.0 + version: 3.54.1 manager: conda platform: linux-64 dependencies: __glibc: '>=2.17,<3.0.a0' libgcc: '>=15' libzlib: '>=1.3.2,<2.0a0' - url: https://repo.prefix.dev/conda-forge/linux-64/libsqlite-3.54.0-h0737f62_101.conda + url: https://repo.prefix.dev/conda-forge/linux-64/libsqlite-3.54.1-h0737f62_101.conda hash: - md5: a8b899d3c5fc1034b209045653b86ed2 - sha256: b4d5d4428bd1931eede11d2d69389c5b9d396a7f3c8df9d7c39c9efd80761eb3 + md5: 36e097bf5f1e0699e88c8ac801f2dc65 + sha256: c294029f893d05286f1061bbab85b820f1eea73dd859af4bcc619197bcc34810 category: main optional: false - name: libsqlite - version: 3.54.0 + version: 3.54.1 manager: conda platform: win-64 dependencies: ucrt: '>=10.0.20348.0' vc: '>=14.3,<15' vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/libsqlite-3.54.0-hf5d6505_101.conda + url: https://repo.prefix.dev/conda-forge/win-64/libsqlite-3.54.1-hf5d6505_101.conda hash: - md5: d21c450f59e7c9d130ddd68cdbd6ac40 - sha256: 210405f21c300e72287281979bbb4be8a7aeb5f31329b8afffc6a1a2cae67427 + md5: 3fd1cac4336c12f2fb5545a999d7e9b6 + sha256: 1f7ddd7d9383cf6ab6ee5a3a84e07a679a8539edc0ddd05fe476ff08142bf742 category: main optional: false - name: libssh2 @@ -3101,15 +3499,14 @@ package: category: main optional: false - name: libwinpthread - version: 12.0.0.r4.gg4f2fc60ca + version: 12.0.0.r688.g6b2176247.1 manager: conda platform: win-64 - dependencies: - ucrt: '' - url: https://repo.prefix.dev/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h11686cb_11.conda + dependencies: {} + url: https://repo.prefix.dev/conda-forge/win-64/libwinpthread-12.0.0.r688.g6b2176247.1-h57928b3_0.conda hash: - md5: fc1e6626817ba55a0d141858d6c0ef5d - sha256: 988c8fe5fca9e3510fd0b5671d67ae42c1fd632f8bd28f832a6735970eb69a36 + md5: a1b8ebbb78e979c42b2bdd97ad7756e0 + sha256: bab5558663cb0e964988b859abd69d0f2380b6ea9f140495ab543e51af13635d category: main optional: false - name: libxcb @@ -3215,8 +3612,8 @@ package: hash: md5: 786c0fa25c80049e9d4b5cd960a5a0b2 sha256: ffbbb6eace53e7edee1e2e9948e4c8774eb4b382dea185d827865afb7b694c7f - category: main - optional: false + category: dev + optional: true - name: linkify-it-py version: 2.2.0 manager: conda @@ -3228,20 +3625,20 @@ package: hash: md5: 786c0fa25c80049e9d4b5cd960a5a0b2 sha256: ffbbb6eace53e7edee1e2e9948e4c8774eb4b382dea185d827865afb7b694c7f - category: main - optional: false + category: dev + optional: true - name: llvm-openmp - version: 23.1.3 + version: 23.1.4 manager: conda platform: win-64 dependencies: ucrt: '>=10.0.20348.0' vc: '>=14.3,<15' vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/llvm-openmp-23.1.3-h49e36cd_1.conda + url: https://repo.prefix.dev/conda-forge/win-64/llvm-openmp-23.1.4-h49e36cd_0.conda hash: - md5: 9a59330f44f2ad04123dda3f6fcc7bd3 - sha256: 3eed860d303cff84c3ab771312ebb3e0b26ad10d92b38ed98a33f3bef7edd01b + md5: 2674733d6b58428f90f7afb0132d4202 + sha256: a3012ff7e6ec5e0a0a19ea8df76a504f3c2bea2d5b12a94f8aa5a50ac9eeab3c category: main optional: false - name: markdown-it-py @@ -3255,8 +3652,8 @@ package: hash: md5: fee3164ac23dfca50cfcc8b85ddefb81 sha256: 0fbacdfb31e55964152b24d5567e9a9996e1e7902fb08eb7d91b5fd6ce60803a - category: main - optional: false + category: dev + optional: true - name: markdown-it-py version: 3.0.0 manager: conda @@ -3268,8 +3665,8 @@ package: hash: md5: fee3164ac23dfca50cfcc8b85ddefb81 sha256: 0fbacdfb31e55964152b24d5567e9a9996e1e7902fb08eb7d91b5fd6ce60803a - category: main - optional: false + category: dev + optional: true - name: markupsafe version: 3.0.4 manager: conda @@ -3279,10 +3676,10 @@ package: libgcc: '>=15' python: '' python_abi: 3.12.* - url: https://repo.prefix.dev/conda-forge/linux-64/markupsafe-3.0.4-py312h8b7ec3f_1.conda + url: https://repo.prefix.dev/conda-forge/linux-64/markupsafe-3.0.4-py312h8b7ec3f_2.conda hash: - md5: ee4135fc1ce77066d2be65475bcfbbff - sha256: a032b34f0c8e63ddb28714ec42f02f51cd6007d64b15a8269873574abe322931 + md5: 80d430787f77708ec725ddbced1469a6 + sha256: 02211f28277082b044a5530a44563a4c44d88586c68d072dca0cb52c69f7bb8b category: main optional: false - name: markupsafe @@ -3295,10 +3692,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/markupsafe-3.0.4-py312h6fa65f5_1.conda + url: https://repo.prefix.dev/conda-forge/win-64/markupsafe-3.0.4-py312h6fa65f5_2.conda hash: - md5: b52ae8b54a909d9c3de8756651d175f5 - sha256: fd2cc166414630b22cae346c597162e05d786d9ace0e9932e6339953099c7b96 + md5: 7b93af95045c0b9db934f872820f4bd1 + sha256: 84ec0a7fc2a3b5c244248ffe97a1091749d67f7cf213d25af6d68e38e79f6ff4 category: main optional: false - name: matplotlib-base @@ -3421,8 +3818,8 @@ package: hash: md5: ad6821df7a98510117db06e9a833281f sha256: 49db23cbfb1c1d414a14d7540195208b994ebd747beba0f15c903f3a0a2dc446 - category: main - optional: false + category: dev + optional: true - name: mdit-py-plugins version: 0.6.1 manager: conda @@ -3434,8 +3831,8 @@ package: hash: md5: ad6821df7a98510117db06e9a833281f sha256: 49db23cbfb1c1d414a14d7540195208b994ebd747beba0f15c903f3a0a2dc446 - category: main - optional: false + category: dev + optional: true - name: mdurl version: 0.1.2 manager: conda @@ -3446,8 +3843,8 @@ package: hash: md5: 592132998493b3ff25fd7479396e8351 sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 - category: main - optional: false + category: dev + optional: true - name: mdurl version: 0.1.2 manager: conda @@ -3458,48 +3855,46 @@ package: hash: md5: 592132998493b3ff25fd7479396e8351 sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 - category: main - optional: false + category: dev + optional: true - name: mistune - version: 3.3.4 + version: 3.4.0 manager: conda platform: linux-64 dependencies: python: '' - typing_extensions: '' - url: https://repo.prefix.dev/conda-forge/noarch/mistune-3.3.4-pyhcf101f3_0.conda + url: https://repo.prefix.dev/conda-forge/noarch/mistune-3.4.0-pyh5ded981_0.conda hash: - md5: 1c0ebec41ef9214160da1ee6a0880fce - sha256: 306af633cb4ac85d04024d7c243ac2031c488bf5b0912207e7304c27a5d65a85 + md5: 9f6bfe0b839624745c75bd2b01b2f8b1 + sha256: f2b30583b1e77530b16faa5d599d53399d4ca943316043c4cec19359ae5c625a category: main optional: false - name: mistune - version: 3.3.4 + version: 3.4.0 manager: conda platform: win-64 dependencies: python: '' - typing_extensions: '' - url: https://repo.prefix.dev/conda-forge/noarch/mistune-3.3.4-pyhcf101f3_0.conda + url: https://repo.prefix.dev/conda-forge/noarch/mistune-3.4.0-pyh5ded981_0.conda hash: - md5: 1c0ebec41ef9214160da1ee6a0880fce - sha256: 306af633cb4ac85d04024d7c243ac2031c488bf5b0912207e7304c27a5d65a85 + md5: 9f6bfe0b839624745c75bd2b01b2f8b1 + sha256: f2b30583b1e77530b16faa5d599d53399d4ca943316043c4cec19359ae5c625a category: main optional: false - name: mkl - version: 2026.1.0 + version: 2026.2.0 manager: conda platform: win-64 dependencies: - llvm-openmp: '>=22.1.8' - tbb: '>=2023.0.0' + llvm-openmp: '>=23.1.4' + tbb: '>=2023.1.0' ucrt: '>=10.0.20348.0' vc: '>=14.3,<15' vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/mkl-2026.1.0-hac47afa_235.conda + url: https://repo.prefix.dev/conda-forge/win-64/mkl-2026.2.0-hac47afa_882.conda hash: - md5: ace316c48c178d7faa403dee51e30c7b - sha256: bb8abe071f73765446df62924031e6599577e8ac9003264dc4569e78c0fea16d + md5: fb8f28b9ba8cf4a50e0ce10f2bc727e2 + sha256: 012fea9803989158ef12a7b807385e3f6b16daf4900085b9cc0318552ace751e category: main optional: false - name: munkres @@ -3526,6 +3921,30 @@ package: sha256: d09c47c2cf456de5c09fa66d2c3c5035aa1fa228a1983a433c47b876aa16ce90 category: main optional: false +- name: mypy_extensions + version: 1.1.0 + manager: conda + platform: linux-64 + dependencies: + python: '>=3.9' + url: https://repo.prefix.dev/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda + hash: + md5: e9c622e0d00fa24a6292279af3ab6d06 + sha256: 6ed158e4e5dd8f6a10ad9e525631e35cee8557718f83de7a4e3966b1f772c4b1 + category: dev + optional: true +- name: mypy_extensions + version: 1.1.0 + manager: conda + platform: win-64 + dependencies: + python: '>=3.9' + url: https://repo.prefix.dev/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda + hash: + md5: e9c622e0d00fa24a6292279af3ab6d06 + sha256: 6ed158e4e5dd8f6a10ad9e525631e35cee8557718f83de7a4e3966b1f772c4b1 + category: dev + optional: true - name: myst-nb version: 1.4.0 manager: conda @@ -3546,8 +3965,8 @@ package: hash: md5: da07c7b1588ad0a44118d28aeb31b6a6 sha256: c81d0c8c74c3da66808f8da09d8e48f2af2d173d357d45239defaf466838edba - category: main - optional: false + category: dev + optional: true - name: myst-nb version: 1.4.0 manager: conda @@ -3568,8 +3987,8 @@ package: hash: md5: da07c7b1588ad0a44118d28aeb31b6a6 sha256: c81d0c8c74c3da66808f8da09d8e48f2af2d173d357d45239defaf466838edba - category: main - optional: false + category: dev + optional: true - name: myst-parser version: 3.0.1 manager: conda @@ -3586,8 +4005,8 @@ package: hash: md5: 7a1ab67ee32e0d58ce55134d7a56b8fe sha256: bfce74342cd22b2201102565a15a2cb0e23ad28023b0f8a0d0e93e3fb19020df - category: main - optional: false + category: dev + optional: true - name: myst-parser version: 3.0.1 manager: conda @@ -3604,8 +4023,8 @@ package: hash: md5: 7a1ab67ee32e0d58ce55134d7a56b8fe sha256: bfce74342cd22b2201102565a15a2cb0e23ad28023b0f8a0d0e93e3fb19020df - category: main - optional: false + category: dev + optional: true - name: nbclient version: 0.11.0 manager: conda @@ -3649,8 +4068,8 @@ package: hash: md5: 0b26dff819ba9cfb0f6ff9c8b6a53c19 sha256: e151c45e9ad2b0368fe64f51b6c857873681df27da3c408a811e85551e129d0e - category: main - optional: false + category: dev + optional: true - name: nbconvert version: 7.16.6 manager: conda @@ -3662,8 +4081,8 @@ package: hash: md5: 0b26dff819ba9cfb0f6ff9c8b6a53c19 sha256: e151c45e9ad2b0368fe64f51b6c857873681df27da3c408a811e85551e129d0e - category: main - optional: false + category: dev + optional: true - name: nbconvert-core version: 7.16.6 manager: conda @@ -3729,8 +4148,8 @@ package: hash: md5: 32b4a67e7fde3b22287b65838c8ad01b sha256: 1eaf769838863544a0f2d2fb05acba1211a764b64234b53b2da836015d661150 - category: main - optional: false + category: dev + optional: true - name: nbconvert-pandoc version: 7.16.6 manager: conda @@ -3742,8 +4161,8 @@ package: hash: md5: 32b4a67e7fde3b22287b65838c8ad01b sha256: 1eaf769838863544a0f2d2fb05acba1211a764b64234b53b2da836015d661150 - category: main - optional: false + category: dev + optional: true - name: nbformat version: 5.11.1 manager: conda @@ -3790,27 +4209,89 @@ package: category: main optional: false - name: nest-asyncio2 - version: 1.7.3 + version: 1.7.4 manager: conda platform: linux-64 dependencies: python: '' - url: https://repo.prefix.dev/conda-forge/noarch/nest-asyncio2-1.7.3-pyh5ded981_0.conda + url: https://repo.prefix.dev/conda-forge/noarch/nest-asyncio2-1.7.4-pyh5ded981_0.conda hash: - md5: 409939a1f19ecec35d0b89e7889ecd92 - sha256: 7af0be0e578a5c700bfe9fbed3fda322bda460cdd8a1e2b444787819c1eb32bc + md5: 35c982da7a815a0de896d2c313e2c4bb + sha256: a0538fbc167648ba79be9530f0111ef8f26e262f9d892f65280c27027ae3471c category: main optional: false - name: nest-asyncio2 - version: 1.7.3 + version: 1.7.4 + manager: conda + platform: win-64 + dependencies: + python: '' + url: https://repo.prefix.dev/conda-forge/noarch/nest-asyncio2-1.7.4-pyh5ded981_0.conda + hash: + md5: 35c982da7a815a0de896d2c313e2c4bb + sha256: a0538fbc167648ba79be9530f0111ef8f26e262f9d892f65280c27027ae3471c + category: main + optional: false +- name: notebook + version: 7.6.3 + manager: conda + platform: linux-64 + dependencies: + jupyter-builder: '>=1.0.2,<2' + jupyter_server: '>=2.19.0,<3' + jupyterlab: '>=4.6.4,<4.7' + jupyterlab_server: '>=2.28.0,<3' + notebook-shim: '>=0.2,<0.3' + python: '' + tornado: '>=6.2.0' + url: https://repo.prefix.dev/conda-forge/noarch/notebook-7.6.3-pyh5ded981_0.conda + hash: + md5: 3bdbf5994402faaaabc8484fc8f2a914 + sha256: d78361cac6bb24d167d6212f46b07be4167bbef2b49cd71d104d2ce564cef971 + category: main + optional: false +- name: notebook + version: 7.6.3 manager: conda platform: win-64 dependencies: + jupyter-builder: '>=1.0.2,<2' + jupyter_server: '>=2.19.0,<3' + jupyterlab: '>=4.6.4,<4.7' + jupyterlab_server: '>=2.28.0,<3' + notebook-shim: '>=0.2,<0.3' python: '' - url: https://repo.prefix.dev/conda-forge/noarch/nest-asyncio2-1.7.3-pyh5ded981_0.conda + tornado: '>=6.2.0' + url: https://repo.prefix.dev/conda-forge/noarch/notebook-7.6.3-pyh5ded981_0.conda + hash: + md5: 3bdbf5994402faaaabc8484fc8f2a914 + sha256: d78361cac6bb24d167d6212f46b07be4167bbef2b49cd71d104d2ce564cef971 + category: main + optional: false +- name: notebook-shim + version: 0.2.4 + manager: conda + platform: linux-64 + dependencies: + jupyter_server: '>=1.8,<3' + python: '>=3.9' + url: https://repo.prefix.dev/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + hash: + md5: e7f89ea5f7ea9401642758ff50a2d9c1 + sha256: 7b920e46b9f7a2d2aa6434222e5c8d739021dbc5cc75f32d124a8191d86f9056 + category: main + optional: false +- name: notebook-shim + version: 0.2.4 + manager: conda + platform: win-64 + dependencies: + jupyter_server: '>=1.8,<3' + python: '>=3.9' + url: https://repo.prefix.dev/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda hash: - md5: 409939a1f19ecec35d0b89e7889ecd92 - sha256: 7af0be0e578a5c700bfe9fbed3fda322bda460cdd8a1e2b444787819c1eb32bc + md5: e7f89ea5f7ea9401642758ff50a2d9c1 + sha256: 7b920e46b9f7a2d2aa6434222e5c8d739021dbc5cc75f32d124a8191d86f9056 category: main optional: false - name: numpy @@ -3914,6 +4395,32 @@ package: sha256: bc44625e0c6d83f3e02b5f6adc01e0e3ca7001d3d94e24959591a57f5a011b9a category: main optional: false +- name: overrides + version: 7.7.0 + manager: conda + platform: linux-64 + dependencies: + python: '>=3.9' + typing_utils: '' + url: https://repo.prefix.dev/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + hash: + md5: e51f1e4089cad105b6cac64bd8166587 + sha256: 1840bd90d25d4930d60f57b4f38d4e0ae3f5b8db2819638709c36098c6ba770c + category: main + optional: false +- name: overrides + version: 7.7.0 + manager: conda + platform: win-64 + dependencies: + python: '>=3.9' + typing_utils: '' + url: https://repo.prefix.dev/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + hash: + md5: e51f1e4089cad105b6cac64bd8166587 + sha256: 1840bd90d25d4930d60f57b4f38d4e0ae3f5b8db2819638709c36098c6ba770c + category: main + optional: false - name: packaging version: '26.3' manager: conda @@ -3939,27 +4446,27 @@ package: category: main optional: false - name: pandoc - version: 3.12.1 + version: '3.13' manager: conda platform: linux-64 dependencies: {} - url: https://repo.prefix.dev/conda-forge/linux-64/pandoc-3.12.1-ha770c72_0.conda + url: https://repo.prefix.dev/conda-forge/linux-64/pandoc-3.13-ha770c72_0.conda hash: - md5: c426f0a6202837347387cc6fdd4c381e - sha256: 73a73cc6f5506fcce335bcc9277d89c07a72bcd78417d494484555bd07a1f443 - category: main - optional: false + md5: 5ec50e0d9932dc31dd0f4e798160009c + sha256: 1aeedb498ad58c8f78176d5aaad11e32501d78dd6cdcd842e1a6d5c308e1830c + category: dev + optional: true - name: pandoc - version: 3.12.1 + version: '3.13' manager: conda platform: win-64 dependencies: {} - url: https://repo.prefix.dev/conda-forge/win-64/pandoc-3.12.1-h57928b3_0.conda + url: https://repo.prefix.dev/conda-forge/win-64/pandoc-3.13-h57928b3_0.conda hash: - md5: 92d73765594b9b098b3923f6de743c5b - sha256: 0f7f4309e34868db4e9374b0386a49165362fce77a82726e20b20f7b1117e600 - category: main - optional: false + md5: 34c80e1339aa660e5e4a1f38473c52dc + sha256: f22e1365a21f449f01dde634bb361cab609f1e5d1213ec0140708c7af92f479a + category: dev + optional: true - name: pandocfilters version: 1.5.1 manager: conda @@ -4072,55 +4579,55 @@ package: category: main optional: false - name: pip - version: 26.2.1 + version: 26.2.2 manager: conda platform: linux-64 dependencies: - python: '>=3.10,<3.13.0a0' + python: '>=3.11,<3.13.0a0' setuptools: '' wheel: '' - url: https://repo.prefix.dev/conda-forge/noarch/pip-26.2.1-pyh8b19718_0.conda + url: https://repo.prefix.dev/conda-forge/noarch/pip-26.2.2-pyh8b19718_0.conda hash: - md5: 77b6cf3b0689d9fc68561df0db9b856d - sha256: c205bae42eb11b364fe3663a817cbcbc20a8ef544c6b2ff6f391013487117259 + md5: ec04c2ab74b2ca2d524fc10f558427c6 + sha256: 83babe5e3c4021b061275164a7c28bd62d183cc77b4c2260ae80f19fcb0a98dd category: main optional: false - name: pip - version: 26.2.1 + version: 26.2.2 manager: conda platform: win-64 dependencies: - python: '>=3.10,<3.13.0a0' + python: '>=3.11,<3.13.0a0' setuptools: '' wheel: '' - url: https://repo.prefix.dev/conda-forge/noarch/pip-26.2.1-pyh8b19718_0.conda + url: https://repo.prefix.dev/conda-forge/noarch/pip-26.2.2-pyh8b19718_0.conda hash: - md5: 77b6cf3b0689d9fc68561df0db9b856d - sha256: c205bae42eb11b364fe3663a817cbcbc20a8ef544c6b2ff6f391013487117259 + md5: ec04c2ab74b2ca2d524fc10f558427c6 + sha256: 83babe5e3c4021b061275164a7c28bd62d183cc77b4c2260ae80f19fcb0a98dd category: main optional: false - name: platformdirs - version: 4.13.3 + version: 4.13.6 manager: conda platform: linux-64 dependencies: python: '' - url: https://repo.prefix.dev/conda-forge/noarch/platformdirs-4.13.3-pyh5ded981_0.conda + url: https://repo.prefix.dev/conda-forge/noarch/platformdirs-4.13.6-pyh5ded981_0.conda hash: - md5: 26e0daf33cd13bca0dbdfb971dcb3e25 - sha256: 0cc3be633856ea43a4c17e8d5009b07979e35d6e399f86b85afd63058df25162 + md5: 6c69386c2ac973d86beea8f25866b550 + sha256: a5f55438f77c22b0f1f99431e6688571fda00f4646317b2dfacae4b4932a76c6 category: main optional: false - name: platformdirs - version: 4.13.3 + version: 4.13.6 manager: conda platform: win-64 dependencies: python: '' - url: https://repo.prefix.dev/conda-forge/noarch/platformdirs-4.13.3-pyh5ded981_0.conda + url: https://repo.prefix.dev/conda-forge/noarch/platformdirs-4.13.6-pyh5ded981_0.conda hash: - md5: 26e0daf33cd13bca0dbdfb971dcb3e25 - sha256: 0cc3be633856ea43a4c17e8d5009b07979e35d6e399f86b85afd63058df25162 + md5: 6c69386c2ac973d86beea8f25866b550 + sha256: a5f55438f77c22b0f1f99431e6688571fda00f4646317b2dfacae4b4932a76c6 category: main optional: false - name: pluggy @@ -4147,6 +4654,30 @@ package: sha256: 34c40106bc3172b3a47656e84837e13a5d4829d413d65f30fb214e7568a09cea category: dev optional: true +- name: prometheus_client + version: 0.26.0 + manager: conda + platform: linux-64 + dependencies: + python: '>=3.10' + url: https://repo.prefix.dev/conda-forge/noarch/prometheus_client-0.26.0-pyhd8ed1ab_0.conda + hash: + md5: 3aa7e2d85645e61627c98082747dfdfe + sha256: 794eec057361b41db1b06a9677eb8632adc0de81f7dcfe113bca8f0b04a23553 + category: main + optional: false +- name: prometheus_client + version: 0.26.0 + manager: conda + platform: win-64 + dependencies: + python: '>=3.10' + url: https://repo.prefix.dev/conda-forge/noarch/prometheus_client-0.26.0-pyhd8ed1ab_0.conda + hash: + md5: 3aa7e2d85645e61627c98082747dfdfe + sha256: 794eec057361b41db1b06a9677eb8632adc0de81f7dcfe113bca8f0b04a23553 + category: main + optional: false - name: prompt-toolkit version: 3.0.53 manager: conda @@ -4266,8 +4797,8 @@ package: hash: md5: b0969b1326b5b9d6094dd1831eb48919 sha256: fd9b0a389b21dc2ccb11925db83a5e9e32652e87971f93c23358d51c3632d96d - category: main - optional: false + category: dev + optional: true - name: pybtex version: 0.26.1 manager: conda @@ -4281,8 +4812,8 @@ package: hash: md5: b0969b1326b5b9d6094dd1831eb48919 sha256: fd9b0a389b21dc2ccb11925db83a5e9e32652e87971f93c23358d51c3632d96d - category: main - optional: false + category: dev + optional: true - name: pybtex-docutils version: 1.0.3 manager: conda @@ -4296,8 +4827,8 @@ package: hash: md5: 75f19dd4b0b95ce928286e18c561cb13 sha256: a0397b8fc65eabd773fe33affb726fe9d16c8f0a8ab7c3493d80c412ef2539a6 - category: main - optional: false + category: dev + optional: true - name: pybtex-docutils version: 1.0.3 manager: conda @@ -4311,6 +4842,97 @@ package: hash: md5: 75f19dd4b0b95ce928286e18c561cb13 sha256: a0397b8fc65eabd773fe33affb726fe9d16c8f0a8ab7c3493d80c412ef2539a6 + category: dev + optional: true +- name: pycparser + version: '3.12' + manager: conda + platform: linux-64 + dependencies: + python: '' + url: https://repo.prefix.dev/conda-forge/noarch/pycparser-3.12-pyh5ded981_1.conda + hash: + md5: 3c2d671ef0bc5a0e8d1f7e6c4286af0b + sha256: eefb1b2140c1a6c33a85186f954e857e1a824365deeda4e11db9b99c1b5950aa + category: main + optional: false +- name: pycparser + version: '3.12' + manager: conda + platform: win-64 + dependencies: + python: '' + url: https://repo.prefix.dev/conda-forge/noarch/pycparser-3.12-pyh5ded981_1.conda + hash: + md5: 3c2d671ef0bc5a0e8d1f7e6c4286af0b + sha256: eefb1b2140c1a6c33a85186f954e857e1a824365deeda4e11db9b99c1b5950aa + category: main + optional: false +- name: pydantic + version: 2.12.5 + manager: conda + platform: linux-64 + dependencies: + annotated-types: '>=0.6.0' + pydantic-core: 2.41.5 + python: '' + typing-extensions: '>=4.6.1' + typing-inspection: '>=0.4.2' + typing_extensions: '>=4.14.1' + url: https://repo.prefix.dev/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda + hash: + md5: c3946ed24acdb28db1b5d63321dbca7d + sha256: 868569d9505b7fe246c880c11e2c44924d7613a8cdcc1f6ef85d5375e892f13d + category: main + optional: false +- name: pydantic + version: 2.12.5 + manager: conda + platform: win-64 + dependencies: + annotated-types: '>=0.6.0' + pydantic-core: 2.41.5 + python: '' + typing-extensions: '>=4.6.1' + typing-inspection: '>=0.4.2' + typing_extensions: '>=4.14.1' + url: https://repo.prefix.dev/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda + hash: + md5: c3946ed24acdb28db1b5d63321dbca7d + sha256: 868569d9505b7fe246c880c11e2c44924d7613a8cdcc1f6ef85d5375e892f13d + category: main + optional: false +- name: pydantic-core + version: 2.41.5 + manager: conda + platform: linux-64 + dependencies: + __glibc: '>=2.17,<3.0.a0' + libgcc: '>=14' + python: '' + python_abi: 3.12.* + typing-extensions: '>=4.6.0,!=4.7.0' + url: https://repo.prefix.dev/conda-forge/linux-64/pydantic-core-2.41.5-py312h868fb18_1.conda + hash: + md5: 56a776330a7d21db63a7c9d6c3711a04 + sha256: 07f899d035e06598682d3904d55f1529fac71b15e12b61d44d6a5fbf8521b0fe + category: main + optional: false +- name: pydantic-core + version: 2.41.5 + manager: conda + platform: win-64 + dependencies: + python: '' + python_abi: 3.12.* + typing-extensions: '>=4.6.0,!=4.7.0' + ucrt: '>=10.0.20348.0' + vc: '>=14.3,<15' + vc14_runtime: '>=14.44.35208' + url: https://repo.prefix.dev/conda-forge/win-64/pydantic-core-2.41.5-py312hdabe01f_1.conda + hash: + md5: 2e338a10e31828590cf031076bb143b6 + sha256: 06f5d122ac1c29679a6d588aa066c8684a087de12f84f3e81d90c205664eb62c category: main optional: false - name: pydata-sphinx-theme @@ -4330,8 +4952,8 @@ package: hash: md5: 837aaf71ddf3b27acae0e7e9015eebc6 sha256: 073473ba9c0cc3946026dde9112d2edb0ac52f6cc35d2126f4bff8bad1cc74a6 - category: main - optional: false + category: dev + optional: true - name: pydata-sphinx-theme version: 0.16.1 manager: conda @@ -4349,8 +4971,8 @@ package: hash: md5: 837aaf71ddf3b27acae0e7e9015eebc6 sha256: 073473ba9c0cc3946026dde9112d2edb0ac52f6cc35d2126f4bff8bad1cc74a6 - category: main - optional: false + category: dev + optional: true - name: pygments version: 2.21.0 manager: conda @@ -4376,45 +4998,41 @@ package: category: main optional: false - name: pylint - version: 2.17.7 + version: 4.1.3 manager: conda platform: linux-64 dependencies: - astroid: '>=2.15.8,<2.17.0-dev0' + astroid: '>=4.3.4,<=4.4' colorama: '>=0.4.5' - dill: '>=0.3.6' - isort: '>=4.2.5,<6' + dill: '>=0.3.7' + isort: '>=5,!=5.13,<10' mccabe: '>=0.6,<0.8' - platformdirs: '>=2.2.0' - python: '>=3.7.2' - tomli: '>=1.1.0' + platformdirs: '>=2.2' + python: '' tomlkit: '>=0.10.1' - typing_extensions: '>=3.10.0' - url: https://repo.prefix.dev/conda-forge/noarch/pylint-2.17.7-pyhd8ed1ab_0.conda + url: https://repo.prefix.dev/conda-forge/noarch/pylint-4.1.3-pyh5ded981_0.conda hash: - md5: 3cab6aee60038b3f621bce3e50f52bed - sha256: 1b1b60cf022828ac0a1ae88d4cdf16fb9b4d74b3e6d5cf9fc35cccc3328b53f9 + md5: 0bb19846b1746ed099fae657b8cb39a9 + sha256: c04286b42593661c9815f966ce433d4cfb88673d0e0237d24d9b57c91e2a6f73 category: dev optional: true - name: pylint - version: 2.17.7 + version: 4.1.3 manager: conda platform: win-64 dependencies: - astroid: '>=2.15.8,<2.17.0-dev0' + astroid: '>=4.3.4,<=4.4' colorama: '>=0.4.5' - dill: '>=0.3.6' - isort: '>=4.2.5,<6' + dill: '>=0.3.7' + isort: '>=5,!=5.13,<10' mccabe: '>=0.6,<0.8' - platformdirs: '>=2.2.0' - python: '>=3.7.2' - tomli: '>=1.1.0' + platformdirs: '>=2.2' + python: '' tomlkit: '>=0.10.1' - typing_extensions: '>=3.10.0' - url: https://repo.prefix.dev/conda-forge/noarch/pylint-2.17.7-pyhd8ed1ab_0.conda + url: https://repo.prefix.dev/conda-forge/noarch/pylint-4.1.3-pyh5ded981_0.conda hash: - md5: 3cab6aee60038b3f621bce3e50f52bed - sha256: 1b1b60cf022828ac0a1ae88d4cdf16fb9b4d74b3e6d5cf9fc35cccc3328b53f9 + md5: 0bb19846b1746ed099fae657b8cb39a9 + sha256: c04286b42593661c9815f966ce433d4cfb88673d0e0237d24d9b57c91e2a6f73 category: dev optional: true - name: pyparsing @@ -4469,75 +5087,75 @@ package: category: main optional: false - name: pytest - version: 7.4.4 + version: 9.1.1 manager: conda platform: linux-64 dependencies: colorama: '' - exceptiongroup: '>=1.0.0rc8' - iniconfig: '' - packaging: '' - pluggy: '>=0.12,<2.0' - python: '>=3.7' - tomli: '>=1.0.0' - url: https://repo.prefix.dev/conda-forge/noarch/pytest-7.4.4-pyhd8ed1ab_0.conda + exceptiongroup: '>=1' + iniconfig: '>=1.0.1' + packaging: '>=22' + pluggy: '>=1.5,<2' + pygments: '>=2.7.2' + python: '' + tomli: '>=1' + url: https://repo.prefix.dev/conda-forge/noarch/pytest-9.1.1-pyhc364b38_2.conda hash: - md5: a9d145de8c5f064b5fa68fb34725d9f4 - sha256: 8979721b7f86b183d21103f3ec2734783847d317c1b754f462f407efc7c60886 + md5: 64c98a12c4e23eb238bf66bbecafdf3c + sha256: 430051d80765207a7d782b2b188230ba1489d35c6e75fd9903f76cb9fda4af16 category: dev optional: true - name: pytest - version: 7.4.4 + version: 9.1.1 manager: conda platform: win-64 dependencies: colorama: '' - exceptiongroup: '>=1.0.0rc8' - iniconfig: '' - packaging: '' - pluggy: '>=0.12,<2.0' - python: '>=3.7' - tomli: '>=1.0.0' - url: https://repo.prefix.dev/conda-forge/noarch/pytest-7.4.4-pyhd8ed1ab_0.conda + exceptiongroup: '>=1' + iniconfig: '>=1.0.1' + packaging: '>=22' + pluggy: '>=1.5,<2' + pygments: '>=2.7.2' + python: '' + tomli: '>=1' + url: https://repo.prefix.dev/conda-forge/noarch/pytest-9.1.1-pyhc364b38_2.conda hash: - md5: a9d145de8c5f064b5fa68fb34725d9f4 - sha256: 8979721b7f86b183d21103f3ec2734783847d317c1b754f462f407efc7c60886 + md5: 64c98a12c4e23eb238bf66bbecafdf3c + sha256: 430051d80765207a7d782b2b188230ba1489d35c6e75fd9903f76cb9fda4af16 category: dev optional: true - name: pytest-cov - version: 3.0.0 + version: 7.1.0 manager: conda platform: linux-64 - dependencies: - coverage: '>=5.2.1' - pytest: '>=4.6' - python: '>=3.6' - setuptools: '' - toml: '' - url: https://repo.prefix.dev/conda-forge/noarch/pytest-cov-3.0.0-pyhd8ed1ab_0.tar.bz2 + dependencies: + coverage: '>=7.10.6' + pluggy: '>=1.2' + pytest: '>=7' + python: '' + url: https://repo.prefix.dev/conda-forge/noarch/pytest-cov-7.1.0-pyhcf101f3_0.conda hash: - md5: 0f7cac11bb696b62d378bde725bfc3eb - sha256: c5feac67a828f10bfa7d5e80b12e0a7c8e3b7b4886ad682aa783bc63f62477ba + md5: 67d1790eefa81ed305b89d8e314c7923 + sha256: 44e42919397bd00bfaa47358a6ca93d4c21493a8c18600176212ec21a8d25ca5 category: dev optional: true - name: pytest-cov - version: 3.0.0 + version: 7.1.0 manager: conda platform: win-64 dependencies: - coverage: '>=5.2.1' - pytest: '>=4.6' - python: '>=3.6' - setuptools: '' - toml: '' - url: https://repo.prefix.dev/conda-forge/noarch/pytest-cov-3.0.0-pyhd8ed1ab_0.tar.bz2 + coverage: '>=7.10.6' + pluggy: '>=1.2' + pytest: '>=7' + python: '' + url: https://repo.prefix.dev/conda-forge/noarch/pytest-cov-7.1.0-pyhcf101f3_0.conda hash: - md5: 0f7cac11bb696b62d378bde725bfc3eb - sha256: c5feac67a828f10bfa7d5e80b12e0a7c8e3b7b4886ad682aa783bc63f62477ba + md5: 67d1790eefa81ed305b89d8e314c7923 + sha256: 44e42919397bd00bfaa47358a6ca93d4c21493a8c18600176212ec21a8d25ca5 category: dev optional: true - name: python - version: 3.12.15 + version: 3.12.16 manager: conda platform: linux-64 dependencies: @@ -4549,25 +5167,24 @@ package: libgcc: '>=15' liblzma: '>=5.8.3,<6.0a0' libnsl: '>=2.0.1,<2.1.0a0' - libpython: 3.12.15 - libsqlite: '>=3.54.0,<4.0a0' + libpython: 3.12.16 + libsqlite: '>=3.54.1,<4.0a0' libuuid: '>=2.42.4,<3.0a0' libxcrypt: '>=4.4.38' libzlib: '>=1.3.2,<2.0a0' ncurses: '>=6.6,<7.0a0' openssl: '>=3.5.9,<4.0a0' - pip: '' readline: '>=8.3,<9.0a0' tk: '>=8.6.13,<8.7.0a0' tzdata: '' - url: https://repo.prefix.dev/conda-forge/linux-64/python-3.12.15-h5f976f7_2_cpython.conda + url: https://repo.prefix.dev/conda-forge/linux-64/python-3.12.16-h5f976f7_0_cpython.conda hash: - md5: 13cef25ee4055b1fec19d35d20aadda2 - sha256: f8a38c33f627c68e35d02cc5a11eff25eadb853791ac40bf9cc569315d25bc54 + md5: bef9f5422e5246840497b4ae3d968001 + sha256: a40188b47c3995bc42a33820be4d780af5c11cc295409413fb925549f0abfe92 category: main optional: false - name: python - version: 3.12.15 + version: 3.12.16 manager: conda platform: win-64 dependencies: @@ -4575,20 +5192,19 @@ package: libexpat: '>=2.8.5,<3.0a0' libffi: '>=3.7.0,<3.8.0a0' liblzma: '>=5.8.3,<6.0a0' - libpython: 3.12.15 - libsqlite: '>=3.54.0,<4.0a0' + libpython: 3.12.16 + libsqlite: '>=3.54.1,<4.0a0' libzlib: '>=1.3.2,<2.0a0' openssl: '>=3.5.9,<4.0a0' - pip: '' tk: '>=8.6.13,<8.7.0a0' tzdata: '' ucrt: '>=10.0.20348.0' vc: '>=14.3,<15' vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/python-3.12.15-hb12b558_2_cpython.conda + url: https://repo.prefix.dev/conda-forge/win-64/python-3.12.16-hb12b558_0_cpython.conda hash: - md5: cfd4a4bce81b68e249c4c0442a9c1a0d - sha256: 39d230c501c2c82a61689e5e3d2d88b84bcd85bc4f2e1429f6bc6264082ef958 + md5: bff3704491215f1058d97c08f80da001 + sha256: c51326f96259254d1f977d131b3bd9a366021f4c96cd3724e9c74ec56fc4983e category: main optional: false - name: python-abi3 @@ -4620,29 +5236,31 @@ package: category: main optional: false - name: python-dateutil - version: 2.9.0.post0 + version: 3.0.0 manager: conda platform: linux-64 dependencies: python: '' - six: '>=1.5' - url: https://repo.prefix.dev/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + python-tzdata: '' + six: '>=1.6' + url: https://repo.prefix.dev/conda-forge/noarch/python-dateutil-3.0.0-pyh5ded981_0.conda hash: - md5: 5b8d21249ff20967101ffa321cab24e8 - sha256: d6a17ece93bbd5139e02d2bd7dbfa80bee1a4261dced63f65f679121686bf664 + md5: d75c60076c9f2cfa4a459e9f17cecd93 + sha256: 8ad3e3fd71fa3881081a38d660cd9cc7bd18fd4eb99cee96225903e5e2eb9ae9 category: main optional: false - name: python-dateutil - version: 2.9.0.post0 + version: 3.0.0 manager: conda platform: win-64 dependencies: python: '' - six: '>=1.5' - url: https://repo.prefix.dev/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + python-tzdata: '' + six: '>=1.6' + url: https://repo.prefix.dev/conda-forge/noarch/python-dateutil-3.0.0-pyh5ded981_0.conda hash: - md5: 5b8d21249ff20967101ffa321cab24e8 - sha256: d6a17ece93bbd5139e02d2bd7dbfa80bee1a4261dced63f65f679121686bf664 + md5: d75c60076c9f2cfa4a459e9f17cecd93 + sha256: 8ad3e3fd71fa3881081a38d660cd9cc7bd18fd4eb99cee96225903e5e2eb9ae9 category: main optional: false - name: python-fastjsonschema @@ -4670,29 +5288,79 @@ package: category: main optional: false - name: python-gil - version: 3.12.15 + version: 3.12.16 manager: conda platform: linux-64 dependencies: - cpython: 3.12.15.* + cpython: 3.12.16.* python_abi: '*' - url: https://repo.prefix.dev/conda-forge/noarch/python-gil-3.12.15-hd8ed1ab_2.conda + url: https://repo.prefix.dev/conda-forge/noarch/python-gil-3.12.16-hd8ed1ab_0.conda hash: - md5: deec3cfe011e962fe2eb872f2eae716c - sha256: 5369e1ec176100bb10ba6ec38cab261347ea470d95788e52e6008d1a7605165d + md5: 4541180b99fd60eb8725b220e5c7fdd9 + sha256: aac9a1b426b63a59caf3225b9bd57dce6555650f20a3c2af7b555e574280e0c8 category: main optional: false - name: python-gil - version: 3.12.15 + version: 3.12.16 manager: conda platform: win-64 dependencies: - cpython: 3.12.15.* + cpython: 3.12.16.* python_abi: '*' - url: https://repo.prefix.dev/conda-forge/noarch/python-gil-3.12.15-hd8ed1ab_2.conda + url: https://repo.prefix.dev/conda-forge/noarch/python-gil-3.12.16-hd8ed1ab_0.conda + hash: + md5: 4541180b99fd60eb8725b220e5c7fdd9 + sha256: aac9a1b426b63a59caf3225b9bd57dce6555650f20a3c2af7b555e574280e0c8 + category: main + optional: false +- name: python-json-logger + version: 4.2.0 + manager: conda + platform: linux-64 + dependencies: + python: '>=3.10' + typing_extensions: '' + url: https://repo.prefix.dev/conda-forge/noarch/python-json-logger-4.2.0-pyhd8ed1ab_0.conda + hash: + md5: e5407c82510aab6a4baa31fcd4249655 + sha256: 4f8ecadbd9d282b0208d6e84640573fcb6ab462307d737eedd28341964e18cc6 + category: main + optional: false +- name: python-json-logger + version: 4.2.0 + manager: conda + platform: win-64 + dependencies: + python: '>=3.10' + typing_extensions: '' + url: https://repo.prefix.dev/conda-forge/noarch/python-json-logger-4.2.0-pyhd8ed1ab_0.conda + hash: + md5: e5407c82510aab6a4baa31fcd4249655 + sha256: 4f8ecadbd9d282b0208d6e84640573fcb6ab462307d737eedd28341964e18cc6 + category: main + optional: false +- name: python-tzdata + version: '2026.5' + manager: conda + platform: linux-64 + dependencies: + python: '' + url: https://repo.prefix.dev/conda-forge/noarch/python-tzdata-2026.5-pyh5ded981_0.conda + hash: + md5: 4a0ae2a06b469e6f8ca95d0655e31c86 + sha256: b66b783be882069a9f6c00bc44ee561fc3dfba21fe4bab6de31599caf3c63154 + category: main + optional: false +- name: python-tzdata + version: '2026.5' + manager: conda + platform: win-64 + dependencies: + python: '' + url: https://repo.prefix.dev/conda-forge/noarch/python-tzdata-2026.5-pyh5ded981_0.conda hash: - md5: deec3cfe011e962fe2eb872f2eae716c - sha256: 5369e1ec176100bb10ba6ec38cab261347ea470d95788e52e6008d1a7605165d + md5: 4a0ae2a06b469e6f8ca95d0655e31c86 + sha256: b66b783be882069a9f6c00bc44ee561fc3dfba21fe4bab6de31599caf3c63154 category: main optional: false - name: python_abi @@ -4733,6 +5401,23 @@ package: sha256: 60ef47866053b10e2174eac2cc391cf80d7060ec9af1f57aa05397b5953cc4fb category: main optional: false +- name: pywinpty + version: 3.1.0 + manager: conda + platform: win-64 + dependencies: + python: '>=3.12,<3.13.0a0' + python_abi: 3.12.* + ucrt: '>=10.0.20348.0' + vc: '>=14.2,<15' + vc14_runtime: '>=14.29.30139' + winpty: '' + url: https://repo.prefix.dev/conda-forge/win-64/pywinpty-3.1.0-py312h275cf98_0.conda + hash: + md5: 71e5155547be8ee17e5af1471330800d + sha256: a8fb2e9c933aa21639459625385ec4a2462960ad4007b197c1dc2c7633906441 + category: main + optional: false - name: pyyaml version: 6.0.3 manager: conda @@ -4906,6 +5591,82 @@ package: sha256: 1715246b19c9f85ee022933b4845f2fc14ac9184981b7b7d9b728bec8e9588da category: main optional: false +- name: rfc3339-validator + version: 0.1.4 + manager: conda + platform: linux-64 + dependencies: + python: '>=3.9' + six: '' + url: https://repo.prefix.dev/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda + hash: + md5: 36de09a8d3e5d5e6f4ee63af49e59706 + sha256: 2e4372f600490a6e0b3bac60717278448e323cab1c0fecd5f43f7c56535a99c5 + category: main + optional: false +- name: rfc3339-validator + version: 0.1.4 + manager: conda + platform: win-64 + dependencies: + python: '>=3.9' + six: '' + url: https://repo.prefix.dev/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda + hash: + md5: 36de09a8d3e5d5e6f4ee63af49e59706 + sha256: 2e4372f600490a6e0b3bac60717278448e323cab1c0fecd5f43f7c56535a99c5 + category: main + optional: false +- name: rfc3986-validator + version: 0.1.1 + manager: conda + platform: linux-64 + dependencies: + python: '' + url: https://repo.prefix.dev/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + hash: + md5: 912a71cc01012ee38e6b90ddd561e36f + sha256: 2a5b495a1de0f60f24d8a74578ebc23b24aa53279b1ad583755f223097c41c37 + category: main + optional: false +- name: rfc3986-validator + version: 0.1.1 + manager: conda + platform: win-64 + dependencies: + python: '' + url: https://repo.prefix.dev/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + hash: + md5: 912a71cc01012ee38e6b90ddd561e36f + sha256: 2a5b495a1de0f60f24d8a74578ebc23b24aa53279b1ad583755f223097c41c37 + category: main + optional: false +- name: rfc3987-syntax + version: 1.1.0 + manager: conda + platform: linux-64 + dependencies: + lark: '>=1.2.2' + python: '' + url: https://repo.prefix.dev/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda + hash: + md5: 7234f99325263a5af6d4cd195035e8f2 + sha256: 70001ac24ee62058557783d9c5a7bbcfd97bd4911ef5440e3f7a576f9e43bc92 + category: main + optional: false +- name: rfc3987-syntax + version: 1.1.0 + manager: conda + platform: win-64 + dependencies: + lark: '>=1.2.2' + python: '' + url: https://repo.prefix.dev/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda + hash: + md5: 7234f99325263a5af6d4cd195035e8f2 + sha256: 70001ac24ee62058557783d9c5a7bbcfd97bd4911ef5440e3f7a576f9e43bc92 + category: main + optional: false - name: rpds-py version: 2026.9.1 manager: conda @@ -4937,42 +5698,55 @@ package: sha256: b8a98f1b22c0a2a7b8954ec3f5b8face24dafb299d1a2561c59ccc0105bae707 category: main optional: false -- name: s2n - version: 1.7.6 +- name: send2trash + version: 2.1.0 manager: conda platform: linux-64 dependencies: - __glibc: '>=2.17,<3.0.a0' - libgcc: '>=14' - openssl: '>=3.5.7,<4.0a0' - url: https://repo.prefix.dev/conda-forge/linux-64/s2n-1.7.6-h7e3ee7f_0.conda + __linux: '' + python: '' + url: https://repo.prefix.dev/conda-forge/noarch/send2trash-2.1.0-pyha191276_1.conda + hash: + md5: 28eb91468df04f655a57bcfbb35fc5c5 + sha256: 59656f6b2db07229351dfb3a859c35e57cc8e8bcbc86d4e501bff881a6f771f1 + category: main + optional: false +- name: send2trash + version: 2.1.0 + manager: conda + platform: win-64 + dependencies: + __win: '' + python: '' + pywin32: '' + url: https://repo.prefix.dev/conda-forge/noarch/send2trash-2.1.0-pyh6dadd2b_1.conda hash: - md5: e112cadcd79412d81496e784884bddf0 - sha256: 1e1ccc56fdf3fe82150b4eac1d626c806e612af208fbf40ce3abfe9a2eb2a626 + md5: 6ac53f3fff2c416d63511843a04646fa + sha256: 305446a0b018f285351300463653d3d3457687270e20eda37417b12ee386ef76 category: main optional: false - name: setuptools - version: 84.0.0 + version: 84.2.1 manager: conda platform: linux-64 dependencies: - python: '>=3.10' - url: https://repo.prefix.dev/conda-forge/noarch/setuptools-84.0.0-pyh332efcf_0.conda + python: '>=3.11' + url: https://repo.prefix.dev/conda-forge/noarch/setuptools-84.2.1-pyhe730653_0.conda hash: - md5: 62ac906f1cd582c6c264c95625cb9d6f - sha256: 9e200ee5f9ff19a4d94e4b51c4856d53dec849f91032f345cf0c6bc3d51a7183 + md5: d41f95b8f1553165b2cc2f37162dac9c + sha256: 17add609d1a31c874e39a03935072be59bcafb06d42383eceabea746d12e6025 category: main optional: false - name: setuptools - version: 84.0.0 + version: 84.2.1 manager: conda platform: win-64 dependencies: - python: '>=3.10' - url: https://repo.prefix.dev/conda-forge/noarch/setuptools-84.0.0-pyh332efcf_0.conda + python: '>=3.11' + url: https://repo.prefix.dev/conda-forge/noarch/setuptools-84.2.1-pyhe730653_0.conda hash: - md5: 62ac906f1cd582c6c264c95625cb9d6f - sha256: 9e200ee5f9ff19a4d94e4b51c4856d53dec849f91032f345cf0c6bc3d51a7183 + md5: d41f95b8f1553165b2cc2f37162dac9c + sha256: 17add609d1a31c874e39a03935072be59bcafb06d42383eceabea746d12e6025 category: main optional: false - name: six @@ -4999,6 +5773,30 @@ package: sha256: 458227f759d5e3fcec5d9b7acce54e10c9e1f4f4b7ec978f3bfd54ce4ee9853d category: main optional: false +- name: sniffio + version: 1.3.1 + manager: conda + platform: linux-64 + dependencies: + python: '>=3.10' + url: https://repo.prefix.dev/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_2.conda + hash: + md5: 03fe290994c5e4ec17293cfb6bdce520 + sha256: dce518f45e24cd03f401cb0616917773159a210c19d601c5f2d4e0e5879d30ad + category: main + optional: false +- name: sniffio + version: 1.3.1 + manager: conda + platform: win-64 + dependencies: + python: '>=3.10' + url: https://repo.prefix.dev/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_2.conda + hash: + md5: 03fe290994c5e4ec17293cfb6bdce520 + sha256: dce518f45e24cd03f401cb0616917773159a210c19d601c5f2d4e0e5879d30ad + category: main + optional: false - name: snowballstemmer version: 3.1.1 manager: conda @@ -5009,8 +5807,8 @@ package: hash: md5: 46b6abe31482f6bca064b965696ae807 sha256: ad89284ea94821c20ff87e64b948e4afc690cf5202d14c009355b0594cf23aea - category: main - optional: false + category: dev + optional: true - name: snowballstemmer version: 3.1.1 manager: conda @@ -5021,30 +5819,30 @@ package: hash: md5: 46b6abe31482f6bca064b965696ae807 sha256: ad89284ea94821c20ff87e64b948e4afc690cf5202d14c009355b0594cf23aea - category: main - optional: false + category: dev + optional: true - name: soupsieve - version: 3.0.3 + version: 3.0.4 manager: conda platform: linux-64 dependencies: python: '>=3.11' - url: https://repo.prefix.dev/conda-forge/noarch/soupsieve-3.0.3-pyhd8ed1ab_0.conda + url: https://repo.prefix.dev/conda-forge/noarch/soupsieve-3.0.4-pyhd8ed1ab_0.conda hash: - md5: bd2ea090567b9d0a53240bd1367c87ad - sha256: 858ae626017ccba80201e7431db6b517e53d6322b32f00fd21b64159592fa7cd + md5: 142303fd418a612bfc7163b546902156 + sha256: 0c2452c60adedba707238f04c70eb252020e029357fd89cc772aaa5b3b5e41a2 category: main optional: false - name: soupsieve - version: 3.0.3 + version: 3.0.4 manager: conda platform: win-64 dependencies: python: '>=3.11' - url: https://repo.prefix.dev/conda-forge/noarch/soupsieve-3.0.3-pyhd8ed1ab_0.conda + url: https://repo.prefix.dev/conda-forge/noarch/soupsieve-3.0.4-pyhd8ed1ab_0.conda hash: - md5: bd2ea090567b9d0a53240bd1367c87ad - sha256: 858ae626017ccba80201e7431db6b517e53d6322b32f00fd21b64159592fa7cd + md5: 142303fd418a612bfc7163b546902156 + sha256: 0c2452c60adedba707238f04c70eb252020e029357fd89cc772aaa5b3b5e41a2 category: main optional: false - name: sphinx @@ -5075,8 +5873,8 @@ package: hash: md5: c568e260463da2528ecfd7c5a0b41bbd sha256: 0de25d561b20dd06982df45a2c3cef490e45b0d4bae8d2c290030721bdadecd6 - category: main - optional: false + category: dev + optional: true - name: sphinx version: 7.4.7 manager: conda @@ -5105,8 +5903,8 @@ package: hash: md5: c568e260463da2528ecfd7c5a0b41bbd sha256: 0de25d561b20dd06982df45a2c3cef490e45b0d4bae8d2c290030721bdadecd6 - category: main - optional: false + category: dev + optional: true - name: sphinx-book-theme version: 1.2.0 manager: conda @@ -5119,8 +5917,8 @@ package: hash: md5: e1695652b3b371d33a03042caa7c3e21 sha256: f8b004690f721c9c6633e597f93c0072851244f930c3b04ca135852c4c02b72a - category: main - optional: false + category: dev + optional: true - name: sphinx-book-theme version: 1.2.0 manager: conda @@ -5133,8 +5931,8 @@ package: hash: md5: e1695652b3b371d33a03042caa7c3e21 sha256: f8b004690f721c9c6633e597f93c0072851244f930c3b04ca135852c4c02b72a - category: main - optional: false + category: dev + optional: true - name: sphinx-comments version: 0.0.3 manager: conda @@ -5146,8 +5944,8 @@ package: hash: md5: 30e02fa8e40287da066e348c95ff5609 sha256: 00129f91b905441a9e27c46ef32c22617743eb4a4f7207e1dd84bc19505d4381 - category: main - optional: false + category: dev + optional: true - name: sphinx-comments version: 0.0.3 manager: conda @@ -5159,8 +5957,8 @@ package: hash: md5: 30e02fa8e40287da066e348c95ff5609 sha256: 00129f91b905441a9e27c46ef32c22617743eb4a4f7207e1dd84bc19505d4381 - category: main - optional: false + category: dev + optional: true - name: sphinx-copybutton version: 0.5.2 manager: conda @@ -5172,8 +5970,8 @@ package: hash: md5: bf22cb9c439572760316ce0748af3713 sha256: 8cd892e49cb4d00501bc4439fb0c73ca44905f01a65b2b7fa05ba0e8f3924f19 - category: main - optional: false + category: dev + optional: true - name: sphinx-copybutton version: 0.5.2 manager: conda @@ -5185,8 +5983,8 @@ package: hash: md5: bf22cb9c439572760316ce0748af3713 sha256: 8cd892e49cb4d00501bc4439fb0c73ca44905f01a65b2b7fa05ba0e8f3924f19 - category: main - optional: false + category: dev + optional: true - name: sphinx-design version: 0.7.0 manager: conda @@ -5198,8 +5996,8 @@ package: hash: md5: 28eddfb8b9ecdd044a6f609f985398a7 sha256: 7f8437a97e6311bebf230cfd2ae3c5bdb2230e681c41daebdb894280bf8b4ab6 - category: main - optional: false + category: dev + optional: true - name: sphinx-design version: 0.7.0 manager: conda @@ -5211,8 +6009,8 @@ package: hash: md5: 28eddfb8b9ecdd044a6f609f985398a7 sha256: 7f8437a97e6311bebf230cfd2ae3c5bdb2230e681c41daebdb894280bf8b4ab6 - category: main - optional: false + category: dev + optional: true - name: sphinx-external-toc version: 1.1.0 manager: conda @@ -5227,8 +6025,8 @@ package: hash: md5: dd9a2afeb6b7015ec7e8746e9c31481a sha256: a269440bb86a4daf5a41639436d78619948db5685219b0a8c61fa729e1d795cd - category: main - optional: false + category: dev + optional: true - name: sphinx-external-toc version: 1.1.0 manager: conda @@ -5243,8 +6041,8 @@ package: hash: md5: dd9a2afeb6b7015ec7e8746e9c31481a sha256: a269440bb86a4daf5a41639436d78619948db5685219b0a8c61fa729e1d795cd - category: main - optional: false + category: dev + optional: true - name: sphinx-jupyterbook-latex version: 1.0.0 manager: conda @@ -5257,8 +6055,8 @@ package: hash: md5: 9261bc5d987013f5d8dc58061c34f1a3 sha256: b64c031795918f26ddeb5148ede2d3a4944cd9f5461cf72bde3f28acdc71d2f3 - category: main - optional: false + category: dev + optional: true - name: sphinx-jupyterbook-latex version: 1.0.0 manager: conda @@ -5271,8 +6069,8 @@ package: hash: md5: 9261bc5d987013f5d8dc58061c34f1a3 sha256: b64c031795918f26ddeb5148ede2d3a4944cd9f5461cf72bde3f28acdc71d2f3 - category: main - optional: false + category: dev + optional: true - name: sphinx-multitoc-numbering version: 0.1.3 manager: conda @@ -5284,8 +6082,8 @@ package: hash: md5: cc5fc0988f0fedab436361b9b5906a58 sha256: 9fa48b33334c3a9971c96dd3d921950e8350cfa88a8e8ebaec6d8261071ea2ac - category: main - optional: false + category: dev + optional: true - name: sphinx-multitoc-numbering version: 0.1.3 manager: conda @@ -5297,8 +6095,8 @@ package: hash: md5: cc5fc0988f0fedab436361b9b5906a58 sha256: 9fa48b33334c3a9971c96dd3d921950e8350cfa88a8e8ebaec6d8261071ea2ac - category: main - optional: false + category: dev + optional: true - name: sphinx-thebe version: 0.3.1 manager: conda @@ -5310,8 +6108,8 @@ package: hash: md5: f6627ce09745a0f822cc6e7de8cf4f99 sha256: 9d0cd52edcb2274bf7c8e9327317d9bb48e1d092afeaed093e0242876ad3c008 - category: main - optional: false + category: dev + optional: true - name: sphinx-thebe version: 0.3.1 manager: conda @@ -5323,8 +6121,8 @@ package: hash: md5: f6627ce09745a0f822cc6e7de8cf4f99 sha256: 9d0cd52edcb2274bf7c8e9327317d9bb48e1d092afeaed093e0242876ad3c008 - category: main - optional: false + category: dev + optional: true - name: sphinx-togglebutton version: 0.3.2 manager: conda @@ -5337,8 +6135,8 @@ package: hash: md5: 382738101934261ea7931d1460e64868 sha256: 0dcee238aae6337fae5eaf1f9a29b0c51ed9834ae501fccb2cde0fed8dae1a88 - category: main - optional: false + category: dev + optional: true - name: sphinx-togglebutton version: 0.3.2 manager: conda @@ -5351,8 +6149,8 @@ package: hash: md5: 382738101934261ea7931d1460e64868 sha256: 0dcee238aae6337fae5eaf1f9a29b0c51ed9834ae501fccb2cde0fed8dae1a88 - category: main - optional: false + category: dev + optional: true - name: sphinxcontrib-applehelp version: 2.0.0 manager: conda @@ -5364,8 +6162,8 @@ package: hash: md5: 16e3f039c0aa6446513e94ab18a8784b sha256: d7433a344a9ad32a680b881c81b0034bc61618d12c39dd6e3309abeffa9577ba - category: main - optional: false + category: dev + optional: true - name: sphinxcontrib-applehelp version: 2.0.0 manager: conda @@ -5377,8 +6175,8 @@ package: hash: md5: 16e3f039c0aa6446513e94ab18a8784b sha256: d7433a344a9ad32a680b881c81b0034bc61618d12c39dd6e3309abeffa9577ba - category: main - optional: false + category: dev + optional: true - name: sphinxcontrib-bibtex version: 2.7.0 manager: conda @@ -5393,8 +6191,8 @@ package: hash: md5: 7f562e153eedbdc92f1c3adb019a8792 sha256: 3b9c6273f95302df966a48a267b33ddf78ed6e662c7d578d3e129e259e049314 - category: main - optional: false + category: dev + optional: true - name: sphinxcontrib-bibtex version: 2.7.0 manager: conda @@ -5409,8 +6207,8 @@ package: hash: md5: 7f562e153eedbdc92f1c3adb019a8792 sha256: 3b9c6273f95302df966a48a267b33ddf78ed6e662c7d578d3e129e259e049314 - category: main - optional: false + category: dev + optional: true - name: sphinxcontrib-devhelp version: 2.0.0 manager: conda @@ -5422,8 +6220,8 @@ package: hash: md5: 910f28a05c178feba832f842155cbfff sha256: 55d5076005d20b84b20bee7844e686b7e60eb9f683af04492e598a622b12d53d - category: main - optional: false + category: dev + optional: true - name: sphinxcontrib-devhelp version: 2.0.0 manager: conda @@ -5435,8 +6233,8 @@ package: hash: md5: 910f28a05c178feba832f842155cbfff sha256: 55d5076005d20b84b20bee7844e686b7e60eb9f683af04492e598a622b12d53d - category: main - optional: false + category: dev + optional: true - name: sphinxcontrib-htmlhelp version: 2.1.0 manager: conda @@ -5448,8 +6246,8 @@ package: hash: md5: e9fb3fe8a5b758b4aff187d434f94f03 sha256: c1492c0262ccf16694bdcd3bb62aa4627878ea8782d5cd3876614ffeb62b3996 - category: main - optional: false + category: dev + optional: true - name: sphinxcontrib-htmlhelp version: 2.1.0 manager: conda @@ -5461,32 +6259,32 @@ package: hash: md5: e9fb3fe8a5b758b4aff187d434f94f03 sha256: c1492c0262ccf16694bdcd3bb62aa4627878ea8782d5cd3876614ffeb62b3996 - category: main - optional: false + category: dev + optional: true - name: sphinxcontrib-jsmath - version: 1.0.1 + version: 2.0.0 manager: conda platform: linux-64 dependencies: - python: '>=3.9' - url: https://repo.prefix.dev/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda + python: '' + url: https://repo.prefix.dev/conda-forge/noarch/sphinxcontrib-jsmath-2.0.0-pyh5ded981_0.conda hash: - md5: fa839b5ff59e192f411ccc7dae6588bb - sha256: 578bef5ec630e5b2b8810d898bbbf79b9ae66d49b7938bcc3efc364e679f2a62 - category: main - optional: false + md5: 7e9e28f90ddccdafa9e16a0541841bc4 + sha256: 59cedf5b1c202005f3af3c276e3fb1c7806bb7dbff476f8f8d46abcade227aed + category: dev + optional: true - name: sphinxcontrib-jsmath - version: 1.0.1 + version: 2.0.0 manager: conda platform: win-64 dependencies: - python: '>=3.9' - url: https://repo.prefix.dev/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda + python: '' + url: https://repo.prefix.dev/conda-forge/noarch/sphinxcontrib-jsmath-2.0.0-pyh5ded981_0.conda hash: - md5: fa839b5ff59e192f411ccc7dae6588bb - sha256: 578bef5ec630e5b2b8810d898bbbf79b9ae66d49b7938bcc3efc364e679f2a62 - category: main - optional: false + md5: 7e9e28f90ddccdafa9e16a0541841bc4 + sha256: 59cedf5b1c202005f3af3c276e3fb1c7806bb7dbff476f8f8d46abcade227aed + category: dev + optional: true - name: sphinxcontrib-qthelp version: 2.0.0 manager: conda @@ -5498,8 +6296,8 @@ package: hash: md5: 00534ebcc0375929b45c3039b5ba7636 sha256: c664fefae4acdb5fae973bdde25836faf451f41d04342b64a358f9a7753c92ca - category: main - optional: false + category: dev + optional: true - name: sphinxcontrib-qthelp version: 2.0.0 manager: conda @@ -5511,8 +6309,8 @@ package: hash: md5: 00534ebcc0375929b45c3039b5ba7636 sha256: c664fefae4acdb5fae973bdde25836faf451f41d04342b64a358f9a7753c92ca - category: main - optional: false + category: dev + optional: true - name: sphinxcontrib-serializinghtml version: 2.0.0 manager: conda @@ -5524,8 +6322,8 @@ package: hash: md5: f77df1fcf9af03b7287342638befca77 sha256: 20b49741065fd7d3fabf98caf6d19b6436badb06b6d41f66b58f1fc2b52f37a1 - category: main - optional: false + category: dev + optional: true - name: sphinxcontrib-serializinghtml version: 2.0.0 manager: conda @@ -5537,10 +6335,10 @@ package: hash: md5: f77df1fcf9af03b7287342638befca77 sha256: 20b49741065fd7d3fabf98caf6d19b6436badb06b6d41f66b58f1fc2b52f37a1 - category: main - optional: false + category: dev + optional: true - name: sqlalchemy - version: 2.1.4 + version: 2.1.6 manager: conda platform: linux-64 dependencies: @@ -5549,14 +6347,14 @@ package: python: '' python_abi: 3.12.* typing_extensions: '>=4.6.0' - url: https://repo.prefix.dev/conda-forge/linux-64/sqlalchemy-2.1.4-py312h1b36aeb_0.conda + url: https://repo.prefix.dev/conda-forge/linux-64/sqlalchemy-2.1.6-py312h1b36aeb_0.conda hash: - md5: 73c35b8ca0329574d5cd7963a0793de8 - sha256: 146510e72f8ce902256c2d0b6b9fbb7589ca3ae6c7cc16baea6838834e590a5c - category: main - optional: false + md5: b216f7d87088ad9d71f55f3e9ea03d4f + sha256: c84576a5dbd304761826e5f5c74f948d4eaa81f9c0f05203290d6f0efd3eaed2 + category: dev + optional: true - name: sqlalchemy - version: 2.1.4 + version: 2.1.6 manager: conda platform: win-64 dependencies: @@ -5566,12 +6364,12 @@ package: ucrt: '>=10.0.20348.0' vc: '>=14.3,<15' vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/sqlalchemy-2.1.4-py312he5662c2_0.conda + url: https://repo.prefix.dev/conda-forge/win-64/sqlalchemy-2.1.6-py312he5662c2_0.conda hash: - md5: 01a334790b1f8be2d16daf9c204a21fb - sha256: 4b4a617e582f86454e2e1ad8ddf55e38f8db4176a02aea5a70273d31dbd1ac2d - category: main - optional: false + md5: b19af237a4b34f2848685e1555e77a99 + sha256: 65e36460b010b74a7f6105b187814d879e767a3515e32a90d93c56fca7d233e2 + category: dev + optional: true - name: stack_data version: 0.6.3 manager: conda @@ -5612,8 +6410,8 @@ package: hash: md5: 3b887b7b3468b0f494b4fad40178b043 sha256: 3f661e98a09f976775a494488beb3d35ebb00f535b169c6bd891f2e280d55783 - category: main - optional: false + category: dev + optional: true - name: tabulate version: 0.10.0 manager: conda @@ -5624,8 +6422,8 @@ package: hash: md5: 3b887b7b3468b0f494b4fad40178b043 sha256: 3f661e98a09f976775a494488beb3d35ebb00f535b169c6bd891f2e280d55783 - category: main - optional: false + category: dev + optional: true - name: tbb version: 2023.1.0 manager: conda @@ -5641,6 +6439,36 @@ package: sha256: 65f5a52eb5250ca0d627e6958e703583dca008988695284fc2181b3a0a790efd category: main optional: false +- name: terminado + version: 0.18.1 + manager: conda + platform: linux-64 + dependencies: + __unix: '' + ptyprocess: '' + python: '' + tornado: '>=6.1.0' + url: https://repo.prefix.dev/conda-forge/noarch/terminado-0.18.1-pyhc90fa1f_1.conda + hash: + md5: 17b43cee5cc84969529d5d0b0309b2cb + sha256: 6b6727a13d1ca6a23de5e6686500d0669081a117736a87c8abf444d60c1e40eb + category: main + optional: false +- name: terminado + version: 0.18.1 + manager: conda + platform: win-64 + dependencies: + __win: '' + python: '' + pywinpty: '>=1.1.0' + tornado: '>=6.1.0' + url: https://repo.prefix.dev/conda-forge/noarch/terminado-0.18.1-pyh6dadd2b_1.conda + hash: + md5: e43ca10d61e55d0a8ec5d8c62474ec9e + sha256: b375e8df0d5710717c31e7c8e93c025c37fa3504aea325c7a55509f64e5d4340 + category: main + optional: false - name: tinycss2 version: 1.4.0 manager: conda @@ -5695,30 +6523,6 @@ package: sha256: f19618a3a82cc483dacf1c70a30367ee7b0c7e71b90f1f80e14feff44fbd3688 category: main optional: false -- name: toml - version: 0.10.2 - manager: conda - platform: linux-64 - dependencies: - python: '' - url: https://repo.prefix.dev/conda-forge/noarch/toml-0.10.2-pyhcf101f3_3.conda - hash: - md5: d0fc809fa4c4d85e959ce4ab6e1de800 - sha256: fd30e43699cb22ab32ff3134d3acf12d6010b5bbaa63293c37076b50009b91f8 - category: dev - optional: true -- name: toml - version: 0.10.2 - manager: conda - platform: win-64 - dependencies: - python: '' - url: https://repo.prefix.dev/conda-forge/noarch/toml-0.10.2-pyhcf101f3_3.conda - hash: - md5: d0fc809fa4c4d85e959ce4ab6e1de800 - sha256: fd30e43699cb22ab32ff3134d3acf12d6010b5bbaa63293c37076b50009b91f8 - category: dev - optional: true - name: tomli version: 2.5.0 manager: conda @@ -5846,6 +6650,32 @@ package: sha256: b141933ece3518f6d7b75dfb59451e2f26b405a44c18e2518a83e9a02e09315c category: main optional: false +- name: typing-inspection + version: 0.4.4 + manager: conda + platform: linux-64 + dependencies: + python: '' + typing_extensions: '>=4.15.0' + url: https://repo.prefix.dev/conda-forge/noarch/typing-inspection-0.4.4-pyhcf101f3_0.conda + hash: + md5: 880e91eac5d926568ef278e20554148e + sha256: 293c66b208468d186a94ff486c2ffbf67859a2bde8c88e965fc9d06c517191b2 + category: main + optional: false +- name: typing-inspection + version: 0.4.4 + manager: conda + platform: win-64 + dependencies: + python: '' + typing_extensions: '>=4.15.0' + url: https://repo.prefix.dev/conda-forge/noarch/typing-inspection-0.4.4-pyhcf101f3_0.conda + hash: + md5: 880e91eac5d926568ef278e20554148e + sha256: 293c66b208468d186a94ff486c2ffbf67859a2bde8c88e965fc9d06c517191b2 + category: main + optional: false - name: typing_extensions version: 4.16.0 manager: conda @@ -5870,26 +6700,50 @@ package: sha256: 2d888f90af0686044882c74193ec80a90ec1943145d94a7b1b048958acda1848 category: main optional: false +- name: typing_utils + version: 0.1.0 + manager: conda + platform: linux-64 + dependencies: + python: '>=3.9' + url: https://repo.prefix.dev/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda + hash: + md5: f6d7aa696c67756a650e91e15e88223c + sha256: 3088d5d873411a56bf988eee774559335749aed6f6c28e07bf933256afb9eb6c + category: main + optional: false +- name: typing_utils + version: 0.1.0 + manager: conda + platform: win-64 + dependencies: + python: '>=3.9' + url: https://repo.prefix.dev/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda + hash: + md5: f6d7aa696c67756a650e91e15e88223c + sha256: 3088d5d873411a56bf988eee774559335749aed6f6c28e07bf933256afb9eb6c + category: main + optional: false - name: tzdata - version: 2026c + version: 2026e manager: conda platform: linux-64 dependencies: {} - url: https://repo.prefix.dev/conda-forge/noarch/tzdata-2026c-h151e31d_0.conda + url: https://repo.prefix.dev/conda-forge/noarch/tzdata-2026e-h5d301ff_0.conda hash: - md5: fcb489df604d100968b737f2cb6076c6 - sha256: b928c30ddcb0e3f544c6eade8352737e6e610e263276b90232db6a578ef899d8 + md5: abccc3810d2b97e570dee487f2b46e38 + sha256: 2b7ca858879f183ce2dcc65b300f48a0133d5430550f35b23d80d405a0788dbf category: main optional: false - name: tzdata - version: 2026c + version: 2026e manager: conda platform: win-64 dependencies: {} - url: https://repo.prefix.dev/conda-forge/noarch/tzdata-2026c-h151e31d_0.conda + url: https://repo.prefix.dev/conda-forge/noarch/tzdata-2026e-h5d301ff_0.conda hash: - md5: fcb489df604d100968b737f2cb6076c6 - sha256: b928c30ddcb0e3f544c6eade8352737e6e610e263276b90232db6a578ef899d8 + md5: abccc3810d2b97e570dee487f2b46e38 + sha256: 2b7ca858879f183ce2dcc65b300f48a0133d5430550f35b23d80d405a0788dbf category: main optional: false - name: uc-micro-py @@ -5902,8 +6756,8 @@ package: hash: md5: 4fdd327852ffefc83173a7c029690d0c sha256: 9e5a0e70e876fca50de075b1cc6641cdc009a16c18f4d52ab03edb777729a1bc - category: main - optional: false + category: dev + optional: true - name: uc-micro-py version: 2.0.0 manager: conda @@ -5914,8 +6768,8 @@ package: hash: md5: 4fdd327852ffefc83173a7c029690d0c sha256: 9e5a0e70e876fca50de075b1cc6641cdc009a16c18f4d52ab03edb777729a1bc - category: main - optional: false + category: dev + optional: true - name: ucrt version: 10.0.26100.0 manager: conda @@ -5958,6 +6812,30 @@ package: sha256: 9ca3d0238b12442207b819b54e20f3ae9fbd6bb60aed54639b0cafe8f9e4bbd8 category: main optional: false +- name: uri-template + version: 1.3.0 + manager: conda + platform: linux-64 + dependencies: + python: '>=3.9' + url: https://repo.prefix.dev/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + hash: + md5: e7cb0f5745e4c5035a460248334af7eb + sha256: e0eb6c8daf892b3056f08416a96d68b0a358b7c46b99c8a50481b22631a4dfc0 + category: main + optional: false +- name: uri-template + version: 1.3.0 + manager: conda + platform: win-64 + dependencies: + python: '>=3.9' + url: https://repo.prefix.dev/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + hash: + md5: e7cb0f5745e4c5035a460248334af7eb + sha256: e0eb6c8daf892b3056f08416a96d68b0a358b7c46b99c8a50481b22631a4dfc0 + category: main + optional: false - name: urllib3 version: 2.8.0 manager: conda @@ -6028,7 +6906,7 @@ package: category: main optional: false - name: wcwidth - version: 0.9.2 + version: 0.9.4 manager: conda platform: linux-64 dependencies: @@ -6038,14 +6916,14 @@ package: libgcc: '>=15' python: '>=3.11' python-abi3: '' - url: https://repo.prefix.dev/conda-forge/linux-64/wcwidth-0.9.2-py311hd139983_0.conda + url: https://repo.prefix.dev/conda-forge/linux-64/wcwidth-0.9.4-py311hd139983_0.conda hash: - md5: e240064460bf1bbd26bb6750414d08f2 - sha256: f3cc5743c960a54a19ec4baa54874bff799f108f4959785246daea5e13222a1a + md5: a2a9b8ec420400e31bbe91048fad2b89 + sha256: 60fdf9b2819993a285fd5b217e179efbb1e2e63d9464c642a2519fc98c546317 category: main optional: false - name: wcwidth - version: 0.9.2 + version: 0.9.4 manager: conda platform: win-64 dependencies: @@ -6056,34 +6934,82 @@ package: ucrt: '>=10.0.20348.0' vc: '>=14.3,<15' vc14_runtime: '>=14.44.35208' - url: https://repo.prefix.dev/conda-forge/win-64/wcwidth-0.9.2-py311hdbcae8a_0.conda + url: https://repo.prefix.dev/conda-forge/win-64/wcwidth-0.9.4-py311hdbcae8a_0.conda + hash: + md5: 0c9b495a8410bb9212a802b9b7a72b62 + sha256: 5fafeb676f72490ab518c14d541a738df56e3b0557924635c3a8f8fb500a2aea + category: main + optional: false +- name: webcolors + version: 25.10.0 + manager: conda + platform: linux-64 + dependencies: + python: '>=3.10' + url: https://repo.prefix.dev/conda-forge/noarch/webcolors-25.10.0-pyhd8ed1ab_0.conda + hash: + md5: 6639b6b0d8b5a284f027a2003669aa65 + sha256: 21f6c8a20fe050d09bfda3fb0a9c3493936ce7d6e1b3b5f8b01319ee46d6c6f6 + category: main + optional: false +- name: webcolors + version: 25.10.0 + manager: conda + platform: win-64 + dependencies: + python: '>=3.10' + url: https://repo.prefix.dev/conda-forge/noarch/webcolors-25.10.0-pyhd8ed1ab_0.conda hash: - md5: 7eb914b19211cd2522bbec09170652cd - sha256: ad6a9373bed593daf3f8645044a2ac793726b4482ce78dbdb46a81cb9dfb4448 + md5: 6639b6b0d8b5a284f027a2003669aa65 + sha256: 21f6c8a20fe050d09bfda3fb0a9c3493936ce7d6e1b3b5f8b01319ee46d6c6f6 category: main optional: false - name: webencodings - version: 0.5.1 + version: 0.6.1 manager: conda platform: linux-64 dependencies: - python: '>=3.9' - url: https://repo.prefix.dev/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + python: '' + url: https://repo.prefix.dev/conda-forge/noarch/webencodings-0.6.1-pyh5ded981_0.conda hash: - md5: 2841eb5bfc75ce15e9a0054b98dcd64d - sha256: 19ff205e138bb056a46f9e3839935a2e60bd1cf01c8241a5e172a422fed4f9c6 + md5: 004d63af670b535a09d0dc06dd1f2902 + sha256: d8e064037320c57907bf53b485e54c4446184fdc7862cccd0ebe4f19f63e8e7b category: main optional: false - name: webencodings - version: 0.5.1 + version: 0.6.1 manager: conda platform: win-64 dependencies: - python: '>=3.9' - url: https://repo.prefix.dev/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + python: '' + url: https://repo.prefix.dev/conda-forge/noarch/webencodings-0.6.1-pyh5ded981_0.conda + hash: + md5: 004d63af670b535a09d0dc06dd1f2902 + sha256: d8e064037320c57907bf53b485e54c4446184fdc7862cccd0ebe4f19f63e8e7b + category: main + optional: false +- name: websocket-client + version: 1.9.2 + manager: conda + platform: linux-64 + dependencies: + python: '' + url: https://repo.prefix.dev/conda-forge/noarch/websocket-client-1.9.2-pyh5ded981_1.conda + hash: + md5: f4c7ad941991896940d58253f42f7212 + sha256: 564d29a013b7f52db51519ce7e50f01dbab4a711d8eb7094d7d55a13cba09129 + category: main + optional: false +- name: websocket-client + version: 1.9.2 + manager: conda + platform: win-64 + dependencies: + python: '' + url: https://repo.prefix.dev/conda-forge/noarch/websocket-client-1.9.2-pyh5ded981_1.conda hash: - md5: 2841eb5bfc75ce15e9a0054b98dcd64d - sha256: 19ff205e138bb056a46f9e3839935a2e60bd1cf01c8241a5e172a422fed4f9c6 + md5: f4c7ad941991896940d58253f42f7212 + sha256: 564d29a013b7f52db51519ce7e50f01dbab4a711d8eb7094d7d55a13cba09129 category: main optional: false - name: wheel @@ -6125,37 +7051,17 @@ package: sha256: 93807369ab91f230cf9e6e2a237eaa812492fe00face5b38068735858fba954f category: main optional: false -- name: wrapt - version: 1.17.3 - manager: conda - platform: linux-64 - dependencies: - __glibc: '>=2.17,<3.0.a0' - 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_1.conda - hash: - md5: 8af3faf88325836e46c6cb79828e058c - sha256: 8320d5af37eb8933e5d129884ea013b2687e75b08aff5216193df3378eaea92f - category: dev - optional: true -- name: wrapt - version: 1.17.3 +- name: winpty + version: 0.4.3 manager: conda platform: win-64 - dependencies: - python: '>=3.12,<3.13.0a0' - python_abi: 3.12.* - 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_1.conda + dependencies: {} + url: https://repo.prefix.dev/conda-forge/win-64/winpty-0.4.3-h57928b3_5.conda hash: - md5: fc10fd823d05bde83cda9e90dbef34ed - sha256: f9e9e28ef3a0564a5588427b9503ed08e5fe3624b8f8132d60383439a47baafc - category: dev - optional: true + md5: 9e3022d1238c0f46dfb7e7b4b7999891 + sha256: e3f7a6759d154445b320e7a4d87445e783946fa39f7f3740033d36b2011e7d52 + category: main + optional: false - name: xorg-libxau version: 1.0.12 manager: conda @@ -6242,27 +7148,27 @@ package: category: main optional: false - name: zipp - version: 4.1.1 + version: 4.1.2 manager: conda platform: linux-64 dependencies: python: '' - url: https://repo.prefix.dev/conda-forge/noarch/zipp-4.1.1-pyh5ded981_0.conda + url: https://repo.prefix.dev/conda-forge/noarch/zipp-4.1.2-pyh5ded981_0.conda hash: - md5: 6cad4d2cec9b7b64538c225ac91d2e8a - sha256: 3aa601ef121f42dcb79400375e72f833ddc68bc6243f3e5535168b2d69cc9c70 + md5: 3a99defa674883e167603f141728de7e + sha256: 4e5c50cf5ecc00d83a20b987c52d49b78fa96026437ab09b11f4b7c46b7fc061 category: main optional: false - name: zipp - version: 4.1.1 + version: 4.1.2 manager: conda platform: win-64 dependencies: python: '' - url: https://repo.prefix.dev/conda-forge/noarch/zipp-4.1.1-pyh5ded981_0.conda + url: https://repo.prefix.dev/conda-forge/noarch/zipp-4.1.2-pyh5ded981_0.conda hash: - md5: 6cad4d2cec9b7b64538c225ac91d2e8a - sha256: 3aa601ef121f42dcb79400375e72f833ddc68bc6243f3e5535168b2d69cc9c70 + md5: 3a99defa674883e167603f141728de7e + sha256: 4e5c50cf5ecc00d83a20b987c52d49b78fa96026437ab09b11f4b7c46b7fc061 category: main optional: false - name: zlib @@ -6336,28 +7242,8 @@ package: sha256: ca7daae4f218a11fab82cc2857f0ea518ec3f46acec60490485347a4c22c6b3e category: main optional: false -- name: annotated-types - version: 0.8.0 - manager: pip - platform: linux-64 - dependencies: {} - url: https://files.pythonhosted.org/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl - hash: - sha256: f072f4d804ea359e4eaf198b1af7a8b0943881a87f31bb764f8bf219bb9419e0 - category: main - optional: false -- name: annotated-types - version: 0.8.0 - manager: pip - platform: win-64 - dependencies: {} - url: https://files.pythonhosted.org/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl - hash: - sha256: f072f4d804ea359e4eaf198b1af7a8b0943881a87f31bb764f8bf219bb9419e0 - category: main - optional: false - name: geoh5py - version: 0.14.0a2.dev143+e7318ecc + version: 0.14.0a2.dev156+3d3e2708 manager: pip platform: linux-64 dependencies: @@ -6366,16 +7252,16 @@ package: pillow: '>=12.2.0,<13.0.0' psutil: '>=7.2.2,<7.3.0' pydantic: '>=2.12.0,<2.13.0' - url: git+https://github.com/MiraGeoscience/geoh5py.git@e7318ecca512e9b1f5498dad92733b55cff0aa3b + url: git+https://github.com/MiraGeoscience/geoh5py.git@3d3e27086f07c86373ac1721d4334a60e58d36e9 hash: - sha256: e7318ecca512e9b1f5498dad92733b55cff0aa3b + sha256: 3d3e27086f07c86373ac1721d4334a60e58d36e9 source: type: url - url: git+https://github.com/MiraGeoscience/geoh5py.git@e7318ecca512e9b1f5498dad92733b55cff0aa3b + url: git+https://github.com/MiraGeoscience/geoh5py.git@3d3e27086f07c86373ac1721d4334a60e58d36e9 category: main optional: false - name: geoh5py - version: 0.14.0a2.dev143+e7318ecc + version: 0.14.0a2.dev156+3d3e2708 manager: pip platform: win-64 dependencies: @@ -6384,83 +7270,11 @@ package: pillow: '>=12.2.0,<13.0.0' psutil: '>=7.2.2,<7.3.0' pydantic: '>=2.12.0,<2.13.0' - url: git+https://github.com/MiraGeoscience/geoh5py.git@e7318ecca512e9b1f5498dad92733b55cff0aa3b + url: git+https://github.com/MiraGeoscience/geoh5py.git@3d3e27086f07c86373ac1721d4334a60e58d36e9 hash: - sha256: e7318ecca512e9b1f5498dad92733b55cff0aa3b + sha256: 3d3e27086f07c86373ac1721d4334a60e58d36e9 source: type: url - url: git+https://github.com/MiraGeoscience/geoh5py.git@e7318ecca512e9b1f5498dad92733b55cff0aa3b - category: main - optional: false -- name: pydantic - version: 2.12.5 - manager: pip - platform: linux-64 - dependencies: - annotated-types: '>=0.6.0' - pydantic-core: 2.41.5 - typing-extensions: '>=4.14.1' - typing-inspection: '>=0.4.2' - url: https://files.pythonhosted.org/packages/5a/87/b70ad306ebb6f9b585f114d0ac2137d792b48be34d732d60e597c2f8465a/pydantic-2.12.5-py3-none-any.whl - hash: - sha256: e561593fccf61e8a20fc46dfc2dfe075b8be7d0188df33f221ad1f0139180f9d - category: main - optional: false -- name: pydantic - version: 2.12.5 - manager: pip - platform: win-64 - dependencies: - annotated-types: '>=0.6.0' - pydantic-core: 2.41.5 - typing-extensions: '>=4.14.1' - typing-inspection: '>=0.4.2' - url: https://files.pythonhosted.org/packages/5a/87/b70ad306ebb6f9b585f114d0ac2137d792b48be34d732d60e597c2f8465a/pydantic-2.12.5-py3-none-any.whl - hash: - sha256: e561593fccf61e8a20fc46dfc2dfe075b8be7d0188df33f221ad1f0139180f9d - category: main - optional: false -- name: pydantic-core - version: 2.41.5 - manager: pip - platform: linux-64 - dependencies: - typing-extensions: '>=4.14.1' - url: https://files.pythonhosted.org/packages/0d/76/941cc9f73529988688a665a5c0ecff1112b3d95ab48f81db5f7606f522d3/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - hash: - sha256: eceb81a8d74f9267ef4081e246ffd6d129da5d87e37a77c9bde550cb04870c1c - category: main - optional: false -- name: pydantic-core - version: 2.41.5 - manager: pip - platform: win-64 - dependencies: - typing-extensions: '>=4.14.1' - url: https://files.pythonhosted.org/packages/86/45/00173a033c801cacf67c190fef088789394feaf88a98a7035b0e40d53dc9/pydantic_core-2.41.5-cp312-cp312-win_amd64.whl - hash: - sha256: 1962293292865bca8e54702b08a4f26da73adc83dd1fcf26fbc875b35d81c815 - category: main - optional: false -- name: typing-inspection - version: 0.4.4 - manager: pip - platform: linux-64 - dependencies: - typing-extensions: '>=4.15.0' - url: https://files.pythonhosted.org/packages/67/81/4add07e5172b7ac40d8ed5ff580409a7801a4fe26d529bdd915401dabfbe/typing_inspection-0.4.4-py3-none-any.whl - hash: - sha256: 65b8397ba37ccbce054456aaccddfc91e6e3083c92824df348d96ca832f3f147 - category: main - optional: false -- name: typing-inspection - version: 0.4.4 - manager: pip - platform: win-64 - dependencies: - typing-extensions: '>=4.15.0' - url: https://files.pythonhosted.org/packages/67/81/4add07e5172b7ac40d8ed5ff580409a7801a4fe26d529bdd915401dabfbe/typing_inspection-0.4.4-py3-none-any.whl - hash: - sha256: 65b8397ba37ccbce054456aaccddfc91e6e3083c92824df348d96ca832f3f147 + url: git+https://github.com/MiraGeoscience/geoh5py.git@3d3e27086f07c86373ac1721d4334a60e58d36e9 category: main optional: false diff --git a/pyproject.toml b/pyproject.toml index 576ee19..6043285 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,108 +1,106 @@ +[build-system] +# no package is built (package-mode = false), but conda-lock relies on build-backend to detect poetry +requires = ["poetry-core>=2.0"] +build-backend = "poetry.core.masonry.api" + [project] name = "python-training" -requires-python = ">=3.12, <3.14" -readme = "README.md" +requires-python = ">=3.12,<3.14" + description = "Open Source Training" -dynamic = ["version", "dependencies", "classifiers"] +readme = "README.md" +keywords = ["python", "training", "geoscience", "geoh5"] +dynamic = ["dependencies", "classifiers"] authors = [{ name = "Mira Geoscience", email = "support@mirageoscience.com" }] maintainers = [ - { name = "Benjamin Kary", email = "benjamink@mirageoscience.com" }, - { name = "Dominique Fournier", email = "dominiquef@mirageoscience.com" } + { name = "Benjamin Kary", email = "benjamink@mirageoscience.com" }, + { name = "Dominique Fournier", email = "dominiquef@mirageoscience.com" } ] +[project.urls] +homepage = "https://www.mirageoscience.com/mining-industry-software/python-integration/" +repository = "https://github.com/MiraGeoscience/python-training" [tool.poetry] -name = "python-training" -version = "0.0.0.dev0" -packages = [ - { include = "scripts"}, +package-mode = false +requires-poetry = ">=2.0,<3.0" + +classifiers = [ + "Intended Audience :: Education", + "Intended Audience :: Science/Research", + "Natural Language :: English", + "Topic :: Education", + "Topic :: Scientific/Engineering", ] -requires-poetry = "2.*" [tool.poetry.dependencies] -matplotlib = "~3.10.4" # also in geoapps-utils -numpy = "~2.4.2" -jupyter-book = "~1.0" -jupytext = "^1.14" -nbconvert = "~7.16.4" -pytest = "*" +matplotlib = "~3.10.4" +notebook = "^7.4" # required by start_training.bat +numpy = "~2.4.2" # also in geoh5py -## pip dependencies -# geoh5py = {version = "~0.9.0-alpha.2", source = "pypi", allow-prereleases = true} +## pip dependencies from Git repositories +#---------------------------------------- +# geoh5py = {version = ">=0.14.0a, 0.14.*", source = "pypi", allow-prereleases = true} geoh5py = {git = "https://github.com/MiraGeoscience/geoh5py.git", rev = "develop"} - -[tool.poetry.dev-dependencies] -pylint = "^2.14.4" -pytest = "^7.1.2" -pytest-cov = "^3.0.0" +[tool.poetry.group.dev.dependencies] +jupyter-book = "^1.0" +jupytext = "^1.14" +nbconvert = "~7.16.4" +pylint = "*" +pytest = "*" +pytest-cov = "*" [tool.conda-lock] platforms = ['win-64', 'linux-64'] channels = ['conda-forge'] [tool.conda-lock.dependencies] -h5py = ">=3.15.1, 3.*" # from geoh5py - -[tool.isort] -# settings for compatibility between ``isort`` and ``black`` formatting -multi_line_output = 3 -include_trailing_comma = true -force_grid_wrap = 0 -use_parentheses = true -line_length = 88 +## indirect dependencies, forcing them here for installation through Conda not pip +#--------------------------------------------------------------------------------- +h5py = ">=3.15.1, 3.15.*" # from geoh5py +pydantic = ">=2.12.0, 2.12.*" # from geoh5py +Pillow = ">=12.2.0, 12.*" # from geoh5py +psutil = ">=7.2.2, 7.2.*" # from geoh5py -[tool.black] -# defaults are just fine - -[tool.poetry2conda] -name = "python-training" +[tool.ruff] +target-version = "py312" -[build-system] -requires = [ - "poetry-core >=1.8.0", - "poetry-dynamic-versioning >=1.9.1, ==1.*", - # list dependencies to work with PIP_NO_DEPS=1 - "MarkupSafe >=2.0", - "dunamai >=1.25, ==1.*", - "jinja2 ==3.*", - "packaging >=24.0", - "tomlkit >=0.13", +[tool.ruff.lint] +ignore = [ + "B028", # no-explicit-stacklevel for warnings.warn() + "E501", # line-too-long - code is reformatted (do not care about comments and docstring) + "F401", # unsused-import - covered by pycln + "RUF005", # collection-literal-concatenation - wrong suggestion with numpy arrays ] -build-backend = "poetry_dynamic_versioning.backend" - -[tool.poetry.requires-plugins] -poetry-dynamic-versioning = { version = ">=1.9.1, 1.*", extras = ["plugin"] } - -[tool.poetry-dynamic-versioning] -bump = true -enable = true -fix-shallow-repository = true -strict = true -style = "pep440" -vcs = "git" - -[tool.poetry-dynamic-versioning.substitution] -files = ["_version.py", "_version.json"] -patterns = [ - '''(^__version__\s*(?::.*?)?=\s*['"])[^'"]*(['"])''', - '''(^{\s*"version"\s*:\s*")[^"]*("\s*})''', +select = [ + "A", # flake8-builtins + "B", # flake8-bugbear + "B006", # Do not use mutable data structures for argument defaults + "B9", # flake8-bugbear opiniated warnings + "BLE", # flake8-blind-except + "C4", # flake8-comprehensions + "C9", # mccabe + "E", # pycodestyle errors + "F", # pyflakes + "I", # isort + "RUF", # ruff rules + "TID", # flake8-tidy-imports + "UP", # pyupgrade + "W", # pycodestyle warnings ] -[tool.poetry-dynamic-versioning.files."_version.py"] -persistent-substitution = true -initial-content = """ - __version__ = "0.0.0.dev0" -""" +[tool.ruff.lint.per-file-ignores] +"assets/training/*.ipynb" = ["F821"] # exercise cells are cleared by devtools/update_tutorials.py -[tool.poetry-dynamic-versioning.files."_version.json"] -persistent-substitution = true -initial-content = """ -{ "version": "0.0.0.dev0" } -""" +[tool.ruff.lint.mccabe] +max-complexity = 18 -[tool.ruff] -target-version = "py312" +[tool.ruff.lint.isort] +lines-after-imports = 2 + +[tool.ruff.format] +# default formatting is just fine [tool.mypy] warn_unused_configs = true diff --git a/setup.bat b/setup.bat index afd4694..9f4c232 100644 --- a/setup.bat +++ b/setup.bat @@ -7,20 +7,19 @@ if !errorlevel! neq 0 ( exit /B !errorlevel! ) -set PY_VER=3.9 +set PY_VER=3.12 set ENV_NAME=python-training set MY_CONDA=!MY_CONDA_EXE:"=! cd %~dp0 set PYTHONUTF8=1 +set CONDA_CHANNEL_PRIORITY=strict +set MAMBA_CHANNEL_PRIORITY=%CONDA_CHANNEL_PRIORIT% +set CONDA_CHANNEL_ALIAS=https://repo.prefix.dev +set MAMBA_CHANNEL_ALIAS=%CONDA_CHANNEL_ALIAS% +:: set MAMBA_USE_SHARDED_REPODATA=off -:: try installing libmamba solver in base environment (fail silently) -call "!MY_CONDA!" install -n base --override-channels -c conda-forge conda-libmamba-solver -y > nul 2>&1 ^ - && set "CONDA_SOLVER=libmamba" ^ - || (call ) - - -set MY_CONDA_ENV_FILE=environments\conda-py-%PY_VER%-win-64.lock.yml +set MY_CONDA_ENV_FILE=environments\py-%PY_VER%-win-64.conda.lock.yml if not exist !MY_CONDA_ENV_FILE! ( echo "** ERROR: Could not find the conda environment specification file '!MY_CONDA_ENV_FILE!' **" pause @@ -28,7 +27,7 @@ if not exist !MY_CONDA_ENV_FILE! ( ) call "!MY_CONDA!" activate base ^ - && call "!MY_CONDA!" env create --force -n %ENV_NAME% --file !MY_CONDA_ENV_FILE! + && call "!MY_CONDA!" env create --yes -n %ENV_NAME% --file !MY_CONDA_ENV_FILE! if !errorlevel! neq 0 ( echo "** ERROR: Installation failed **" @@ -36,8 +35,6 @@ if !errorlevel! neq 0 ( exit /B !errorlevel! ) -call "!MY_CONDA!" run -n %ENV_NAME% jupyter notebook training\index.ipynb +call "!MY_CONDA!" run -n %ENV_NAME% jupyter notebook assets\training -:: pause and open terminal for diagnostic in case it failed pause -cmd /k "!MY_CONDA!" activate %ENV_NAME% diff --git a/setup_no_conda.bat b/setup_no_conda.bat index 6753beb..ef0aa37 100644 --- a/setup_no_conda.bat +++ b/setup_no_conda.bat @@ -20,14 +20,17 @@ if !ERRORLEVEL! neq 0 ( ) set MAMBA_ROOT_PREFIX=%~dp0..\_micromamba - -set PY_VER=3.9 + +set PY_VER=3.12 set ENV_NAME=python-training cd %~dp0 set PYTHONUTF8=1 +set MAMBA_CHANNEL_PRIORITY=strict +set MAMBA_CHANNEL_ALIAS=https://repo.prefix.dev +:: set MAMBA_USE_SHARDED_REPODATA=off -set MY_CONDA_ENV_FILE=environments\conda-py-%PY_VER%-win-64.lock.yml +set MY_CONDA_ENV_FILE=environments\py-%PY_VER%-win-64.conda.lock.yml if not exist !MY_CONDA_ENV_FILE! ( echo "** ERROR: Could not find the conda environment specification file '!MY_CONDA_ENV_FILE!' **" pause @@ -42,8 +45,6 @@ if !errorlevel! neq 0 ( exit /B !errorlevel! ) -!MY_MICROMAMBA! run -n %ENV_NAME% jupyter notebook training\index.ipynb +!MY_MICROMAMBA! run -n %ENV_NAME% jupyter notebook assets\training -:: pause and open terminal for diagnostic in case it failed pause -cmd /k !MY_MICROMAMBA! -n %ENV_NAME% run cmd diff --git a/start_training.bat b/start_training.bat index df4e5fc..33e370e 100644 --- a/start_training.bat +++ b/start_training.bat @@ -9,13 +9,14 @@ if exist !MY_MICROMAMBA! ( set MY_CONDA_RUNNER=!MY_MICROMAMBA:"=! goto conda_is_set ) +) call "%~dp0get_conda_exec.bat" if !errorlevel! neq 0 ( pause exit /B !errorlevel! ) - + set MY_CONDA_RUNNER=!MY_CONDA_EXE:"=! :conda_is_set @@ -25,12 +26,10 @@ set ENV_NAME=python-training cd %~dp0 set PYTHONUTF8=1 -call "!MY_CONDA_RUNNER!" run -n %ENV_NAME% jupyter notebook training\index.ipynb +call "!MY_CONDA_RUNNER!" run -n %ENV_NAME% jupyter notebook assets\training if !errorlevel! neq 0 ( echo "** ERROR: Failed starting the notebook **" ) -:: pause and open terminal for diagnostic in case it failed pause -cmd /k diff --git a/tests/__init__.py b/tests/__init__.py index e69de29..b41c665 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -0,0 +1,3 @@ +# Copyright (c) 2026 Mira Geoscience Ltd. +# +# This file is part of python-training. diff --git a/tests/notebook_test.py b/tests/notebook_test.py index ca7005a..80ec1f5 100644 --- a/tests/notebook_test.py +++ b/tests/notebook_test.py @@ -1,21 +1,24 @@ -import os +# Copyright (c) 2022-2026 Mira Geoscience Ltd. +# +# This file is part of python-training. + import subprocess +from pathlib import Path def test_notebooks(): failures = [] - for directory, _, files in os.walk(os.path.join("..", "content")): - if ".ipynb_checkpoints" in directory or "_build" in directory: + for directory, _, files in Path("..", "content").walk(): + if ".ipynb_checkpoints" in str(directory) or "_build" in str(directory): continue for file in files: - if not file.endswith(".py"): continue process = subprocess.run( - ["python", os.path.join(directory, file)], + ["python", directory / file], capture_output=True, check=True, ) @@ -25,6 +28,3 @@ def test_notebooks(): if any(failures): raise RuntimeError(failures) - - -# Copyright (c) 2022 Mira Geoscience Ltd.