diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3e9b691..8692068 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,7 +15,7 @@ jobs: fail-fast: false matrix: os: ["ubuntu-latest", "macos-latest"] - python-version: ["3.8", "3.9", "3.10", "3.11"] + python-version: ["3.9", "3.10", "3.11"] steps: - uses: actions/checkout@v2 @@ -35,7 +35,7 @@ jobs: fail-fast: false matrix: os: ["ubuntu-latest"] - python-version: ["3.8", "3.9", "3.10", "3.11"] + python-version: ["3.9", "3.10", "3.11"] poetry-version: ["1.3.2"] steps: - name: Checkout @@ -53,24 +53,3 @@ jobs: poetry install --with test - name: Run tests with pytest run: poetry run pytest xnemogcm/test - - - test_notebooks: - name: test notebook doc - runs-on: ubuntu-latest - strategy: - fail-fast: false - steps: - - uses: actions/checkout@v2 - - name: Set up Python 3.11 - uses: actions/setup-python@v2 - with: - python-version: 3.11 - - name: Run poetry - uses: abatilo/actions-poetry@v2.0.0 - with: - poetry-version: 1.3.2 - - name: Install / build - run: poetry install --with dev,test - - name: Run nbconvert - run: poetry run jupyter nbconvert --to notebook --execute src_example/*.ipynb --stdout diff --git a/.github/workflows/ci_run_notebook.yml b/.github/workflows/ci_run_notebook.yml deleted file mode 100644 index f54c618..0000000 --- a/.github/workflows/ci_run_notebook.yml +++ /dev/null @@ -1,63 +0,0 @@ -name: Run Notebooks in examples -on: - push: - branches: - - master - -jobs: - build_doc: - name: build notebook doc - runs-on: ubuntu-latest - permissions: - # Give the default GITHUB_TOKEN write permission to commit and push the - # added or changed files to the repository. - contents: write - pull-requests: write - strategy: - fail-fast: false - steps: - - uses: actions/checkout@v2 - - name: Set up Python 3.11 - uses: actions/setup-python@v2 - with: - python-version: 3.11 - - name: Run poetry - uses: abatilo/actions-poetry@v2.0.0 - with: - poetry-version: 1.3.2 - - name: Install / build - run: poetry install --with dev,test - - name: Install nbdiff - run: | - python3 -m pip install --user pipx - python3 -m pipx ensurepath - pipx install nbdime==3.1.1 - pipx inject nbdime ipython_genutils - - name: Run nbconvert - run: | - mv example tmp - mkdir example - poetry run jupyter nbconvert --to notebook --execute src_example/*.ipynb --output-dir example - - name: Check differences - run: | - cd example - for n in *.ipynb; do - output_diff=$( nbdiff -os $n ../tmp/$n ) - if [ -z "$output_diff" ] - then - # output is empty - we copy back the old notebook export to keep metadata - cp ../tmp/$n $n - fi - done - # Make changes to pull request here - - name: Create Pull Request - id: cpr - uses: peter-evans/create-pull-request@v4 - with: - branch: create-pull-request-patch-${{ github.sha }} - - name: Merge PR - env: - GH_TOKEN: ${{ github.token }} - if: ${{ steps.cpr.outputs.pull-request-number }} - run: | - gh pr merge --auto --merge "${{ steps.cpr.outputs.pull-request-number }}" diff --git a/.github/workflows/ci_upgrade_dependencies.yml b/.github/workflows/ci_upgrade_dependencies.yml index ec5013e..c1f3fbb 100644 --- a/.github/workflows/ci_upgrade_dependencies.yml +++ b/.github/workflows/ci_upgrade_dependencies.yml @@ -26,7 +26,7 @@ jobs: fail-fast: false matrix: os: ["ubuntu-latest"] - python-version: ["3.8"] + python-version: ["3.9"] poetry-version: ["1.3.2"] steps: - name: Checkout diff --git a/.gitignore b/.gitignore index 0056e1d..f976920 100644 --- a/.gitignore +++ b/.gitignore @@ -37,3 +37,4 @@ docs/_build # Dev dev/ tmp/ +site/ diff --git a/.readthedocs.yaml b/.readthedocs.yaml new file mode 100644 index 0000000..8555865 --- /dev/null +++ b/.readthedocs.yaml @@ -0,0 +1,27 @@ +# Read the Docs configuration file for MkDocs projects +# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details + +# Required +version: 2 + +# Set the version of Python and other tools you might need +build: + os: ubuntu-22.04 + tools: + python: "3.10" + jobs: + post_create_environment: + # Install poetry + # https://python-poetry.org/docs/#installing-with-the-official-installer + - curl -sSL https://install.python-poetry.org | python3 - + # Tell poetry to not use a virtual environment + - $HOME/.local/bin/poetry config virtualenvs.create false + post_install: + # Install dependencies with 'docs' dependency group + # https://python-poetry.org/docs/managing-dependencies/#dependency-groups + - $HOME/.local/bin/poetry export --with docs --format requirements.txt > requirements.txt + - python -m pip install -r requirements.txt + - python -m pip install --no-deps . + +mkdocs: + configuration: mkdocs.yml diff --git a/README.md b/README.md index a37292e..ff3a0a1 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,6 @@ Interface to open NEMO ocean global circulation model output dataset and create NEMO 3.6, 4.0, and 4.2.0 are tested and supported. Any version between 3.6 and 4.2.0 should work, but in case of trouble, [please open an issue](https://github.com/rcaneill/xnemogcm/issues). -This repository is mirrored at https://gitlab.com/open-ocean/xnemogcm. If you wish to contribute but don't have a github account, send me an email with your questions or comments: `romain [dot] caneill [at] ens-lyon [.] org` ## Usage @@ -29,89 +28,5 @@ import xgcm grid = xgcm.Grid(ds, metrics=get_metrics(ds), periodic=False) ``` -See the [example](https://nbviewer.ipython.org/github/rcaneill/xnemogcm/blob/master/example/) -directory for some jupyter notebook examples. -xnemocgm is able to process xarray.Datasets (e.g. they could be retrieved from a remote server), -and can get information of the variables grid points with multiple options -(see [example/open_process_files.ipynb](https://nbviewer.ipython.org/github/rcaneill/xnemogcm/blob/master/example/open_process_files.ipynb). - -### Note - -`xnemogcm` is capable or recombining the domain_cfg and mesh_mask files output -by multiple processors, -the recombining tool from the NEMO toolbox is thus not needed here, see -the [example/recombing_mesh_mask_domain_cfg.ipynb](https://nbviewer.ipython.org/github/rcaneill/xnemogcm/blob/master/example/recombing_mesh_mask_domain_cfg.ipynb) - -## Installation - -Installation via pip: -```bash -pip3 install xnemogcm -``` - -Installation via conda: -```bash -conda install -c conda-forge xnemogcm -``` - -## Requirements for dev - -We use *poetry* to set up a virtual environment containing all -needed packages to run xnemogcm and the tests. -To install all the dependencies, type `poetry install --with test,dev` -after cloning the directory. This will create a new virtual environment. -Typing `poetry shell` in the package directory will activate the virtual environment. - -### About test data - -Test data are based on the GYRE configuration, and produced by another repository: -[rcaneill/xnemogcm_test_data](https://github.com/rcaneill/xnemogcm_test_data). -Testing is built in a way that it is quite easy to add other nemo version to test. - -### About notebooks examples - -Sources for the notebooks are located in `src_example`. This is where to add / modify the -examples. A github action is set to automatically build the notebook according to -the latest version of the code, and publish them to `example` when commiting to master branch. - - -## What's new - -### v0.4.2 (2023-08-07) -* Allow additional dimension names occurring when variables on inner grid are diagnosed, e.g. `x_grid_U_inner` or `x_grid_U`. -* Add coordinates into the DataArrays -* Add some standard names and units in domcfg - -### v0.4.1 (2023-03-29) -* Allow to open files if time bounds are missing -* Minor bug correction for nemo 3.6 -* Add nemo 3.6 and 4.2.0 test data -* Update code to support nemo 3.6 and 4.2.0 - -### v0.4.0 (2022-12-08) -* Optimize speed -* Add option to decode grid type from attributes -* Shift from pipenv and setupy.py to poetry -* Refactor data test to allow testing of multiple version of NEMO - -### v0.3.4 (2021-06-15) -* Adding some example -* Bug fixes -* Add option to compute extra scale factors - -### v0.3.2 - v0.3.3 (2021-05-05) -* By default adds the lat/lon/depth variables of domcfg as coordinates - -### v0.3.1 (2021-05-04) -* Minor bug fix when merging -* better squeezing of time in domcfg + nemo v3.6 compatibility - -### v0.3.0 (2021-04-13) -* Cleaning the backend -* Removing the saving options (that were useless and confusing) -* Minor bug fixes -* Tested with realistic regional configuration - -### v0.2.3 (2021-03-15) -* Support for surface only files -* Reshaping the data files for the tests (dev) +[The full documentation is hosted online: +[https://xnemogcm.readthedocs.io/](https://xnemogcm.readthedocs.io/) diff --git a/docs/Makefile b/docs/Makefile deleted file mode 100644 index d4bb2cb..0000000 --- a/docs/Makefile +++ /dev/null @@ -1,20 +0,0 @@ -# Minimal makefile for Sphinx documentation -# - -# You can set these variables from the command line, and also -# from the environment for the first two. -SPHINXOPTS ?= -SPHINXBUILD ?= sphinx-build -SOURCEDIR = . -BUILDDIR = _build - -# Put it first so that "make" without argument is like "make help". -help: - @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) - -.PHONY: help Makefile - -# Catch-all target: route all unknown targets to Sphinx using the new -# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). -%: Makefile - @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/docs/api.md b/docs/api.md new file mode 100644 index 0000000..658d9c9 --- /dev/null +++ b/docs/api.md @@ -0,0 +1,3 @@ +# Reference + +::: xnemogcm diff --git a/docs/conf.py b/docs/conf.py deleted file mode 100644 index b377961..0000000 --- a/docs/conf.py +++ /dev/null @@ -1,54 +0,0 @@ -# Configuration file for the Sphinx documentation builder. -# -# This file only contains a selection of the most common options. For a full -# list see the documentation: -# https://www.sphinx-doc.org/en/master/usage/configuration.html - -# -- Path setup -------------------------------------------------------------- - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -# -# import os -# import sys -# sys.path.insert(0, os.path.abspath('.')) - - -# -- Project information ----------------------------------------------------- - -project = "xnemogcm" -copyright = "2020, Romain Caneill" -author = "Romain Caneill" - -# The full version, including alpha/beta/rc tags -release = "0.0.0" - - -# -- General configuration --------------------------------------------------- - -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# ones. -extensions = [] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ["_templates"] - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -# This pattern also affects html_static_path and html_extra_path. -exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"] - - -# -- Options for HTML output ------------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -# -html_theme = "alabaster" - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ["_static"] diff --git a/docs/dev.md b/docs/dev.md new file mode 100644 index 0000000..d2a43a4 --- /dev/null +++ b/docs/dev.md @@ -0,0 +1,13 @@ +## Requirements for dev + +We use *poetry* to set up a virtual environment containing all +needed packages to run xnemogcm and the tests. +To install all the dependencies, type `poetry install --with test,dev,docs` +after cloning the directory. This will create a new virtual environment. +Typing `poetry shell` in the package directory will activate the virtual environment. + +## About test data + +Test data are based on the GYRE configuration, and produced by another repository: +[rcaneill/xnemogcm_test_data](https://github.com/rcaneill/xnemogcm_test_data). +Testing is built in a way that it is quite easy to add other nemo version to test. diff --git a/docs/examples/compute_metrics.ipynb b/docs/examples/compute_metrics.ipynb new file mode 100644 index 0000000..e9f7028 --- /dev/null +++ b/docs/examples/compute_metrics.ipynb @@ -0,0 +1,163 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "9975d773-21bd-40e2-8795-38e70753bd05", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "from pathlib import Path\n", + "\n", + "from xnemogcm import open_nemo_and_domain_cfg\n", + "from xnemogcm.metrics import compute_missing_metrics\n", + "from xnemogcm import __version__ as xnemogcm_version" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f4d1aa0c-e02a-4999-aaeb-88cdf14a8adf", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "print(xnemogcm_version)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3d452d15-99de-4dda-a18b-907cace8688a", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "datadir = Path('../../xnemogcm/test/data/4.2.0/open_and_merge/')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "51096969-6558-493c-95ae-e3b82b57cb02", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "ds = open_nemo_and_domain_cfg(nemo_files=datadir, domcfg_files=datadir)\n", + "print(ds)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b4958894-950c-4150-a312-9b70a94c4387", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "help(compute_missing_metrics)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2f5c7a41-ad3d-43f0-baf0-6cfb4fbbb761", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# If you just want to get a copy\n", + "print(\n", + " compute_missing_metrics(ds.copy())\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "613b9c7a-724b-4185-856e-70cb9e5364d2", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# If you just want to add the scale factor inplace\n", + "compute_missing_metrics(ds)\n", + "print(ds)" + ] + }, + { + "cell_type": "markdown", + "id": "651306d8-2f5c-4c64-9942-461e04756e0c", + "metadata": {}, + "source": [ + "It is also possible to compute the time constant metrics, i.e. the e3x_0" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "aa9bc4a4-8194-4cc5-9bcf-c7cd08bf7cd1", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "print(\n", + " compute_missing_metrics(ds.copy(), time_varying=False)\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "69e30349-cbf9-45cb-bd53-6b2123d6c9c2", + "metadata": {}, + "source": [ + "And it is possible to only compute a subset of the possible metrics" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b190b080-d2ad-444e-b25f-429ae51028fc", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "print(\n", + " compute_missing_metrics(ds.drop_vars(['e3u', 'e3v', 'e3f', 'e3w']).copy(), all_scale_factors=['e3u'])\n", + ")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/examples/open_process_files.ipynb b/docs/examples/open_process_files.ipynb new file mode 100644 index 0000000..2409f3e --- /dev/null +++ b/docs/examples/open_process_files.ipynb @@ -0,0 +1,358 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "d4baf777-28bc-42a2-95d9-714e62b9fa84", + "metadata": {}, + "source": [ + "Start by importing the functions" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6e326e37-4bfa-4111-bde4-5f3587ab1edd", + "metadata": {}, + "outputs": [], + "source": [ + "from pathlib import Path\n", + "\n", + "from xnemogcm import open_domain_cfg, open_nemo, process_nemo, open_namelist, open_nemo_and_domain_cfg\n", + "from xnemogcm import __version__ as xnemogcm_version" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c6f5571a-61ec-408f-8eae-6dee765ee048", + "metadata": {}, + "outputs": [], + "source": [ + "xnemogcm_version" + ] + }, + { + "cell_type": "markdown", + "id": "cf68f882-90a2-420a-b5b5-ceded0c96420", + "metadata": {}, + "source": [ + "## First open the domain_cfg and nemo files into 2 datasets\n", + "### domain" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3928df5c-06c9-4f4b-a85a-c4fad3170903", + "metadata": {}, + "outputs": [], + "source": [ + "help(open_domain_cfg)" + ] + }, + { + "cell_type": "markdown", + "id": "add13a99-a665-4d2b-822a-436740a9709a", + "metadata": {}, + "source": [ + "---\n", + "\n", + "You can provide the file names / folder using 3 similar methods:\n", + "1. Give the path to the files and xnemogcm opens the domain_cfg_out and mesh_mesk files\n", + "2. Give the path to the data folder + the name of the files\n", + "3. Give the name of the files that already contain the tree (e.g. ['/path/to/file1', '/path/to/file2']\n", + "\n", + "These 3 methods are equivalent, however if your domain files don't have the strandard names you need to provide them by hand.\n", + "\n", + "We use one of the test folder:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2ee3aa40-af70-4150-a7e6-ea6f690f364f", + "metadata": {}, + "outputs": [], + "source": [ + "datadir = Path('../../xnemogcm/test/data/4.2.0/open_and_merge/')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fc2b9b94-5106-427d-9d44-59044cec476a", + "metadata": {}, + "outputs": [], + "source": [ + "!ls ../xnemogcm/test/data/4.2.0/open_and_merge/" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5cd1ee94-3ac2-4d95-9610-ea651583af39", + "metadata": {}, + "outputs": [], + "source": [ + "domcfg = open_domain_cfg(datadir=datadir)\n", + "# or\n", + "domcfg = open_domain_cfg(datadir=datadir, files=['mesh_mask.nc'])\n", + "# or\n", + "domcfg = open_domain_cfg(files=datadir.glob('*mesh_mask*.nc'))\n", + "domcfg" + ] + }, + { + "cell_type": "markdown", + "id": "58fde32f-9f84-47f0-90e5-2590d6664ac5", + "metadata": {}, + "source": [ + "### Nemo\n", + "\n", + "2 options here: 1) open netcdf files and make the preprocess automatically with `open_nemo` or 2) open by hand the files (or retrieve them from anywhere, e.g. zarr on a remote) and process using `process_nemo`.\n", + "\n", + "Note: `open_nemo` internally uses `process_nemo`.\n", + "\n", + "#### open_nemo" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6fa2e261-a188-4973-ad6e-6381017ab5bc", + "metadata": {}, + "outputs": [], + "source": [ + "help(open_nemo)" + ] + }, + { + "cell_type": "markdown", + "id": "3bc66d2b-a497-4394-a28f-80ac98587e3a", + "metadata": {}, + "source": [ + "---\n", + "We can provide the files folder / name following the same convention as for the `open_domain_cfg` function. We also need to provide the `domcfg` dataset so xnemogcm knows how to set the variables on the proper grid position. We can also provide extra kwargs to the underlying call to `xarray.open_mfdataset` function." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9e5a0b8c-7199-46d2-9231-273fc57355f5", + "metadata": {}, + "outputs": [], + "source": [ + "nemo = open_nemo(domcfg=domcfg, datadir=datadir)\n", + "# or\n", + "nemo = open_nemo(domcfg=domcfg, files=datadir.glob('*grid*.nc'))\n", + "# or, using attributes from dataset and not name\n", + "datadir2 = Path('../../xnemogcm/test/data/4.2.0/nemo_no_grid_in_filename/')\n", + "nemo = open_nemo(\n", + " domcfg=domcfg, files=[\n", + " datadir2 / 'T.nc',\n", + " datadir2 / 'U.nc',\n", + " datadir2 / 'V.nc',\n", + " datadir2 / 'W.nc'\n", + " ]\n", + ")\n", + "nemo" + ] + }, + { + "cell_type": "markdown", + "id": "72017af7-df86-4f61-b2e4-e9ce2826fcd3", + "metadata": {}, + "source": [ + "#### process_nemo" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e64f0c2a-fe6a-465e-b8c2-8df7db3ea0bb", + "metadata": {}, + "outputs": [], + "source": [ + "help(process_nemo)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "19b9bd17-e1f4-4be3-8039-7d02311238b0", + "metadata": {}, + "outputs": [], + "source": [ + "import xarray as xr\n", + "datadir2 = Path('../../xnemogcm/test/data/4.2.0/nemo_no_grid_in_filename/')\n", + "nemo = process_nemo(\n", + " positions=[\n", + " (xr.open_dataset(datadir2 / 'T.nc'), 'T'),\n", + " (xr.open_dataset(datadir2 / 'U.nc'), 'U'),\n", + " (xr.open_dataset(datadir2 / 'V.nc'), 'V'),\n", + " (xr.open_dataset(datadir2 / 'W.nc'), 'W')\n", + " ],\n", + " domcfg=domcfg\n", + ")\n", + "# or, if the datasets contain the attribute 'description'\n", + "nemo = process_nemo(\n", + " positions=[\n", + " (xr.open_dataset(datadir2 / 'T.nc'), None),\n", + " (xr.open_dataset(datadir2 / 'U.nc'), None),\n", + " (xr.open_dataset(datadir2 / 'V.nc'), None),\n", + " (xr.open_dataset(datadir2 / 'W.nc'), None)\n", + " ],\n", + " domcfg=domcfg\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "90ab171c-d3d3-4c8e-897a-3b18a749390f", + "metadata": {}, + "source": [ + "## Open both at once\n", + "\n", + "It is possible to open the domain and nemo output at once in one unique dataset. What happens is that 2 datasets are created and then merged. Thus all option possible for the `open_nemo` and `open_domain_cfg` functions are still possible." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c3130a23-e65a-4097-a12d-cf41110a0836", + "metadata": {}, + "outputs": [], + "source": [ + "help(open_nemo_and_domain_cfg)" + ] + }, + { + "cell_type": "markdown", + "id": "94f9a258-8204-48dd-9c78-c2859461b113", + "metadata": {}, + "source": [ + "---\n", + "Again, mutiple equivalent arguments are possible to open the data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "361b5317-a173-4442-a7ec-7f70466d2eb3", + "metadata": {}, + "outputs": [], + "source": [ + "# the simplest for simple cases, provide the path\n", + "ds = open_nemo_and_domain_cfg(nemo_files=datadir, domcfg_files=datadir)\n", + "# or provide the files\n", + "ds = open_nemo_and_domain_cfg(nemo_files=datadir.glob('*grid*.nc'), domcfg_files=datadir.glob('*mesh*.nc'))\n", + "# or use the nemo_kwargs and domcfg_kwargs dictionnaries\n", + "ds = open_nemo_and_domain_cfg(nemo_kwargs=dict(datadir=datadir), domcfg_kwargs={'files':datadir.glob('*mesh*.nc')})\n", + "ds" + ] + }, + { + "cell_type": "markdown", + "id": "8bd99220-6f03-476d-9621-36499e9ffedc", + "metadata": {}, + "source": [ + "### Remark\n", + "\n", + "All opening are lazy using dask, which makes files quick to open, until you actually load the data you need" + ] + }, + { + "cell_type": "markdown", + "id": "ea964e50-68db-4394-baec-4b3c5fb90b3e", + "metadata": {}, + "source": [ + "## Namelist\n", + "\n", + "It can be convenient to open the namelist used for the run (e.g. to compare different runs with different parameters). This is possible using the `f90nml` package (it needs to be installed, this is an optional dependency)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8a6cb055-e2c2-4d37-be4e-3684b0f12a71", + "metadata": {}, + "outputs": [], + "source": [ + "help(open_namelist)" + ] + }, + { + "cell_type": "markdown", + "id": "c81264ec-2a59-43b6-adfc-b2c19ba96b49", + "metadata": {}, + "source": [ + "---\n", + "Here you provide the folder path containing the reference and configuration namelists, or the filenames (as for nemo and domcfg). You can choose to load both, or only one of them. The configration namelist will overwrite the default one.\n", + "\n", + "For this we need to use another folder of the test data (with simplified namelists for the exemple):" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1fc7b7ba-cedf-4ebe-8105-de09edcbb7bf", + "metadata": {}, + "outputs": [], + "source": [ + "datadir = Path('../../xnemogcm/test/data/namelist/')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f413ca78-2d0f-48fd-b9d5-427c4b8ca4b3", + "metadata": {}, + "outputs": [], + "source": [ + "!ls ../xnemogcm/test/data/namelist/" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "feabb3f4-f9b7-4092-b423-22db9cae36a1", + "metadata": {}, + "outputs": [], + "source": [ + "nam = open_namelist(datadir)\n", + "nam" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8c51560d-1f06-4192-997a-db0f89629557", + "metadata": {}, + "outputs": [], + "source": [ + "nam.nn_it000" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/examples/recombing_mesh_mask_domain_cfg.ipynb b/docs/examples/recombing_mesh_mask_domain_cfg.ipynb new file mode 100644 index 0000000..bcddb89 --- /dev/null +++ b/docs/examples/recombing_mesh_mask_domain_cfg.ipynb @@ -0,0 +1,130 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "41aec3c0-ece5-4ba1-b47f-d7a6d67b0860", + "metadata": {}, + "source": [ + "Start by importing the functions" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "18606253-a4d5-4f6a-9da8-7dfd96b72bea", + "metadata": {}, + "outputs": [], + "source": [ + "from pathlib import Path\n", + "\n", + "from xnemogcm import open_domain_cfg, open_nemo_and_domain_cfg\n", + "from xnemogcm import __version__ as xnemogcm_version" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "84a7b456-0689-4cc7-b497-c41ea62ad477", + "metadata": {}, + "outputs": [], + "source": [ + "xnemogcm_version" + ] + }, + { + "cell_type": "markdown", + "id": "96f57a3d-4035-4c7b-acb5-5ae843eb87fd", + "metadata": {}, + "source": [ + "By default nemo outputs a mesh_mask / domain_cfg file per computing processor, if the namelist parameter is set on .true.:\n", + "\n", + "* `ln_write_cfg = .true.` to output the domain_cfg if created analyticaly in the usrdef_zgr.F90 and usrdef_hgr.F90 files\n", + "* `ln_meshmask = .true.` to output the mesh_mask files (that also contain the masks)\n", + "\n", + "While it is possible to recombine the files using the nemo fortran toolbox, xnemogcm can also recombine them easily.\n", + "\n", + "To illustrate this, we use a data folder from the test data:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7e7eb827-e9ff-4652-8e11-c3ad01b1a65e", + "metadata": {}, + "outputs": [], + "source": [ + "datadir = Path('../xnemogcm/test/data/4.2.0/mesh_mask_multi_files/')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9874f77d-9755-4881-afaf-0fe72f61950e", + "metadata": {}, + "outputs": [], + "source": [ + "!ls ../xnemogcm/test/data/4.2.0/mesh_mask_multi_files/" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "193b27f6-8421-4cbd-be2e-228a8705a792", + "metadata": {}, + "outputs": [], + "source": [ + "domcfg = open_domain_cfg(datadir=datadir)\n", + "domcfg" + ] + }, + { + "cell_type": "markdown", + "id": "475a6a89-9353-4c11-b49f-f0874b304546", + "metadata": {}, + "source": [ + "We verify that the variables are the same than when opening a unique full mesh_mask file." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1143759e-b37e-4352-b05c-bad53db8a3b2", + "metadata": {}, + "outputs": [], + "source": [ + "domcfg_1_file = open_domain_cfg(datadir=Path('../xnemogcm/test/data/4.2.0/mesh_mask_1_file/'), files=['mesh_mask.nc'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "771405fe-0fef-4bce-a760-bd3d2463b831", + "metadata": {}, + "outputs": [], + "source": [ + "domcfg_1_file.equals(domcfg)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..623f80b --- /dev/null +++ b/docs/index.md @@ -0,0 +1,56 @@ +# xnemogcm + +[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.5724577.svg)](https://doi.org/10.5281/zenodo.5724577) +![ci](https://github.com/rcaneill/xnemogcm/actions/workflows/ci.yml/badge.svg) +![pypi](https://badge.fury.io/py/xnemogcm.svg) +![anaconda badge](https://anaconda.org/conda-forge/xnemogcm/badges/version.svg) + +Interface to open NEMO ocean global circulation model output dataset and create a xgcm grid. +NEMO 3.6, 4.0, and 4.2.0 are tested and supported. Any version between 3.6 and 4.2.0 should work, +but in case of trouble, [please open an issue](https://github.com/rcaneill/xnemogcm/issues). + +If you wish to contribute but don't have a github account, send me an email with your questions or comments: `romain [dot] caneill [at] ens-lyon [.] org` + +## Usage + +```python +from pathlib import Path +from xnemogcm import open_nemo_and_domain_cfg + +ds = open_nemo_and_domain_cfg( + nemo_files='/path/to/output/files', + domcfg_files='/path/to/domain_cfg/mesh_mask/files' +) + +# Interface with xgcm +from xnemogcm import get_metrics +import xgcm +grid = xgcm.Grid(ds, metrics=get_metrics(ds), periodic=False) +``` + +## Examples + +`xnemocgm` is able to process xarray.Datasets (e.g. they could be retrieved from a remote server), +and can get information of the variables grid points with multiple options: +see [examples/open_process_files](examples/open_process_files). + +`xnemogcm` is capable or recombining the domain_cfg and mesh_mask files output +by multiple processors, +the recombining tool from the NEMO toolbox is thus not needed here: see +[examples/recombing_mesh_mask_domain_cfg](examples/recombing_mesh_mask_domain_cfg). + +`xnemogcm` has a minimum capability of computing missing metrics +(scale factors): see [examples/compute_metrics](examples/compute_metrics). + + +## Installation + +Installation via pip: +```bash +pip3 install xnemogcm +``` + +Installation via conda: +```bash +conda install -c conda-forge xnemogcm +``` diff --git a/docs/index.rst b/docs/index.rst deleted file mode 100644 index 7572fd1..0000000 --- a/docs/index.rst +++ /dev/null @@ -1,20 +0,0 @@ -.. xnemogcm documentation master file, created by - sphinx-quickstart on Fri Feb 7 09:48:55 2020. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - -Welcome to xnemogcm's documentation! -==================================== - -.. toctree:: - :maxdepth: 2 - :caption: Contents: - - - -Indices and tables -================== - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` diff --git a/docs/make.bat b/docs/make.bat deleted file mode 100644 index 2119f51..0000000 --- a/docs/make.bat +++ /dev/null @@ -1,35 +0,0 @@ -@ECHO OFF - -pushd %~dp0 - -REM Command file for Sphinx documentation - -if "%SPHINXBUILD%" == "" ( - set SPHINXBUILD=sphinx-build -) -set SOURCEDIR=. -set BUILDDIR=_build - -if "%1" == "" goto help - -%SPHINXBUILD% >NUL 2>NUL -if errorlevel 9009 ( - echo. - echo.The 'sphinx-build' command was not found. Make sure you have Sphinx - echo.installed, then set the SPHINXBUILD environment variable to point - echo.to the full path of the 'sphinx-build' executable. Alternatively you - echo.may add the Sphinx directory to PATH. - echo. - echo.If you don't have Sphinx installed, grab it from - echo.http://sphinx-doc.org/ - exit /b 1 -) - -%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% -goto end - -:help -%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% - -:end -popd diff --git a/docs/new.md b/docs/new.md new file mode 100644 index 0000000..0d28161 --- /dev/null +++ b/docs/new.md @@ -0,0 +1,44 @@ +# What's new + +### (unreleased) +* Rework doc: set up readthedocs +* Drop python 3.8 + +### v0.4.2 (2023-08-07) +* Allow additional dimension names occurring when variables on inner grid are diagnosed, e.g. `x_grid_U_inner` or `x_grid_U`. +* Add coordinates into the DataArrays +* Add some standard names and units in domcfg + +### v0.4.1 (2023-03-29) +* Allow to open files if time bounds are missing +* Minor bug correction for nemo 3.6 +* Add nemo 3.6 and 4.2.0 test data +* Update code to support nemo 3.6 and 4.2.0 + +### v0.4.0 (2022-12-08) +* Optimize speed +* Add option to decode grid type from attributes +* Shift from pipenv and setupy.py to poetry +* Refactor data test to allow testing of multiple version of NEMO + +### v0.3.4 (2021-06-15) +* Adding some example +* Bug fixes +* Add option to compute extra scale factors + +### v0.3.2 - v0.3.3 (2021-05-05) +* By default adds the lat/lon/depth variables of domcfg as coordinates + +### v0.3.1 (2021-05-04) +* Minor bug fix when merging +* better squeezing of time in domcfg + nemo v3.6 compatibility + +### v0.3.0 (2021-04-13) +* Cleaning the backend +* Removing the saving options (that were useless and confusing) +* Minor bug fixes +* Tested with realistic regional configuration + +### v0.2.3 (2021-03-15) +* Support for surface only files +* Reshaping the data files for the tests (dev) diff --git a/example/compute_metrics.ipynb b/example/compute_metrics.ipynb deleted file mode 100644 index 7dead2f..0000000 --- a/example/compute_metrics.ipynb +++ /dev/null @@ -1,558 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "9975d773-21bd-40e2-8795-38e70753bd05", - "metadata": { - "execution": { - "iopub.execute_input": "2023-08-07T10:07:16.531363Z", - "iopub.status.busy": "2023-08-07T10:07:16.531167Z", - "iopub.status.idle": "2023-08-07T10:07:17.098487Z", - "shell.execute_reply": "2023-08-07T10:07:17.097919Z" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "from pathlib import Path\n", - "\n", - "from xnemogcm import open_nemo_and_domain_cfg\n", - "from xnemogcm.metrics import compute_missing_metrics\n", - "from xnemogcm import __version__ as xnemogcm_version" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "f4d1aa0c-e02a-4999-aaeb-88cdf14a8adf", - "metadata": { - "execution": { - "iopub.execute_input": "2023-08-07T10:07:17.101708Z", - "iopub.status.busy": "2023-08-07T10:07:17.101179Z", - "iopub.status.idle": "2023-08-07T10:07:17.105138Z", - "shell.execute_reply": "2023-08-07T10:07:17.104628Z" - }, - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.4.2\n" - ] - } - ], - "source": [ - "print(xnemogcm_version)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "3d452d15-99de-4dda-a18b-907cace8688a", - "metadata": { - "execution": { - "iopub.execute_input": "2023-08-07T10:07:17.107704Z", - "iopub.status.busy": "2023-08-07T10:07:17.107281Z", - "iopub.status.idle": "2023-08-07T10:07:17.110119Z", - "shell.execute_reply": "2023-08-07T10:07:17.109565Z" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "datadir = Path('../xnemogcm/test/data/4.2.0/open_and_merge/')" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "51096969-6558-493c-95ae-e3b82b57cb02", - "metadata": { - "execution": { - "iopub.execute_input": "2023-08-07T10:07:17.112267Z", - "iopub.status.busy": "2023-08-07T10:07:17.111986Z", - "iopub.status.idle": "2023-08-07T10:07:17.614474Z", - "shell.execute_reply": "2023-08-07T10:07:17.613978Z" - }, - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Dimensions: (z_c: 4, axis_nbounds: 2, t: 1, y_c: 22, x_c: 32,\n", - " x_f: 32, y_f: 22, z_f: 4)\n", - "Coordinates: (12/20)\n", - " * z_c (z_c) int64 0 1 2 3\n", - " time_centered (t) object dask.array\n", - " * t (t) object 0001-07-01 00:00:00\n", - " * x_c (x_c) int64 0 1 2 3 4 5 6 7 ... 25 26 27 28 29 30 31\n", - " * y_c (y_c) int64 0 1 2 3 4 5 6 7 ... 15 16 17 18 19 20 21\n", - " gdept_1d (z_c) float64 dask.array\n", - " ... ...\n", - " glamv (y_f, x_c) float64 dask.array\n", - " * z_f (z_f) float64 -0.5 0.5 1.5 2.5\n", - " gdepw_1d (z_f) float64 dask.array\n", - " gdepw_0 (z_f, y_c, x_c) float64 dask.array\n", - " glamf (y_f, x_f) float64 dask.array\n", - " gphif (y_f, x_f) float64 dask.array\n", - "Dimensions without coordinates: axis_nbounds\n", - "Data variables: (12/43)\n", - " deptht_bounds (z_c, axis_nbounds) float32 dask.array\n", - " time_centered_bounds (t, axis_nbounds) object dask.array\n", - " t_bounds (t, axis_nbounds) object dask.array\n", - " toce (t, z_c, y_c, x_c) float32 dask.array\n", - " soce (t, z_c, y_c, x_c) float32 dask.array\n", - " e3t (t, z_c, y_c, x_c) float32 dask.array\n", - " ... ...\n", - " e3u_0 (z_c, y_c, x_f) float64 dask.array\n", - " e3v_0 (z_c, y_f, x_c) float64 dask.array\n", - " e3f_0 (z_c, y_f, x_f) float64 dask.array\n", - " e3w_0 (z_f, y_c, x_c) float64 dask.array\n", - " e3uw_0 (z_f, y_c, x_f) float64 dask.array\n", - " e3vw_0 (z_f, y_f, x_c) float64 dask.array\n", - "Attributes: (12/18)\n", - " Conventions: CF-1.6\n", - " timeStamp: 2023-Mar-28 10:42:16 GMT\n", - " name: NEMO dataset\n", - " description: Ocean grid variables, set on the proper positions\n", - " title: Ocean grid variables\n", - " DOMAIN_dimensions_ids: [1 2]\n", - " ... ...\n", - " Iperio: 0\n", - " Jperio: 0\n", - " NFold: 0\n", - " NFtype: -\n", - " VertCoord: zco\n", - " IsfCav: 0\n" - ] - } - ], - "source": [ - "ds = open_nemo_and_domain_cfg(nemo_files=datadir, domcfg_files=datadir)\n", - "print(ds)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "b4958894-950c-4150-a312-9b70a94c4387", - "metadata": { - "execution": { - "iopub.execute_input": "2023-08-07T10:07:17.617205Z", - "iopub.status.busy": "2023-08-07T10:07:17.616905Z", - "iopub.status.idle": "2023-08-07T10:07:17.621377Z", - "shell.execute_reply": "2023-08-07T10:07:17.620799Z" - }, - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Help on function compute_missing_metrics in module xnemogcm.metrics:\n", - "\n", - "compute_missing_metrics(ds, all_scale_factors=['e3t', 'e3u', 'e3v', 'e3f', 'e3w', 'e3uw', 'e3vw', 'e3fw'], time_varying=True, periodic=False)\n", - " Add all possible scale factors to the dataset.\n", - " \n", - " For the moment, e3t (or e3t_0) at least needs to be present in the dataset\n", - " for the time_varying=True (time_varying=False) case.\n", - " If e3t_0 is not found (e.g. for nemo 3.6), it will raise a warning and use e3t_1d\n", - " (this will lead to wrong results if terrain-following coordinates are used).\n", - " \n", - " May have some boundary issues.\n", - " \n", - " Will add the metrics to the given dataset. To avoid this, use a ds.copy()\n", - " \n", - " Parameters\n", - " ----------\n", - " ds : xarray.Dataset\n", - " dataset containing the scale factors. Must be xgcm compatible (e.g. opened with xnemogcm)\n", - " all_scale_factors : list\n", - " list of the scale factors to compute (nothing is done for the scale factors\n", - " already present in *ds*)\n", - " Must be a sublist of: ['e3t', 'e3u', 'e3v', 'e3f', 'e3w', 'e3uw', 'e3vw', 'e3fw']\n", - " time_varying : bool\n", - " Whether to use the time varying scale factors (True) of the constant ones (False, 'e3x_0')\n", - " \n", - " Returns\n", - " -------\n", - " the new dataset with the scale factors added\n", - "\n" - ] - } - ], - "source": [ - "help(compute_missing_metrics)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "2f5c7a41-ad3d-43f0-baf0-6cfb4fbbb761", - "metadata": { - "execution": { - "iopub.execute_input": "2023-08-07T10:07:17.623880Z", - "iopub.status.busy": "2023-08-07T10:07:17.623446Z", - "iopub.status.idle": "2023-08-07T10:07:17.706714Z", - "shell.execute_reply": "2023-08-07T10:07:17.706094Z" - }, - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Dimensions: (z_c: 4, axis_nbounds: 2, t: 1, y_c: 22, x_c: 32,\n", - " x_f: 32, y_f: 22, z_f: 4)\n", - "Coordinates: (12/20)\n", - " * z_c (z_c) int64 0 1 2 3\n", - " time_centered (t) object dask.array\n", - " * t (t) object 0001-07-01 00:00:00\n", - " * x_c (x_c) int64 0 1 2 3 4 5 6 7 ... 25 26 27 28 29 30 31\n", - " * y_c (y_c) int64 0 1 2 3 4 5 6 7 ... 15 16 17 18 19 20 21\n", - " gdept_1d (z_c) float64 dask.array\n", - " ... ...\n", - " glamv (y_f, x_c) float64 dask.array\n", - " * z_f (z_f) float64 -0.5 0.5 1.5 2.5\n", - " gdepw_1d (z_f) float64 dask.array\n", - " gdepw_0 (z_f, y_c, x_c) float64 dask.array\n", - " glamf (y_f, x_f) float64 dask.array\n", - " gphif (y_f, x_f) float64 dask.array\n", - "Dimensions without coordinates: axis_nbounds\n", - "Data variables: (12/47)\n", - " deptht_bounds (z_c, axis_nbounds) float32 dask.array\n", - " time_centered_bounds (t, axis_nbounds) object dask.array\n", - " t_bounds (t, axis_nbounds) object dask.array\n", - " toce (t, z_c, y_c, x_c) float32 dask.array\n", - " soce (t, z_c, y_c, x_c) float32 dask.array\n", - " e3t (t, z_c, y_c, x_c) float32 dask.array\n", - " ... ...\n", - " e3uw_0 (z_f, y_c, x_f) float64 dask.array\n", - " e3vw_0 (z_f, y_f, x_c) float64 dask.array\n", - " e3f (t, z_c, y_f, x_f) float32 dask.array\n", - " e3uw (t, z_f, y_c, x_f) float32 dask.array\n", - " e3vw (t, z_f, y_f, x_c) float32 dask.array\n", - " e3fw (t, z_f, y_f, x_f) float32 dask.array\n", - "Attributes: (12/18)\n", - " Conventions: CF-1.6\n", - " timeStamp: 2023-Mar-28 10:42:16 GMT\n", - " name: NEMO dataset\n", - " description: Ocean grid variables, set on the proper positions\n", - " title: Ocean grid variables\n", - " DOMAIN_dimensions_ids: [1 2]\n", - " ... ...\n", - " Iperio: 0\n", - " Jperio: 0\n", - " NFold: 0\n", - " NFtype: -\n", - " VertCoord: zco\n", - " IsfCav: 0\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/runner/work/xnemogcm/xnemogcm/xnemogcm/metrics.py:63: UserWarning: This function is in pre-phase. Do not expect a high precision, but a good estimate. Some boundary issues may arise.\n", - " warn(\n" - ] - } - ], - "source": [ - "# If you just want to get a copy\n", - "print(\n", - " compute_missing_metrics(ds.copy())\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "613b9c7a-724b-4185-856e-70cb9e5364d2", - "metadata": { - "execution": { - "iopub.execute_input": "2023-08-07T10:07:17.710053Z", - "iopub.status.busy": "2023-08-07T10:07:17.709854Z", - "iopub.status.idle": "2023-08-07T10:07:17.752723Z", - "shell.execute_reply": "2023-08-07T10:07:17.752250Z" - }, - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Dimensions: (z_c: 4, axis_nbounds: 2, t: 1, y_c: 22, x_c: 32,\n", - " x_f: 32, y_f: 22, z_f: 4)\n", - "Coordinates: (12/20)\n", - " * z_c (z_c) int64 0 1 2 3\n", - " time_centered (t) object dask.array\n", - " * t (t) object 0001-07-01 00:00:00\n", - " * x_c (x_c) int64 0 1 2 3 4 5 6 7 ... 25 26 27 28 29 30 31\n", - " * y_c (y_c) int64 0 1 2 3 4 5 6 7 ... 15 16 17 18 19 20 21\n", - " gdept_1d (z_c) float64 dask.array\n", - " ... ...\n", - " glamv (y_f, x_c) float64 dask.array\n", - " * z_f (z_f) float64 -0.5 0.5 1.5 2.5\n", - " gdepw_1d (z_f) float64 dask.array\n", - " gdepw_0 (z_f, y_c, x_c) float64 dask.array\n", - " glamf (y_f, x_f) float64 dask.array\n", - " gphif (y_f, x_f) float64 dask.array\n", - "Dimensions without coordinates: axis_nbounds\n", - "Data variables: (12/47)\n", - " deptht_bounds (z_c, axis_nbounds) float32 dask.array\n", - " time_centered_bounds (t, axis_nbounds) object dask.array\n", - " t_bounds (t, axis_nbounds) object dask.array\n", - " toce (t, z_c, y_c, x_c) float32 dask.array\n", - " soce (t, z_c, y_c, x_c) float32 dask.array\n", - " e3t (t, z_c, y_c, x_c) float32 dask.array\n", - " ... ...\n", - " e3uw_0 (z_f, y_c, x_f) float64 dask.array\n", - " e3vw_0 (z_f, y_f, x_c) float64 dask.array\n", - " e3f (t, z_c, y_f, x_f) float32 dask.array\n", - " e3uw (t, z_f, y_c, x_f) float32 dask.array\n", - " e3vw (t, z_f, y_f, x_c) float32 dask.array\n", - " e3fw (t, z_f, y_f, x_f) float32 dask.array\n", - "Attributes: (12/18)\n", - " Conventions: CF-1.6\n", - " timeStamp: 2023-Mar-28 10:42:16 GMT\n", - " name: NEMO dataset\n", - " description: Ocean grid variables, set on the proper positions\n", - " title: Ocean grid variables\n", - " DOMAIN_dimensions_ids: [1 2]\n", - " ... ...\n", - " Iperio: 0\n", - " Jperio: 0\n", - " NFold: 0\n", - " NFtype: -\n", - " VertCoord: zco\n", - " IsfCav: 0\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/runner/work/xnemogcm/xnemogcm/xnemogcm/metrics.py:63: UserWarning: This function is in pre-phase. Do not expect a high precision, but a good estimate. Some boundary issues may arise.\n", - " warn(\n" - ] - } - ], - "source": [ - "# If you just want to add the scale factor inplace\n", - "compute_missing_metrics(ds)\n", - "print(ds)" - ] - }, - { - "cell_type": "markdown", - "id": "651306d8-2f5c-4c64-9942-461e04756e0c", - "metadata": {}, - "source": [ - "It is also possible to compute the time constant metrics, i.e. the e3x_0" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "aa9bc4a4-8194-4cc5-9bcf-c7cd08bf7cd1", - "metadata": { - "execution": { - "iopub.execute_input": "2023-08-07T10:07:17.756203Z", - "iopub.status.busy": "2023-08-07T10:07:17.755789Z", - "iopub.status.idle": "2023-08-07T10:07:17.774744Z", - "shell.execute_reply": "2023-08-07T10:07:17.774148Z" - }, - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Dimensions: (z_c: 4, axis_nbounds: 2, t: 1, y_c: 22, x_c: 32,\n", - " x_f: 32, y_f: 22, z_f: 4)\n", - "Coordinates: (12/20)\n", - " * z_c (z_c) int64 0 1 2 3\n", - " time_centered (t) object dask.array\n", - " * t (t) object 0001-07-01 00:00:00\n", - " * x_c (x_c) int64 0 1 2 3 4 5 6 7 ... 25 26 27 28 29 30 31\n", - " * y_c (y_c) int64 0 1 2 3 4 5 6 7 ... 15 16 17 18 19 20 21\n", - " gdept_1d (z_c) float64 dask.array\n", - " ... ...\n", - " glamv (y_f, x_c) float64 dask.array\n", - " * z_f (z_f) float64 -0.5 0.5 1.5 2.5\n", - " gdepw_1d (z_f) float64 dask.array\n", - " gdepw_0 (z_f, y_c, x_c) float64 dask.array\n", - " glamf (y_f, x_f) float64 dask.array\n", - " gphif (y_f, x_f) float64 dask.array\n", - "Dimensions without coordinates: axis_nbounds\n", - "Data variables: (12/48)\n", - " deptht_bounds (z_c, axis_nbounds) float32 dask.array\n", - " time_centered_bounds (t, axis_nbounds) object dask.array\n", - " t_bounds (t, axis_nbounds) object dask.array\n", - " toce (t, z_c, y_c, x_c) float32 dask.array\n", - " soce (t, z_c, y_c, x_c) float32 dask.array\n", - " e3t (t, z_c, y_c, x_c) float32 dask.array\n", - " ... ...\n", - " e3vw_0 (z_f, y_f, x_c) float64 dask.array\n", - " e3f (t, z_c, y_f, x_f) float32 dask.array\n", - " e3uw (t, z_f, y_c, x_f) float32 dask.array\n", - " e3vw (t, z_f, y_f, x_c) float32 dask.array\n", - " e3fw (t, z_f, y_f, x_f) float32 dask.array\n", - " e3fw_0 (z_f, y_f, x_f) float64 dask.array\n", - "Attributes: (12/18)\n", - " Conventions: CF-1.6\n", - " timeStamp: 2023-Mar-28 10:42:16 GMT\n", - " name: NEMO dataset\n", - " description: Ocean grid variables, set on the proper positions\n", - " title: Ocean grid variables\n", - " DOMAIN_dimensions_ids: [1 2]\n", - " ... ...\n", - " Iperio: 0\n", - " Jperio: 0\n", - " NFold: 0\n", - " NFtype: -\n", - " VertCoord: zco\n", - " IsfCav: 0\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/runner/work/xnemogcm/xnemogcm/xnemogcm/metrics.py:63: UserWarning: This function is in pre-phase. Do not expect a high precision, but a good estimate. Some boundary issues may arise.\n", - " warn(\n" - ] - } - ], - "source": [ - "print(\n", - " compute_missing_metrics(ds.copy(), time_varying=False)\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "69e30349-cbf9-45cb-bd53-6b2123d6c9c2", - "metadata": {}, - "source": [ - "And it is possible to only compute a subset of the possible metrics" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "b190b080-d2ad-444e-b25f-429ae51028fc", - "metadata": { - "execution": { - "iopub.execute_input": "2023-08-07T10:07:17.778653Z", - "iopub.status.busy": "2023-08-07T10:07:17.778226Z", - "iopub.status.idle": "2023-08-07T10:07:17.795778Z", - "shell.execute_reply": "2023-08-07T10:07:17.795087Z" - }, - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Dimensions: (z_c: 4, axis_nbounds: 2, t: 1, y_c: 22, x_c: 32,\n", - " x_f: 32, y_f: 22, z_f: 4)\n", - "Coordinates: (12/20)\n", - " * z_c (z_c) int64 0 1 2 3\n", - " time_centered (t) object dask.array\n", - " * t (t) object 0001-07-01 00:00:00\n", - " * x_c (x_c) int64 0 1 2 3 4 5 6 7 ... 25 26 27 28 29 30 31\n", - " * y_c (y_c) int64 0 1 2 3 4 5 6 7 ... 15 16 17 18 19 20 21\n", - " gdept_1d (z_c) float64 dask.array\n", - " ... ...\n", - " glamv (y_f, x_c) float64 dask.array\n", - " * z_f (z_f) float64 -0.5 0.5 1.5 2.5\n", - " gdepw_1d (z_f) float64 dask.array\n", - " gdepw_0 (z_f, y_c, x_c) float64 dask.array\n", - " glamf (y_f, x_f) float64 dask.array\n", - " gphif (y_f, x_f) float64 dask.array\n", - "Dimensions without coordinates: axis_nbounds\n", - "Data variables: (12/44)\n", - " deptht_bounds (z_c, axis_nbounds) float32 dask.array\n", - " time_centered_bounds (t, axis_nbounds) object dask.array\n", - " t_bounds (t, axis_nbounds) object dask.array\n", - " toce (t, z_c, y_c, x_c) float32 dask.array\n", - " soce (t, z_c, y_c, x_c) float32 dask.array\n", - " e3t (t, z_c, y_c, x_c) float32 dask.array\n", - " ... ...\n", - " e3uw_0 (z_f, y_c, x_f) float64 dask.array\n", - " e3vw_0 (z_f, y_f, x_c) float64 dask.array\n", - " e3uw (t, z_f, y_c, x_f) float32 dask.array\n", - " e3vw (t, z_f, y_f, x_c) float32 dask.array\n", - " e3fw (t, z_f, y_f, x_f) float32 dask.array\n", - " e3u (t, z_c, y_c, x_f) float32 dask.array\n", - "Attributes: (12/18)\n", - " Conventions: CF-1.6\n", - " timeStamp: 2023-Mar-28 10:42:16 GMT\n", - " name: NEMO dataset\n", - " description: Ocean grid variables, set on the proper positions\n", - " title: Ocean grid variables\n", - " DOMAIN_dimensions_ids: [1 2]\n", - " ... ...\n", - " Iperio: 0\n", - " Jperio: 0\n", - " NFold: 0\n", - " NFtype: -\n", - " VertCoord: zco\n", - " IsfCav: 0\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/runner/work/xnemogcm/xnemogcm/xnemogcm/metrics.py:63: UserWarning: This function is in pre-phase. Do not expect a high precision, but a good estimate. Some boundary issues may arise.\n", - " warn(\n" - ] - } - ], - "source": [ - "print(\n", - " compute_missing_metrics(ds.drop_vars(['e3u', 'e3v', 'e3f', 'e3w']).copy(), all_scale_factors=['e3u'])\n", - ")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.4" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/example/open_process_files.ipynb b/example/open_process_files.ipynb deleted file mode 100644 index 17e36b7..0000000 --- a/example/open_process_files.ipynb +++ /dev/null @@ -1,10763 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "d4baf777-28bc-42a2-95d9-714e62b9fa84", - "metadata": {}, - "source": [ - "Start by importing the functions" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "6e326e37-4bfa-4111-bde4-5f3587ab1edd", - "metadata": { - "execution": { - "iopub.execute_input": "2023-11-29T15:56:31.261188Z", - "iopub.status.busy": "2023-11-29T15:56:31.260464Z", - "iopub.status.idle": "2023-11-29T15:56:31.597251Z", - "shell.execute_reply": "2023-11-29T15:56:31.596760Z" - } - }, - "outputs": [], - "source": [ - "from pathlib import Path\n", - "\n", - "from xnemogcm import open_domain_cfg, open_nemo, process_nemo, open_namelist, open_nemo_and_domain_cfg\n", - "from xnemogcm import __version__ as xnemogcm_version" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "c6f5571a-61ec-408f-8eae-6dee765ee048", - "metadata": { - "execution": { - "iopub.execute_input": "2023-11-29T15:56:31.599814Z", - "iopub.status.busy": "2023-11-29T15:56:31.599374Z", - "iopub.status.idle": "2023-11-29T15:56:31.605082Z", - "shell.execute_reply": "2023-11-29T15:56:31.604527Z" - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'0.4.2'" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "xnemogcm_version" - ] - }, - { - "cell_type": "markdown", - "id": "cf68f882-90a2-420a-b5b5-ceded0c96420", - "metadata": {}, - "source": [ - "# First open the domain_cfg and nemo files into 2 datasets\n", - "## domain" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "3928df5c-06c9-4f4b-a85a-c4fad3170903", - "metadata": { - "execution": { - "iopub.execute_input": "2023-11-29T15:56:31.607169Z", - "iopub.status.busy": "2023-11-29T15:56:31.606863Z", - "iopub.status.idle": "2023-11-29T15:56:31.637163Z", - "shell.execute_reply": "2023-11-29T15:56:31.636595Z" - } - }, - "outputs": [], - "source": [ - "open_domain_cfg?" - ] - }, - { - "cell_type": "markdown", - "id": "add13a99-a665-4d2b-822a-436740a9709a", - "metadata": {}, - "source": [ - "---\n", - "\n", - "You can provide the file names / folder using 3 similar methods:\n", - "1. Give the path to the files and xnemogcm opens the domain_cfg_out and mesh_mesk files\n", - "2. Give the path to the data folder + the name of the files\n", - "3. Give the name of the files that already contain the tree (e.g. ['/path/to/file1', '/path/to/file2']\n", - "\n", - "These 3 methods are equivalent, however if your domain files don't have the strandard names you need to provide them by hand.\n", - "\n", - "We use one of the test folder:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "2ee3aa40-af70-4150-a7e6-ea6f690f364f", - "metadata": { - "execution": { - "iopub.execute_input": "2023-11-29T15:56:31.639589Z", - "iopub.status.busy": "2023-11-29T15:56:31.639146Z", - "iopub.status.idle": "2023-11-29T15:56:31.641715Z", - "shell.execute_reply": "2023-11-29T15:56:31.641287Z" - } - }, - "outputs": [], - "source": [ - "datadir = Path('../xnemogcm/test/data/4.2.0/open_and_merge/')" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "fc2b9b94-5106-427d-9d44-59044cec476a", - "metadata": { - "execution": { - "iopub.execute_input": "2023-11-29T15:56:31.643669Z", - "iopub.status.busy": "2023-11-29T15:56:31.643375Z", - "iopub.status.idle": "2023-11-29T15:56:31.757484Z", - "shell.execute_reply": "2023-11-29T15:56:31.756949Z" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "GYRE_1y_00010101_00011230_grid_T.nc GYRE_1y_00010101_00011230_grid_W.nc\r\n", - "GYRE_1y_00010101_00011230_grid_U.nc mesh_mask.nc\r\n", - "GYRE_1y_00010101_00011230_grid_V.nc\r\n" - ] - } - ], - "source": [ - "!ls ../xnemogcm/test/data/4.2.0/open_and_merge/" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "5cd1ee94-3ac2-4d95-9610-ea651583af39", - "metadata": { - "execution": { - "iopub.execute_input": "2023-11-29T15:56:31.759974Z", - "iopub.status.busy": "2023-11-29T15:56:31.759584Z", - "iopub.status.idle": "2023-11-29T15:56:32.461657Z", - "shell.execute_reply": "2023-11-29T15:56:32.461068Z" - } - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
<xarray.Dataset>\n",
-       "Dimensions:    (z_c: 4, y_c: 22, x_c: 32, x_f: 32, y_f: 22, z_f: 4)\n",
-       "Coordinates: (12/18)\n",
-       "    glamt      (y_c, x_c) float64 dask.array<chunksize=(22, 32), meta=np.ndarray>\n",
-       "    glamu      (y_c, x_f) float64 dask.array<chunksize=(22, 32), meta=np.ndarray>\n",
-       "    glamv      (y_f, x_c) float64 dask.array<chunksize=(22, 32), meta=np.ndarray>\n",
-       "    glamf      (y_f, x_f) float64 dask.array<chunksize=(22, 32), meta=np.ndarray>\n",
-       "    gphit      (y_c, x_c) float64 dask.array<chunksize=(22, 32), meta=np.ndarray>\n",
-       "    gphiu      (y_c, x_f) float64 dask.array<chunksize=(22, 32), meta=np.ndarray>\n",
-       "    ...         ...\n",
-       "  * x_c        (x_c) int64 0 1 2 3 4 5 6 7 8 9 ... 22 23 24 25 26 27 28 29 30 31\n",
-       "  * y_c        (y_c) int64 0 1 2 3 4 5 6 7 8 9 ... 12 13 14 15 16 17 18 19 20 21\n",
-       "  * z_c        (z_c) int64 0 1 2 3\n",
-       "  * x_f        (x_f) float64 0.5 1.5 2.5 3.5 4.5 ... 27.5 28.5 29.5 30.5 31.5\n",
-       "  * y_f        (y_f) float64 0.5 1.5 2.5 3.5 4.5 ... 17.5 18.5 19.5 20.5 21.5\n",
-       "  * z_f        (z_f) float64 -0.5 0.5 1.5 2.5\n",
-       "Data variables: (12/28)\n",
-       "    tmask      (z_c, y_c, x_c) int8 dask.array<chunksize=(4, 22, 32), meta=np.ndarray>\n",
-       "    umask      (z_c, y_c, x_f) int8 dask.array<chunksize=(4, 22, 32), meta=np.ndarray>\n",
-       "    vmask      (z_c, y_f, x_c) int8 dask.array<chunksize=(4, 22, 32), meta=np.ndarray>\n",
-       "    fmask      (z_c, y_f, x_f) int8 dask.array<chunksize=(4, 22, 32), meta=np.ndarray>\n",
-       "    tmaskutil  (y_c, x_c) int8 dask.array<chunksize=(22, 32), meta=np.ndarray>\n",
-       "    umaskutil  (y_c, x_f) int8 dask.array<chunksize=(22, 32), meta=np.ndarray>\n",
-       "    ...         ...\n",
-       "    e3u_0      (z_c, y_c, x_f) float64 dask.array<chunksize=(4, 22, 32), meta=np.ndarray>\n",
-       "    e3v_0      (z_c, y_f, x_c) float64 dask.array<chunksize=(4, 22, 32), meta=np.ndarray>\n",
-       "    e3f_0      (z_c, y_f, x_f) float64 dask.array<chunksize=(4, 22, 32), meta=np.ndarray>\n",
-       "    e3w_0      (z_f, y_c, x_c) float64 dask.array<chunksize=(4, 22, 32), meta=np.ndarray>\n",
-       "    e3uw_0     (z_f, y_c, x_f) float64 dask.array<chunksize=(4, 22, 32), meta=np.ndarray>\n",
-       "    e3vw_0     (z_f, y_f, x_c) float64 dask.array<chunksize=(4, 22, 32), meta=np.ndarray>\n",
-       "Attributes: (12/13)\n",
-       "    DOMAIN_dimensions_ids:   [1 2]\n",
-       "    DOMAIN_size_global:      [32 22]\n",
-       "    DOMAIN_halo_size_start:  [0 0]\n",
-       "    DOMAIN_halo_size_end:    [0 0]\n",
-       "    DOMAIN_type:             BOX\n",
-       "    CfgName:                 GYRE\n",
-       "    ...                      ...\n",
-       "    Iperio:                  0\n",
-       "    Jperio:                  0\n",
-       "    NFold:                   0\n",
-       "    NFtype:                  -\n",
-       "    VertCoord:               zco\n",
-       "    IsfCav:                  0
" - ], - "text/plain": [ - "\n", - "Dimensions: (z_c: 4, y_c: 22, x_c: 32, x_f: 32, y_f: 22, z_f: 4)\n", - "Coordinates: (12/18)\n", - " glamt (y_c, x_c) float64 dask.array\n", - " glamu (y_c, x_f) float64 dask.array\n", - " glamv (y_f, x_c) float64 dask.array\n", - " glamf (y_f, x_f) float64 dask.array\n", - " gphit (y_c, x_c) float64 dask.array\n", - " gphiu (y_c, x_f) float64 dask.array\n", - " ... ...\n", - " * x_c (x_c) int64 0 1 2 3 4 5 6 7 8 9 ... 22 23 24 25 26 27 28 29 30 31\n", - " * y_c (y_c) int64 0 1 2 3 4 5 6 7 8 9 ... 12 13 14 15 16 17 18 19 20 21\n", - " * z_c (z_c) int64 0 1 2 3\n", - " * x_f (x_f) float64 0.5 1.5 2.5 3.5 4.5 ... 27.5 28.5 29.5 30.5 31.5\n", - " * y_f (y_f) float64 0.5 1.5 2.5 3.5 4.5 ... 17.5 18.5 19.5 20.5 21.5\n", - " * z_f (z_f) float64 -0.5 0.5 1.5 2.5\n", - "Data variables: (12/28)\n", - " tmask (z_c, y_c, x_c) int8 dask.array\n", - " umask (z_c, y_c, x_f) int8 dask.array\n", - " vmask (z_c, y_f, x_c) int8 dask.array\n", - " fmask (z_c, y_f, x_f) int8 dask.array\n", - " tmaskutil (y_c, x_c) int8 dask.array\n", - " umaskutil (y_c, x_f) int8 dask.array\n", - " ... ...\n", - " e3u_0 (z_c, y_c, x_f) float64 dask.array\n", - " e3v_0 (z_c, y_f, x_c) float64 dask.array\n", - " e3f_0 (z_c, y_f, x_f) float64 dask.array\n", - " e3w_0 (z_f, y_c, x_c) float64 dask.array\n", - " e3uw_0 (z_f, y_c, x_f) float64 dask.array\n", - " e3vw_0 (z_f, y_f, x_c) float64 dask.array\n", - "Attributes: (12/13)\n", - " DOMAIN_dimensions_ids: [1 2]\n", - " DOMAIN_size_global: [32 22]\n", - " DOMAIN_halo_size_start: [0 0]\n", - " DOMAIN_halo_size_end: [0 0]\n", - " DOMAIN_type: BOX\n", - " CfgName: GYRE\n", - " ... ...\n", - " Iperio: 0\n", - " Jperio: 0\n", - " NFold: 0\n", - " NFtype: -\n", - " VertCoord: zco\n", - " IsfCav: 0" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "domcfg = open_domain_cfg(datadir=datadir)\n", - "# or\n", - "domcfg = open_domain_cfg(datadir=datadir, files=['mesh_mask.nc'])\n", - "# or\n", - "domcfg = open_domain_cfg(files=datadir.glob('*mesh_mask*.nc'))\n", - "domcfg" - ] - }, - { - "cell_type": "markdown", - "id": "58fde32f-9f84-47f0-90e5-2590d6664ac5", - "metadata": {}, - "source": [ - "## Nemo\n", - "\n", - "2 options here: 1) open netcdf files and make the preprocess automatically with `open_nemo` or 2) open by hand the files (or retrieve them from anywhere, e.g. zarr on a remote) and process using `process_nemo`.\n", - "\n", - "Note: `open_nemo` internally uses `process_nemo`.\n", - "\n", - "### open_nemo" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "6fa2e261-a188-4973-ad6e-6381017ab5bc", - "metadata": { - "execution": { - "iopub.execute_input": "2023-11-29T15:56:32.463898Z", - "iopub.status.busy": "2023-11-29T15:56:32.463543Z", - "iopub.status.idle": "2023-11-29T15:56:32.467466Z", - "shell.execute_reply": "2023-11-29T15:56:32.466992Z" - } - }, - "outputs": [], - "source": [ - "open_nemo?" - ] - }, - { - "cell_type": "markdown", - "id": "3bc66d2b-a497-4394-a28f-80ac98587e3a", - "metadata": {}, - "source": [ - "---\n", - "We can provide the files folder / name following the same convention as for the `open_domain_cfg` function. We also need to provide the `domcfg` dataset so xnemogcm knows how to set the variables on the proper grid position. We can also provide extra kwargs to the underlying call to `xarray.open_mfdataset` function." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "9e5a0b8c-7199-46d2-9231-273fc57355f5", - "metadata": { - "execution": { - "iopub.execute_input": "2023-11-29T15:56:32.469512Z", - "iopub.status.busy": "2023-11-29T15:56:32.469203Z", - "iopub.status.idle": "2023-11-29T15:56:32.909853Z", - "shell.execute_reply": "2023-11-29T15:56:32.909276Z" - } - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
<xarray.Dataset>\n",
-       "Dimensions:               (z_c: 4, axis_nbounds: 2, t: 1, y_c: 22, x_c: 32,\n",
-       "                           x_f: 32, y_f: 22, z_f: 4)\n",
-       "Coordinates: (12/18)\n",
-       "  * z_c                   (z_c) int64 0 1 2 3\n",
-       "    time_centered         (t) object dask.array<chunksize=(1,), meta=np.ndarray>\n",
-       "  * t                     (t) object 0001-07-01 00:00:00\n",
-       "  * x_c                   (x_c) int64 0 1 2 3 4 5 6 7 ... 25 26 27 28 29 30 31\n",
-       "  * y_c                   (y_c) int64 0 1 2 3 4 5 6 7 ... 15 16 17 18 19 20 21\n",
-       "    gdept_1d              (z_c) float64 dask.array<chunksize=(4,), meta=np.ndarray>\n",
-       "    ...                    ...\n",
-       "  * y_f                   (y_f) float64 0.5 1.5 2.5 3.5 ... 18.5 19.5 20.5 21.5\n",
-       "    gphiv                 (y_f, x_c) float64 dask.array<chunksize=(22, 32), meta=np.ndarray>\n",
-       "    glamv                 (y_f, x_c) float64 dask.array<chunksize=(22, 32), meta=np.ndarray>\n",
-       "  * z_f                   (z_f) float64 -0.5 0.5 1.5 2.5\n",
-       "    gdepw_1d              (z_f) float64 dask.array<chunksize=(4,), meta=np.ndarray>\n",
-       "    gdepw_0               (z_f, y_c, x_c) float64 dask.array<chunksize=(4, 22, 32), meta=np.ndarray>\n",
-       "Dimensions without coordinates: axis_nbounds\n",
-       "Data variables: (12/15)\n",
-       "    deptht_bounds         (z_c, axis_nbounds) float32 dask.array<chunksize=(4, 2), meta=np.ndarray>\n",
-       "    time_centered_bounds  (t, axis_nbounds) object dask.array<chunksize=(1, 2), meta=np.ndarray>\n",
-       "    t_bounds              (t, axis_nbounds) object dask.array<chunksize=(1, 2), meta=np.ndarray>\n",
-       "    toce                  (t, z_c, y_c, x_c) float32 dask.array<chunksize=(1, 4, 22, 32), meta=np.ndarray>\n",
-       "    soce                  (t, z_c, y_c, x_c) float32 dask.array<chunksize=(1, 4, 22, 32), meta=np.ndarray>\n",
-       "    e3t                   (t, z_c, y_c, x_c) float32 dask.array<chunksize=(1, 4, 22, 32), meta=np.ndarray>\n",
-       "    ...                    ...\n",
-       "    depthv_bounds         (z_c, axis_nbounds) float32 dask.array<chunksize=(4, 2), meta=np.ndarray>\n",
-       "    voce                  (t, z_c, y_f, x_c) float32 dask.array<chunksize=(1, 4, 22, 32), meta=np.ndarray>\n",
-       "    e3v                   (t, z_c, y_f, x_c) float32 dask.array<chunksize=(1, 4, 22, 32), meta=np.ndarray>\n",
-       "    depthw_bounds         (z_f, axis_nbounds) float32 dask.array<chunksize=(4, 2), meta=np.ndarray>\n",
-       "    woce                  (t, z_f, y_c, x_c) float32 dask.array<chunksize=(1, 4, 22, 32), meta=np.ndarray>\n",
-       "    e3w                   (t, z_f, y_c, x_c) float32 dask.array<chunksize=(1, 4, 22, 32), meta=np.ndarray>\n",
-       "Attributes:\n",
-       "    Conventions:  CF-1.6\n",
-       "    timeStamp:    2023-Mar-28 10:42:16 GMT\n",
-       "    name:         NEMO dataset\n",
-       "    description:  Ocean grid variables, set on the proper positions\n",
-       "    title:        Ocean grid variables
" - ], - "text/plain": [ - "\n", - "Dimensions: (z_c: 4, axis_nbounds: 2, t: 1, y_c: 22, x_c: 32,\n", - " x_f: 32, y_f: 22, z_f: 4)\n", - "Coordinates: (12/18)\n", - " * z_c (z_c) int64 0 1 2 3\n", - " time_centered (t) object dask.array\n", - " * t (t) object 0001-07-01 00:00:00\n", - " * x_c (x_c) int64 0 1 2 3 4 5 6 7 ... 25 26 27 28 29 30 31\n", - " * y_c (y_c) int64 0 1 2 3 4 5 6 7 ... 15 16 17 18 19 20 21\n", - " gdept_1d (z_c) float64 dask.array\n", - " ... ...\n", - " * y_f (y_f) float64 0.5 1.5 2.5 3.5 ... 18.5 19.5 20.5 21.5\n", - " gphiv (y_f, x_c) float64 dask.array\n", - " glamv (y_f, x_c) float64 dask.array\n", - " * z_f (z_f) float64 -0.5 0.5 1.5 2.5\n", - " gdepw_1d (z_f) float64 dask.array\n", - " gdepw_0 (z_f, y_c, x_c) float64 dask.array\n", - "Dimensions without coordinates: axis_nbounds\n", - "Data variables: (12/15)\n", - " deptht_bounds (z_c, axis_nbounds) float32 dask.array\n", - " time_centered_bounds (t, axis_nbounds) object dask.array\n", - " t_bounds (t, axis_nbounds) object dask.array\n", - " toce (t, z_c, y_c, x_c) float32 dask.array\n", - " soce (t, z_c, y_c, x_c) float32 dask.array\n", - " e3t (t, z_c, y_c, x_c) float32 dask.array\n", - " ... ...\n", - " depthv_bounds (z_c, axis_nbounds) float32 dask.array\n", - " voce (t, z_c, y_f, x_c) float32 dask.array\n", - " e3v (t, z_c, y_f, x_c) float32 dask.array\n", - " depthw_bounds (z_f, axis_nbounds) float32 dask.array\n", - " woce (t, z_f, y_c, x_c) float32 dask.array\n", - " e3w (t, z_f, y_c, x_c) float32 dask.array\n", - "Attributes:\n", - " Conventions: CF-1.6\n", - " timeStamp: 2023-Mar-28 10:42:16 GMT\n", - " name: NEMO dataset\n", - " description: Ocean grid variables, set on the proper positions\n", - " title: Ocean grid variables" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "nemo = open_nemo(domcfg=domcfg, datadir=datadir)\n", - "# or\n", - "nemo = open_nemo(domcfg=domcfg, files=datadir.glob('*grid*.nc'))\n", - "# or, using attributes from dataset and not name\n", - "datadir2 = Path('../xnemogcm/test/data/4.2.0/nemo_no_grid_in_filename/')\n", - "nemo = open_nemo(\n", - " domcfg=domcfg, files=[\n", - " datadir2 / 'T.nc',\n", - " datadir2 / 'U.nc',\n", - " datadir2 / 'V.nc',\n", - " datadir2 / 'W.nc'\n", - " ]\n", - ")\n", - "nemo" - ] - }, - { - "cell_type": "markdown", - "id": "72017af7-df86-4f61-b2e4-e9ce2826fcd3", - "metadata": {}, - "source": [ - "### process_nemo" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "e64f0c2a-fe6a-465e-b8c2-8df7db3ea0bb", - "metadata": { - "execution": { - "iopub.execute_input": "2023-11-29T15:56:32.912201Z", - "iopub.status.busy": "2023-11-29T15:56:32.911875Z", - "iopub.status.idle": "2023-11-29T15:56:32.915693Z", - "shell.execute_reply": "2023-11-29T15:56:32.915224Z" - } - }, - "outputs": [], - "source": [ - "process_nemo?" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "19b9bd17-e1f4-4be3-8039-7d02311238b0", - "metadata": { - "execution": { - "iopub.execute_input": "2023-11-29T15:56:32.917653Z", - "iopub.status.busy": "2023-11-29T15:56:32.917336Z", - "iopub.status.idle": "2023-11-29T15:56:33.042529Z", - "shell.execute_reply": "2023-11-29T15:56:33.041961Z" - } - }, - "outputs": [], - "source": [ - "import xarray as xr\n", - "datadir2 = Path('../xnemogcm/test/data/4.2.0/nemo_no_grid_in_filename/')\n", - "nemo = process_nemo(\n", - " positions=[\n", - " (xr.open_dataset(datadir2 / 'T.nc'), 'T'),\n", - " (xr.open_dataset(datadir2 / 'U.nc'), 'U'),\n", - " (xr.open_dataset(datadir2 / 'V.nc'), 'V'),\n", - " (xr.open_dataset(datadir2 / 'W.nc'), 'W')\n", - " ],\n", - " domcfg=domcfg\n", - ")\n", - "# or, if the datasets contain the attribute 'description'\n", - "nemo = process_nemo(\n", - " positions=[\n", - " (xr.open_dataset(datadir2 / 'T.nc'), None),\n", - " (xr.open_dataset(datadir2 / 'U.nc'), None),\n", - " (xr.open_dataset(datadir2 / 'V.nc'), None),\n", - " (xr.open_dataset(datadir2 / 'W.nc'), None)\n", - " ],\n", - " domcfg=domcfg\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "90ab171c-d3d3-4c8e-897a-3b18a749390f", - "metadata": {}, - "source": [ - "# Open both at once\n", - "\n", - "It is possible to open the domain and nemo output at once in one unique dataset. What happens is that 2 datasets are created and then merged. Thus all option possible for the `open_nemo` and `open_domain_cfg` functions are still possible." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "c3130a23-e65a-4097-a12d-cf41110a0836", - "metadata": { - "execution": { - "iopub.execute_input": "2023-11-29T15:56:33.044846Z", - "iopub.status.busy": "2023-11-29T15:56:33.044690Z", - "iopub.status.idle": "2023-11-29T15:56:33.048335Z", - "shell.execute_reply": "2023-11-29T15:56:33.047863Z" - } - }, - "outputs": [], - "source": [ - "open_nemo_and_domain_cfg?" - ] - }, - { - "cell_type": "markdown", - "id": "94f9a258-8204-48dd-9c78-c2859461b113", - "metadata": {}, - "source": [ - "---\n", - "Again, mutiple equivalent arguments are possible to open the data" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "361b5317-a173-4442-a7ec-7f70466d2eb3", - "metadata": { - "execution": { - "iopub.execute_input": "2023-11-29T15:56:33.050393Z", - "iopub.status.busy": "2023-11-29T15:56:33.050087Z", - "iopub.status.idle": "2023-11-29T15:56:34.119523Z", - "shell.execute_reply": "2023-11-29T15:56:34.118980Z" - } - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
<xarray.Dataset>\n",
-       "Dimensions:               (z_c: 4, axis_nbounds: 2, t: 1, y_c: 22, x_c: 32,\n",
-       "                           x_f: 32, y_f: 22, z_f: 4)\n",
-       "Coordinates: (12/20)\n",
-       "  * z_c                   (z_c) int64 0 1 2 3\n",
-       "    time_centered         (t) object dask.array<chunksize=(1,), meta=np.ndarray>\n",
-       "  * t                     (t) object 0001-07-01 00:00:00\n",
-       "  * x_c                   (x_c) int64 0 1 2 3 4 5 6 7 ... 25 26 27 28 29 30 31\n",
-       "  * y_c                   (y_c) int64 0 1 2 3 4 5 6 7 ... 15 16 17 18 19 20 21\n",
-       "    gdept_1d              (z_c) float64 dask.array<chunksize=(4,), meta=np.ndarray>\n",
-       "    ...                    ...\n",
-       "    glamv                 (y_f, x_c) float64 dask.array<chunksize=(22, 32), meta=np.ndarray>\n",
-       "  * z_f                   (z_f) float64 -0.5 0.5 1.5 2.5\n",
-       "    gdepw_1d              (z_f) float64 dask.array<chunksize=(4,), meta=np.ndarray>\n",
-       "    gdepw_0               (z_f, y_c, x_c) float64 dask.array<chunksize=(4, 22, 32), meta=np.ndarray>\n",
-       "    glamf                 (y_f, x_f) float64 dask.array<chunksize=(22, 32), meta=np.ndarray>\n",
-       "    gphif                 (y_f, x_f) float64 dask.array<chunksize=(22, 32), meta=np.ndarray>\n",
-       "Dimensions without coordinates: axis_nbounds\n",
-       "Data variables: (12/43)\n",
-       "    deptht_bounds         (z_c, axis_nbounds) float32 dask.array<chunksize=(4, 2), meta=np.ndarray>\n",
-       "    time_centered_bounds  (t, axis_nbounds) object dask.array<chunksize=(1, 2), meta=np.ndarray>\n",
-       "    t_bounds              (t, axis_nbounds) object dask.array<chunksize=(1, 2), meta=np.ndarray>\n",
-       "    toce                  (t, z_c, y_c, x_c) float32 dask.array<chunksize=(1, 4, 22, 32), meta=np.ndarray>\n",
-       "    soce                  (t, z_c, y_c, x_c) float32 dask.array<chunksize=(1, 4, 22, 32), meta=np.ndarray>\n",
-       "    e3t                   (t, z_c, y_c, x_c) float32 dask.array<chunksize=(1, 4, 22, 32), meta=np.ndarray>\n",
-       "    ...                    ...\n",
-       "    e3u_0                 (z_c, y_c, x_f) float64 dask.array<chunksize=(4, 22, 32), meta=np.ndarray>\n",
-       "    e3v_0                 (z_c, y_f, x_c) float64 dask.array<chunksize=(4, 22, 32), meta=np.ndarray>\n",
-       "    e3f_0                 (z_c, y_f, x_f) float64 dask.array<chunksize=(4, 22, 32), meta=np.ndarray>\n",
-       "    e3w_0                 (z_f, y_c, x_c) float64 dask.array<chunksize=(4, 22, 32), meta=np.ndarray>\n",
-       "    e3uw_0                (z_f, y_c, x_f) float64 dask.array<chunksize=(4, 22, 32), meta=np.ndarray>\n",
-       "    e3vw_0                (z_f, y_f, x_c) float64 dask.array<chunksize=(4, 22, 32), meta=np.ndarray>\n",
-       "Attributes: (12/18)\n",
-       "    Conventions:             CF-1.6\n",
-       "    timeStamp:               2023-Mar-28 10:42:16 GMT\n",
-       "    name:                    NEMO dataset\n",
-       "    description:             Ocean grid variables, set on the proper positions\n",
-       "    title:                   Ocean grid variables\n",
-       "    DOMAIN_dimensions_ids:   [1 2]\n",
-       "    ...                      ...\n",
-       "    Iperio:                  0\n",
-       "    Jperio:                  0\n",
-       "    NFold:                   0\n",
-       "    NFtype:                  -\n",
-       "    VertCoord:               zco\n",
-       "    IsfCav:                  0
" - ], - "text/plain": [ - "\n", - "Dimensions: (z_c: 4, axis_nbounds: 2, t: 1, y_c: 22, x_c: 32,\n", - " x_f: 32, y_f: 22, z_f: 4)\n", - "Coordinates: (12/20)\n", - " * z_c (z_c) int64 0 1 2 3\n", - " time_centered (t) object dask.array\n", - " * t (t) object 0001-07-01 00:00:00\n", - " * x_c (x_c) int64 0 1 2 3 4 5 6 7 ... 25 26 27 28 29 30 31\n", - " * y_c (y_c) int64 0 1 2 3 4 5 6 7 ... 15 16 17 18 19 20 21\n", - " gdept_1d (z_c) float64 dask.array\n", - " ... ...\n", - " glamv (y_f, x_c) float64 dask.array\n", - " * z_f (z_f) float64 -0.5 0.5 1.5 2.5\n", - " gdepw_1d (z_f) float64 dask.array\n", - " gdepw_0 (z_f, y_c, x_c) float64 dask.array\n", - " glamf (y_f, x_f) float64 dask.array\n", - " gphif (y_f, x_f) float64 dask.array\n", - "Dimensions without coordinates: axis_nbounds\n", - "Data variables: (12/43)\n", - " deptht_bounds (z_c, axis_nbounds) float32 dask.array\n", - " time_centered_bounds (t, axis_nbounds) object dask.array\n", - " t_bounds (t, axis_nbounds) object dask.array\n", - " toce (t, z_c, y_c, x_c) float32 dask.array\n", - " soce (t, z_c, y_c, x_c) float32 dask.array\n", - " e3t (t, z_c, y_c, x_c) float32 dask.array\n", - " ... ...\n", - " e3u_0 (z_c, y_c, x_f) float64 dask.array\n", - " e3v_0 (z_c, y_f, x_c) float64 dask.array\n", - " e3f_0 (z_c, y_f, x_f) float64 dask.array\n", - " e3w_0 (z_f, y_c, x_c) float64 dask.array\n", - " e3uw_0 (z_f, y_c, x_f) float64 dask.array\n", - " e3vw_0 (z_f, y_f, x_c) float64 dask.array\n", - "Attributes: (12/18)\n", - " Conventions: CF-1.6\n", - " timeStamp: 2023-Mar-28 10:42:16 GMT\n", - " name: NEMO dataset\n", - " description: Ocean grid variables, set on the proper positions\n", - " title: Ocean grid variables\n", - " DOMAIN_dimensions_ids: [1 2]\n", - " ... ...\n", - " Iperio: 0\n", - " Jperio: 0\n", - " NFold: 0\n", - " NFtype: -\n", - " VertCoord: zco\n", - " IsfCav: 0" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# the simplest for simple cases, provide the path\n", - "ds = open_nemo_and_domain_cfg(nemo_files=datadir, domcfg_files=datadir)\n", - "# or provide the files\n", - "ds = open_nemo_and_domain_cfg(nemo_files=datadir.glob('*grid*.nc'), domcfg_files=datadir.glob('*mesh*.nc'))\n", - "# or use the nemo_kwargs and domcfg_kwargs dictionnaries\n", - "ds = open_nemo_and_domain_cfg(nemo_kwargs=dict(datadir=datadir), domcfg_kwargs={'files':datadir.glob('*mesh*.nc')})\n", - "ds" - ] - }, - { - "cell_type": "markdown", - "id": "8bd99220-6f03-476d-9621-36499e9ffedc", - "metadata": {}, - "source": [ - "## Remark\n", - "\n", - "All opening are lazy using dask, which makes files quick to open, until you actually load the data you need" - ] - }, - { - "cell_type": "markdown", - "id": "ea964e50-68db-4394-baec-4b3c5fb90b3e", - "metadata": {}, - "source": [ - "# Namelist\n", - "\n", - "It can be convenient to open the namelist used for the run (e.g. to compare different runs with different parameters). This is possible using the `f90nml` package (it needs to be installed, this is an optional dependency)." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "8a6cb055-e2c2-4d37-be4e-3684b0f12a71", - "metadata": { - "execution": { - "iopub.execute_input": "2023-11-29T15:56:34.122194Z", - "iopub.status.busy": "2023-11-29T15:56:34.121851Z", - "iopub.status.idle": "2023-11-29T15:56:34.125443Z", - "shell.execute_reply": "2023-11-29T15:56:34.124989Z" - } - }, - "outputs": [], - "source": [ - "open_namelist?" - ] - }, - { - "cell_type": "markdown", - "id": "c81264ec-2a59-43b6-adfc-b2c19ba96b49", - "metadata": {}, - "source": [ - "---\n", - "Here you provide the folder path containing the reference and configuration namelists, or the filenames (as for nemo and domcfg). You can choose to load both, or only one of them. The configration namelist will overwrite the default one.\n", - "\n", - "For this we need to use another folder of the test data (with simplified namelists for the exemple):" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "1fc7b7ba-cedf-4ebe-8105-de09edcbb7bf", - "metadata": { - "execution": { - "iopub.execute_input": "2023-11-29T15:56:34.127392Z", - "iopub.status.busy": "2023-11-29T15:56:34.127076Z", - "iopub.status.idle": "2023-11-29T15:56:34.129545Z", - "shell.execute_reply": "2023-11-29T15:56:34.129104Z" - } - }, - "outputs": [], - "source": [ - "datadir = Path('../xnemogcm/test/data/namelist/')" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "f413ca78-2d0f-48fd-b9d5-427c4b8ca4b3", - "metadata": { - "execution": { - "iopub.execute_input": "2023-11-29T15:56:34.131311Z", - "iopub.status.busy": "2023-11-29T15:56:34.131150Z", - "iopub.status.idle": "2023-11-29T15:56:34.245462Z", - "shell.execute_reply": "2023-11-29T15:56:34.244889Z" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "namelist_cfg namelist_ref\r\n" - ] - } - ], - "source": [ - "!ls ../xnemogcm/test/data/namelist/" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "feabb3f4-f9b7-4092-b423-22db9cae36a1", - "metadata": { - "execution": { - "iopub.execute_input": "2023-11-29T15:56:34.247878Z", - "iopub.status.busy": "2023-11-29T15:56:34.247699Z", - "iopub.status.idle": "2023-11-29T15:56:34.259175Z", - "shell.execute_reply": "2023-11-29T15:56:34.258704Z" - } - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
<xarray.Dataset>\n",
-       "Dimensions:    ()\n",
-       "Data variables:\n",
-       "    nn_no      int64 0\n",
-       "    cn_exp     <U5 'BASIN'\n",
-       "    nn_it000   int64 1\n",
-       "    nn_itend   int64 5840\n",
-       "    rn_e1_deg  float64 1.0
" - ], - "text/plain": [ - "\n", - "Dimensions: ()\n", - "Data variables:\n", - " nn_no int64 0\n", - " cn_exp \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
<xarray.DataArray 'nn_it000' ()>\n",
-       "array(1)\n",
-       "Attributes:\n",
-       "    namelist:  namrun
" - ], - "text/plain": [ - "\n", - "array(1)\n", - "Attributes:\n", - " namelist: namrun" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "nam.nn_it000" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.6" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/example/recombing_mesh_mask_domain_cfg.ipynb b/example/recombing_mesh_mask_domain_cfg.ipynb deleted file mode 100644 index 17b9c37..0000000 --- a/example/recombing_mesh_mask_domain_cfg.ipynb +++ /dev/null @@ -1,3283 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "41aec3c0-ece5-4ba1-b47f-d7a6d67b0860", - "metadata": {}, - "source": [ - "Start by importing the functions" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "18606253-a4d5-4f6a-9da8-7dfd96b72bea", - "metadata": { - "execution": { - "iopub.execute_input": "2023-11-29T15:56:35.643370Z", - "iopub.status.busy": "2023-11-29T15:56:35.642957Z", - "iopub.status.idle": "2023-11-29T15:56:35.975669Z", - "shell.execute_reply": "2023-11-29T15:56:35.975067Z" - } - }, - "outputs": [], - "source": [ - "from pathlib import Path\n", - "\n", - "from xnemogcm import open_domain_cfg, open_nemo_and_domain_cfg\n", - "from xnemogcm import __version__ as xnemogcm_version" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "84a7b456-0689-4cc7-b497-c41ea62ad477", - "metadata": { - "execution": { - "iopub.execute_input": "2023-11-29T15:56:35.978367Z", - "iopub.status.busy": "2023-11-29T15:56:35.977838Z", - "iopub.status.idle": "2023-11-29T15:56:35.983375Z", - "shell.execute_reply": "2023-11-29T15:56:35.982915Z" - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'0.4.2'" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "xnemogcm_version" - ] - }, - { - "cell_type": "markdown", - "id": "96f57a3d-4035-4c7b-acb5-5ae843eb87fd", - "metadata": {}, - "source": [ - "By default nemo outputs a mesh_mask / domain_cfg file per computing processor, if the namelist parameter is set on .true.:\n", - "\n", - "* `ln_write_cfg = .true.` to output the domain_cfg if created analyticaly in the usrdef_zgr.F90 and usrdef_hgr.F90 files\n", - "* `ln_meshmask = .true.` to output the mesh_mask files (that also contain the masks)\n", - "\n", - "While it is possible to recombine the files using the nemo fortran toolbox, xnemogcm can also recombine them easily.\n", - "\n", - "To illustrate this, we use a data folder from the test data:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "7e7eb827-e9ff-4652-8e11-c3ad01b1a65e", - "metadata": { - "execution": { - "iopub.execute_input": "2023-11-29T15:56:35.985496Z", - "iopub.status.busy": "2023-11-29T15:56:35.985158Z", - "iopub.status.idle": "2023-11-29T15:56:35.987779Z", - "shell.execute_reply": "2023-11-29T15:56:35.987305Z" - } - }, - "outputs": [], - "source": [ - "datadir = Path('../xnemogcm/test/data/4.2.0/mesh_mask_multi_files/')" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "9874f77d-9755-4881-afaf-0fe72f61950e", - "metadata": { - "execution": { - "iopub.execute_input": "2023-11-29T15:56:35.989765Z", - "iopub.status.busy": "2023-11-29T15:56:35.989372Z", - "iopub.status.idle": "2023-11-29T15:56:36.102972Z", - "shell.execute_reply": "2023-11-29T15:56:36.102417Z" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "mesh_mask_0000.nc mesh_mask_0001.nc mesh_mask_0002.nc mesh_mask_0003.nc\r\n" - ] - } - ], - "source": [ - "!ls ../xnemogcm/test/data/4.2.0/mesh_mask_multi_files/" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "193b27f6-8421-4cbd-be2e-228a8705a792", - "metadata": { - "execution": { - "iopub.execute_input": "2023-11-29T15:56:36.105524Z", - "iopub.status.busy": "2023-11-29T15:56:36.105157Z", - "iopub.status.idle": "2023-11-29T15:56:36.723417Z", - "shell.execute_reply": "2023-11-29T15:56:36.722850Z" - } - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
<xarray.Dataset>\n",
-       "Dimensions:    (z_c: 4, y_c: 22, x_c: 32, x_f: 32, y_f: 22, z_f: 4)\n",
-       "Coordinates: (12/18)\n",
-       "    glamt      (y_c, x_c) float64 dask.array<chunksize=(11, 16), meta=np.ndarray>\n",
-       "    glamu      (y_c, x_f) float64 dask.array<chunksize=(11, 16), meta=np.ndarray>\n",
-       "    glamv      (y_f, x_c) float64 dask.array<chunksize=(11, 16), meta=np.ndarray>\n",
-       "    glamf      (y_f, x_f) float64 dask.array<chunksize=(11, 16), meta=np.ndarray>\n",
-       "    gphit      (y_c, x_c) float64 dask.array<chunksize=(11, 16), meta=np.ndarray>\n",
-       "    gphiu      (y_c, x_f) float64 dask.array<chunksize=(11, 16), meta=np.ndarray>\n",
-       "    ...         ...\n",
-       "  * x_c        (x_c) int64 0 1 2 3 4 5 6 7 8 9 ... 22 23 24 25 26 27 28 29 30 31\n",
-       "  * y_c        (y_c) int64 0 1 2 3 4 5 6 7 8 9 ... 12 13 14 15 16 17 18 19 20 21\n",
-       "  * z_c        (z_c) int64 0 1 2 3\n",
-       "  * x_f        (x_f) float64 0.5 1.5 2.5 3.5 4.5 ... 27.5 28.5 29.5 30.5 31.5\n",
-       "  * y_f        (y_f) float64 0.5 1.5 2.5 3.5 4.5 ... 17.5 18.5 19.5 20.5 21.5\n",
-       "  * z_f        (z_f) float64 -0.5 0.5 1.5 2.5\n",
-       "Data variables: (12/28)\n",
-       "    tmask      (z_c, y_c, x_c) int8 dask.array<chunksize=(4, 11, 16), meta=np.ndarray>\n",
-       "    umask      (z_c, y_c, x_f) int8 dask.array<chunksize=(4, 11, 16), meta=np.ndarray>\n",
-       "    vmask      (z_c, y_f, x_c) int8 dask.array<chunksize=(4, 11, 16), meta=np.ndarray>\n",
-       "    fmask      (z_c, y_f, x_f) int8 dask.array<chunksize=(4, 11, 16), meta=np.ndarray>\n",
-       "    tmaskutil  (y_c, x_c) int8 dask.array<chunksize=(11, 16), meta=np.ndarray>\n",
-       "    umaskutil  (y_c, x_f) int8 dask.array<chunksize=(11, 16), meta=np.ndarray>\n",
-       "    ...         ...\n",
-       "    e3u_0      (z_c, y_c, x_f) float64 dask.array<chunksize=(4, 11, 16), meta=np.ndarray>\n",
-       "    e3v_0      (z_c, y_f, x_c) float64 dask.array<chunksize=(4, 11, 16), meta=np.ndarray>\n",
-       "    e3f_0      (z_c, y_f, x_f) float64 dask.array<chunksize=(4, 11, 16), meta=np.ndarray>\n",
-       "    e3w_0      (z_f, y_c, x_c) float64 dask.array<chunksize=(4, 11, 16), meta=np.ndarray>\n",
-       "    e3uw_0     (z_f, y_c, x_f) float64 dask.array<chunksize=(4, 11, 16), meta=np.ndarray>\n",
-       "    e3vw_0     (z_f, y_f, x_c) float64 dask.array<chunksize=(4, 11, 16), meta=np.ndarray>\n",
-       "Attributes: (12/13)\n",
-       "    DOMAIN_dimensions_ids:   [1 2]\n",
-       "    DOMAIN_size_global:      [32 22]\n",
-       "    DOMAIN_halo_size_start:  [0 0]\n",
-       "    DOMAIN_halo_size_end:    [0 0]\n",
-       "    DOMAIN_type:             BOX\n",
-       "    CfgName:                 GYRE\n",
-       "    ...                      ...\n",
-       "    Iperio:                  0\n",
-       "    Jperio:                  0\n",
-       "    NFold:                   0\n",
-       "    NFtype:                  -\n",
-       "    VertCoord:               zco\n",
-       "    IsfCav:                  0
" - ], - "text/plain": [ - "\n", - "Dimensions: (z_c: 4, y_c: 22, x_c: 32, x_f: 32, y_f: 22, z_f: 4)\n", - "Coordinates: (12/18)\n", - " glamt (y_c, x_c) float64 dask.array\n", - " glamu (y_c, x_f) float64 dask.array\n", - " glamv (y_f, x_c) float64 dask.array\n", - " glamf (y_f, x_f) float64 dask.array\n", - " gphit (y_c, x_c) float64 dask.array\n", - " gphiu (y_c, x_f) float64 dask.array\n", - " ... ...\n", - " * x_c (x_c) int64 0 1 2 3 4 5 6 7 8 9 ... 22 23 24 25 26 27 28 29 30 31\n", - " * y_c (y_c) int64 0 1 2 3 4 5 6 7 8 9 ... 12 13 14 15 16 17 18 19 20 21\n", - " * z_c (z_c) int64 0 1 2 3\n", - " * x_f (x_f) float64 0.5 1.5 2.5 3.5 4.5 ... 27.5 28.5 29.5 30.5 31.5\n", - " * y_f (y_f) float64 0.5 1.5 2.5 3.5 4.5 ... 17.5 18.5 19.5 20.5 21.5\n", - " * z_f (z_f) float64 -0.5 0.5 1.5 2.5\n", - "Data variables: (12/28)\n", - " tmask (z_c, y_c, x_c) int8 dask.array\n", - " umask (z_c, y_c, x_f) int8 dask.array\n", - " vmask (z_c, y_f, x_c) int8 dask.array\n", - " fmask (z_c, y_f, x_f) int8 dask.array\n", - " tmaskutil (y_c, x_c) int8 dask.array\n", - " umaskutil (y_c, x_f) int8 dask.array\n", - " ... ...\n", - " e3u_0 (z_c, y_c, x_f) float64 dask.array\n", - " e3v_0 (z_c, y_f, x_c) float64 dask.array\n", - " e3f_0 (z_c, y_f, x_f) float64 dask.array\n", - " e3w_0 (z_f, y_c, x_c) float64 dask.array\n", - " e3uw_0 (z_f, y_c, x_f) float64 dask.array\n", - " e3vw_0 (z_f, y_f, x_c) float64 dask.array\n", - "Attributes: (12/13)\n", - " DOMAIN_dimensions_ids: [1 2]\n", - " DOMAIN_size_global: [32 22]\n", - " DOMAIN_halo_size_start: [0 0]\n", - " DOMAIN_halo_size_end: [0 0]\n", - " DOMAIN_type: BOX\n", - " CfgName: GYRE\n", - " ... ...\n", - " Iperio: 0\n", - " Jperio: 0\n", - " NFold: 0\n", - " NFtype: -\n", - " VertCoord: zco\n", - " IsfCav: 0" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "domcfg = open_domain_cfg(datadir=datadir)\n", - "domcfg" - ] - }, - { - "cell_type": "markdown", - "id": "475a6a89-9353-4c11-b49f-f0874b304546", - "metadata": {}, - "source": [ - "We verify that the variables are the same than when opening a unique full mesh_mask file." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "1143759e-b37e-4352-b05c-bad53db8a3b2", - "metadata": { - "execution": { - "iopub.execute_input": "2023-11-29T15:56:36.725753Z", - "iopub.status.busy": "2023-11-29T15:56:36.725426Z", - "iopub.status.idle": "2023-11-29T15:56:36.887454Z", - "shell.execute_reply": "2023-11-29T15:56:36.886917Z" - } - }, - "outputs": [], - "source": [ - "domcfg_1_file = open_domain_cfg(datadir=Path('../xnemogcm/test/data/4.2.0/mesh_mask_1_file/'), files=['mesh_mask.nc'])" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "771405fe-0fef-4bce-a760-bd3d2463b831", - "metadata": { - "execution": { - "iopub.execute_input": "2023-11-29T15:56:36.889795Z", - "iopub.status.busy": "2023-11-29T15:56:36.889458Z", - "iopub.status.idle": "2023-11-29T15:56:37.267573Z", - "shell.execute_reply": "2023-11-29T15:56:37.267093Z" - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "domcfg_1_file.equals(domcfg)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.6" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 0000000..aeaf801 --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,28 @@ +site_name: xnemogcm documentation +site_url: https://xnemogcm.readthedocs.io +nav: + - Get started: + - Get started: index.md + - Examples: + - "open files / Datasets": examples/open_process_files.ipynb + - "recombine files": examples/recombing_mesh_mask_domain_cfg.ipynb + - "compute metrics": examples/compute_metrics.ipynb + - API: + - API: api.md + - "For contributors": + - "What's new": new.md + - "Dev environment": dev.md + - "GitHub repository": https://github.com/rcaneill/xnemogcm +theme: readthedocs +plugins: + - mkdocs-jupyter: + execute: true + include_source: True + - mkdocstrings: + handlers: + python: + options: + show_submodules: true + docstring_style: numpy + heading_level: 2 + default_handler: python diff --git a/poetry.lock b/poetry.lock index 28d2ae7..7662771 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2,25 +2,26 @@ [[package]] name = "anyio" -version = "3.7.1" +version = "4.2.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "anyio-3.7.1-py3-none-any.whl", hash = "sha256:91dee416e570e92c64041bd18b900d1d6fa78dff7048769ce5ac5ddad004fbb5"}, - {file = "anyio-3.7.1.tar.gz", hash = "sha256:44a3c9aba0f5defa43261a8b3efb97891f2bd7d804e0e1f56419befa1adfc780"}, + {file = "anyio-4.2.0-py3-none-any.whl", hash = "sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee"}, + {file = "anyio-4.2.0.tar.gz", hash = "sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f"}, ] [package.dependencies] -exceptiongroup = {version = "*", markers = "python_version < \"3.11\""} +exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} idna = ">=2.8" sniffio = ">=1.1" +typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} [package.extras] -doc = ["Sphinx", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme (>=1.2.2)", "sphinxcontrib-jquery"] -test = ["anyio[trio]", "coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "mock (>=4)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] -trio = ["trio (<0.22)"] +doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] +trio = ["trio (>=0.23)"] [[package]] name = "appnope" @@ -36,23 +37,24 @@ files = [ [[package]] name = "argon2-cffi" -version = "21.3.0" -description = "The secure Argon2 password hashing algorithm." +version = "23.1.0" +description = "Argon2 for Python" category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "argon2-cffi-21.3.0.tar.gz", hash = "sha256:d384164d944190a7dd7ef22c6aa3ff197da12962bd04b17f64d4e93d934dba5b"}, - {file = "argon2_cffi-21.3.0-py3-none-any.whl", hash = "sha256:8c976986f2c5c0e5000919e6de187906cfd81fb1c72bf9d88c01177e77da7f80"}, + {file = "argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea"}, + {file = "argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08"}, ] [package.dependencies] argon2-cffi-bindings = "*" [package.extras] -dev = ["cogapp", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "pre-commit", "pytest", "sphinx", "sphinx-notfound-page", "tomli"] -docs = ["furo", "sphinx", "sphinx-notfound-page"] -tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pytest"] +dev = ["argon2-cffi[tests,typing]", "tox (>4)"] +docs = ["furo", "myst-parser", "sphinx", "sphinx-copybutton", "sphinx-notfound-page"] +tests = ["hypothesis", "pytest"] +typing = ["mypy"] [[package]] name = "argon2-cffi-bindings" @@ -94,36 +96,42 @@ tests = ["pytest"] [[package]] name = "arrow" -version = "1.2.3" +version = "1.3.0" description = "Better dates & times for Python" category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "arrow-1.2.3-py3-none-any.whl", hash = "sha256:5a49ab92e3b7b71d96cd6bfcc4df14efefc9dfa96ea19045815914a6ab6b1fe2"}, - {file = "arrow-1.2.3.tar.gz", hash = "sha256:3934b30ca1b9f292376d9db15b19446088d12ec58629bc3f0da28fd55fb633a1"}, + {file = "arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80"}, + {file = "arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85"}, ] [package.dependencies] python-dateutil = ">=2.7.0" +types-python-dateutil = ">=2.8.10" + +[package.extras] +doc = ["doc8", "sphinx (>=7.0.0)", "sphinx-autobuild", "sphinx-autodoc-typehints", "sphinx_rtd_theme (>=1.3.0)"] +test = ["dateparser (>=1.0.0,<2.0.0)", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytz (==2021.1)", "simplejson (>=3.0.0,<4.0.0)"] [[package]] name = "asttokens" -version = "2.2.1" +version = "2.4.1" description = "Annotate AST trees with source code positions" category = "dev" optional = false python-versions = "*" files = [ - {file = "asttokens-2.2.1-py2.py3-none-any.whl", hash = "sha256:6b0ac9e93fb0335014d382b8fa9b3afa7df546984258005da0b9e7095b3deb1c"}, - {file = "asttokens-2.2.1.tar.gz", hash = "sha256:4622110b2a6f30b77e1473affaa97e711bc2f07d3f10848420ff1898edbe94f3"}, + {file = "asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24"}, + {file = "asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0"}, ] [package.dependencies] -six = "*" +six = ">=1.12.0" [package.extras] -test = ["astroid", "pytest"] +astroid = ["astroid (>=1,<2)", "astroid (>=2,<4)"] +test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"] [[package]] name = "async-lru" @@ -142,37 +150,38 @@ typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""} [[package]] name = "attrs" -version = "23.1.0" +version = "23.2.0" description = "Classes Without Boilerplate" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "attrs-23.1.0-py3-none-any.whl", hash = "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"}, - {file = "attrs-23.1.0.tar.gz", hash = "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015"}, + {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, + {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, ] [package.extras] cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] -dev = ["attrs[docs,tests]", "pre-commit"] +dev = ["attrs[tests]", "pre-commit"] docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] tests = ["attrs[tests-no-zope]", "zope-interface"] -tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"] +tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] [[package]] name = "babel" -version = "2.12.1" +version = "2.14.0" description = "Internationalization utilities" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "Babel-2.12.1-py3-none-any.whl", hash = "sha256:b4246fb7677d3b98f501a39d43396d3cafdc8eadb045f4a31be01863f655c610"}, - {file = "Babel-2.12.1.tar.gz", hash = "sha256:cc2d99999cd01d44420ae725a21c9e3711b3aadc7976d6147f622d8581963455"}, + {file = "Babel-2.14.0-py3-none-any.whl", hash = "sha256:efb1a25b7118e67ce3a259bed20545c29cb68be8ad2c784c83689981b7a57287"}, + {file = "Babel-2.14.0.tar.gz", hash = "sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363"}, ] -[package.dependencies] -pytz = {version = ">=2015.7", markers = "python_version < \"3.9\""} +[package.extras] +dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] [[package]] name = "backcall" @@ -188,20 +197,23 @@ files = [ [[package]] name = "beautifulsoup4" -version = "4.12.2" +version = "4.12.3" description = "Screen-scraping library" category = "dev" optional = false python-versions = ">=3.6.0" files = [ - {file = "beautifulsoup4-4.12.2-py3-none-any.whl", hash = "sha256:bd2520ca0d9d7d12694a53d44ac482d181b4ec1888909b035a3dbf40d0f57d4a"}, - {file = "beautifulsoup4-4.12.2.tar.gz", hash = "sha256:492bbc69dca35d12daac71c4db1bfff0c876c00ef4a2ffacce226d4638eb72da"}, + {file = "beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed"}, + {file = "beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051"}, ] [package.dependencies] soupsieve = ">1.2" [package.extras] +cchardet = ["cchardet"] +chardet = ["chardet"] +charset-normalizer = ["charset-normalizer"] html5lib = ["html5lib"] lxml = ["lxml"] @@ -243,14 +255,14 @@ uvloop = ["uvloop (>=0.15.2)"] [[package]] name = "bleach" -version = "6.0.0" +version = "6.1.0" description = "An easy safelist-based HTML-sanitizing tool." category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "bleach-6.0.0-py3-none-any.whl", hash = "sha256:33c16e3353dbd13028ab4799a0f89a83f113405c766e9c122df8a06f5b85b3f4"}, - {file = "bleach-6.0.0.tar.gz", hash = "sha256:1a1a85c1595e07d8db14c5f09f09e6433502c51c595970edc090551f0db99414"}, + {file = "bleach-6.1.0-py3-none-any.whl", hash = "sha256:3225f354cfc436b9789c66c4ee030194bee0568fbf9cbdad3bc8b5c26c5f12b6"}, + {file = "bleach-6.1.0.tar.gz", hash = "sha256:0a31f1837963c41d46bbf1331b8778e1308ea0791db03cc4e7357b97cf42a8fe"}, ] [package.dependencies] @@ -258,92 +270,80 @@ six = ">=1.9.0" webencodings = "*" [package.extras] -css = ["tinycss2 (>=1.1.0,<1.2)"] +css = ["tinycss2 (>=1.1.0,<1.3)"] [[package]] name = "certifi" -version = "2023.7.22" +version = "2024.2.2" description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"}, - {file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"}, + {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, + {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, ] [[package]] name = "cffi" -version = "1.15.1" +version = "1.16.0" description = "Foreign Function Interface for Python calling C code." category = "dev" optional = false -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "cffi-1.15.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2"}, - {file = "cffi-1.15.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2"}, - {file = "cffi-1.15.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914"}, - {file = "cffi-1.15.1-cp27-cp27m-win32.whl", hash = "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3"}, - {file = "cffi-1.15.1-cp27-cp27m-win_amd64.whl", hash = "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e"}, - {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162"}, - {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b"}, - {file = "cffi-1.15.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21"}, - {file = "cffi-1.15.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4"}, - {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01"}, - {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e"}, - {file = "cffi-1.15.1-cp310-cp310-win32.whl", hash = "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2"}, - {file = "cffi-1.15.1-cp310-cp310-win_amd64.whl", hash = "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d"}, - {file = "cffi-1.15.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac"}, - {file = "cffi-1.15.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c"}, - {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef"}, - {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8"}, - {file = "cffi-1.15.1-cp311-cp311-win32.whl", hash = "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d"}, - {file = "cffi-1.15.1-cp311-cp311-win_amd64.whl", hash = "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104"}, - {file = "cffi-1.15.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e"}, - {file = "cffi-1.15.1-cp36-cp36m-win32.whl", hash = "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf"}, - {file = "cffi-1.15.1-cp36-cp36m-win_amd64.whl", hash = "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497"}, - {file = "cffi-1.15.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426"}, - {file = "cffi-1.15.1-cp37-cp37m-win32.whl", hash = "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9"}, - {file = "cffi-1.15.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045"}, - {file = "cffi-1.15.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192"}, - {file = "cffi-1.15.1-cp38-cp38-win32.whl", hash = "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314"}, - {file = "cffi-1.15.1-cp38-cp38-win_amd64.whl", hash = "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5"}, - {file = "cffi-1.15.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585"}, - {file = "cffi-1.15.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27"}, - {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76"}, - {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3"}, - {file = "cffi-1.15.1-cp39-cp39-win32.whl", hash = "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee"}, - {file = "cffi-1.15.1-cp39-cp39-win_amd64.whl", hash = "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c"}, - {file = "cffi-1.15.1.tar.gz", hash = "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9"}, + {file = "cffi-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088"}, + {file = "cffi-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614"}, + {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743"}, + {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d"}, + {file = "cffi-1.16.0-cp310-cp310-win32.whl", hash = "sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a"}, + {file = "cffi-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1"}, + {file = "cffi-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404"}, + {file = "cffi-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e"}, + {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc"}, + {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb"}, + {file = "cffi-1.16.0-cp311-cp311-win32.whl", hash = "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab"}, + {file = "cffi-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba"}, + {file = "cffi-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956"}, + {file = "cffi-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969"}, + {file = "cffi-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520"}, + {file = "cffi-1.16.0-cp312-cp312-win32.whl", hash = "sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b"}, + {file = "cffi-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235"}, + {file = "cffi-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324"}, + {file = "cffi-1.16.0-cp38-cp38-win32.whl", hash = "sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a"}, + {file = "cffi-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36"}, + {file = "cffi-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed"}, + {file = "cffi-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098"}, + {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000"}, + {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe"}, + {file = "cffi-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4"}, + {file = "cffi-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8"}, + {file = "cffi-1.16.0.tar.gz", hash = "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0"}, ] [package.dependencies] @@ -351,133 +351,148 @@ pycparser = "*" [[package]] name = "cftime" -version = "1.6.2" +version = "1.6.3" description = "Time-handling functionality from netcdf4-python" category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "cftime-1.6.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b4d2a1920f0aad663f25700b30621ff64af373499e52b544da1148dd8c09409a"}, - {file = "cftime-1.6.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2ba7909a0cd4adcb16797d8d6ab2767e7ddb980b2bf9dbabfc71b3bdd94f072b"}, - {file = "cftime-1.6.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:acb294fdb80e33545ae54b4421df35c4e578708a5ffce1c00408b2294e70ecef"}, - {file = "cftime-1.6.2-cp310-cp310-win_amd64.whl", hash = "sha256:2abdac6ca5b8b6102f319122546739dfc42406b816c16f2a98a8f0cd406d3bf0"}, - {file = "cftime-1.6.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:eb7f8cd0996640b83020133b5ef6b97fc9216c3129eaeeaca361abdff5d82166"}, - {file = "cftime-1.6.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8d49d69c64cee2c175478eed84c3a57fce083da4ceebce16440f72be561a8489"}, - {file = "cftime-1.6.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:455cec3627e6ca8694b0d9201da6581eb4381b58389f1fbcb51a14fa0e2b3d94"}, - {file = "cftime-1.6.2-cp311-cp311-win_amd64.whl", hash = "sha256:29c18601abea0fd160fbe423e05c7a56fe1d38dd250a6b010de499a132d3fe18"}, - {file = "cftime-1.6.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:afb5b38b51b8bc02f1656a9f15c52b0b20a3999adbe1ab9ac57f926e0065b48a"}, - {file = "cftime-1.6.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aedfb7a783d19d7a30cb41951310f3bfe98f9f21fffc723c8af08a11962b0b17"}, - {file = "cftime-1.6.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3042048324b4d6a1066c978ec78101effdd84320e8862bfdbf8122d7ad7588ec"}, - {file = "cftime-1.6.2-cp37-none-win_amd64.whl", hash = "sha256:ee70fa069802652cf534de1dd3fc590b7d22d4127447bf96ac9849abcdadadf1"}, - {file = "cftime-1.6.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:93f00f454329c1f2588ebca2650e8edf7607d6189dbdcc81b5f3be2080155cc4"}, - {file = "cftime-1.6.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e83db2fdda900eb154a9f79dfb665ac6190781c61d2e18151996de5ee7ffd8a2"}, - {file = "cftime-1.6.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56d0242fc4990584b265622622b25bb262a178097711d2d95e53ef52a9d23e7e"}, - {file = "cftime-1.6.2-cp38-cp38-win_amd64.whl", hash = "sha256:055d5d60a756c6c1857cf84d77655bb707057bb6c4a4fbb104a550e76c40aad9"}, - {file = "cftime-1.6.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0955e1f3e1c09a9e0296b50f135ff9719cb2466f81c8ad4a10ef06fa394de984"}, - {file = "cftime-1.6.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:07fdef2f75a0f0952b0376fa4cd08ef8a1dad3b963976ac07517811d434936b7"}, - {file = "cftime-1.6.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:892d5dc38f8b998c83a2a01f131e63896d020586de473e1878f9e85acc70ad44"}, - {file = "cftime-1.6.2-cp39-cp39-win_amd64.whl", hash = "sha256:86fe550b94525c327578a90b2e13418ca5ba6c636d5efe3edec310e631757eea"}, - {file = "cftime-1.6.2.tar.gz", hash = "sha256:8614c00fb8a5046de304fdd86dbd224f99408185d7b245ac6628d0276596e6d2"}, -] - -[package.dependencies] -numpy = ">1.13.3" + {file = "cftime-1.6.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b62d42546fa5c914dfea5b15a9aaed2087ea1211cc36d08c374502ef95892038"}, + {file = "cftime-1.6.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:eb6dd70b2ccabfe1a14b7fbb0bbdce0418e71697094373c0d573c880790fa291"}, + {file = "cftime-1.6.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9878bfd8c1c3f24184ecbd528f739ba46ebaceaf1c8a24d348d7befb117a285"}, + {file = "cftime-1.6.3-cp310-cp310-win_amd64.whl", hash = "sha256:3cf6e216a4c06f9a628cdf8e9c9d5e8097fb3eb02dd087dd14ab3b18478a7271"}, + {file = "cftime-1.6.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8d2c01456d9d7b46aa710a41d1c711a50d5ea259aff4a987d0e973d1093bc922"}, + {file = "cftime-1.6.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:80eb1170ce1639016f55760847f4aadd04b0312496c5bac2797e930914bba48d"}, + {file = "cftime-1.6.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d87dadd0824262bdd7493babd2a44447da0a22175ded8ae9e060a3aebec7c5d7"}, + {file = "cftime-1.6.3-cp311-cp311-win_amd64.whl", hash = "sha256:0a38eb9f5c733a23e1714bd3ef2762ed5acee34f127670f8fb4ad6464946f6b3"}, + {file = "cftime-1.6.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:2d113a01ab924445e61d65c26bbd95bc08e4a22878d3b947064bba056c884c4a"}, + {file = "cftime-1.6.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5f11685663a6af97418908060492a07663c16d42519c139ca03c2ffb1377fd25"}, + {file = "cftime-1.6.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a98abb1d46d118e52b0611ce668a0b714b407be26177ef0581ecf5e95f894725"}, + {file = "cftime-1.6.3-cp312-cp312-win_amd64.whl", hash = "sha256:4d6fbd5f41b322cfa7b0ac3aaadeceb4450100a164b5bccbbb9e7c5048489a88"}, + {file = "cftime-1.6.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bedb577bc8b8f3f10f5336c0792e5dae88605781890f50f36b45bb46907968e8"}, + {file = "cftime-1.6.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:022dabf1610cdd04a693e730fa8f71d307059717f29dba921e7486e553412bb4"}, + {file = "cftime-1.6.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbf782ab4ac0605bdec2b941952c897595613203942b7f8c2fccd17efa5147df"}, + {file = "cftime-1.6.3-cp38-cp38-win_amd64.whl", hash = "sha256:9eb177a02db7cd84aa6962278e4bd2d3106a545de82e6aacd9404f1e153661db"}, + {file = "cftime-1.6.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3b86be8c2f254147be4ba88f12099466dde457a4a3a21de6c69d52a7224c13ae"}, + {file = "cftime-1.6.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:523b9a6bf03f5e36407979e248381d0fcab2d225b915bbde77d00c6dde192b90"}, + {file = "cftime-1.6.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a14d2c7d22fd2a6dfa6ad563283b6d6679f1df95e0ed8d14b8f284dad402887"}, + {file = "cftime-1.6.3-cp39-cp39-win_amd64.whl", hash = "sha256:d9b00c2844c7a1701d8ede5336b6321dfee256ceab81a34a1aff0483d56891a6"}, + {file = "cftime-1.6.3.tar.gz", hash = "sha256:d0a6b29f72a13f08e008b9becff247cc75c84acb213332ede18879c5b6aa4dfd"}, +] + +[package.dependencies] +numpy = {version = ">1.13.3", markers = "python_version < \"3.12.0.rc1\""} [[package]] name = "charset-normalizer" -version = "3.2.0" +version = "3.3.2" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." category = "dev" optional = false python-versions = ">=3.7.0" files = [ - {file = "charset-normalizer-3.2.0.tar.gz", hash = "sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-win32.whl", hash = "sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-win32.whl", hash = "sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-win32.whl", hash = "sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-win32.whl", hash = "sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-win32.whl", hash = "sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80"}, - {file = "charset_normalizer-3.2.0-py3-none-any.whl", hash = "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6"}, + {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, + {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, ] [[package]] name = "click" -version = "8.1.6" +version = "8.1.7" description = "Composable command line interface toolkit" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "click-8.1.6-py3-none-any.whl", hash = "sha256:fa244bb30b3b5ee2cae3da8f55c9e5e0c0e86093306301fb418eb9dc40fbded5"}, - {file = "click-8.1.6.tar.gz", hash = "sha256:48ee849951919527a045bfe3bf7baa8a959c423134e1a5b98c05c20ba75a1cbd"}, + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, ] [package.dependencies] @@ -485,14 +500,14 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} [[package]] name = "cloudpickle" -version = "2.2.1" -description = "Extended pickling support for Python objects" +version = "3.0.0" +description = "Pickler class to extend the standard pickle.Pickler functionality" category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "cloudpickle-2.2.1-py3-none-any.whl", hash = "sha256:61f594d1f4c295fa5cd9014ceb3a1fc4a70b0de1164b94fbc2d854ccba056f9f"}, - {file = "cloudpickle-2.2.1.tar.gz", hash = "sha256:d89684b8de9e34a2a43b3460fbca07d09d6e25ce858df4d5a44240403b6178f5"}, + {file = "cloudpickle-3.0.0-py3-none-any.whl", hash = "sha256:246ee7d0c295602a036e86369c77fecda4ab17b506496730f2f576d9016fd9c7"}, + {file = "cloudpickle-3.0.0.tar.gz", hash = "sha256:996d9a482c6fb4f33c1a35335cf8afd065d2a56e973270364840712d9131a882"}, ] [[package]] @@ -509,23 +524,21 @@ files = [ [[package]] name = "comm" -version = "0.1.4" +version = "0.2.1" description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "comm-0.1.4-py3-none-any.whl", hash = "sha256:6d52794cba11b36ed9860999cd10fd02d6b2eac177068fdd585e1e2f8a96e67a"}, - {file = "comm-0.1.4.tar.gz", hash = "sha256:354e40a59c9dd6db50c5cc6b4acc887d82e9603787f83b68c01a80a923984d15"}, + {file = "comm-0.2.1-py3-none-any.whl", hash = "sha256:87928485c0dfc0e7976fd89fc1e187023cf587e7c353e4a9b417555b44adf021"}, + {file = "comm-0.2.1.tar.gz", hash = "sha256:0bc91edae1344d39d3661dcbc36937181fdaddb304790458f8b044dbc064b89a"}, ] [package.dependencies] traitlets = ">=4" [package.extras] -lint = ["black (>=22.6.0)", "mdformat (>0.7)", "mdformat-gfm (>=0.3.5)", "ruff (>=0.0.156)"] test = ["pytest"] -typing = ["mypy (>=0.990)"] [[package]] name = "dask" @@ -560,30 +573,30 @@ test = ["pandas[test]", "pre-commit", "pytest", "pytest-rerunfailures", "pytest- [[package]] name = "debugpy" -version = "1.6.7" +version = "1.8.0" description = "An implementation of the Debug Adapter Protocol for Python" category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "debugpy-1.6.7-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:b3e7ac809b991006ad7f857f016fa92014445085711ef111fdc3f74f66144096"}, - {file = "debugpy-1.6.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3876611d114a18aafef6383695dfc3f1217c98a9168c1aaf1a02b01ec7d8d1e"}, - {file = "debugpy-1.6.7-cp310-cp310-win32.whl", hash = "sha256:33edb4afa85c098c24cc361d72ba7c21bb92f501104514d4ffec1fb36e09c01a"}, - {file = "debugpy-1.6.7-cp310-cp310-win_amd64.whl", hash = "sha256:ed6d5413474e209ba50b1a75b2d9eecf64d41e6e4501977991cdc755dc83ab0f"}, - {file = "debugpy-1.6.7-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:38ed626353e7c63f4b11efad659be04c23de2b0d15efff77b60e4740ea685d07"}, - {file = "debugpy-1.6.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:279d64c408c60431c8ee832dfd9ace7c396984fd7341fa3116aee414e7dcd88d"}, - {file = "debugpy-1.6.7-cp37-cp37m-win32.whl", hash = "sha256:dbe04e7568aa69361a5b4c47b4493d5680bfa3a911d1e105fbea1b1f23f3eb45"}, - {file = "debugpy-1.6.7-cp37-cp37m-win_amd64.whl", hash = "sha256:f90a2d4ad9a035cee7331c06a4cf2245e38bd7c89554fe3b616d90ab8aab89cc"}, - {file = "debugpy-1.6.7-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:5224eabbbeddcf1943d4e2821876f3e5d7d383f27390b82da5d9558fd4eb30a9"}, - {file = "debugpy-1.6.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bae1123dff5bfe548ba1683eb972329ba6d646c3a80e6b4c06cd1b1dd0205e9b"}, - {file = "debugpy-1.6.7-cp38-cp38-win32.whl", hash = "sha256:9cd10cf338e0907fdcf9eac9087faa30f150ef5445af5a545d307055141dd7a4"}, - {file = "debugpy-1.6.7-cp38-cp38-win_amd64.whl", hash = "sha256:aaf6da50377ff4056c8ed470da24632b42e4087bc826845daad7af211e00faad"}, - {file = "debugpy-1.6.7-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:0679b7e1e3523bd7d7869447ec67b59728675aadfc038550a63a362b63029d2c"}, - {file = "debugpy-1.6.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de86029696e1b3b4d0d49076b9eba606c226e33ae312a57a46dca14ff370894d"}, - {file = "debugpy-1.6.7-cp39-cp39-win32.whl", hash = "sha256:d71b31117779d9a90b745720c0eab54ae1da76d5b38c8026c654f4a066b0130a"}, - {file = "debugpy-1.6.7-cp39-cp39-win_amd64.whl", hash = "sha256:c0ff93ae90a03b06d85b2c529eca51ab15457868a377c4cc40a23ab0e4e552a3"}, - {file = "debugpy-1.6.7-py2.py3-none-any.whl", hash = "sha256:53f7a456bc50706a0eaabecf2d3ce44c4d5010e46dfc65b6b81a518b42866267"}, - {file = "debugpy-1.6.7.zip", hash = "sha256:c4c2f0810fa25323abfdfa36cbbbb24e5c3b1a42cb762782de64439c575d67f2"}, + {file = "debugpy-1.8.0-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:7fb95ca78f7ac43393cd0e0f2b6deda438ec7c5e47fa5d38553340897d2fbdfb"}, + {file = "debugpy-1.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef9ab7df0b9a42ed9c878afd3eaaff471fce3fa73df96022e1f5c9f8f8c87ada"}, + {file = "debugpy-1.8.0-cp310-cp310-win32.whl", hash = "sha256:a8b7a2fd27cd9f3553ac112f356ad4ca93338feadd8910277aff71ab24d8775f"}, + {file = "debugpy-1.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:5d9de202f5d42e62f932507ee8b21e30d49aae7e46d5b1dd5c908db1d7068637"}, + {file = "debugpy-1.8.0-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:ef54404365fae8d45cf450d0544ee40cefbcb9cb85ea7afe89a963c27028261e"}, + {file = "debugpy-1.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60009b132c91951354f54363f8ebdf7457aeb150e84abba5ae251b8e9f29a8a6"}, + {file = "debugpy-1.8.0-cp311-cp311-win32.whl", hash = "sha256:8cd0197141eb9e8a4566794550cfdcdb8b3db0818bdf8c49a8e8f8053e56e38b"}, + {file = "debugpy-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:a64093656c4c64dc6a438e11d59369875d200bd5abb8f9b26c1f5f723622e153"}, + {file = "debugpy-1.8.0-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:b05a6b503ed520ad58c8dc682749113d2fd9f41ffd45daec16e558ca884008cd"}, + {file = "debugpy-1.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c6fb41c98ec51dd010d7ed650accfd07a87fe5e93eca9d5f584d0578f28f35f"}, + {file = "debugpy-1.8.0-cp38-cp38-win32.whl", hash = "sha256:46ab6780159eeabb43c1495d9c84cf85d62975e48b6ec21ee10c95767c0590aa"}, + {file = "debugpy-1.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:bdc5ef99d14b9c0fcb35351b4fbfc06ac0ee576aeab6b2511702e5a648a2e595"}, + {file = "debugpy-1.8.0-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:61eab4a4c8b6125d41a34bad4e5fe3d2cc145caecd63c3fe953be4cc53e65bf8"}, + {file = "debugpy-1.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:125b9a637e013f9faac0a3d6a82bd17c8b5d2c875fb6b7e2772c5aba6d082332"}, + {file = "debugpy-1.8.0-cp39-cp39-win32.whl", hash = "sha256:57161629133113c97b387382045649a2b985a348f0c9366e22217c87b68b73c6"}, + {file = "debugpy-1.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:e3412f9faa9ade82aa64a50b602544efcba848c91384e9f93497a458767e6926"}, + {file = "debugpy-1.8.0-py2.py3-none-any.whl", hash = "sha256:9c9b0ac1ce2a42888199df1a1906e45e6f3c9555497643a85e0bf2406e3ffbc4"}, + {file = "debugpy-1.8.0.zip", hash = "sha256:12af2c55b419521e33d5fb21bd022df0b5eb267c3e178f1d374a63a2a6bdccd0"}, ] [[package]] @@ -612,14 +625,14 @@ files = [ [[package]] name = "exceptiongroup" -version = "1.1.2" +version = "1.2.0" description = "Backport of PEP 654 (exception groups)" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.1.2-py3-none-any.whl", hash = "sha256:e346e69d186172ca7cf029c8c1d16235aa0e04035e5750b4b95039e65204328f"}, - {file = "exceptiongroup-1.1.2.tar.gz", hash = "sha256:12c3e887d6485d16943a309616de20ae5582633e0a2eda17f4e10fd61c1e8af5"}, + {file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"}, + {file = "exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"}, ] [package.extras] @@ -627,29 +640,29 @@ test = ["pytest (>=6)"] [[package]] name = "executing" -version = "1.2.0" +version = "2.0.1" description = "Get the currently executing AST node of a frame, and other information" category = "dev" optional = false -python-versions = "*" +python-versions = ">=3.5" files = [ - {file = "executing-1.2.0-py2.py3-none-any.whl", hash = "sha256:0314a69e37426e3608aada02473b4161d4caf5a4b244d1d0c48072b8fee7bacc"}, - {file = "executing-1.2.0.tar.gz", hash = "sha256:19da64c18d2d851112f09c287f8d3dbbdf725ab0e569077efb6cdcbd3497c107"}, + {file = "executing-2.0.1-py2.py3-none-any.whl", hash = "sha256:eac49ca94516ccc753f9fb5ce82603156e590b27525a8bc32cce8ae302eb61bc"}, + {file = "executing-2.0.1.tar.gz", hash = "sha256:35afe2ce3affba8ee97f2d69927fa823b08b472b7b994e36a52a964b93d16147"}, ] [package.extras] -tests = ["asttokens", "littleutils", "pytest", "rich"] +tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich"] [[package]] name = "f90nml" -version = "1.4.3" +version = "1.4.4" description = "Fortran 90 namelist parser" category = "main" optional = false python-versions = "*" files = [ - {file = "f90nml-1.4.3-py2.py3-none-any.whl", hash = "sha256:abbc4d3d9691571eda6273e72df0a5b5cd20338699d4e295a11037750dcb7dbe"}, - {file = "f90nml-1.4.3.tar.gz", hash = "sha256:e2f3cd23d821ebcaef66ce406485b35aa08aae0df92c4bece76e227e5bd146e1"}, + {file = "f90nml-1.4.4-py2.py3-none-any.whl", hash = "sha256:58d91eb0f9a424a48fe5df868cbb33c86800f1026d6e7f3c0f663c930dddc644"}, + {file = "f90nml-1.4.4.tar.gz", hash = "sha256:65e8e135779895245238cbf6be5b1b80d6c2b8c9350c9cdce6183a31bdfd7622"}, ] [package.extras] @@ -657,14 +670,14 @@ yaml = ["PyYAML"] [[package]] name = "fastjsonschema" -version = "2.18.0" +version = "2.19.1" description = "Fastest Python implementation of JSON schema" category = "dev" optional = false python-versions = "*" files = [ - {file = "fastjsonschema-2.18.0-py3-none-any.whl", hash = "sha256:128039912a11a807068a7c87d0da36660afbfd7202780db26c4aa7153cfdc799"}, - {file = "fastjsonschema-2.18.0.tar.gz", hash = "sha256:e820349dd16f806e4bd1467a138dced9def4bc7d6213a34295272a6cac95b5bd"}, + {file = "fastjsonschema-2.19.1-py3-none-any.whl", hash = "sha256:3672b47bc94178c9f23dbb654bf47440155d4db9df5f7bc47643315f9c405cd0"}, + {file = "fastjsonschema-2.19.1.tar.gz", hash = "sha256:e3126a94bdc4623d3de4485f8d468a12f02a67921315ddc87836d6e456dc789d"}, ] [package.extras] @@ -684,14 +697,14 @@ files = [ [[package]] name = "fsspec" -version = "2023.6.0" +version = "2023.12.2" description = "File-system specification" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "fsspec-2023.6.0-py3-none-any.whl", hash = "sha256:1cbad1faef3e391fba6dc005ae9b5bdcbf43005c9167ce78c915549c352c869a"}, - {file = "fsspec-2023.6.0.tar.gz", hash = "sha256:d0b2f935446169753e7a5c5c55681c54ea91996cc67be93c39a154fb3a2742af"}, + {file = "fsspec-2023.12.2-py3-none-any.whl", hash = "sha256:d800d87f72189a745fa3d6b033b9dc4a34ad069f60ca60b943a63599f5501960"}, + {file = "fsspec-2023.12.2.tar.gz", hash = "sha256:8548d39e8810b59c38014934f6b31e57f40c1b20f911f4cc2b85389c7e9bf0cb"}, ] [package.extras] @@ -730,55 +743,69 @@ files = [ ] [[package]] -name = "idna" -version = "3.4" -description = "Internationalized Domain Names in Applications (IDNA)" +name = "ghp-import" +version = "2.1.0" +description = "Copy your docs directly to the gh-pages branch." category = "dev" optional = false -python-versions = ">=3.5" +python-versions = "*" files = [ - {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, - {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, + {file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"}, + {file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619"}, ] +[package.dependencies] +python-dateutil = ">=2.8.1" + +[package.extras] +dev = ["flake8", "markdown", "twine", "wheel"] + [[package]] -name = "importlib-metadata" -version = "6.8.0" -description = "Read metadata from Python packages" -category = "main" +name = "griffe" +version = "0.40.0" +description = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." +category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_metadata-6.8.0-py3-none-any.whl", hash = "sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb"}, - {file = "importlib_metadata-6.8.0.tar.gz", hash = "sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743"}, + {file = "griffe-0.40.0-py3-none-any.whl", hash = "sha256:db1da6d1d8e08cbb20f1a7dee8c09da940540c2d4c1bfa26a9091cf6fc36a9ec"}, + {file = "griffe-0.40.0.tar.gz", hash = "sha256:76c4439eaa2737af46ae003c331ab6ca79c5365b552f7b5aed263a3b4125735b"}, ] [package.dependencies] -zipp = ">=0.5" - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -perf = ["ipython"] -testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] +colorama = ">=0.4" [[package]] -name = "importlib-resources" -version = "6.0.0" -description = "Read resources from Python packages" +name = "idna" +version = "3.6" +description = "Internationalized Domain Names in Applications (IDNA)" category = "dev" optional = false +python-versions = ">=3.5" +files = [ + {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"}, + {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"}, +] + +[[package]] +name = "importlib-metadata" +version = "7.0.1" +description = "Read metadata from Python packages" +category = "main" +optional = false python-versions = ">=3.8" files = [ - {file = "importlib_resources-6.0.0-py3-none-any.whl", hash = "sha256:d952faee11004c045f785bb5636e8f885bed30dc3c940d5d42798a2a4541c185"}, - {file = "importlib_resources-6.0.0.tar.gz", hash = "sha256:4cf94875a8368bd89531a756df9a9ebe1f150e0f885030b461237bc7f2d905f2"}, + {file = "importlib_metadata-7.0.1-py3-none-any.whl", hash = "sha256:4805911c3a4ec7c3966410053e9ec6a1fecd629117df5adee56dfc9432a1081e"}, + {file = "importlib_metadata-7.0.1.tar.gz", hash = "sha256:f238736bb06590ae52ac1fab06a3a9ef1d8dce2b7a35b5ab329371d6c8f5d2cc"}, ] [package.dependencies] -zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} +zipp = ">=0.5" [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] +perf = ["ipython"] +testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] [[package]] name = "iniconfig" @@ -794,14 +821,14 @@ files = [ [[package]] name = "ipykernel" -version = "6.25.0" +version = "6.29.0" description = "IPython Kernel for Jupyter" category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "ipykernel-6.25.0-py3-none-any.whl", hash = "sha256:f0042e867ac3f6bca1679e6a88cbd6a58ed93a44f9d0866aecde6efe8de76659"}, - {file = "ipykernel-6.25.0.tar.gz", hash = "sha256:e342ce84712861be4b248c4a73472be4702c1b0dd77448bfd6bcfb3af9d5ddf9"}, + {file = "ipykernel-6.29.0-py3-none-any.whl", hash = "sha256:076663ca68492576f051e4af7720d33f34383e655f2be0d544c8b1c9de915b2f"}, + {file = "ipykernel-6.29.0.tar.gz", hash = "sha256:b5dd3013cab7b330df712891c96cd1ab868c27a7159e606f762015e9bf8ceb3f"}, ] [package.dependencies] @@ -815,7 +842,7 @@ matplotlib-inline = ">=0.1" nest-asyncio = "*" packaging = "*" psutil = "*" -pyzmq = ">=20" +pyzmq = ">=24" tornado = ">=6.1" traitlets = ">=5.4.0" @@ -824,18 +851,18 @@ cov = ["coverage[toml]", "curio", "matplotlib", "pytest-cov", "trio"] docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "trio"] pyqt5 = ["pyqt5"] pyside6 = ["pyside6"] -test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio", "pytest-cov", "pytest-timeout"] +test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (==0.23.2)", "pytest-cov", "pytest-timeout"] [[package]] name = "ipython" -version = "8.12.2" +version = "8.12.3" description = "IPython: Productive Interactive Computing" category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "ipython-8.12.2-py3-none-any.whl", hash = "sha256:ea8801f15dfe4ffb76dea1b09b847430ffd70d827b41735c64a0638a04103bfc"}, - {file = "ipython-8.12.2.tar.gz", hash = "sha256:c7b80eb7f5a855a88efc971fda506ff7a91c280b42cdae26643e0f601ea281ea"}, + {file = "ipython-8.12.3-py3-none-any.whl", hash = "sha256:b0340d46a933d27c657b211a329d0be23793c36595acf9e6ef4164bc01a1804c"}, + {file = "ipython-8.12.3.tar.gz", hash = "sha256:3910c4b54543c2ad73d06579aa771041b7d5707b033bd488669b4cf544e3b363"}, ] [package.dependencies] @@ -883,14 +910,14 @@ arrow = ">=0.15.0" [[package]] name = "jedi" -version = "0.19.0" +version = "0.19.1" description = "An autocompletion tool for Python that can be used for text editors." category = "dev" optional = false python-versions = ">=3.6" files = [ - {file = "jedi-0.19.0-py2.py3-none-any.whl", hash = "sha256:cb8ce23fbccff0025e9386b5cf85e892f94c9b822378f8da49970471335ac64e"}, - {file = "jedi-0.19.0.tar.gz", hash = "sha256:bcf9894f1753969cbac8022a8c2eaee06bfa3724e4192470aaffe7eb6272b0c4"}, + {file = "jedi-0.19.1-py2.py3-none-any.whl", hash = "sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0"}, + {file = "jedi-0.19.1.tar.gz", hash = "sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd"}, ] [package.dependencies] @@ -899,18 +926,18 @@ parso = ">=0.8.3,<0.9.0" [package.extras] docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx (==1.8.5)", "sphinx-rtd-theme (==0.4.3)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"] qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] -testing = ["Django (<3.1)", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] +testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] [[package]] name = "jinja2" -version = "3.1.2" +version = "3.1.3" description = "A very fast and expressive template engine." category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, - {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, + {file = "Jinja2-3.1.3-py3-none-any.whl", hash = "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa"}, + {file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"}, ] [package.dependencies] @@ -948,25 +975,23 @@ files = [ [[package]] name = "jsonschema" -version = "4.18.6" +version = "4.21.1" description = "An implementation of JSON Schema validation for Python" category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "jsonschema-4.18.6-py3-none-any.whl", hash = "sha256:dc274409c36175aad949c68e5ead0853aaffbe8e88c830ae66bb3c7a1728ad2d"}, - {file = "jsonschema-4.18.6.tar.gz", hash = "sha256:ce71d2f8c7983ef75a756e568317bf54bc531dc3ad7e66a128eae0d51623d8a3"}, + {file = "jsonschema-4.21.1-py3-none-any.whl", hash = "sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f"}, + {file = "jsonschema-4.21.1.tar.gz", hash = "sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5"}, ] [package.dependencies] attrs = ">=22.2.0" fqdn = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} idna = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} -importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""} isoduration = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} jsonpointer = {version = ">1.13", optional = true, markers = "extra == \"format-nongpl\""} jsonschema-specifications = ">=2023.03.6" -pkgutil-resolve-name = {version = ">=1.3.10", markers = "python_version < \"3.9\""} referencing = ">=0.28.4" rfc3339-validator = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} rfc3986-validator = {version = ">0.1.0", optional = true, markers = "extra == \"format-nongpl\""} @@ -980,30 +1005,29 @@ format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339- [[package]] name = "jsonschema-specifications" -version = "2023.7.1" +version = "2023.12.1" description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "jsonschema_specifications-2023.7.1-py3-none-any.whl", hash = "sha256:05adf340b659828a004220a9613be00fa3f223f2b82002e273dee62fd50524b1"}, - {file = "jsonschema_specifications-2023.7.1.tar.gz", hash = "sha256:c91a50404e88a1f6ba40636778e2ee08f6e24c5613fe4c53ac24578a5a7f72bb"}, + {file = "jsonschema_specifications-2023.12.1-py3-none-any.whl", hash = "sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c"}, + {file = "jsonschema_specifications-2023.12.1.tar.gz", hash = "sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc"}, ] [package.dependencies] -importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""} -referencing = ">=0.28.0" +referencing = ">=0.31.0" [[package]] name = "jupyter-client" -version = "8.3.0" +version = "8.6.0" description = "Jupyter protocol implementation and client libraries" category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "jupyter_client-8.3.0-py3-none-any.whl", hash = "sha256:7441af0c0672edc5d28035e92ba5e32fadcfa8a4e608a434c228836a89df6158"}, - {file = "jupyter_client-8.3.0.tar.gz", hash = "sha256:3af69921fe99617be1670399a0b857ad67275eefcfa291e2c81a160b7b650f5f"}, + {file = "jupyter_client-8.6.0-py3-none-any.whl", hash = "sha256:909c474dbe62582ae62b758bca86d6518c85234bdee2d908c778db6d72f39d99"}, + {file = "jupyter_client-8.6.0.tar.gz", hash = "sha256:0642244bb83b4764ae60d07e010e15f0e2d275ec4e918a8f7b80fbbef3ca60c7"}, ] [package.dependencies] @@ -1020,14 +1044,14 @@ test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pyt [[package]] name = "jupyter-core" -version = "5.3.1" +version = "5.7.1" description = "Jupyter core package. A base package on which Jupyter projects rely." category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "jupyter_core-5.3.1-py3-none-any.whl", hash = "sha256:ae9036db959a71ec1cac33081eeb040a79e681f08ab68b0883e9a676c7a90dce"}, - {file = "jupyter_core-5.3.1.tar.gz", hash = "sha256:5ba5c7938a7f97a6b0481463f7ff0dbac7c15ba48cf46fa4035ca6e838aa1aba"}, + {file = "jupyter_core-5.7.1-py3-none-any.whl", hash = "sha256:c65c82126453a723a2804aa52409930434598fd9d35091d63dfb919d2b765bb7"}, + {file = "jupyter_core-5.7.1.tar.gz", hash = "sha256:de61a9d7fc71240f688b2fb5ab659fbb56979458dc66a71decd098e03c79e218"}, ] [package.dependencies] @@ -1036,19 +1060,19 @@ pywin32 = {version = ">=300", markers = "sys_platform == \"win32\" and platform_ traitlets = ">=5.3" [package.extras] -docs = ["myst-parser", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "traitlets"] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "traitlets"] test = ["ipykernel", "pre-commit", "pytest", "pytest-cov", "pytest-timeout"] [[package]] name = "jupyter-events" -version = "0.7.0" +version = "0.9.0" description = "Jupyter Event System library" category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "jupyter_events-0.7.0-py3-none-any.whl", hash = "sha256:4753da434c13a37c3f3c89b500afa0c0a6241633441421f6adafe2fb2e2b924e"}, - {file = "jupyter_events-0.7.0.tar.gz", hash = "sha256:7be27f54b8388c03eefea123a4f79247c5b9381c49fb1cd48615ee191eb12615"}, + {file = "jupyter_events-0.9.0-py3-none-any.whl", hash = "sha256:d853b3c10273ff9bc8bb8b30076d65e2c9685579db736873de6c2232dde148bf"}, + {file = "jupyter_events-0.9.0.tar.gz", hash = "sha256:81ad2e4bc710881ec274d31c6c50669d71bbaa5dd9d01e600b56faa85700d399"}, ] [package.dependencies] @@ -1067,14 +1091,14 @@ test = ["click", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "p [[package]] name = "jupyter-lsp" -version = "2.2.0" +version = "2.2.2" description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server" category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "jupyter-lsp-2.2.0.tar.gz", hash = "sha256:8ebbcb533adb41e5d635eb8fe82956b0aafbf0fd443b6c4bfa906edeeb8635a1"}, - {file = "jupyter_lsp-2.2.0-py3-none-any.whl", hash = "sha256:9e06b8b4f7dd50300b70dd1a78c0c3b0c3d8fa68e0f2d8a5d1fbab62072aca3f"}, + {file = "jupyter-lsp-2.2.2.tar.gz", hash = "sha256:256d24620542ae4bba04a50fc1f6ffe208093a07d8e697fea0a8d1b8ca1b7e5b"}, + {file = "jupyter_lsp-2.2.2-py3-none-any.whl", hash = "sha256:3b95229e4168355a8c91928057c1621ac3510ba98b2a925e82ebd77f078b1aa5"}, ] [package.dependencies] @@ -1083,14 +1107,14 @@ jupyter-server = ">=1.1.2" [[package]] name = "jupyter-server" -version = "2.7.0" +version = "2.12.5" description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications." category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "jupyter_server-2.7.0-py3-none-any.whl", hash = "sha256:6a77912aff643e53fa14bdb2634884b52b784a4be77ce8e93f7283faed0f0849"}, - {file = "jupyter_server-2.7.0.tar.gz", hash = "sha256:36da0a266d31a41ac335a366c88933c17dfa5bb817a48f5c02c16d303bc9477f"}, + {file = "jupyter_server-2.12.5-py3-none-any.whl", hash = "sha256:184a0f82809a8522777cfb6b760ab6f4b1bb398664c5860a27cec696cb884923"}, + {file = "jupyter_server-2.12.5.tar.gz", hash = "sha256:0edb626c94baa22809be1323f9770cf1c00a952b17097592e40d03e6a3951689"}, ] [package.dependencies] @@ -1099,7 +1123,7 @@ argon2-cffi = "*" jinja2 = "*" jupyter-client = ">=7.4.4" jupyter-core = ">=4.12,<5.0.0 || >=5.1.0" -jupyter-events = ">=0.6.0" +jupyter-events = ">=0.9.0" jupyter-server-terminals = "*" nbconvert = ">=6.4.4" nbformat = ">=5.3.0" @@ -1108,7 +1132,7 @@ packaging = "*" prometheus-client = "*" pywinpty = {version = "*", markers = "os_name == \"nt\""} pyzmq = ">=24" -send2trash = "*" +send2trash = ">=1.8.2" terminado = ">=0.8.3" tornado = ">=6.2.0" traitlets = ">=5.6.0" @@ -1120,14 +1144,14 @@ test = ["flaky", "ipykernel", "pre-commit", "pytest (>=7.0)", "pytest-console-sc [[package]] name = "jupyter-server-terminals" -version = "0.4.4" +version = "0.5.2" description = "A Jupyter Server Extension Providing Terminals." category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "jupyter_server_terminals-0.4.4-py3-none-any.whl", hash = "sha256:75779164661cec02a8758a5311e18bb8eb70c4e86c6b699403100f1585a12a36"}, - {file = "jupyter_server_terminals-0.4.4.tar.gz", hash = "sha256:57ab779797c25a7ba68e97bcfb5d7740f2b5e8a83b5e8102b10438041a7eac5d"}, + {file = "jupyter_server_terminals-0.5.2-py3-none-any.whl", hash = "sha256:1b80c12765da979513c42c90215481bbc39bd8ae7c0350b4f85bc3eb58d0fa80"}, + {file = "jupyter_server_terminals-0.5.2.tar.gz", hash = "sha256:396b5ccc0881e550bf0ee7012c6ef1b53edbde69e67cab1d56e89711b46052e8"}, ] [package.dependencies] @@ -1135,25 +1159,24 @@ pywinpty = {version = ">=2.0.3", markers = "os_name == \"nt\""} terminado = ">=0.8.3" [package.extras] -docs = ["jinja2", "jupyter-server", "mistune (<3.0)", "myst-parser", "nbformat", "packaging", "pydata-sphinx-theme", "sphinxcontrib-github-alt", "sphinxcontrib-openapi", "sphinxcontrib-spelling", "sphinxemoji", "tornado"] -test = ["coverage", "jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-cov", "pytest-jupyter[server] (>=0.5.3)", "pytest-timeout"] +docs = ["jinja2", "jupyter-server", "mistune (<4.0)", "myst-parser", "nbformat", "packaging", "pydata-sphinx-theme", "sphinxcontrib-github-alt", "sphinxcontrib-openapi", "sphinxcontrib-spelling", "sphinxemoji", "tornado"] +test = ["jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-jupyter[server] (>=0.5.3)", "pytest-timeout"] [[package]] name = "jupyterlab" -version = "4.0.4" +version = "4.0.12" description = "JupyterLab computational environment" category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "jupyterlab-4.0.4-py3-none-any.whl", hash = "sha256:23eef35d22be8f2ad9b873ec41ceb2e8c3b0dc8ae740c0f973e2de09e587530f"}, - {file = "jupyterlab-4.0.4.tar.gz", hash = "sha256:049449a56d93202ed204e0e86f96f5a3447a08cfc09fb012fd239e178651cb34"}, + {file = "jupyterlab-4.0.12-py3-none-any.whl", hash = "sha256:53f132480e5f6564f4e20d1b5ed4e8b7945952a2decd5bdfa43760b1b536c99d"}, + {file = "jupyterlab-4.0.12.tar.gz", hash = "sha256:965d92efa82a538ed70ccb3968d9aabba788840da882e13d7b061780cdedc3b7"}, ] [package.dependencies] async-lru = ">=1.0.0" importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""} -importlib-resources = {version = ">=1.4", markers = "python_version < \"3.9\""} ipykernel = "*" jinja2 = ">=3.0.3" jupyter-core = "*" @@ -1167,33 +1190,33 @@ tornado = ">=6.2.0" traitlets = "*" [package.extras] -dev = ["black[jupyter] (==23.3.0)", "build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.0.271)"] -docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-tornasync", "sphinx (>=1.8)", "sphinx-copybutton"] +dev = ["build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.1.6)"] +docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-tornasync", "sphinx (>=1.8,<7.2.0)", "sphinx-copybutton"] docs-screenshots = ["altair (==5.0.1)", "ipython (==8.14.0)", "ipywidgets (==8.0.6)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.0.post0)", "matplotlib (==3.7.1)", "nbconvert (>=7.0.0)", "pandas (==2.0.2)", "scipy (==1.10.1)", "vega-datasets (==0.9.0)"] test = ["coverage", "pytest (>=7.0)", "pytest-check-links (>=0.7)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter (>=0.5.3)", "pytest-timeout", "pytest-tornasync", "requests", "requests-cache", "virtualenv"] [[package]] name = "jupyterlab-pygments" -version = "0.2.2" +version = "0.3.0" description = "Pygments theme using JupyterLab CSS variables" category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "jupyterlab_pygments-0.2.2-py2.py3-none-any.whl", hash = "sha256:2405800db07c9f770863bcf8049a529c3dd4d3e28536638bd7c1c01d2748309f"}, - {file = "jupyterlab_pygments-0.2.2.tar.gz", hash = "sha256:7405d7fde60819d905a9fa8ce89e4cd830e318cdad22a0030f7a901da705585d"}, + {file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"}, + {file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"}, ] [[package]] name = "jupyterlab-server" -version = "2.24.0" +version = "2.25.2" description = "A set of server components for JupyterLab and JupyterLab like applications." category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "jupyterlab_server-2.24.0-py3-none-any.whl", hash = "sha256:5f077e142bb8dc9b843d960f940c513581bceca3793a0d80f9c67d9522c4e876"}, - {file = "jupyterlab_server-2.24.0.tar.gz", hash = "sha256:4e6f99e0a5579bbbc32e449c4dbb039561d4f1a7827d5733273ed56738f21f07"}, + {file = "jupyterlab_server-2.25.2-py3-none-any.whl", hash = "sha256:5b1798c9cc6a44f65c757de9f97fc06fc3d42535afbf47d2ace5e964ab447aaf"}, + {file = "jupyterlab_server-2.25.2.tar.gz", hash = "sha256:bd0ec7a99ebcedc8bcff939ef86e52c378e44c2707e053fcd81d046ce979ee63"}, ] [package.dependencies] @@ -1201,15 +1224,45 @@ babel = ">=2.10" importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""} jinja2 = ">=3.0.3" json5 = ">=0.9.0" -jsonschema = ">=4.17.3" +jsonschema = ">=4.18.0" jupyter-server = ">=1.21,<3" packaging = ">=21.3" -requests = ">=2.28" +requests = ">=2.31" [package.extras] docs = ["autodoc-traits", "jinja2 (<3.2.0)", "mistune (<4)", "myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-copybutton", "sphinxcontrib-openapi (>0.8)"] -openapi = ["openapi-core (>=0.16.1,<0.17.0)", "ruamel-yaml"] -test = ["hatch", "ipykernel", "jupyterlab-server[openapi]", "openapi-spec-validator (>=0.5.1,<0.7.0)", "pytest (>=7.0)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter[server] (>=0.6.2)", "pytest-timeout", "requests-mock", "sphinxcontrib-spelling", "strict-rfc3339", "werkzeug"] +openapi = ["openapi-core (>=0.18.0,<0.19.0)", "ruamel-yaml"] +test = ["hatch", "ipykernel", "openapi-core (>=0.18.0,<0.19.0)", "openapi-spec-validator (>=0.6.0,<0.8.0)", "pytest (>=7.0)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter[server] (>=0.6.2)", "pytest-timeout", "requests-mock", "ruamel-yaml", "sphinxcontrib-spelling", "strict-rfc3339", "werkzeug"] + +[[package]] +name = "jupytext" +version = "1.16.1" +description = "Jupyter notebooks as Markdown documents, Julia, Python or R scripts" +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupytext-1.16.1-py3-none-any.whl", hash = "sha256:796ec4f68ada663569e5d38d4ef03738a01284bfe21c943c485bc36433898bd0"}, + {file = "jupytext-1.16.1.tar.gz", hash = "sha256:68c7b68685e870e80e60fda8286fbd6269e9c74dc1df4316df6fe46eabc94c99"}, +] + +[package.dependencies] +markdown-it-py = ">=1.0" +mdit-py-plugins = "*" +nbformat = "*" +packaging = "*" +pyyaml = "*" +toml = "*" + +[package.extras] +dev = ["jupytext[test-cov,test-external]"] +docs = ["myst-parser", "sphinx", "sphinx-copybutton", "sphinx-rtd-theme"] +test = ["pytest", "pytest-randomly", "pytest-xdist"] +test-cov = ["jupytext[test-integration]", "pytest-cov (>=2.6.1)"] +test-external = ["autopep8", "black", "flake8", "gitpython", "isort", "jupyter-fs (<0.4.0)", "jupytext[test-integration]", "pre-commit", "sphinx-gallery (<0.8)"] +test-functional = ["jupytext[test]"] +test-integration = ["ipykernel", "jupyter-server (!=2.11)", "jupytext[test-functional]", "nbconvert"] +test-ui = ["calysto-bash"] [[package]] name = "locket" @@ -1223,64 +1276,118 @@ files = [ {file = "locket-1.0.0.tar.gz", hash = "sha256:5c0d4c052a8bbbf750e056a8e65ccd309086f4f0f18a2eac306a8dfa4112a632"}, ] +[[package]] +name = "markdown" +version = "3.5.2" +description = "Python implementation of John Gruber's Markdown." +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "Markdown-3.5.2-py3-none-any.whl", hash = "sha256:d43323865d89fc0cb9b20c75fc8ad313af307cc087e84b657d9eec768eddeadd"}, + {file = "Markdown-3.5.2.tar.gz", hash = "sha256:e1ac7b3dc550ee80e602e71c1d168002f062e49f1b11e26a36264dafd4df2ef8"}, +] + +[package.dependencies] +importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} + +[package.extras] +docs = ["mdx-gh-links (>=0.2)", "mkdocs (>=1.5)", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-nature (>=0.6)", "mkdocs-section-index", "mkdocstrings[python]"] +testing = ["coverage", "pyyaml"] + +[[package]] +name = "markdown-it-py" +version = "3.0.0" +description = "Python port of markdown-it. Markdown parsing, done right!" +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, + {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, +] + +[package.dependencies] +mdurl = ">=0.1,<1.0" + +[package.extras] +benchmarking = ["psutil", "pytest", "pytest-benchmark"] +code-style = ["pre-commit (>=3.0,<4.0)"] +compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"] +linkify = ["linkify-it-py (>=1,<3)"] +plugins = ["mdit-py-plugins"] +profiling = ["gprof2dot"] +rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] +testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] + [[package]] name = "markupsafe" -version = "2.1.3" +version = "2.1.5" description = "Safely add untrusted strings to HTML/XML markup." category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-win32.whl", hash = "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-win32.whl", hash = "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-win_amd64.whl", hash = "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-win32.whl", hash = "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-win_amd64.whl", hash = "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-win32.whl", hash = "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba"}, - {file = "MarkupSafe-2.1.3.tar.gz", hash = "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, + {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, ] [[package]] @@ -1298,18 +1405,218 @@ files = [ [package.dependencies] traitlets = "*" +[[package]] +name = "mdit-py-plugins" +version = "0.4.0" +description = "Collection of plugins for markdown-it-py" +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "mdit_py_plugins-0.4.0-py3-none-any.whl", hash = "sha256:b51b3bb70691f57f974e257e367107857a93b36f322a9e6d44ca5bf28ec2def9"}, + {file = "mdit_py_plugins-0.4.0.tar.gz", hash = "sha256:d8ab27e9aed6c38aa716819fedfde15ca275715955f8a185a8e1cf90fb1d2c1b"}, +] + +[package.dependencies] +markdown-it-py = ">=1.0.0,<4.0.0" + +[package.extras] +code-style = ["pre-commit"] +rtd = ["myst-parser", "sphinx-book-theme"] +testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] + +[[package]] +name = "mdurl" +version = "0.1.2" +description = "Markdown URL utilities" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, + {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, +] + +[[package]] +name = "mergedeep" +version = "1.3.4" +description = "A deep merge function for 🐍." +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, + {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, +] + [[package]] name = "mistune" -version = "3.0.1" +version = "3.0.2" description = "A sane and fast Markdown parser with useful plugins and renderers" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "mistune-3.0.1-py3-none-any.whl", hash = "sha256:b9b3e438efbb57c62b5beb5e134dab664800bdf1284a7ee09e8b12b13eb1aac6"}, - {file = "mistune-3.0.1.tar.gz", hash = "sha256:e912116c13aa0944f9dc530db38eb88f6a77087ab128f49f84a48f4c05ea163c"}, + {file = "mistune-3.0.2-py3-none-any.whl", hash = "sha256:71481854c30fdbc938963d3605b72501f5c10a9320ecd412c121c163a1c7d205"}, + {file = "mistune-3.0.2.tar.gz", hash = "sha256:fc7f93ded930c92394ef2cb6f04a8aabab4117a91449e72dcc8dfa646a508be8"}, +] + +[[package]] +name = "mkdocs" +version = "1.5.3" +description = "Project documentation with Markdown." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "mkdocs-1.5.3-py3-none-any.whl", hash = "sha256:3b3a78e736b31158d64dbb2f8ba29bd46a379d0c6e324c2246c3bc3d2189cfc1"}, + {file = "mkdocs-1.5.3.tar.gz", hash = "sha256:eb7c99214dcb945313ba30426c2451b735992c73c2e10838f76d09e39ff4d0e2"}, ] +[package.dependencies] +click = ">=7.0" +colorama = {version = ">=0.4", markers = "platform_system == \"Windows\""} +ghp-import = ">=1.0" +importlib-metadata = {version = ">=4.3", markers = "python_version < \"3.10\""} +jinja2 = ">=2.11.1" +markdown = ">=3.2.1" +markupsafe = ">=2.0.1" +mergedeep = ">=1.3.4" +packaging = ">=20.5" +pathspec = ">=0.11.1" +platformdirs = ">=2.2.0" +pyyaml = ">=5.1" +pyyaml-env-tag = ">=0.1" +watchdog = ">=2.0" + +[package.extras] +i18n = ["babel (>=2.9.0)"] +min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4)", "ghp-import (==1.0)", "importlib-metadata (==4.3)", "jinja2 (==2.11.1)", "markdown (==3.2.1)", "markupsafe (==2.0.1)", "mergedeep (==1.3.4)", "packaging (==20.5)", "pathspec (==0.11.1)", "platformdirs (==2.2.0)", "pyyaml (==5.1)", "pyyaml-env-tag (==0.1)", "typing-extensions (==3.10)", "watchdog (==2.0)"] + +[[package]] +name = "mkdocs-autorefs" +version = "0.5.0" +description = "Automatically link across pages in MkDocs." +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "mkdocs_autorefs-0.5.0-py3-none-any.whl", hash = "sha256:7930fcb8ac1249f10e683967aeaddc0af49d90702af111a5e390e8b20b3d97ff"}, + {file = "mkdocs_autorefs-0.5.0.tar.gz", hash = "sha256:9a5054a94c08d28855cfab967ada10ed5be76e2bfad642302a610b252c3274c0"}, +] + +[package.dependencies] +Markdown = ">=3.3" +mkdocs = ">=1.1" + +[[package]] +name = "mkdocs-jupyter" +version = "0.24.6" +description = "Use Jupyter in mkdocs websites" +category = "dev" +optional = false +python-versions = ">=3.9" +files = [ + {file = "mkdocs_jupyter-0.24.6-py3-none-any.whl", hash = "sha256:56fb7ad796f2414a4143d54a966b805caf315c32413e97f85591623fa87dceca"}, + {file = "mkdocs_jupyter-0.24.6.tar.gz", hash = "sha256:89fcbe8a9523864d5416de1a60711640b6bc2972279d2adf46ed2776c2d9ff7c"}, +] + +[package.dependencies] +ipykernel = ">6.0.0,<7.0.0" +jupytext = ">1.13.8,<2" +mkdocs = ">=1.4.0,<2" +mkdocs-material = ">9.0.0" +nbconvert = ">=7.2.9,<8" +pygments = ">2.12.0" + +[[package]] +name = "mkdocs-material" +version = "9.5.7" +description = "Documentation that simply works" +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "mkdocs_material-9.5.7-py3-none-any.whl", hash = "sha256:0be8ce8bcfebb52bae9b00cf9b851df45b8a92d629afcfd7f2c09b2dfa155ea3"}, + {file = "mkdocs_material-9.5.7.tar.gz", hash = "sha256:16110292575d88a338d2961f3cb665cf12943ff8829e551a9b364f24019e46af"}, +] + +[package.dependencies] +babel = ">=2.10,<3.0" +colorama = ">=0.4,<1.0" +jinja2 = ">=3.0,<4.0" +markdown = ">=3.2,<4.0" +mkdocs = ">=1.5.3,<1.6.0" +mkdocs-material-extensions = ">=1.3,<2.0" +paginate = ">=0.5,<1.0" +pygments = ">=2.16,<3.0" +pymdown-extensions = ">=10.2,<11.0" +regex = ">=2022.4" +requests = ">=2.26,<3.0" + +[package.extras] +git = ["mkdocs-git-committers-plugin-2 (>=1.1,<2.0)", "mkdocs-git-revision-date-localized-plugin (>=1.2,<2.0)"] +imaging = ["cairosvg (>=2.6,<3.0)", "pillow (>=10.2,<11.0)"] +recommended = ["mkdocs-minify-plugin (>=0.7,<1.0)", "mkdocs-redirects (>=1.2,<2.0)", "mkdocs-rss-plugin (>=1.6,<2.0)"] + +[[package]] +name = "mkdocs-material-extensions" +version = "1.3.1" +description = "Extension pack for Python Markdown and MkDocs Material." +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31"}, + {file = "mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443"}, +] + +[[package]] +name = "mkdocstrings" +version = "0.24.0" +description = "Automatic documentation from sources, for MkDocs." +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "mkdocstrings-0.24.0-py3-none-any.whl", hash = "sha256:f4908560c10f587326d8f5165d1908817b2e280bbf707607f601c996366a2264"}, + {file = "mkdocstrings-0.24.0.tar.gz", hash = "sha256:222b1165be41257b494a9d29b14135d2b7ca43f38161d5b10caae03b87bd4f7e"}, +] + +[package.dependencies] +click = ">=7.0" +importlib-metadata = {version = ">=4.6", markers = "python_version < \"3.10\""} +Jinja2 = ">=2.11.1" +Markdown = ">=3.3" +MarkupSafe = ">=1.1" +mkdocs = ">=1.4" +mkdocs-autorefs = ">=0.3.1" +mkdocstrings-python = {version = ">=0.5.2", optional = true, markers = "extra == \"python\""} +platformdirs = ">=2.2.0" +pymdown-extensions = ">=6.3" +typing-extensions = {version = ">=4.1", markers = "python_version < \"3.10\""} + +[package.extras] +crystal = ["mkdocstrings-crystal (>=0.3.4)"] +python = ["mkdocstrings-python (>=0.5.2)"] +python-legacy = ["mkdocstrings-python-legacy (>=0.2.1)"] + +[[package]] +name = "mkdocstrings-python" +version = "1.8.0" +description = "A Python handler for mkdocstrings." +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "mkdocstrings_python-1.8.0-py3-none-any.whl", hash = "sha256:4209970cc90bec194568682a535848a8d8489516c6ed4adbe58bbc67b699ca9d"}, + {file = "mkdocstrings_python-1.8.0.tar.gz", hash = "sha256:1488bddf50ee42c07d9a488dddc197f8e8999c2899687043ec5dd1643d057192"}, +] + +[package.dependencies] +griffe = ">=0.37" +mkdocstrings = ">=0.20" + [[package]] name = "mypy-extensions" version = "1.0.0" @@ -1324,14 +1631,14 @@ files = [ [[package]] name = "nbclient" -version = "0.8.0" +version = "0.9.0" description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." category = "dev" optional = false python-versions = ">=3.8.0" files = [ - {file = "nbclient-0.8.0-py3-none-any.whl", hash = "sha256:25e861299e5303a0477568557c4045eccc7a34c17fc08e7959558707b9ebe548"}, - {file = "nbclient-0.8.0.tar.gz", hash = "sha256:f9b179cd4b2d7bca965f900a2ebf0db4a12ebff2f36a711cb66861e4ae158e55"}, + {file = "nbclient-0.9.0-py3-none-any.whl", hash = "sha256:a3a1ddfb34d4a9d17fc744d655962714a866639acd30130e9be84191cd97cd15"}, + {file = "nbclient-0.9.0.tar.gz", hash = "sha256:4b28c207877cf33ef3a9838cdc7a54c5ceff981194a82eac59d558f05487295e"}, ] [package.dependencies] @@ -1347,14 +1654,14 @@ test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>= [[package]] name = "nbconvert" -version = "7.7.3" +version = "7.14.2" description = "Converting Jupyter Notebooks" category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "nbconvert-7.7.3-py3-none-any.whl", hash = "sha256:3022adadff3f86578a47fab7c2228bb3ca9c56a24345642a22f917f6168b48fc"}, - {file = "nbconvert-7.7.3.tar.gz", hash = "sha256:4a5996bf5f3cd16aa0431897ba1aa4c64842c2079f434b3dc6b8c4b252ef3355"}, + {file = "nbconvert-7.14.2-py3-none-any.whl", hash = "sha256:db28590cef90f7faf2ebbc71acd402cbecf13d29176df728c0a9025a49345ea1"}, + {file = "nbconvert-7.14.2.tar.gz", hash = "sha256:a7f8808fd4e082431673ac538400218dd45efd076fbeb07cc6e5aa5a3a4e949e"}, ] [package.dependencies] @@ -1381,7 +1688,7 @@ docs = ["ipykernel", "ipython", "myst-parser", "nbsphinx (>=0.2.12)", "pydata-sp qtpdf = ["nbconvert[qtpng]"] qtpng = ["pyqtwebengine (>=5.15)"] serve = ["tornado (>=6.1)"] -test = ["flaky", "ipykernel", "ipywidgets (>=7)", "pre-commit", "pytest", "pytest-dependency"] +test = ["flaky", "ipykernel", "ipywidgets (>=7.5)", "pytest"] webpdf = ["playwright"] [[package]] @@ -1408,51 +1715,51 @@ test = ["pep440", "pre-commit", "pytest", "testpath"] [[package]] name = "nest-asyncio" -version = "1.5.7" +version = "1.6.0" description = "Patch asyncio to allow nested event loops" category = "dev" optional = false python-versions = ">=3.5" files = [ - {file = "nest_asyncio-1.5.7-py3-none-any.whl", hash = "sha256:5301c82941b550b3123a1ea772ba9a1c80bad3a182be8c1a5ae6ad3be57a9657"}, - {file = "nest_asyncio-1.5.7.tar.gz", hash = "sha256:6a80f7b98f24d9083ed24608977c09dd608d83f91cccc24c9d2cba6d10e01c10"}, + {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"}, + {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"}, ] [[package]] name = "netcdf4" -version = "1.6.4" +version = "1.6.5" description = "Provides an object-oriented python interface to the netCDF version 4 library" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "netCDF4-1.6.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:59eba11eac34f9c7bd209121b26954c71ff69a2eb2838d2ac339b39ea60a95c0"}, - {file = "netCDF4-1.6.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:541286ce7318033b326da2e4325f08037b561887d5fd25d12c2b0cad74eb1edc"}, - {file = "netCDF4-1.6.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6620f7962daff02df2fbcbc8f7af53edf21512bc7f5697d846d424a094f96345"}, - {file = "netCDF4-1.6.4-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2dcf74f7b15ae6105c09df93af22ad61366a288fbb329fdbe3b9606c56c788f5"}, - {file = "netCDF4-1.6.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b368fc185cac7d8890a8cf1016488cd252a144008144d06a615925b09bf8d67e"}, - {file = "netCDF4-1.6.4-cp310-cp310-win_amd64.whl", hash = "sha256:eb19c51fa090b562be4f87ff736b629ffafc03d7bf1fa10f623f957d49417b4f"}, - {file = "netCDF4-1.6.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:08a7efab50d5a4da6227244e544a74f676b732ccdff2b8a4678174c15a3f8dff"}, - {file = "netCDF4-1.6.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f9b7ad3f66d50970fa1bd5509c52bb8a99740c8a79fafa83bfd0bc7348b6ab5a"}, - {file = "netCDF4-1.6.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c5cad50d4e6e5a3b35c76862c58393ddf93baa44de98b6e040ac21896145881"}, - {file = "netCDF4-1.6.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c2395c53a37717b1047650e1c9de68a3d69542bb25df5c594e1e14e9480bb18"}, - {file = "netCDF4-1.6.4-cp311-cp311-win_amd64.whl", hash = "sha256:c85f77599c61a88d512d6536e181ff1c01fd16f4740367e4f8e5cacb36500293"}, - {file = "netCDF4-1.6.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3e3efefdb9fc936503e89ff5b40b33f2c96527bae1e9672a2d369c5f7cb30bbd"}, - {file = "netCDF4-1.6.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:74a3e720a9764d13d669763c1f3c73f3f719ef181dccecad062440eea03f069e"}, - {file = "netCDF4-1.6.4-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c67bc7fafced3f9370fdef6ce7abe235a771bed7ebe534f4ba3c84d9689dae23"}, - {file = "netCDF4-1.6.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b599a3b5c0d0e3affa70d7954c2b0c4ab7d7bdb52b0e413c811da9725982de33"}, - {file = "netCDF4-1.6.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b21d47c23edd02ff83160c8ccc1e4d4946a91d454b246e7f63d7a6d63901707c"}, - {file = "netCDF4-1.6.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8eff69acdf250ebaf817cc9bbfb457d241f92f989c7f9cca33eb29985c0f9797"}, - {file = "netCDF4-1.6.4-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4d6bcdf27fd611eaec891f4281caf5c56bbad6f5fc245ce3e6dd2dc4fc3fad56"}, - {file = "netCDF4-1.6.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c99a3d476242d489da26f71e318ddd314723ca766f4db11270863a764b107bc3"}, - {file = "netCDF4-1.6.4-cp38-cp38-win_amd64.whl", hash = "sha256:422077c7303cb17cbe8b9ace965cafda1f9d4c9b035809fc5c87091e7ff4d606"}, - {file = "netCDF4-1.6.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0050e49889c357ae0a73f96e2b9988f250396689b78142de88a39ac8b1e702aa"}, - {file = "netCDF4-1.6.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0a2cd2e2a9da98f1838e1edfeb011b840a434e04d156052b936ffe49f5298126"}, - {file = "netCDF4-1.6.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:695cd0a40df49b4218350686c44e13b3a4671e53ee33faf7439a89940cbccc68"}, - {file = "netCDF4-1.6.4-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e582e6e41b27fc3a3296239afe065941bda60118d585df0ad41603f6f962888e"}, - {file = "netCDF4-1.6.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7b4ab3f0cd28a6685031e8b9be00c3047b4256da576c9de540440d013a31cea"}, - {file = "netCDF4-1.6.4-cp39-cp39-win_amd64.whl", hash = "sha256:1a950b3d8fcffca05e371a4cb64dc76580375588d1fca43b788192f409108ebe"}, - {file = "netCDF4-1.6.4.tar.gz", hash = "sha256:66da6542cbc7a6045cd1d979397dfd5a3f6c880c76d52b8f98bb108c82ee8c6e"}, + {file = "netCDF4-1.6.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d23b97cbde2bf413fadc4697c5c255a0436511c02f811e127e0fb12f5b882a4c"}, + {file = "netCDF4-1.6.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e5edfed673005f47f8d2fbea9c72c382b085dd358ac3c20ca743a563ed7b90e"}, + {file = "netCDF4-1.6.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:10d2ac9ae1308ca837d86c6dc304ec455a85bdba0f2175e222844a54589168dc"}, + {file = "netCDF4-1.6.5-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9a63a2be2f80977ac23bb0aa736c565011fd4639097ce0922e01b0dc38015df2"}, + {file = "netCDF4-1.6.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3aaceea2097d292bad398d9f9b4fe403efa7b1568fcfa6faba9b67b1630027f9"}, + {file = "netCDF4-1.6.5-cp310-cp310-win_amd64.whl", hash = "sha256:111357d9e12eb79e8d58bfd91bc6b230d35b17a0ebd8c546d17416e8ceebea49"}, + {file = "netCDF4-1.6.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1c5fede0b34c0a02a1b9e84116bfb3fcd2f80124a651d4836e72b785d10e2f15"}, + {file = "netCDF4-1.6.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3de5512b9270aa6472e4f3aa2bf895a7364c1d4f8667ce3b82e8232197d4fec8"}, + {file = "netCDF4-1.6.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b20971a164431f6eca1d24df8aa153db15c2c1b9630e83ccc5cf004e8ac8151d"}, + {file = "netCDF4-1.6.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad1101d538077152b866782e44458356981526bf2ea9cc07930bf28b589c82a7"}, + {file = "netCDF4-1.6.5-cp311-cp311-win_amd64.whl", hash = "sha256:de4dc973fae9e2bbdf42e094125e423a4c25393172a61958314969b055a38889"}, + {file = "netCDF4-1.6.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:19e16c63cdd7c0dbffe284a4a65f226ba1026f476f35cbedd099b4792b395f69"}, + {file = "netCDF4-1.6.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b994afce2ca4073f6b757385a6c0ffec25ecaae2b8821535b303c7cdbf6de42b"}, + {file = "netCDF4-1.6.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0187646e3348e7a8cd654617dda65517df138042c94c2fcc6682ff7c8c6654dc"}, + {file = "netCDF4-1.6.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1ab5dabac27d25fcc82c52dc29a74a6585e865208cce35f4e285df83d3df0b2"}, + {file = "netCDF4-1.6.5-cp312-cp312-win_amd64.whl", hash = "sha256:081e9043ac6160989f60570928eabe803c88ce7df1d3f79f2345dc48f68ef752"}, + {file = "netCDF4-1.6.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9b47b22dda5b25ba6291f97634d7ac67b0a843f8ae5c9d9d5813c15364f66d0a"}, + {file = "netCDF4-1.6.5-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4609dd62d14798c9524327287091875449d68588c128abb768fc0c76c4a28165"}, + {file = "netCDF4-1.6.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2455e9d35fde067e6a6bdc24aa9d44962235a071cec49904d1589e298c23dcd3"}, + {file = "netCDF4-1.6.5-cp38-cp38-win_amd64.whl", hash = "sha256:2c210794d96431d92b5992e46ad8a9f97237bf6d6956f8816978a03dc0fa18c3"}, + {file = "netCDF4-1.6.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:18255b8b283d32d3900092f29c67e53aa25bd8f0dfe7adde59fe782d865a381c"}, + {file = "netCDF4-1.6.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:53050562bac84738bbd121fbbee9593d074579f5d6fdaafcb981abeb5c964225"}, + {file = "netCDF4-1.6.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:938c062382406bca9198b16adddd87c09b00521766b138cdfd11c95546eefeb8"}, + {file = "netCDF4-1.6.5-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a8300451d7542d3c4ff1dcccf5fb1c7d44bdd1dc08ec77dab04416caf13cb1f"}, + {file = "netCDF4-1.6.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a27db2701feef31201c9b20b04a9579196edc20dfc339ca423c7b81e462d6e14"}, + {file = "netCDF4-1.6.5-cp39-cp39-win_amd64.whl", hash = "sha256:574d7742ab321e5f9f33b5b1296c4ad4e5c469152c17d4fc453d5070e413e596"}, + {file = "netCDF4-1.6.5.tar.gz", hash = "sha256:824881d0aacfde5bd982d6adedd8574259c85553781e7b83e0ce82b890bfa0ef"}, ] [package.dependencies] @@ -1460,6 +1767,9 @@ certifi = "*" cftime = "*" numpy = "*" +[package.extras] +tests = ["Cython", "packaging", "pytest"] + [[package]] name = "notebook-shim" version = "0.2.3" @@ -1518,26 +1828,37 @@ files = [ [[package]] name = "overrides" -version = "7.3.1" +version = "7.7.0" description = "A decorator to automatically detect mismatch when overriding a method." category = "dev" optional = false python-versions = ">=3.6" files = [ - {file = "overrides-7.3.1-py3-none-any.whl", hash = "sha256:6187d8710a935d09b0bcef8238301d6ee2569d2ac1ae0ec39a8c7924e27f58ca"}, - {file = "overrides-7.3.1.tar.gz", hash = "sha256:8b97c6c1e1681b78cbc9424b138d880f0803c2254c5ebaabdde57bb6c62093f2"}, + {file = "overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49"}, + {file = "overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a"}, ] [[package]] name = "packaging" -version = "23.1" +version = "23.2" description = "Core utilities for Python packages" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"}, - {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"}, + {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, + {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, +] + +[[package]] +name = "paginate" +version = "0.5.6" +description = "Divides large result sets into pages for easier browsing" +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "paginate-0.5.6.tar.gz", hash = "sha256:5e6007b6a9398177a7e1648d04fdd9f8c9766a1a945bceac82f1929e8c78af2d"}, ] [[package]] @@ -1610,14 +1931,14 @@ xml = ["lxml (>=4.6.3)"] [[package]] name = "pandocfilters" -version = "1.5.0" +version = "1.5.1" description = "Utilities for writing pandoc filters in python" category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ - {file = "pandocfilters-1.5.0-py2.py3-none-any.whl", hash = "sha256:33aae3f25fd1a026079f5d27bdd52496f0e0803b3469282162bafdcbdf6ef14f"}, - {file = "pandocfilters-1.5.0.tar.gz", hash = "sha256:0b679503337d233b4339a817bfc8c50064e2eff681314376a47cb582305a7a38"}, + {file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"}, + {file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e"}, ] [[package]] @@ -1638,14 +1959,14 @@ testing = ["docopt", "pytest (<6.0.0)"] [[package]] name = "partd" -version = "1.4.0" +version = "1.4.1" description = "Appendable key-value storage" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "partd-1.4.0-py3-none-any.whl", hash = "sha256:7a63529348cf0dff14b986db641cd1b83c16b5cb9fc647c2851779db03282ef8"}, - {file = "partd-1.4.0.tar.gz", hash = "sha256:aa0ff35dbbcc807ae374db56332f4c1b39b46f67bf2975f5151e0b4186aed0d5"}, + {file = "partd-1.4.1-py3-none-any.whl", hash = "sha256:27e766663d36c161e2827aa3e28541c992f0b9527d3cca047e13fb3acdb989e6"}, + {file = "partd-1.4.1.tar.gz", hash = "sha256:56c25dd49e6fea5727e731203c466c6e092f308d8f0024e199d02f6aa2167f67"}, ] [package.dependencies] @@ -1657,26 +1978,26 @@ complete = ["blosc", "numpy (>=1.9.0)", "pandas (>=0.19.0)", "pyzmq"] [[package]] name = "pathspec" -version = "0.11.2" +version = "0.12.1" description = "Utility library for gitignore style pattern matching of file paths." category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pathspec-0.11.2-py3-none-any.whl", hash = "sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20"}, - {file = "pathspec-0.11.2.tar.gz", hash = "sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3"}, + {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, + {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, ] [[package]] name = "pexpect" -version = "4.8.0" +version = "4.9.0" description = "Pexpect allows easy control of interactive console applications." category = "dev" optional = false python-versions = "*" files = [ - {file = "pexpect-4.8.0-py2.py3-none-any.whl", hash = "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937"}, - {file = "pexpect-4.8.0.tar.gz", hash = "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c"}, + {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"}, + {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"}, ] [package.dependencies] @@ -1694,44 +2015,32 @@ files = [ {file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"}, ] -[[package]] -name = "pkgutil-resolve-name" -version = "1.3.10" -description = "Resolve a name to an object." -category = "dev" -optional = false -python-versions = ">=3.6" -files = [ - {file = "pkgutil_resolve_name-1.3.10-py3-none-any.whl", hash = "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e"}, - {file = "pkgutil_resolve_name-1.3.10.tar.gz", hash = "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174"}, -] - [[package]] name = "platformdirs" -version = "3.10.0" +version = "4.2.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "platformdirs-3.10.0-py3-none-any.whl", hash = "sha256:d7c24979f292f916dc9cbf8648319032f551ea8c49a4c9bf2fb556a02070ec1d"}, - {file = "platformdirs-3.10.0.tar.gz", hash = "sha256:b45696dab2d7cc691a3226759c0d3b00c47c8b6e293d96f6436f733303f77f6d"}, + {file = "platformdirs-4.2.0-py3-none-any.whl", hash = "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068"}, + {file = "platformdirs-4.2.0.tar.gz", hash = "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"}, ] [package.extras] -docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.1)", "sphinx-autodoc-typehints (>=1.24)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)"] +docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] [[package]] name = "pluggy" -version = "1.2.0" +version = "1.4.0" description = "plugin and hook calling mechanisms for python" category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pluggy-1.2.0-py3-none-any.whl", hash = "sha256:c2fd55a7d7a3863cba1a013e4e2414658b1d07b6bc57b3919e0c63c9abb99849"}, - {file = "pluggy-1.2.0.tar.gz", hash = "sha256:d12f0c4b579b15f5e054301bb226ee85eeeba08ffec228092f8defbaa3a4c4b3"}, + {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"}, + {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"}, ] [package.extras] @@ -1740,14 +2049,14 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "prometheus-client" -version = "0.17.1" +version = "0.19.0" description = "Python client for the Prometheus monitoring system." category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "prometheus_client-0.17.1-py3-none-any.whl", hash = "sha256:e537f37160f6807b8202a6fc4764cdd19bac5480ddd3e0d463c3002b34462101"}, - {file = "prometheus_client-0.17.1.tar.gz", hash = "sha256:21e674f39831ae3f8acde238afd9a27a37d0d2fb5a28ea094f0ce25d2cbf2091"}, + {file = "prometheus_client-0.19.0-py3-none-any.whl", hash = "sha256:c88b1e6ecf6b41cd8fb5731c7ae919bf66df6ec6fafa555cd6c0e16ca169ae92"}, + {file = "prometheus_client-0.19.0.tar.gz", hash = "sha256:4585b0d1223148c27a225b10dbec5ae9bc4c81a99a3fa80774fa6209935324e1"}, ] [package.extras] @@ -1755,14 +2064,14 @@ twisted = ["twisted"] [[package]] name = "prompt-toolkit" -version = "3.0.39" +version = "3.0.43" description = "Library for building powerful interactive command lines in Python" category = "dev" optional = false python-versions = ">=3.7.0" files = [ - {file = "prompt_toolkit-3.0.39-py3-none-any.whl", hash = "sha256:9dffbe1d8acf91e3de75f3b544e4842382fc06c6babe903ac9acb74dc6e08d88"}, - {file = "prompt_toolkit-3.0.39.tar.gz", hash = "sha256:04505ade687dc26dc4284b1ad19a83be2f2afe83e7a828ace0c72f3a1df72aac"}, + {file = "prompt_toolkit-3.0.43-py3-none-any.whl", hash = "sha256:a11a29cb3bf0a28a387fe5122cdb649816a957cd9261dcedf8c9f1fef33eacf6"}, + {file = "prompt_toolkit-3.0.43.tar.gz", hash = "sha256:3527b7af26106cbc65a040bcc84839a3566ec1b051bb0bfe953631e704b0ff7d"}, ] [package.dependencies] @@ -1770,26 +2079,28 @@ wcwidth = "*" [[package]] name = "psutil" -version = "5.9.5" +version = "5.9.8" description = "Cross-platform lib for process and system monitoring in Python." category = "dev" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ - {file = "psutil-5.9.5-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:be8929ce4313f9f8146caad4272f6abb8bf99fc6cf59344a3167ecd74f4f203f"}, - {file = "psutil-5.9.5-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ab8ed1a1d77c95453db1ae00a3f9c50227ebd955437bcf2a574ba8adbf6a74d5"}, - {file = "psutil-5.9.5-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:4aef137f3345082a3d3232187aeb4ac4ef959ba3d7c10c33dd73763fbc063da4"}, - {file = "psutil-5.9.5-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:ea8518d152174e1249c4f2a1c89e3e6065941df2fa13a1ab45327716a23c2b48"}, - {file = "psutil-5.9.5-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:acf2aef9391710afded549ff602b5887d7a2349831ae4c26be7c807c0a39fac4"}, - {file = "psutil-5.9.5-cp27-none-win32.whl", hash = "sha256:5b9b8cb93f507e8dbaf22af6a2fd0ccbe8244bf30b1baad6b3954e935157ae3f"}, - {file = "psutil-5.9.5-cp27-none-win_amd64.whl", hash = "sha256:8c5f7c5a052d1d567db4ddd231a9d27a74e8e4a9c3f44b1032762bd7b9fdcd42"}, - {file = "psutil-5.9.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:3c6f686f4225553615612f6d9bc21f1c0e305f75d7d8454f9b46e901778e7217"}, - {file = "psutil-5.9.5-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7a7dd9997128a0d928ed4fb2c2d57e5102bb6089027939f3b722f3a210f9a8da"}, - {file = "psutil-5.9.5-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89518112647f1276b03ca97b65cc7f64ca587b1eb0278383017c2a0dcc26cbe4"}, - {file = "psutil-5.9.5-cp36-abi3-win32.whl", hash = "sha256:104a5cc0e31baa2bcf67900be36acde157756b9c44017b86b2c049f11957887d"}, - {file = "psutil-5.9.5-cp36-abi3-win_amd64.whl", hash = "sha256:b258c0c1c9d145a1d5ceffab1134441c4c5113b2417fafff7315a917a026c3c9"}, - {file = "psutil-5.9.5-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:c607bb3b57dc779d55e1554846352b4e358c10fff3abf3514a7a6601beebdb30"}, - {file = "psutil-5.9.5.tar.gz", hash = "sha256:5410638e4df39c54d957fc51ce03048acd8e6d60abc0f5107af51e5fb566eb3c"}, + {file = "psutil-5.9.8-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:26bd09967ae00920df88e0352a91cff1a78f8d69b3ecabbfe733610c0af486c8"}, + {file = "psutil-5.9.8-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:05806de88103b25903dff19bb6692bd2e714ccf9e668d050d144012055cbca73"}, + {file = "psutil-5.9.8-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:611052c4bc70432ec770d5d54f64206aa7203a101ec273a0cd82418c86503bb7"}, + {file = "psutil-5.9.8-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:50187900d73c1381ba1454cf40308c2bf6f34268518b3f36a9b663ca87e65e36"}, + {file = "psutil-5.9.8-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:02615ed8c5ea222323408ceba16c60e99c3f91639b07da6373fb7e6539abc56d"}, + {file = "psutil-5.9.8-cp27-none-win32.whl", hash = "sha256:36f435891adb138ed3c9e58c6af3e2e6ca9ac2f365efe1f9cfef2794e6c93b4e"}, + {file = "psutil-5.9.8-cp27-none-win_amd64.whl", hash = "sha256:bd1184ceb3f87651a67b2708d4c3338e9b10c5df903f2e3776b62303b26cb631"}, + {file = "psutil-5.9.8-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:aee678c8720623dc456fa20659af736241f575d79429a0e5e9cf88ae0605cc81"}, + {file = "psutil-5.9.8-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8cb6403ce6d8e047495a701dc7c5bd788add903f8986d523e3e20b98b733e421"}, + {file = "psutil-5.9.8-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d06016f7f8625a1825ba3732081d77c94589dca78b7a3fc072194851e88461a4"}, + {file = "psutil-5.9.8-cp36-cp36m-win32.whl", hash = "sha256:7d79560ad97af658a0f6adfef8b834b53f64746d45b403f225b85c5c2c140eee"}, + {file = "psutil-5.9.8-cp36-cp36m-win_amd64.whl", hash = "sha256:27cc40c3493bb10de1be4b3f07cae4c010ce715290a5be22b98493509c6299e2"}, + {file = "psutil-5.9.8-cp37-abi3-win32.whl", hash = "sha256:bc56c2a1b0d15aa3eaa5a60c9f3f8e3e565303b465dbf57a1b730e7a2b9844e0"}, + {file = "psutil-5.9.8-cp37-abi3-win_amd64.whl", hash = "sha256:8db4c1b57507eef143a15a6884ca10f7c73876cdf5d51e713151c1236a0e68cf"}, + {file = "psutil-5.9.8-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:d16bbddf0693323b8c6123dd804100241da461e41d6e332fb0ba6058f630f8c8"}, + {file = "psutil-5.9.8.tar.gz", hash = "sha256:6be126e3225486dff286a8fb9a06246a5253f4c7c53b475ea5f5ac934e64194c"}, ] [package.extras] @@ -1836,29 +2147,49 @@ files = [ [[package]] name = "pygments" -version = "2.15.1" +version = "2.17.2" description = "Pygments is a syntax highlighting package written in Python." category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "Pygments-2.15.1-py3-none-any.whl", hash = "sha256:db2db3deb4b4179f399a09054b023b6a586b76499d36965813c71aa8ed7b5fd1"}, - {file = "Pygments-2.15.1.tar.gz", hash = "sha256:8ace4d3c1dd481894b2005f560ead0f9f19ee64fe983366be1a21e171d12775c"}, + {file = "pygments-2.17.2-py3-none-any.whl", hash = "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c"}, + {file = "pygments-2.17.2.tar.gz", hash = "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"}, ] [package.extras] plugins = ["importlib-metadata"] +windows-terminal = ["colorama (>=0.4.6)"] + +[[package]] +name = "pymdown-extensions" +version = "10.7" +description = "Extension pack for Python Markdown." +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pymdown_extensions-10.7-py3-none-any.whl", hash = "sha256:6ca215bc57bc12bf32b414887a68b810637d039124ed9b2e5bd3325cbb2c050c"}, + {file = "pymdown_extensions-10.7.tar.gz", hash = "sha256:c0d64d5cf62566f59e6b2b690a4095c931107c250a8c8e1351c1de5f6b036deb"}, +] + +[package.dependencies] +markdown = ">=3.5" +pyyaml = "*" + +[package.extras] +extra = ["pygments (>=2.12)"] [[package]] name = "pytest" -version = "7.4.0" +version = "8.0.0" description = "pytest: simple powerful testing with Python" category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pytest-7.4.0-py3-none-any.whl", hash = "sha256:78bf16451a2eb8c7a2ea98e32dc119fd2aa758f1d5d66dbf0a59d69a3969df32"}, - {file = "pytest-7.4.0.tar.gz", hash = "sha256:b4bf8c45bd59934ed84001ad51e11b4ee40d40a1229d2c79f9c592b0a3f6bd8a"}, + {file = "pytest-8.0.0-py3-none-any.whl", hash = "sha256:50fb9cbe836c3f20f0dfa99c565201fb75dc54c8d76373cd1bde06b06657bdb6"}, + {file = "pytest-8.0.0.tar.gz", hash = "sha256:249b1b0864530ba251b7438274c4d251c58d868edaaec8762893ad4a0d71c36c"}, ] [package.dependencies] @@ -1866,7 +2197,7 @@ colorama = {version = "*", markers = "sys_platform == \"win32\""} exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} iniconfig = "*" packaging = "*" -pluggy = ">=0.12,<2.0" +pluggy = ">=1.3.0,<2.0" tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} [package.extras] @@ -1901,14 +2232,14 @@ files = [ [[package]] name = "pytz" -version = "2023.3" +version = "2024.1" description = "World timezone definitions, modern and historical" category = "main" optional = false python-versions = "*" files = [ - {file = "pytz-2023.3-py2.py3-none-any.whl", hash = "sha256:a151b3abb88eda1d4e34a9814df37de2a80e301e68ba0fd856fb9b46bfbbbffb"}, - {file = "pytz-2023.3.tar.gz", hash = "sha256:1d8ce29db189191fb55338ee6d0387d82ab59f3d00eac103412d64e0ebd0c588"}, + {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, + {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, ] [[package]] @@ -1937,17 +2268,18 @@ files = [ [[package]] name = "pywinpty" -version = "2.0.11" +version = "2.0.12" description = "Pseudo terminal support for Windows from Python." category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "pywinpty-2.0.11-cp310-none-win_amd64.whl", hash = "sha256:452f10ac9ff8ab9151aa8cea9e491a9612a12250b1899278c6a56bc184afb47f"}, - {file = "pywinpty-2.0.11-cp311-none-win_amd64.whl", hash = "sha256:6701867d42aec1239bc0fedf49a336570eb60eb886e81763db77ea2b6c533cc3"}, - {file = "pywinpty-2.0.11-cp38-none-win_amd64.whl", hash = "sha256:0ffd287751ad871141dc9724de70ea21f7fc2ff1af50861e0d232cf70739d8c4"}, - {file = "pywinpty-2.0.11-cp39-none-win_amd64.whl", hash = "sha256:e4e7f023c28ca7aa8e1313e53ba80a4d10171fe27857b7e02f99882dfe3e8638"}, - {file = "pywinpty-2.0.11.tar.gz", hash = "sha256:e244cffe29a894876e2cd251306efd0d8d64abd5ada0a46150a4a71c0b9ad5c5"}, + {file = "pywinpty-2.0.12-cp310-none-win_amd64.whl", hash = "sha256:21319cd1d7c8844fb2c970fb3a55a3db5543f112ff9cfcd623746b9c47501575"}, + {file = "pywinpty-2.0.12-cp311-none-win_amd64.whl", hash = "sha256:853985a8f48f4731a716653170cd735da36ffbdc79dcb4c7b7140bce11d8c722"}, + {file = "pywinpty-2.0.12-cp312-none-win_amd64.whl", hash = "sha256:1617b729999eb6713590e17665052b1a6ae0ad76ee31e60b444147c5b6a35dca"}, + {file = "pywinpty-2.0.12-cp38-none-win_amd64.whl", hash = "sha256:189380469ca143d06e19e19ff3fba0fcefe8b4a8cc942140a6b863aed7eebb2d"}, + {file = "pywinpty-2.0.12-cp39-none-win_amd64.whl", hash = "sha256:7520575b6546db23e693cbd865db2764097bd6d4ef5dc18c92555904cd62c3d4"}, + {file = "pywinpty-2.0.12.tar.gz", hash = "sha256:8197de460ae8ebb7f5d1701dfa1b5df45b157bb832e92acba316305e18ca00dd"}, ] [[package]] @@ -2000,91 +2332,122 @@ files = [ {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, ] +[[package]] +name = "pyyaml-env-tag" +version = "0.1" +description = "A custom YAML tag for referencing environment variables in YAML files. " +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069"}, + {file = "pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb"}, +] + +[package.dependencies] +pyyaml = "*" + [[package]] name = "pyzmq" -version = "25.1.0" +version = "25.1.2" description = "Python bindings for 0MQ" category = "dev" optional = false python-versions = ">=3.6" files = [ - {file = "pyzmq-25.1.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:1a6169e69034eaa06823da6a93a7739ff38716142b3596c180363dee729d713d"}, - {file = "pyzmq-25.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:19d0383b1f18411d137d891cab567de9afa609b214de68b86e20173dc624c101"}, - {file = "pyzmq-25.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1e931d9a92f628858a50f5bdffdfcf839aebe388b82f9d2ccd5d22a38a789dc"}, - {file = "pyzmq-25.1.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:97d984b1b2f574bc1bb58296d3c0b64b10e95e7026f8716ed6c0b86d4679843f"}, - {file = "pyzmq-25.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:154bddda2a351161474b36dba03bf1463377ec226a13458725183e508840df89"}, - {file = "pyzmq-25.1.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:cb6d161ae94fb35bb518b74bb06b7293299c15ba3bc099dccd6a5b7ae589aee3"}, - {file = "pyzmq-25.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:90146ab578931e0e2826ee39d0c948d0ea72734378f1898939d18bc9c823fcf9"}, - {file = "pyzmq-25.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:831ba20b660b39e39e5ac8603e8193f8fce1ee03a42c84ade89c36a251449d80"}, - {file = "pyzmq-25.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3a522510e3434e12aff80187144c6df556bb06fe6b9d01b2ecfbd2b5bfa5c60c"}, - {file = "pyzmq-25.1.0-cp310-cp310-win32.whl", hash = "sha256:be24a5867b8e3b9dd5c241de359a9a5217698ff616ac2daa47713ba2ebe30ad1"}, - {file = "pyzmq-25.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:5693dcc4f163481cf79e98cf2d7995c60e43809e325b77a7748d8024b1b7bcba"}, - {file = "pyzmq-25.1.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:13bbe36da3f8aaf2b7ec12696253c0bf6ffe05f4507985a8844a1081db6ec22d"}, - {file = "pyzmq-25.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:69511d604368f3dc58d4be1b0bad99b61ee92b44afe1cd9b7bd8c5e34ea8248a"}, - {file = "pyzmq-25.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a983c8694667fd76d793ada77fd36c8317e76aa66eec75be2653cef2ea72883"}, - {file = "pyzmq-25.1.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:332616f95eb400492103ab9d542b69d5f0ff628b23129a4bc0a2fd48da6e4e0b"}, - {file = "pyzmq-25.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58416db767787aedbfd57116714aad6c9ce57215ffa1c3758a52403f7c68cff5"}, - {file = "pyzmq-25.1.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:cad9545f5801a125f162d09ec9b724b7ad9b6440151b89645241d0120e119dcc"}, - {file = "pyzmq-25.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d6128d431b8dfa888bf51c22a04d48bcb3d64431caf02b3cb943269f17fd2994"}, - {file = "pyzmq-25.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:2b15247c49d8cbea695b321ae5478d47cffd496a2ec5ef47131a9e79ddd7e46c"}, - {file = "pyzmq-25.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:442d3efc77ca4d35bee3547a8e08e8d4bb88dadb54a8377014938ba98d2e074a"}, - {file = "pyzmq-25.1.0-cp311-cp311-win32.whl", hash = "sha256:65346f507a815a731092421d0d7d60ed551a80d9b75e8b684307d435a5597425"}, - {file = "pyzmq-25.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:8b45d722046fea5a5694cba5d86f21f78f0052b40a4bbbbf60128ac55bfcc7b6"}, - {file = "pyzmq-25.1.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f45808eda8b1d71308c5416ef3abe958f033fdbb356984fabbfc7887bed76b3f"}, - {file = "pyzmq-25.1.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b697774ea8273e3c0460cf0bba16cd85ca6c46dfe8b303211816d68c492e132"}, - {file = "pyzmq-25.1.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b324fa769577fc2c8f5efcd429cef5acbc17d63fe15ed16d6dcbac2c5eb00849"}, - {file = "pyzmq-25.1.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:5873d6a60b778848ce23b6c0ac26c39e48969823882f607516b91fb323ce80e5"}, - {file = "pyzmq-25.1.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:f0d9e7ba6a815a12c8575ba7887da4b72483e4cfc57179af10c9b937f3f9308f"}, - {file = "pyzmq-25.1.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:414b8beec76521358b49170db7b9967d6974bdfc3297f47f7d23edec37329b00"}, - {file = "pyzmq-25.1.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:01f06f33e12497dca86353c354461f75275a5ad9eaea181ac0dc1662da8074fa"}, - {file = "pyzmq-25.1.0-cp36-cp36m-win32.whl", hash = "sha256:b5a07c4f29bf7cb0164664ef87e4aa25435dcc1f818d29842118b0ac1eb8e2b5"}, - {file = "pyzmq-25.1.0-cp36-cp36m-win_amd64.whl", hash = "sha256:968b0c737797c1809ec602e082cb63e9824ff2329275336bb88bd71591e94a90"}, - {file = "pyzmq-25.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:47b915ba666c51391836d7ed9a745926b22c434efa76c119f77bcffa64d2c50c"}, - {file = "pyzmq-25.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5af31493663cf76dd36b00dafbc839e83bbca8a0662931e11816d75f36155897"}, - {file = "pyzmq-25.1.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5489738a692bc7ee9a0a7765979c8a572520d616d12d949eaffc6e061b82b4d1"}, - {file = "pyzmq-25.1.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1fc56a0221bdf67cfa94ef2d6ce5513a3d209c3dfd21fed4d4e87eca1822e3a3"}, - {file = "pyzmq-25.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:75217e83faea9edbc29516fc90c817bc40c6b21a5771ecb53e868e45594826b0"}, - {file = "pyzmq-25.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:3830be8826639d801de9053cf86350ed6742c4321ba4236e4b5568528d7bfed7"}, - {file = "pyzmq-25.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3575699d7fd7c9b2108bc1c6128641a9a825a58577775ada26c02eb29e09c517"}, - {file = "pyzmq-25.1.0-cp37-cp37m-win32.whl", hash = "sha256:95bd3a998d8c68b76679f6b18f520904af5204f089beebb7b0301d97704634dd"}, - {file = "pyzmq-25.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:dbc466744a2db4b7ca05589f21ae1a35066afada2f803f92369f5877c100ef62"}, - {file = "pyzmq-25.1.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:3bed53f7218490c68f0e82a29c92335daa9606216e51c64f37b48eb78f1281f4"}, - {file = "pyzmq-25.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:eb52e826d16c09ef87132c6e360e1879c984f19a4f62d8a935345deac43f3c12"}, - {file = "pyzmq-25.1.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ddbef8b53cd16467fdbfa92a712eae46dd066aa19780681a2ce266e88fbc7165"}, - {file = "pyzmq-25.1.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9301cf1d7fc1ddf668d0abbe3e227fc9ab15bc036a31c247276012abb921b5ff"}, - {file = "pyzmq-25.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7e23a8c3b6c06de40bdb9e06288180d630b562db8ac199e8cc535af81f90e64b"}, - {file = "pyzmq-25.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:4a82faae00d1eed4809c2f18b37f15ce39a10a1c58fe48b60ad02875d6e13d80"}, - {file = "pyzmq-25.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c8398a1b1951aaa330269c35335ae69744be166e67e0ebd9869bdc09426f3871"}, - {file = "pyzmq-25.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d40682ac60b2a613d36d8d3a0cd14fbdf8e7e0618fbb40aa9fa7b796c9081584"}, - {file = "pyzmq-25.1.0-cp38-cp38-win32.whl", hash = "sha256:33d5c8391a34d56224bccf74f458d82fc6e24b3213fc68165c98b708c7a69325"}, - {file = "pyzmq-25.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:c66b7ff2527e18554030319b1376d81560ca0742c6e0b17ff1ee96624a5f1afd"}, - {file = "pyzmq-25.1.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:af56229ea6527a849ac9fb154a059d7e32e77a8cba27e3e62a1e38d8808cb1a5"}, - {file = "pyzmq-25.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bdca18b94c404af6ae5533cd1bc310c4931f7ac97c148bbfd2cd4bdd62b96253"}, - {file = "pyzmq-25.1.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0b6b42f7055bbc562f63f3df3b63e3dd1ebe9727ff0f124c3aa7bcea7b3a00f9"}, - {file = "pyzmq-25.1.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4c2fc7aad520a97d64ffc98190fce6b64152bde57a10c704b337082679e74f67"}, - {file = "pyzmq-25.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be86a26415a8b6af02cd8d782e3a9ae3872140a057f1cadf0133de685185c02b"}, - {file = "pyzmq-25.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:851fb2fe14036cfc1960d806628b80276af5424db09fe5c91c726890c8e6d943"}, - {file = "pyzmq-25.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2a21fec5c3cea45421a19ccbe6250c82f97af4175bc09de4d6dd78fb0cb4c200"}, - {file = "pyzmq-25.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bad172aba822444b32eae54c2d5ab18cd7dee9814fd5c7ed026603b8cae2d05f"}, - {file = "pyzmq-25.1.0-cp39-cp39-win32.whl", hash = "sha256:4d67609b37204acad3d566bb7391e0ecc25ef8bae22ff72ebe2ad7ffb7847158"}, - {file = "pyzmq-25.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:71c7b5896e40720d30cd77a81e62b433b981005bbff0cb2f739e0f8d059b5d99"}, - {file = "pyzmq-25.1.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:4cb27ef9d3bdc0c195b2dc54fcb8720e18b741624686a81942e14c8b67cc61a6"}, - {file = "pyzmq-25.1.0-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0c4fc2741e0513b5d5a12fe200d6785bbcc621f6f2278893a9ca7bed7f2efb7d"}, - {file = "pyzmq-25.1.0-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:fc34fdd458ff77a2a00e3c86f899911f6f269d393ca5675842a6e92eea565bae"}, - {file = "pyzmq-25.1.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8751f9c1442624da391bbd92bd4b072def6d7702a9390e4479f45c182392ff78"}, - {file = "pyzmq-25.1.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:6581e886aec3135964a302a0f5eb68f964869b9efd1dbafdebceaaf2934f8a68"}, - {file = "pyzmq-25.1.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5482f08d2c3c42b920e8771ae8932fbaa0a67dff925fc476996ddd8155a170f3"}, - {file = "pyzmq-25.1.0-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5e7fbcafa3ea16d1de1f213c226005fea21ee16ed56134b75b2dede5a2129e62"}, - {file = "pyzmq-25.1.0-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:adecf6d02b1beab8d7c04bc36f22bb0e4c65a35eb0b4750b91693631d4081c70"}, - {file = "pyzmq-25.1.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6d39e42a0aa888122d1beb8ec0d4ddfb6c6b45aecb5ba4013c27e2f28657765"}, - {file = "pyzmq-25.1.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:7018289b402ebf2b2c06992813523de61d4ce17bd514c4339d8f27a6f6809492"}, - {file = "pyzmq-25.1.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9e68ae9864d260b18f311b68d29134d8776d82e7f5d75ce898b40a88df9db30f"}, - {file = "pyzmq-25.1.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e21cc00e4debe8f54c3ed7b9fcca540f46eee12762a9fa56feb8512fd9057161"}, - {file = "pyzmq-25.1.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f666ae327a6899ff560d741681fdcdf4506f990595201ed39b44278c471ad98"}, - {file = "pyzmq-25.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f5efcc29056dfe95e9c9db0dfbb12b62db9c4ad302f812931b6d21dd04a9119"}, - {file = "pyzmq-25.1.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:48e5e59e77c1a83162ab3c163fc01cd2eebc5b34560341a67421b09be0891287"}, - {file = "pyzmq-25.1.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:108c96ebbd573d929740d66e4c3d1bdf31d5cde003b8dc7811a3c8c5b0fc173b"}, - {file = "pyzmq-25.1.0.tar.gz", hash = "sha256:80c41023465d36280e801564a69cbfce8ae85ff79b080e1913f6e90481fb8957"}, + {file = "pyzmq-25.1.2-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:e624c789359f1a16f83f35e2c705d07663ff2b4d4479bad35621178d8f0f6ea4"}, + {file = "pyzmq-25.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:49151b0efece79f6a79d41a461d78535356136ee70084a1c22532fc6383f4ad0"}, + {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9a5f194cf730f2b24d6af1f833c14c10f41023da46a7f736f48b6d35061e76e"}, + {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:faf79a302f834d9e8304fafdc11d0d042266667ac45209afa57e5efc998e3872"}, + {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f51a7b4ead28d3fca8dda53216314a553b0f7a91ee8fc46a72b402a78c3e43d"}, + {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:0ddd6d71d4ef17ba5a87becf7ddf01b371eaba553c603477679ae817a8d84d75"}, + {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:246747b88917e4867e2367b005fc8eefbb4a54b7db363d6c92f89d69abfff4b6"}, + {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:00c48ae2fd81e2a50c3485de1b9d5c7c57cd85dc8ec55683eac16846e57ac979"}, + {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5a68d491fc20762b630e5db2191dd07ff89834086740f70e978bb2ef2668be08"}, + {file = "pyzmq-25.1.2-cp310-cp310-win32.whl", hash = "sha256:09dfe949e83087da88c4a76767df04b22304a682d6154de2c572625c62ad6886"}, + {file = "pyzmq-25.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:fa99973d2ed20417744fca0073390ad65ce225b546febb0580358e36aa90dba6"}, + {file = "pyzmq-25.1.2-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:82544e0e2d0c1811482d37eef297020a040c32e0687c1f6fc23a75b75db8062c"}, + {file = "pyzmq-25.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:01171fc48542348cd1a360a4b6c3e7d8f46cdcf53a8d40f84db6707a6768acc1"}, + {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc69c96735ab501419c432110016329bf0dea8898ce16fab97c6d9106dc0b348"}, + {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3e124e6b1dd3dfbeb695435dff0e383256655bb18082e094a8dd1f6293114642"}, + {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7598d2ba821caa37a0f9d54c25164a4fa351ce019d64d0b44b45540950458840"}, + {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d1299d7e964c13607efd148ca1f07dcbf27c3ab9e125d1d0ae1d580a1682399d"}, + {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4e6f689880d5ad87918430957297c975203a082d9a036cc426648fcbedae769b"}, + {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cc69949484171cc961e6ecd4a8911b9ce7a0d1f738fcae717177c231bf77437b"}, + {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9880078f683466b7f567b8624bfc16cad65077be046b6e8abb53bed4eeb82dd3"}, + {file = "pyzmq-25.1.2-cp311-cp311-win32.whl", hash = "sha256:4e5837af3e5aaa99a091302df5ee001149baff06ad22b722d34e30df5f0d9097"}, + {file = "pyzmq-25.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:25c2dbb97d38b5ac9fd15586e048ec5eb1e38f3d47fe7d92167b0c77bb3584e9"}, + {file = "pyzmq-25.1.2-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:11e70516688190e9c2db14fcf93c04192b02d457b582a1f6190b154691b4c93a"}, + {file = "pyzmq-25.1.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:313c3794d650d1fccaaab2df942af9f2c01d6217c846177cfcbc693c7410839e"}, + {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b3cbba2f47062b85fe0ef9de5b987612140a9ba3a9c6d2543c6dec9f7c2ab27"}, + {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fc31baa0c32a2ca660784d5af3b9487e13b61b3032cb01a115fce6588e1bed30"}, + {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02c9087b109070c5ab0b383079fa1b5f797f8d43e9a66c07a4b8b8bdecfd88ee"}, + {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:f8429b17cbb746c3e043cb986328da023657e79d5ed258b711c06a70c2ea7537"}, + {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:5074adeacede5f810b7ef39607ee59d94e948b4fd954495bdb072f8c54558181"}, + {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:7ae8f354b895cbd85212da245f1a5ad8159e7840e37d78b476bb4f4c3f32a9fe"}, + {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b264bf2cc96b5bc43ce0e852be995e400376bd87ceb363822e2cb1964fcdc737"}, + {file = "pyzmq-25.1.2-cp312-cp312-win32.whl", hash = "sha256:02bbc1a87b76e04fd780b45e7f695471ae6de747769e540da909173d50ff8e2d"}, + {file = "pyzmq-25.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:ced111c2e81506abd1dc142e6cd7b68dd53747b3b7ae5edbea4578c5eeff96b7"}, + {file = "pyzmq-25.1.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:7b6d09a8962a91151f0976008eb7b29b433a560fde056ec7a3db9ec8f1075438"}, + {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:967668420f36878a3c9ecb5ab33c9d0ff8d054f9c0233d995a6d25b0e95e1b6b"}, + {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5edac3f57c7ddaacdb4d40f6ef2f9e299471fc38d112f4bc6d60ab9365445fb0"}, + {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0dabfb10ef897f3b7e101cacba1437bd3a5032ee667b7ead32bbcdd1a8422fe7"}, + {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:2c6441e0398c2baacfe5ba30c937d274cfc2dc5b55e82e3749e333aabffde561"}, + {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:16b726c1f6c2e7625706549f9dbe9b06004dfbec30dbed4bf50cbdfc73e5b32a"}, + {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:a86c2dd76ef71a773e70551a07318b8e52379f58dafa7ae1e0a4be78efd1ff16"}, + {file = "pyzmq-25.1.2-cp36-cp36m-win32.whl", hash = "sha256:359f7f74b5d3c65dae137f33eb2bcfa7ad9ebefd1cab85c935f063f1dbb245cc"}, + {file = "pyzmq-25.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:55875492f820d0eb3417b51d96fea549cde77893ae3790fd25491c5754ea2f68"}, + {file = "pyzmq-25.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b8c8a419dfb02e91b453615c69568442e897aaf77561ee0064d789705ff37a92"}, + {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8807c87fa893527ae8a524c15fc505d9950d5e856f03dae5921b5e9aa3b8783b"}, + {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5e319ed7d6b8f5fad9b76daa0a68497bc6f129858ad956331a5835785761e003"}, + {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:3c53687dde4d9d473c587ae80cc328e5b102b517447456184b485587ebd18b62"}, + {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9add2e5b33d2cd765ad96d5eb734a5e795a0755f7fc49aa04f76d7ddda73fd70"}, + {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:e690145a8c0c273c28d3b89d6fb32c45e0d9605b2293c10e650265bf5c11cfec"}, + {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:00a06faa7165634f0cac1abb27e54d7a0b3b44eb9994530b8ec73cf52e15353b"}, + {file = "pyzmq-25.1.2-cp37-cp37m-win32.whl", hash = "sha256:0f97bc2f1f13cb16905a5f3e1fbdf100e712d841482b2237484360f8bc4cb3d7"}, + {file = "pyzmq-25.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6cc0020b74b2e410287e5942e1e10886ff81ac77789eb20bec13f7ae681f0fdd"}, + {file = "pyzmq-25.1.2-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:bef02cfcbded83473bdd86dd8d3729cd82b2e569b75844fb4ea08fee3c26ae41"}, + {file = "pyzmq-25.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e10a4b5a4b1192d74853cc71a5e9fd022594573926c2a3a4802020360aa719d8"}, + {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8c5f80e578427d4695adac6fdf4370c14a2feafdc8cb35549c219b90652536ae"}, + {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5dde6751e857910c1339890f3524de74007958557593b9e7e8c5f01cd919f8a7"}, + {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea1608dd169da230a0ad602d5b1ebd39807ac96cae1845c3ceed39af08a5c6df"}, + {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0f513130c4c361201da9bc69df25a086487250e16b5571ead521b31ff6b02220"}, + {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:019744b99da30330798bb37df33549d59d380c78e516e3bab9c9b84f87a9592f"}, + {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2e2713ef44be5d52dd8b8e2023d706bf66cb22072e97fc71b168e01d25192755"}, + {file = "pyzmq-25.1.2-cp38-cp38-win32.whl", hash = "sha256:07cd61a20a535524906595e09344505a9bd46f1da7a07e504b315d41cd42eb07"}, + {file = "pyzmq-25.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb7e49a17fb8c77d3119d41a4523e432eb0c6932187c37deb6fbb00cc3028088"}, + {file = "pyzmq-25.1.2-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:94504ff66f278ab4b7e03e4cba7e7e400cb73bfa9d3d71f58d8972a8dc67e7a6"}, + {file = "pyzmq-25.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6dd0d50bbf9dca1d0bdea219ae6b40f713a3fb477c06ca3714f208fd69e16fd8"}, + {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:004ff469d21e86f0ef0369717351073e0e577428e514c47c8480770d5e24a565"}, + {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c0b5ca88a8928147b7b1e2dfa09f3b6c256bc1135a1338536cbc9ea13d3b7add"}, + {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c9a79f1d2495b167119d02be7448bfba57fad2a4207c4f68abc0bab4b92925b"}, + {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:518efd91c3d8ac9f9b4f7dd0e2b7b8bf1a4fe82a308009016b07eaa48681af82"}, + {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:1ec23bd7b3a893ae676d0e54ad47d18064e6c5ae1fadc2f195143fb27373f7f6"}, + {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:db36c27baed588a5a8346b971477b718fdc66cf5b80cbfbd914b4d6d355e44e2"}, + {file = "pyzmq-25.1.2-cp39-cp39-win32.whl", hash = "sha256:39b1067f13aba39d794a24761e385e2eddc26295826530a8c7b6c6c341584289"}, + {file = "pyzmq-25.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:8e9f3fabc445d0ce320ea2c59a75fe3ea591fdbdeebec5db6de530dd4b09412e"}, + {file = "pyzmq-25.1.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a8c1d566344aee826b74e472e16edae0a02e2a044f14f7c24e123002dcff1c05"}, + {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:759cfd391a0996345ba94b6a5110fca9c557ad4166d86a6e81ea526c376a01e8"}, + {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c61e346ac34b74028ede1c6b4bcecf649d69b707b3ff9dc0fab453821b04d1e"}, + {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cb8fc1f8d69b411b8ec0b5f1ffbcaf14c1db95b6bccea21d83610987435f1a4"}, + {file = "pyzmq-25.1.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:3c00c9b7d1ca8165c610437ca0c92e7b5607b2f9076f4eb4b095c85d6e680a1d"}, + {file = "pyzmq-25.1.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:df0c7a16ebb94452d2909b9a7b3337940e9a87a824c4fc1c7c36bb4404cb0cde"}, + {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:45999e7f7ed5c390f2e87ece7f6c56bf979fb213550229e711e45ecc7d42ccb8"}, + {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ac170e9e048b40c605358667aca3d94e98f604a18c44bdb4c102e67070f3ac9b"}, + {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1b604734bec94f05f81b360a272fc824334267426ae9905ff32dc2be433ab96"}, + {file = "pyzmq-25.1.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:a793ac733e3d895d96f865f1806f160696422554e46d30105807fdc9841b9f7d"}, + {file = "pyzmq-25.1.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0806175f2ae5ad4b835ecd87f5f85583316b69f17e97786f7443baaf54b9bb98"}, + {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ef12e259e7bc317c7597d4f6ef59b97b913e162d83b421dd0db3d6410f17a244"}, + {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea253b368eb41116011add00f8d5726762320b1bda892f744c91997b65754d73"}, + {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b9b1f2ad6498445a941d9a4fee096d387fee436e45cc660e72e768d3d8ee611"}, + {file = "pyzmq-25.1.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:8b14c75979ce932c53b79976a395cb2a8cd3aaf14aef75e8c2cb55a330b9b49d"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:889370d5174a741a62566c003ee8ddba4b04c3f09a97b8000092b7ca83ec9c49"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9a18fff090441a40ffda8a7f4f18f03dc56ae73f148f1832e109f9bffa85df15"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99a6b36f95c98839ad98f8c553d8507644c880cf1e0a57fe5e3a3f3969040882"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4345c9a27f4310afbb9c01750e9461ff33d6fb74cd2456b107525bbeebcb5be3"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3516e0b6224cf6e43e341d56da15fd33bdc37fa0c06af4f029f7d7dfceceabbc"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:146b9b1f29ead41255387fb07be56dc29639262c0f7344f570eecdcd8d683314"}, + {file = "pyzmq-25.1.2.tar.gz", hash = "sha256:93f1aa311e8bb912e34f004cf186407a4e90eec4f0ecc0efd26056bf7eda0226"}, ] [package.dependencies] @@ -2092,20 +2455,123 @@ cffi = {version = "*", markers = "implementation_name == \"pypy\""} [[package]] name = "referencing" -version = "0.30.1" +version = "0.33.0" description = "JSON Referencing + Python" category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "referencing-0.30.1-py3-none-any.whl", hash = "sha256:185d4a29f001c6e8ae4dad3861e61282a81cb01b9f0ef70a15450c45c6513a0d"}, - {file = "referencing-0.30.1.tar.gz", hash = "sha256:9370c77ceefd39510d70948bbe7375ce2d0125b9c11fd380671d4de959a8e3ce"}, + {file = "referencing-0.33.0-py3-none-any.whl", hash = "sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5"}, + {file = "referencing-0.33.0.tar.gz", hash = "sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7"}, ] [package.dependencies] attrs = ">=22.2.0" rpds-py = ">=0.7.0" +[[package]] +name = "regex" +version = "2023.12.25" +description = "Alternative regular expression module, to replace re." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "regex-2023.12.25-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0694219a1d54336fd0445ea382d49d36882415c0134ee1e8332afd1529f0baa5"}, + {file = "regex-2023.12.25-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b014333bd0217ad3d54c143de9d4b9a3ca1c5a29a6d0d554952ea071cff0f1f8"}, + {file = "regex-2023.12.25-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d865984b3f71f6d0af64d0d88f5733521698f6c16f445bb09ce746c92c97c586"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e0eabac536b4cc7f57a5f3d095bfa557860ab912f25965e08fe1545e2ed8b4c"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c25a8ad70e716f96e13a637802813f65d8a6760ef48672aa3502f4c24ea8b400"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9b6d73353f777630626f403b0652055ebfe8ff142a44ec2cf18ae470395766e"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9cc99d6946d750eb75827cb53c4371b8b0fe89c733a94b1573c9dd16ea6c9e4"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88d1f7bef20c721359d8675f7d9f8e414ec5003d8f642fdfd8087777ff7f94b5"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cb3fe77aec8f1995611f966d0c656fdce398317f850d0e6e7aebdfe61f40e1cd"}, + {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7aa47c2e9ea33a4a2a05f40fcd3ea36d73853a2aae7b4feab6fc85f8bf2c9704"}, + {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:df26481f0c7a3f8739fecb3e81bc9da3fcfae34d6c094563b9d4670b047312e1"}, + {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c40281f7d70baf6e0db0c2f7472b31609f5bc2748fe7275ea65a0b4601d9b392"}, + {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:d94a1db462d5690ebf6ae86d11c5e420042b9898af5dcf278bd97d6bda065423"}, + {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ba1b30765a55acf15dce3f364e4928b80858fa8f979ad41f862358939bdd1f2f"}, + {file = "regex-2023.12.25-cp310-cp310-win32.whl", hash = "sha256:150c39f5b964e4d7dba46a7962a088fbc91f06e606f023ce57bb347a3b2d4630"}, + {file = "regex-2023.12.25-cp310-cp310-win_amd64.whl", hash = "sha256:09da66917262d9481c719599116c7dc0c321ffcec4b1f510c4f8a066f8768105"}, + {file = "regex-2023.12.25-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1b9d811f72210fa9306aeb88385b8f8bcef0dfbf3873410413c00aa94c56c2b6"}, + {file = "regex-2023.12.25-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d902a43085a308cef32c0d3aea962524b725403fd9373dea18110904003bac97"}, + {file = "regex-2023.12.25-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d166eafc19f4718df38887b2bbe1467a4f74a9830e8605089ea7a30dd4da8887"}, + {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7ad32824b7f02bb3c9f80306d405a1d9b7bb89362d68b3c5a9be53836caebdb"}, + {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:636ba0a77de609d6510235b7f0e77ec494d2657108f777e8765efc060094c98c"}, + {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fda75704357805eb953a3ee15a2b240694a9a514548cd49b3c5124b4e2ad01b"}, + {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f72cbae7f6b01591f90814250e636065850c5926751af02bb48da94dfced7baa"}, + {file = "regex-2023.12.25-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:db2a0b1857f18b11e3b0e54ddfefc96af46b0896fb678c85f63fb8c37518b3e7"}, + {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7502534e55c7c36c0978c91ba6f61703faf7ce733715ca48f499d3dbbd7657e0"}, + {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e8c7e08bb566de4faaf11984af13f6bcf6a08f327b13631d41d62592681d24fe"}, + {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:283fc8eed679758de38fe493b7d7d84a198b558942b03f017b1f94dda8efae80"}, + {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:f44dd4d68697559d007462b0a3a1d9acd61d97072b71f6d1968daef26bc744bd"}, + {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:67d3ccfc590e5e7197750fcb3a2915b416a53e2de847a728cfa60141054123d4"}, + {file = "regex-2023.12.25-cp311-cp311-win32.whl", hash = "sha256:68191f80a9bad283432385961d9efe09d783bcd36ed35a60fb1ff3f1ec2efe87"}, + {file = "regex-2023.12.25-cp311-cp311-win_amd64.whl", hash = "sha256:7d2af3f6b8419661a0c421584cfe8aaec1c0e435ce7e47ee2a97e344b98f794f"}, + {file = "regex-2023.12.25-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8a0ccf52bb37d1a700375a6b395bff5dd15c50acb745f7db30415bae3c2b0715"}, + {file = "regex-2023.12.25-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c3c4a78615b7762740531c27cf46e2f388d8d727d0c0c739e72048beb26c8a9d"}, + {file = "regex-2023.12.25-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ad83e7545b4ab69216cef4cc47e344d19622e28aabec61574b20257c65466d6a"}, + {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7a635871143661feccce3979e1727c4e094f2bdfd3ec4b90dfd4f16f571a87a"}, + {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d498eea3f581fbe1b34b59c697512a8baef88212f92e4c7830fcc1499f5b45a5"}, + {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:43f7cd5754d02a56ae4ebb91b33461dc67be8e3e0153f593c509e21d219c5060"}, + {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51f4b32f793812714fd5307222a7f77e739b9bc566dc94a18126aba3b92b98a3"}, + {file = "regex-2023.12.25-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba99d8077424501b9616b43a2d208095746fb1284fc5ba490139651f971d39d9"}, + {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4bfc2b16e3ba8850e0e262467275dd4d62f0d045e0e9eda2bc65078c0110a11f"}, + {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8c2c19dae8a3eb0ea45a8448356ed561be843b13cbc34b840922ddf565498c1c"}, + {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:60080bb3d8617d96f0fb7e19796384cc2467447ef1c491694850ebd3670bc457"}, + {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b77e27b79448e34c2c51c09836033056a0547aa360c45eeeb67803da7b0eedaf"}, + {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:518440c991f514331f4850a63560321f833979d145d7d81186dbe2f19e27ae3d"}, + {file = "regex-2023.12.25-cp312-cp312-win32.whl", hash = "sha256:e2610e9406d3b0073636a3a2e80db05a02f0c3169b5632022b4e81c0364bcda5"}, + {file = "regex-2023.12.25-cp312-cp312-win_amd64.whl", hash = "sha256:cc37b9aeebab425f11f27e5e9e6cf580be7206c6582a64467a14dda211abc232"}, + {file = "regex-2023.12.25-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:da695d75ac97cb1cd725adac136d25ca687da4536154cdc2815f576e4da11c69"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d126361607b33c4eb7b36debc173bf25d7805847346dd4d99b5499e1fef52bc7"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4719bb05094d7d8563a450cf8738d2e1061420f79cfcc1fa7f0a44744c4d8f73"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5dd58946bce44b53b06d94aa95560d0b243eb2fe64227cba50017a8d8b3cd3e2"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22a86d9fff2009302c440b9d799ef2fe322416d2d58fc124b926aa89365ec482"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2aae8101919e8aa05ecfe6322b278f41ce2994c4a430303c4cd163fef746e04f"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e692296c4cc2873967771345a876bcfc1c547e8dd695c6b89342488b0ea55cd8"}, + {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:263ef5cc10979837f243950637fffb06e8daed7f1ac1e39d5910fd29929e489a"}, + {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d6f7e255e5fa94642a0724e35406e6cb7001c09d476ab5fce002f652b36d0c39"}, + {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:88ad44e220e22b63b0f8f81f007e8abbb92874d8ced66f32571ef8beb0643b2b"}, + {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:3a17d3ede18f9cedcbe23d2daa8a2cd6f59fe2bf082c567e43083bba3fb00347"}, + {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d15b274f9e15b1a0b7a45d2ac86d1f634d983ca40d6b886721626c47a400bf39"}, + {file = "regex-2023.12.25-cp37-cp37m-win32.whl", hash = "sha256:ed19b3a05ae0c97dd8f75a5d8f21f7723a8c33bbc555da6bbe1f96c470139d3c"}, + {file = "regex-2023.12.25-cp37-cp37m-win_amd64.whl", hash = "sha256:a6d1047952c0b8104a1d371f88f4ab62e6275567d4458c1e26e9627ad489b445"}, + {file = "regex-2023.12.25-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b43523d7bc2abd757119dbfb38af91b5735eea45537ec6ec3a5ec3f9562a1c53"}, + {file = "regex-2023.12.25-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:efb2d82f33b2212898f1659fb1c2e9ac30493ac41e4d53123da374c3b5541e64"}, + {file = "regex-2023.12.25-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b7fca9205b59c1a3d5031f7e64ed627a1074730a51c2a80e97653e3e9fa0d415"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086dd15e9435b393ae06f96ab69ab2d333f5d65cbe65ca5a3ef0ec9564dfe770"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e81469f7d01efed9b53740aedd26085f20d49da65f9c1f41e822a33992cb1590"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:34e4af5b27232f68042aa40a91c3b9bb4da0eeb31b7632e0091afc4310afe6cb"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9852b76ab558e45b20bf1893b59af64a28bd3820b0c2efc80e0a70a4a3ea51c1"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff100b203092af77d1a5a7abe085b3506b7eaaf9abf65b73b7d6905b6cb76988"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cc038b2d8b1470364b1888a98fd22d616fba2b6309c5b5f181ad4483e0017861"}, + {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:094ba386bb5c01e54e14434d4caabf6583334090865b23ef58e0424a6286d3dc"}, + {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5cd05d0f57846d8ba4b71d9c00f6f37d6b97d5e5ef8b3c3840426a475c8f70f4"}, + {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:9aa1a67bbf0f957bbe096375887b2505f5d8ae16bf04488e8b0f334c36e31360"}, + {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:98a2636994f943b871786c9e82bfe7883ecdaba2ef5df54e1450fa9869d1f756"}, + {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:37f8e93a81fc5e5bd8db7e10e62dc64261bcd88f8d7e6640aaebe9bc180d9ce2"}, + {file = "regex-2023.12.25-cp38-cp38-win32.whl", hash = "sha256:d78bd484930c1da2b9679290a41cdb25cc127d783768a0369d6b449e72f88beb"}, + {file = "regex-2023.12.25-cp38-cp38-win_amd64.whl", hash = "sha256:b521dcecebc5b978b447f0f69b5b7f3840eac454862270406a39837ffae4e697"}, + {file = "regex-2023.12.25-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f7bc09bc9c29ebead055bcba136a67378f03d66bf359e87d0f7c759d6d4ffa31"}, + {file = "regex-2023.12.25-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e14b73607d6231f3cc4622809c196b540a6a44e903bcfad940779c80dffa7be7"}, + {file = "regex-2023.12.25-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9eda5f7a50141291beda3edd00abc2d4a5b16c29c92daf8d5bd76934150f3edc"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc6bb9aa69aacf0f6032c307da718f61a40cf970849e471254e0e91c56ffca95"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:298dc6354d414bc921581be85695d18912bea163a8b23cac9a2562bbcd5088b1"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2f4e475a80ecbd15896a976aa0b386c5525d0ed34d5c600b6d3ebac0a67c7ddf"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:531ac6cf22b53e0696f8e1d56ce2396311254eb806111ddd3922c9d937151dae"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22f3470f7524b6da61e2020672df2f3063676aff444db1daa283c2ea4ed259d6"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:89723d2112697feaa320c9d351e5f5e7b841e83f8b143dba8e2d2b5f04e10923"}, + {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0ecf44ddf9171cd7566ef1768047f6e66975788258b1c6c6ca78098b95cf9a3d"}, + {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:905466ad1702ed4acfd67a902af50b8db1feeb9781436372261808df7a2a7bca"}, + {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:4558410b7a5607a645e9804a3e9dd509af12fb72b9825b13791a37cd417d73a5"}, + {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:7e316026cc1095f2a3e8cc012822c99f413b702eaa2ca5408a513609488cb62f"}, + {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3b1de218d5375cd6ac4b5493e0b9f3df2be331e86520f23382f216c137913d20"}, + {file = "regex-2023.12.25-cp39-cp39-win32.whl", hash = "sha256:11a963f8e25ab5c61348d090bf1b07f1953929c13bd2309a0662e9ff680763c9"}, + {file = "regex-2023.12.25-cp39-cp39-win_amd64.whl", hash = "sha256:e693e233ac92ba83a87024e1d32b5f9ab15ca55ddd916d878146f4e3406b5c91"}, + {file = "regex-2023.12.25.tar.gz", hash = "sha256:29171aa128da69afdf4bde412d5bedc335f2ca8fcfe4489038577d05f16181e5"}, +] + [[package]] name = "requests" version = "2.31.0" @@ -2157,109 +2623,111 @@ files = [ [[package]] name = "rpds-py" -version = "0.9.2" +version = "0.17.1" description = "Python bindings to Rust's persistent data structures (rpds)" category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "rpds_py-0.9.2-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:ab6919a09c055c9b092798ce18c6c4adf49d24d4d9e43a92b257e3f2548231e7"}, - {file = "rpds_py-0.9.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d55777a80f78dd09410bd84ff8c95ee05519f41113b2df90a69622f5540c4f8b"}, - {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a216b26e5af0a8e265d4efd65d3bcec5fba6b26909014effe20cd302fd1138fa"}, - {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:29cd8bfb2d716366a035913ced99188a79b623a3512292963d84d3e06e63b496"}, - {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:44659b1f326214950a8204a248ca6199535e73a694be8d3e0e869f820767f12f"}, - {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:745f5a43fdd7d6d25a53ab1a99979e7f8ea419dfefebcab0a5a1e9095490ee5e"}, - {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a987578ac5214f18b99d1f2a3851cba5b09f4a689818a106c23dbad0dfeb760f"}, - {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bf4151acb541b6e895354f6ff9ac06995ad9e4175cbc6d30aaed08856558201f"}, - {file = "rpds_py-0.9.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:03421628f0dc10a4119d714a17f646e2837126a25ac7a256bdf7c3943400f67f"}, - {file = "rpds_py-0.9.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:13b602dc3e8dff3063734f02dcf05111e887f301fdda74151a93dbbc249930fe"}, - {file = "rpds_py-0.9.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fae5cb554b604b3f9e2c608241b5d8d303e410d7dfb6d397c335f983495ce7f6"}, - {file = "rpds_py-0.9.2-cp310-none-win32.whl", hash = "sha256:47c5f58a8e0c2c920cc7783113df2fc4ff12bf3a411d985012f145e9242a2764"}, - {file = "rpds_py-0.9.2-cp310-none-win_amd64.whl", hash = "sha256:4ea6b73c22d8182dff91155af018b11aac9ff7eca085750455c5990cb1cfae6e"}, - {file = "rpds_py-0.9.2-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:e564d2238512c5ef5e9d79338ab77f1cbbda6c2d541ad41b2af445fb200385e3"}, - {file = "rpds_py-0.9.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f411330a6376fb50e5b7a3e66894e4a39e60ca2e17dce258d53768fea06a37bd"}, - {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e7521f5af0233e89939ad626b15278c71b69dc1dfccaa7b97bd4cdf96536bb7"}, - {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8d3335c03100a073883857e91db9f2e0ef8a1cf42dc0369cbb9151c149dbbc1b"}, - {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d25b1c1096ef0447355f7293fbe9ad740f7c47ae032c2884113f8e87660d8f6e"}, - {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6a5d3fbd02efd9cf6a8ffc2f17b53a33542f6b154e88dd7b42ef4a4c0700fdad"}, - {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c5934e2833afeaf36bd1eadb57256239785f5af0220ed8d21c2896ec4d3a765f"}, - {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:095b460e117685867d45548fbd8598a8d9999227e9061ee7f012d9d264e6048d"}, - {file = "rpds_py-0.9.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:91378d9f4151adc223d584489591dbb79f78814c0734a7c3bfa9c9e09978121c"}, - {file = "rpds_py-0.9.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:24a81c177379300220e907e9b864107614b144f6c2a15ed5c3450e19cf536fae"}, - {file = "rpds_py-0.9.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:de0b6eceb46141984671802d412568d22c6bacc9b230174f9e55fc72ef4f57de"}, - {file = "rpds_py-0.9.2-cp311-none-win32.whl", hash = "sha256:700375326ed641f3d9d32060a91513ad668bcb7e2cffb18415c399acb25de2ab"}, - {file = "rpds_py-0.9.2-cp311-none-win_amd64.whl", hash = "sha256:0766babfcf941db8607bdaf82569ec38107dbb03c7f0b72604a0b346b6eb3298"}, - {file = "rpds_py-0.9.2-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:b1440c291db3f98a914e1afd9d6541e8fc60b4c3aab1a9008d03da4651e67386"}, - {file = "rpds_py-0.9.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0f2996fbac8e0b77fd67102becb9229986396e051f33dbceada3debaacc7033f"}, - {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f30d205755566a25f2ae0382944fcae2f350500ae4df4e795efa9e850821d82"}, - {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:159fba751a1e6b1c69244e23ba6c28f879a8758a3e992ed056d86d74a194a0f3"}, - {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a1f044792e1adcea82468a72310c66a7f08728d72a244730d14880cd1dabe36b"}, - {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9251eb8aa82e6cf88510530b29eef4fac825a2b709baf5b94a6094894f252387"}, - {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01899794b654e616c8625b194ddd1e5b51ef5b60ed61baa7a2d9c2ad7b2a4238"}, - {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b0c43f8ae8f6be1d605b0465671124aa8d6a0e40f1fb81dcea28b7e3d87ca1e1"}, - {file = "rpds_py-0.9.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:207f57c402d1f8712618f737356e4b6f35253b6d20a324d9a47cb9f38ee43a6b"}, - {file = "rpds_py-0.9.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b52e7c5ae35b00566d244ffefba0f46bb6bec749a50412acf42b1c3f402e2c90"}, - {file = "rpds_py-0.9.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:978fa96dbb005d599ec4fd9ed301b1cc45f1a8f7982d4793faf20b404b56677d"}, - {file = "rpds_py-0.9.2-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:6aa8326a4a608e1c28da191edd7c924dff445251b94653988efb059b16577a4d"}, - {file = "rpds_py-0.9.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:aad51239bee6bff6823bbbdc8ad85136c6125542bbc609e035ab98ca1e32a192"}, - {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4bd4dc3602370679c2dfb818d9c97b1137d4dd412230cfecd3c66a1bf388a196"}, - {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:dd9da77c6ec1f258387957b754f0df60766ac23ed698b61941ba9acccd3284d1"}, - {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:190ca6f55042ea4649ed19c9093a9be9d63cd8a97880106747d7147f88a49d18"}, - {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:876bf9ed62323bc7dcfc261dbc5572c996ef26fe6406b0ff985cbcf460fc8a4c"}, - {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa2818759aba55df50592ecbc95ebcdc99917fa7b55cc6796235b04193eb3c55"}, - {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9ea4d00850ef1e917815e59b078ecb338f6a8efda23369677c54a5825dbebb55"}, - {file = "rpds_py-0.9.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:5855c85eb8b8a968a74dc7fb014c9166a05e7e7a8377fb91d78512900aadd13d"}, - {file = "rpds_py-0.9.2-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:14c408e9d1a80dcb45c05a5149e5961aadb912fff42ca1dd9b68c0044904eb32"}, - {file = "rpds_py-0.9.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:65a0583c43d9f22cb2130c7b110e695fff834fd5e832a776a107197e59a1898e"}, - {file = "rpds_py-0.9.2-cp38-none-win32.whl", hash = "sha256:71f2f7715935a61fa3e4ae91d91b67e571aeb5cb5d10331ab681256bda2ad920"}, - {file = "rpds_py-0.9.2-cp38-none-win_amd64.whl", hash = "sha256:674c704605092e3ebbbd13687b09c9f78c362a4bc710343efe37a91457123044"}, - {file = "rpds_py-0.9.2-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:07e2c54bef6838fa44c48dfbc8234e8e2466d851124b551fc4e07a1cfeb37260"}, - {file = "rpds_py-0.9.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f7fdf55283ad38c33e35e2855565361f4bf0abd02470b8ab28d499c663bc5d7c"}, - {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:890ba852c16ace6ed9f90e8670f2c1c178d96510a21b06d2fa12d8783a905193"}, - {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:50025635ba8b629a86d9d5474e650da304cb46bbb4d18690532dd79341467846"}, - {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:517cbf6e67ae3623c5127206489d69eb2bdb27239a3c3cc559350ef52a3bbf0b"}, - {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0836d71ca19071090d524739420a61580f3f894618d10b666cf3d9a1688355b1"}, - {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c439fd54b2b9053717cca3de9583be6584b384d88d045f97d409f0ca867d80f"}, - {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f68996a3b3dc9335037f82754f9cdbe3a95db42bde571d8c3be26cc6245f2324"}, - {file = "rpds_py-0.9.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7d68dc8acded354c972116f59b5eb2e5864432948e098c19fe6994926d8e15c3"}, - {file = "rpds_py-0.9.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f963c6b1218b96db85fc37a9f0851eaf8b9040aa46dec112611697a7023da535"}, - {file = "rpds_py-0.9.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5a46859d7f947061b4010e554ccd1791467d1b1759f2dc2ec9055fa239f1bc26"}, - {file = "rpds_py-0.9.2-cp39-none-win32.whl", hash = "sha256:e07e5dbf8a83c66783a9fe2d4566968ea8c161199680e8ad38d53e075df5f0d0"}, - {file = "rpds_py-0.9.2-cp39-none-win_amd64.whl", hash = "sha256:682726178138ea45a0766907957b60f3a1bf3acdf212436be9733f28b6c5af3c"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:196cb208825a8b9c8fc360dc0f87993b8b260038615230242bf18ec84447c08d"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:c7671d45530fcb6d5e22fd40c97e1e1e01965fc298cbda523bb640f3d923b387"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83b32f0940adec65099f3b1c215ef7f1d025d13ff947975a055989cb7fd019a4"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7f67da97f5b9eac838b6980fc6da268622e91f8960e083a34533ca710bec8611"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:03975db5f103997904c37e804e5f340c8fdabbb5883f26ee50a255d664eed58c"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:987b06d1cdb28f88a42e4fb8a87f094e43f3c435ed8e486533aea0bf2e53d931"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c861a7e4aef15ff91233751619ce3a3d2b9e5877e0fcd76f9ea4f6847183aa16"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:02938432352359805b6da099c9c95c8a0547fe4b274ce8f1a91677401bb9a45f"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:ef1f08f2a924837e112cba2953e15aacfccbbfcd773b4b9b4723f8f2ddded08e"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:35da5cc5cb37c04c4ee03128ad59b8c3941a1e5cd398d78c37f716f32a9b7f67"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:141acb9d4ccc04e704e5992d35472f78c35af047fa0cfae2923835d153f091be"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:79f594919d2c1a0cc17d1988a6adaf9a2f000d2e1048f71f298b056b1018e872"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:a06418fe1155e72e16dddc68bb3780ae44cebb2912fbd8bb6ff9161de56e1798"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b2eb034c94b0b96d5eddb290b7b5198460e2d5d0c421751713953a9c4e47d10"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8b08605d248b974eb02f40bdcd1a35d3924c83a2a5e8f5d0fa5af852c4d960af"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a0805911caedfe2736935250be5008b261f10a729a303f676d3d5fea6900c96a"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ab2299e3f92aa5417d5e16bb45bb4586171c1327568f638e8453c9f8d9e0f020"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c8d7594e38cf98d8a7df25b440f684b510cf4627fe038c297a87496d10a174f"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8b9ec12ad5f0a4625db34db7e0005be2632c1013b253a4a60e8302ad4d462afd"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1fcdee18fea97238ed17ab6478c66b2095e4ae7177e35fb71fbe561a27adf620"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:933a7d5cd4b84f959aedeb84f2030f0a01d63ae6cf256629af3081cf3e3426e8"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:686ba516e02db6d6f8c279d1641f7067ebb5dc58b1d0536c4aaebb7bf01cdc5d"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:0173c0444bec0a3d7d848eaeca2d8bd32a1b43f3d3fde6617aac3731fa4be05f"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:d576c3ef8c7b2d560e301eb33891d1944d965a4d7a2eacb6332eee8a71827db6"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed89861ee8c8c47d6beb742a602f912b1bb64f598b1e2f3d758948721d44d468"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1054a08e818f8e18910f1bee731583fe8f899b0a0a5044c6e680ceea34f93876"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99e7c4bb27ff1aab90dcc3e9d37ee5af0231ed98d99cb6f5250de28889a3d502"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c545d9d14d47be716495076b659db179206e3fd997769bc01e2d550eeb685596"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9039a11bca3c41be5a58282ed81ae422fa680409022b996032a43badef2a3752"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fb39aca7a64ad0c9490adfa719dbeeb87d13be137ca189d2564e596f8ba32c07"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:2d8b3b3a2ce0eaa00c5bbbb60b6713e94e7e0becab7b3db6c5c77f979e8ed1f1"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:99b1c16f732b3a9971406fbfe18468592c5a3529585a45a35adbc1389a529a03"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:c27ee01a6c3223025f4badd533bea5e87c988cb0ba2811b690395dfe16088cfe"}, - {file = "rpds_py-0.9.2.tar.gz", hash = "sha256:8d70e8f14900f2657c249ea4def963bed86a29b81f81f5b76b5a9215680de945"}, + {file = "rpds_py-0.17.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:4128980a14ed805e1b91a7ed551250282a8ddf8201a4e9f8f5b7e6225f54170d"}, + {file = "rpds_py-0.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ff1dcb8e8bc2261a088821b2595ef031c91d499a0c1b031c152d43fe0a6ecec8"}, + {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d65e6b4f1443048eb7e833c2accb4fa7ee67cc7d54f31b4f0555b474758bee55"}, + {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a71169d505af63bb4d20d23a8fbd4c6ce272e7bce6cc31f617152aa784436f29"}, + {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:436474f17733c7dca0fbf096d36ae65277e8645039df12a0fa52445ca494729d"}, + {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:10162fe3f5f47c37ebf6d8ff5a2368508fe22007e3077bf25b9c7d803454d921"}, + {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:720215373a280f78a1814becb1312d4e4d1077b1202a56d2b0815e95ccb99ce9"}, + {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:70fcc6c2906cfa5c6a552ba7ae2ce64b6c32f437d8f3f8eea49925b278a61453"}, + {file = "rpds_py-0.17.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:91e5a8200e65aaac342a791272c564dffcf1281abd635d304d6c4e6b495f29dc"}, + {file = "rpds_py-0.17.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:99f567dae93e10be2daaa896e07513dd4bf9c2ecf0576e0533ac36ba3b1d5394"}, + {file = "rpds_py-0.17.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:24e4900a6643f87058a27320f81336d527ccfe503984528edde4bb660c8c8d59"}, + {file = "rpds_py-0.17.1-cp310-none-win32.whl", hash = "sha256:0bfb09bf41fe7c51413f563373e5f537eaa653d7adc4830399d4e9bdc199959d"}, + {file = "rpds_py-0.17.1-cp310-none-win_amd64.whl", hash = "sha256:20de7b7179e2031a04042e85dc463a93a82bc177eeba5ddd13ff746325558aa6"}, + {file = "rpds_py-0.17.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:65dcf105c1943cba45d19207ef51b8bc46d232a381e94dd38719d52d3980015b"}, + {file = "rpds_py-0.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:01f58a7306b64e0a4fe042047dd2b7d411ee82e54240284bab63e325762c1147"}, + {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:071bc28c589b86bc6351a339114fb7a029f5cddbaca34103aa573eba7b482382"}, + {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ae35e8e6801c5ab071b992cb2da958eee76340e6926ec693b5ff7d6381441745"}, + {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149c5cd24f729e3567b56e1795f74577aa3126c14c11e457bec1b1c90d212e38"}, + {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e796051f2070f47230c745d0a77a91088fbee2cc0502e9b796b9c6471983718c"}, + {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60e820ee1004327609b28db8307acc27f5f2e9a0b185b2064c5f23e815f248f8"}, + {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1957a2ab607f9added64478a6982742eb29f109d89d065fa44e01691a20fc20a"}, + {file = "rpds_py-0.17.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8587fd64c2a91c33cdc39d0cebdaf30e79491cc029a37fcd458ba863f8815383"}, + {file = "rpds_py-0.17.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4dc889a9d8a34758d0fcc9ac86adb97bab3fb7f0c4d29794357eb147536483fd"}, + {file = "rpds_py-0.17.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2953937f83820376b5979318840f3ee47477d94c17b940fe31d9458d79ae7eea"}, + {file = "rpds_py-0.17.1-cp311-none-win32.whl", hash = "sha256:1bfcad3109c1e5ba3cbe2f421614e70439f72897515a96c462ea657261b96518"}, + {file = "rpds_py-0.17.1-cp311-none-win_amd64.whl", hash = "sha256:99da0a4686ada4ed0f778120a0ea8d066de1a0a92ab0d13ae68492a437db78bf"}, + {file = "rpds_py-0.17.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1dc29db3900cb1bb40353772417800f29c3d078dbc8024fd64655a04ee3c4bdf"}, + {file = "rpds_py-0.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:82ada4a8ed9e82e443fcef87e22a3eed3654dd3adf6e3b3a0deb70f03e86142a"}, + {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d36b2b59e8cc6e576f8f7b671e32f2ff43153f0ad6d0201250a7c07f25d570e"}, + {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3677fcca7fb728c86a78660c7fb1b07b69b281964673f486ae72860e13f512ad"}, + {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:516fb8c77805159e97a689e2f1c80655c7658f5af601c34ffdb916605598cda2"}, + {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df3b6f45ba4515632c5064e35ca7f31d51d13d1479673185ba8f9fefbbed58b9"}, + {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a967dd6afda7715d911c25a6ba1517975acd8d1092b2f326718725461a3d33f9"}, + {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dbbb95e6fc91ea3102505d111b327004d1c4ce98d56a4a02e82cd451f9f57140"}, + {file = "rpds_py-0.17.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:02866e060219514940342a1f84303a1ef7a1dad0ac311792fbbe19b521b489d2"}, + {file = "rpds_py-0.17.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:2528ff96d09f12e638695f3a2e0c609c7b84c6df7c5ae9bfeb9252b6fa686253"}, + {file = "rpds_py-0.17.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bd345a13ce06e94c753dab52f8e71e5252aec1e4f8022d24d56decd31e1b9b23"}, + {file = "rpds_py-0.17.1-cp312-none-win32.whl", hash = "sha256:2a792b2e1d3038daa83fa474d559acfd6dc1e3650ee93b2662ddc17dbff20ad1"}, + {file = "rpds_py-0.17.1-cp312-none-win_amd64.whl", hash = "sha256:292f7344a3301802e7c25c53792fae7d1593cb0e50964e7bcdcc5cf533d634e3"}, + {file = "rpds_py-0.17.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:8ffe53e1d8ef2520ebcf0c9fec15bb721da59e8ef283b6ff3079613b1e30513d"}, + {file = "rpds_py-0.17.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4341bd7579611cf50e7b20bb8c2e23512a3dc79de987a1f411cb458ab670eb90"}, + {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f4eb548daf4836e3b2c662033bfbfc551db58d30fd8fe660314f86bf8510b93"}, + {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b686f25377f9c006acbac63f61614416a6317133ab7fafe5de5f7dc8a06d42eb"}, + {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4e21b76075c01d65d0f0f34302b5a7457d95721d5e0667aea65e5bb3ab415c25"}, + {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b86b21b348f7e5485fae740d845c65a880f5d1eda1e063bc59bef92d1f7d0c55"}, + {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f175e95a197f6a4059b50757a3dca33b32b61691bdbd22c29e8a8d21d3914cae"}, + {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1701fc54460ae2e5efc1dd6350eafd7a760f516df8dbe51d4a1c79d69472fbd4"}, + {file = "rpds_py-0.17.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:9051e3d2af8f55b42061603e29e744724cb5f65b128a491446cc029b3e2ea896"}, + {file = "rpds_py-0.17.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:7450dbd659fed6dd41d1a7d47ed767e893ba402af8ae664c157c255ec6067fde"}, + {file = "rpds_py-0.17.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:5a024fa96d541fd7edaa0e9d904601c6445e95a729a2900c5aec6555fe921ed6"}, + {file = "rpds_py-0.17.1-cp38-none-win32.whl", hash = "sha256:da1ead63368c04a9bded7904757dfcae01eba0e0f9bc41d3d7f57ebf1c04015a"}, + {file = "rpds_py-0.17.1-cp38-none-win_amd64.whl", hash = "sha256:841320e1841bb53fada91c9725e766bb25009cfd4144e92298db296fb6c894fb"}, + {file = "rpds_py-0.17.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:f6c43b6f97209e370124baf2bf40bb1e8edc25311a158867eb1c3a5d449ebc7a"}, + {file = "rpds_py-0.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5e7d63ec01fe7c76c2dbb7e972fece45acbb8836e72682bde138e7e039906e2c"}, + {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81038ff87a4e04c22e1d81f947c6ac46f122e0c80460b9006e6517c4d842a6ec"}, + {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:810685321f4a304b2b55577c915bece4c4a06dfe38f6e62d9cc1d6ca8ee86b99"}, + {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:25f071737dae674ca8937a73d0f43f5a52e92c2d178330b4c0bb6ab05586ffa6"}, + {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa5bfb13f1e89151ade0eb812f7b0d7a4d643406caaad65ce1cbabe0a66d695f"}, + {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dfe07308b311a8293a0d5ef4e61411c5c20f682db6b5e73de6c7c8824272c256"}, + {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a000133a90eea274a6f28adc3084643263b1e7c1a5a66eb0a0a7a36aa757ed74"}, + {file = "rpds_py-0.17.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d0e8a6434a3fbf77d11448c9c25b2f25244226cfbec1a5159947cac5b8c5fa4"}, + {file = "rpds_py-0.17.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:efa767c220d94aa4ac3a6dd3aeb986e9f229eaf5bce92d8b1b3018d06bed3772"}, + {file = "rpds_py-0.17.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:dbc56680ecf585a384fbd93cd42bc82668b77cb525343170a2d86dafaed2a84b"}, + {file = "rpds_py-0.17.1-cp39-none-win32.whl", hash = "sha256:270987bc22e7e5a962b1094953ae901395e8c1e1e83ad016c5cfcfff75a15a3f"}, + {file = "rpds_py-0.17.1-cp39-none-win_amd64.whl", hash = "sha256:2a7b2f2f56a16a6d62e55354dd329d929560442bd92e87397b7a9586a32e3e76"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a3264e3e858de4fc601741498215835ff324ff2482fd4e4af61b46512dd7fc83"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:f2f3b28b40fddcb6c1f1f6c88c6f3769cd933fa493ceb79da45968a21dccc920"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9584f8f52010295a4a417221861df9bea4c72d9632562b6e59b3c7b87a1522b7"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c64602e8be701c6cfe42064b71c84ce62ce66ddc6422c15463fd8127db3d8066"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:060f412230d5f19fc8c8b75f315931b408d8ebf56aec33ef4168d1b9e54200b1"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b9412abdf0ba70faa6e2ee6c0cc62a8defb772e78860cef419865917d86c7342"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9737bdaa0ad33d34c0efc718741abaafce62fadae72c8b251df9b0c823c63b22"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9f0e4dc0f17dcea4ab9d13ac5c666b6b5337042b4d8f27e01b70fae41dd65c57"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1db228102ab9d1ff4c64148c96320d0be7044fa28bd865a9ce628ce98da5973d"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:d8bbd8e56f3ba25a7d0cf980fc42b34028848a53a0e36c9918550e0280b9d0b6"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:be22ae34d68544df293152b7e50895ba70d2a833ad9566932d750d3625918b82"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bf046179d011e6114daf12a534d874958b039342b347348a78b7cdf0dd9d6041"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:1a746a6d49665058a5896000e8d9d2f1a6acba8a03b389c1e4c06e11e0b7f40d"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0b8bf5b8db49d8fd40f54772a1dcf262e8be0ad2ab0206b5a2ec109c176c0a4"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f7f4cb1f173385e8a39c29510dd11a78bf44e360fb75610594973f5ea141028b"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7fbd70cb8b54fe745301921b0816c08b6d917593429dfc437fd024b5ba713c58"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9bdf1303df671179eaf2cb41e8515a07fc78d9d00f111eadbe3e14262f59c3d0"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fad059a4bd14c45776600d223ec194e77db6c20255578bb5bcdd7c18fd169361"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3664d126d3388a887db44c2e293f87d500c4184ec43d5d14d2d2babdb4c64cad"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:698ea95a60c8b16b58be9d854c9f993c639f5c214cf9ba782eca53a8789d6b19"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:c3d2010656999b63e628a3c694f23020322b4178c450dc478558a2b6ef3cb9bb"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:938eab7323a736533f015e6069a7d53ef2dcc841e4e533b782c2bfb9fb12d84b"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1e626b365293a2142a62b9a614e1f8e331b28f3ca57b9f05ebbf4cf2a0f0bdc5"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:380e0df2e9d5d5d339803cfc6d183a5442ad7ab3c63c2a0982e8c824566c5ccc"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b760a56e080a826c2e5af09002c1a037382ed21d03134eb6294812dda268c811"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5576ee2f3a309d2bb403ec292d5958ce03953b0e57a11d224c1f134feaf8c40f"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f3c3461ebb4c4f1bbc70b15d20b565759f97a5aaf13af811fcefc892e9197ba"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:637b802f3f069a64436d432117a7e58fab414b4e27a7e81049817ae94de45d8d"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffee088ea9b593cc6160518ba9bd319b5475e5f3e578e4552d63818773c6f56a"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3ac732390d529d8469b831949c78085b034bff67f584559340008d0f6041a049"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:93432e747fb07fa567ad9cc7aaadd6e29710e515aabf939dfbed8046041346c6"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:7b7d9ca34542099b4e185b3c2a2b2eda2e318a7dbde0b0d83357a6d4421b5296"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:0387ce69ba06e43df54e43968090f3626e231e4bc9150e4c3246947567695f68"}, + {file = "rpds_py-0.17.1.tar.gz", hash = "sha256:0210b2668f24c078307260bf88bdac9d6f1093635df5123789bfee4d8d7fc8e7"}, ] [[package]] @@ -2305,26 +2773,26 @@ files = [ [[package]] name = "soupsieve" -version = "2.4.1" +version = "2.5" description = "A modern CSS selector implementation for Beautiful Soup." category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "soupsieve-2.4.1-py3-none-any.whl", hash = "sha256:1c1bfee6819544a3447586c889157365a27e10d88cde3ad3da0cf0ddf646feb8"}, - {file = "soupsieve-2.4.1.tar.gz", hash = "sha256:89d12b2d5dfcd2c9e8c22326da9d9aa9cb3dfab0a83a024f05704076ee8d35ea"}, + {file = "soupsieve-2.5-py3-none-any.whl", hash = "sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7"}, + {file = "soupsieve-2.5.tar.gz", hash = "sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690"}, ] [[package]] name = "stack-data" -version = "0.6.2" +version = "0.6.3" description = "Extract data from python stack frames and tracebacks for informative displays" category = "dev" optional = false python-versions = "*" files = [ - {file = "stack_data-0.6.2-py3-none-any.whl", hash = "sha256:cbb2a53eb64e5785878201a97ed7c7b94883f48b87bfb0bbe8b623c74679e4a8"}, - {file = "stack_data-0.6.2.tar.gz", hash = "sha256:32d2dd0376772d01b6cb9fc996f3c8b57a357089dec328ed4b6553d037eaf815"}, + {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"}, + {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"}, ] [package.dependencies] @@ -2337,14 +2805,14 @@ tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"] [[package]] name = "terminado" -version = "0.17.1" +version = "0.18.0" description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library." category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "terminado-0.17.1-py3-none-any.whl", hash = "sha256:8650d44334eba354dd591129ca3124a6ba42c3d5b70df5051b6921d506fdaeae"}, - {file = "terminado-0.17.1.tar.gz", hash = "sha256:6ccbbcd3a4f8a25a5ec04991f39a0b8db52dfcd487ea0e578d977e6752380333"}, + {file = "terminado-0.18.0-py3-none-any.whl", hash = "sha256:87b0d96642d0fe5f5abd7783857b9cab167f221a39ff98e3b9619a788a3c0f2e"}, + {file = "terminado-0.18.0.tar.gz", hash = "sha256:1ea08a89b835dd1b8c0c900d92848147cef2537243361b2e3f4dc15df9b6fded"}, ] [package.dependencies] @@ -2355,6 +2823,7 @@ tornado = ">=6.1.0" [package.extras] docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] test = ["pre-commit", "pytest (>=7.0)", "pytest-timeout"] +typing = ["mypy (>=1.6,<2.0)", "traitlets (>=5.11.1)"] [[package]] name = "tinycss2" @@ -2401,75 +2870,87 @@ files = [ [[package]] name = "toolz" -version = "0.12.0" +version = "0.12.1" description = "List processing tools and functional utilities" category = "main" optional = false -python-versions = ">=3.5" +python-versions = ">=3.7" files = [ - {file = "toolz-0.12.0-py3-none-any.whl", hash = "sha256:2059bd4148deb1884bb0eb770a3cde70e7f954cfbbdc2285f1f2de01fd21eb6f"}, - {file = "toolz-0.12.0.tar.gz", hash = "sha256:88c570861c440ee3f2f6037c4654613228ff40c93a6c25e0eba70d17282c6194"}, + {file = "toolz-0.12.1-py3-none-any.whl", hash = "sha256:d22731364c07d72eea0a0ad45bafb2c2937ab6fd38a3507bf55eae8744aa7d85"}, + {file = "toolz-0.12.1.tar.gz", hash = "sha256:ecca342664893f177a13dac0e6b41cbd8ac25a358e5f215316d43e2100224f4d"}, ] [[package]] name = "tornado" -version = "6.3.2" +version = "6.4" description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." category = "dev" optional = false python-versions = ">= 3.8" files = [ - {file = "tornado-6.3.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:c367ab6c0393d71171123ca5515c61ff62fe09024fa6bf299cd1339dc9456829"}, - {file = "tornado-6.3.2-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:b46a6ab20f5c7c1cb949c72c1994a4585d2eaa0be4853f50a03b5031e964fc7c"}, - {file = "tornado-6.3.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c2de14066c4a38b4ecbbcd55c5cc4b5340eb04f1c5e81da7451ef555859c833f"}, - {file = "tornado-6.3.2-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:05615096845cf50a895026f749195bf0b10b8909f9be672f50b0fe69cba368e4"}, - {file = "tornado-6.3.2-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5b17b1cf5f8354efa3d37c6e28fdfd9c1c1e5122f2cb56dac121ac61baa47cbe"}, - {file = "tornado-6.3.2-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:29e71c847a35f6e10ca3b5c2990a52ce38b233019d8e858b755ea6ce4dcdd19d"}, - {file = "tornado-6.3.2-cp38-abi3-musllinux_1_1_i686.whl", hash = "sha256:834ae7540ad3a83199a8da8f9f2d383e3c3d5130a328889e4cc991acc81e87a0"}, - {file = "tornado-6.3.2-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:6a0848f1aea0d196a7c4f6772197cbe2abc4266f836b0aac76947872cd29b411"}, - {file = "tornado-6.3.2-cp38-abi3-win32.whl", hash = "sha256:7efcbcc30b7c654eb6a8c9c9da787a851c18f8ccd4a5a3a95b05c7accfa068d2"}, - {file = "tornado-6.3.2-cp38-abi3-win_amd64.whl", hash = "sha256:0c325e66c8123c606eea33084976c832aa4e766b7dff8aedd7587ea44a604cdf"}, - {file = "tornado-6.3.2.tar.gz", hash = "sha256:4b927c4f19b71e627b13f3db2324e4ae660527143f9e1f2e2fb404f3a187e2ba"}, + {file = "tornado-6.4-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:02ccefc7d8211e5a7f9e8bc3f9e5b0ad6262ba2fbb683a6443ecc804e5224ce0"}, + {file = "tornado-6.4-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:27787de946a9cffd63ce5814c33f734c627a87072ec7eed71f7fc4417bb16263"}, + {file = "tornado-6.4-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7894c581ecdcf91666a0912f18ce5e757213999e183ebfc2c3fdbf4d5bd764e"}, + {file = "tornado-6.4-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e43bc2e5370a6a8e413e1e1cd0c91bedc5bd62a74a532371042a18ef19e10579"}, + {file = "tornado-6.4-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0251554cdd50b4b44362f73ad5ba7126fc5b2c2895cc62b14a1c2d7ea32f212"}, + {file = "tornado-6.4-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fd03192e287fbd0899dd8f81c6fb9cbbc69194d2074b38f384cb6fa72b80e9c2"}, + {file = "tornado-6.4-cp38-abi3-musllinux_1_1_i686.whl", hash = "sha256:88b84956273fbd73420e6d4b8d5ccbe913c65d31351b4c004ae362eba06e1f78"}, + {file = "tornado-6.4-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:71ddfc23a0e03ef2df1c1397d859868d158c8276a0603b96cf86892bff58149f"}, + {file = "tornado-6.4-cp38-abi3-win32.whl", hash = "sha256:6f8a6c77900f5ae93d8b4ae1196472d0ccc2775cc1dfdc9e7727889145c45052"}, + {file = "tornado-6.4-cp38-abi3-win_amd64.whl", hash = "sha256:10aeaa8006333433da48dec9fe417877f8bcc21f48dda8d661ae79da357b2a63"}, + {file = "tornado-6.4.tar.gz", hash = "sha256:72291fa6e6bc84e626589f1c29d90a5a6d593ef5ae68052ee2ef000dfd273dee"}, ] [[package]] name = "traitlets" -version = "5.9.0" +version = "5.14.1" description = "Traitlets Python configuration system" category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "traitlets-5.9.0-py3-none-any.whl", hash = "sha256:9e6ec080259b9a5940c797d58b613b5e31441c2257b87c2e795c5228ae80d2d8"}, - {file = "traitlets-5.9.0.tar.gz", hash = "sha256:f6cde21a9c68cf756af02035f72d5a723bf607e862e7be33ece505abf4a3bad9"}, + {file = "traitlets-5.14.1-py3-none-any.whl", hash = "sha256:2e5a030e6eff91737c643231bfcf04a65b0132078dad75e4936700b213652e74"}, + {file = "traitlets-5.14.1.tar.gz", hash = "sha256:8585105b371a04b8316a43d5ce29c098575c2e477850b62b848b964f1444527e"}, ] [package.extras] docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] -test = ["argcomplete (>=2.0)", "pre-commit", "pytest", "pytest-mock"] +test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<7.5)", "pytest-mock", "pytest-mypy-testing"] + +[[package]] +name = "types-python-dateutil" +version = "2.8.19.20240106" +description = "Typing stubs for python-dateutil" +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "types-python-dateutil-2.8.19.20240106.tar.gz", hash = "sha256:1f8db221c3b98e6ca02ea83a58371b22c374f42ae5bbdf186db9c9a76581459f"}, + {file = "types_python_dateutil-2.8.19.20240106-py3-none-any.whl", hash = "sha256:efbbdc54590d0f16152fa103c9879c7d4a00e82078f6e2cf01769042165acaa2"}, +] [[package]] name = "typing-extensions" -version = "4.7.1" -description = "Backported and Experimental Type Hints for Python 3.7+" +version = "4.9.0" +description = "Backported and Experimental Type Hints for Python 3.8+" category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.7.1-py3-none-any.whl", hash = "sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36"}, - {file = "typing_extensions-4.7.1.tar.gz", hash = "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2"}, + {file = "typing_extensions-4.9.0-py3-none-any.whl", hash = "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"}, + {file = "typing_extensions-4.9.0.tar.gz", hash = "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783"}, ] [[package]] name = "tzdata" -version = "2023.3" +version = "2023.4" description = "Provider of IANA time zone data" category = "main" optional = false python-versions = ">=2" files = [ - {file = "tzdata-2023.3-py2.py3-none-any.whl", hash = "sha256:7e65763eef3120314099b6939b5546db7adce1e7d6f2e179e3df563c70511eda"}, - {file = "tzdata-2023.3.tar.gz", hash = "sha256:11ef1e08e54acb0d4f95bdb1be05da659673de4acbd21bf9c69e94cc5e907a3a"}, + {file = "tzdata-2023.4-py2.py3-none-any.whl", hash = "sha256:aa3ace4329eeacda5b7beb7ea08ece826c28d761cda36e747cfbf97996d39bf3"}, + {file = "tzdata-2023.4.tar.gz", hash = "sha256:dd54c94f294765522c77399649b4fefd95522479a664a0cec87f41bebc6148c9"}, ] [[package]] @@ -2489,32 +2970,72 @@ dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake [[package]] name = "urllib3" -version = "2.0.4" +version = "2.2.0" description = "HTTP library with thread-safe connection pooling, file post, and more." category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "urllib3-2.0.4-py3-none-any.whl", hash = "sha256:de7df1803967d2c2a98e4b11bb7d6bd9210474c46e8a0401514e3a42a75ebde4"}, - {file = "urllib3-2.0.4.tar.gz", hash = "sha256:8d22f86aae8ef5e410d4f539fde9ce6b2113a001bb4d189e0aed70642d602b11"}, + {file = "urllib3-2.2.0-py3-none-any.whl", hash = "sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224"}, + {file = "urllib3-2.2.0.tar.gz", hash = "sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20"}, ] [package.extras] brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"] +h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] +[[package]] +name = "watchdog" +version = "3.0.0" +description = "Filesystem events monitoring" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "watchdog-3.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:336adfc6f5cc4e037d52db31194f7581ff744b67382eb6021c868322e32eef41"}, + {file = "watchdog-3.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a70a8dcde91be523c35b2bf96196edc5730edb347e374c7de7cd20c43ed95397"}, + {file = "watchdog-3.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:adfdeab2da79ea2f76f87eb42a3ab1966a5313e5a69a0213a3cc06ef692b0e96"}, + {file = "watchdog-3.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2b57a1e730af3156d13b7fdddfc23dea6487fceca29fc75c5a868beed29177ae"}, + {file = "watchdog-3.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7ade88d0d778b1b222adebcc0927428f883db07017618a5e684fd03b83342bd9"}, + {file = "watchdog-3.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7e447d172af52ad204d19982739aa2346245cc5ba6f579d16dac4bfec226d2e7"}, + {file = "watchdog-3.0.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:9fac43a7466eb73e64a9940ac9ed6369baa39b3bf221ae23493a9ec4d0022674"}, + {file = "watchdog-3.0.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8ae9cda41fa114e28faf86cb137d751a17ffd0316d1c34ccf2235e8a84365c7f"}, + {file = "watchdog-3.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:25f70b4aa53bd743729c7475d7ec41093a580528b100e9a8c5b5efe8899592fc"}, + {file = "watchdog-3.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4f94069eb16657d2c6faada4624c39464f65c05606af50bb7902e036e3219be3"}, + {file = "watchdog-3.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7c5f84b5194c24dd573fa6472685b2a27cc5a17fe5f7b6fd40345378ca6812e3"}, + {file = "watchdog-3.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3aa7f6a12e831ddfe78cdd4f8996af9cf334fd6346531b16cec61c3b3c0d8da0"}, + {file = "watchdog-3.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:233b5817932685d39a7896b1090353fc8efc1ef99c9c054e46c8002561252fb8"}, + {file = "watchdog-3.0.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:13bbbb462ee42ec3c5723e1205be8ced776f05b100e4737518c67c8325cf6100"}, + {file = "watchdog-3.0.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:8f3ceecd20d71067c7fd4c9e832d4e22584318983cabc013dbf3f70ea95de346"}, + {file = "watchdog-3.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c9d8c8ec7efb887333cf71e328e39cffbf771d8f8f95d308ea4125bf5f90ba64"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:0e06ab8858a76e1219e68c7573dfeba9dd1c0219476c5a44d5333b01d7e1743a"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:d00e6be486affb5781468457b21a6cbe848c33ef43f9ea4a73b4882e5f188a44"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:c07253088265c363d1ddf4b3cdb808d59a0468ecd017770ed716991620b8f77a"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:5113334cf8cf0ac8cd45e1f8309a603291b614191c9add34d33075727a967709"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:51f90f73b4697bac9c9a78394c3acbbd331ccd3655c11be1a15ae6fe289a8c83"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:ba07e92756c97e3aca0912b5cbc4e5ad802f4557212788e72a72a47ff376950d"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:d429c2430c93b7903914e4db9a966c7f2b068dd2ebdd2fa9b9ce094c7d459f33"}, + {file = "watchdog-3.0.0-py3-none-win32.whl", hash = "sha256:3ed7c71a9dccfe838c2f0b6314ed0d9b22e77d268c67e015450a29036a81f60f"}, + {file = "watchdog-3.0.0-py3-none-win_amd64.whl", hash = "sha256:4c9956d27be0bb08fc5f30d9d0179a855436e655f046d288e2bcc11adfae893c"}, + {file = "watchdog-3.0.0-py3-none-win_ia64.whl", hash = "sha256:5d9f3a10e02d7371cd929b5d8f11e87d4bad890212ed3901f9b4d68767bee759"}, + {file = "watchdog-3.0.0.tar.gz", hash = "sha256:4d98a320595da7a7c5a18fc48cb633c2e73cda78f93cac2ef42d42bf609a33f9"}, +] + +[package.extras] +watchmedo = ["PyYAML (>=3.10)"] + [[package]] name = "wcwidth" -version = "0.2.6" +version = "0.2.13" description = "Measures the displayed width of unicode strings in a terminal" category = "dev" optional = false python-versions = "*" files = [ - {file = "wcwidth-0.2.6-py2.py3-none-any.whl", hash = "sha256:795b138f6875577cd91bba52baf9e445cd5118fd32723b460e30a0af30ea230e"}, - {file = "wcwidth-0.2.6.tar.gz", hash = "sha256:a5220780a404dbe3353789870978e472cfe477761f06ee55077256e509b156d0"}, + {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, + {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, ] [[package]] @@ -2547,18 +3068,18 @@ files = [ [[package]] name = "websocket-client" -version = "1.6.1" +version = "1.7.0" description = "WebSocket client for Python with low level API options" category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "websocket-client-1.6.1.tar.gz", hash = "sha256:c951af98631d24f8df89ab1019fc365f2227c0892f12fd150e935607c79dd0dd"}, - {file = "websocket_client-1.6.1-py3-none-any.whl", hash = "sha256:f1f9f2ad5291f0225a49efad77abf9e700b6fef553900623060dad6e26503b9d"}, + {file = "websocket-client-1.7.0.tar.gz", hash = "sha256:10e511ea3a8c744631d3bd77e61eb17ed09304c413ad42cf6ddfa4c7787e8fe6"}, + {file = "websocket_client-1.7.0-py3-none-any.whl", hash = "sha256:f4c3d22fec12a2461427a29957ff07d35098ee2d976d3ba244e688b8b4057588"}, ] [package.extras] -docs = ["Sphinx (>=3.4)", "sphinx-rtd-theme (>=0.5)"] +docs = ["Sphinx (>=6.0)", "sphinx-rtd-theme (>=1.1.0)"] optional = ["python-socks", "wsaccel"] test = ["websockets"] @@ -2612,18 +3133,18 @@ docs = ["IPython", "nbsphinx", "numpydoc", "sphinx", "sphinx-pangeo-theme", "sph [[package]] name = "zipp" -version = "3.16.2" +version = "3.17.0" description = "Backport of pathlib-compatible object wrapper for zip files" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "zipp-3.16.2-py3-none-any.whl", hash = "sha256:679e51dd4403591b2d6838a48de3d283f3d188412a9782faadf845f298736ba0"}, - {file = "zipp-3.16.2.tar.gz", hash = "sha256:ebc15946aa78bd63458992fc81ec3b6f7b1e92d51c35e6de1c3804e73b799147"}, + {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"}, + {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] [extras] @@ -2632,5 +3153,5 @@ namelist = ["f90nml"] [metadata] lock-version = "2.0" -python-versions = ">=3.8,<3.12" -content-hash = "64c1d2de03507a7732a3bb171b1c5b0c49b702418619e4c59564182eb1faeba7" +python-versions = ">=3.9,<3.12" +content-hash = "4e84d5cf70e2f30ca35dbfddce4e9a2b1bb35f289ed7a776ca52d2e57ae2148d" diff --git a/pyproject.toml b/pyproject.toml index 80ad3db..0e1793e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,7 +9,7 @@ readme = "README.md" exclude = ["xnemogcm/test/data"] [tool.poetry.dependencies] -python = ">=3.8,<3.12" +python = ">=3.9,<3.12" dask = {extras = ["array"], version = "*"} netcdf4 = ">=1.5.8" xarray = ">=0.21.1" @@ -36,6 +36,14 @@ optional = true black = "^22.10.0" jupyterlab = ">=3.5.1" +[tool.poetry.group.docs] +optional = true + +[tool.poetry.group.docs.dependencies] +mkdocs = "^1.5.3" +mkdocs-jupyter = "^0.24.6" +mkdocstrings = {extras = ["python"], version = "^0.24.0"} + [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" diff --git a/src_example/compute_metrics.ipynb b/src_example/compute_metrics.ipynb deleted file mode 100644 index 0b0ab1e..0000000 --- a/src_example/compute_metrics.ipynb +++ /dev/null @@ -1,504 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "9975d773-21bd-40e2-8795-38e70753bd05", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "from pathlib import Path\n", - "\n", - "from xnemogcm import open_nemo_and_domain_cfg\n", - "from xnemogcm.metrics import compute_missing_metrics\n", - "from xnemogcm import __version__ as xnemogcm_version" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "f4d1aa0c-e02a-4999-aaeb-88cdf14a8adf", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.4.1\n" - ] - } - ], - "source": [ - "print(xnemogcm_version)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "3d452d15-99de-4dda-a18b-907cace8688a", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "datadir = Path('../xnemogcm/test/data/4.2.0/open_and_merge/')" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "51096969-6558-493c-95ae-e3b82b57cb02", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Dimensions: (z_c: 4, axis_nbounds: 2, t: 1, y_c: 22, x_c: 32,\n", - " x_f: 32, y_f: 22, z_f: 4)\n", - "Coordinates: (12/20)\n", - " * z_c (z_c) int64 0 1 2 3\n", - " time_centered (t) object dask.array\n", - " * t (t) object 0001-07-01 00:00:00\n", - " * x_c (x_c) int64 0 1 2 3 4 5 6 7 ... 25 26 27 28 29 30 31\n", - " * y_c (y_c) int64 0 1 2 3 4 5 6 7 ... 15 16 17 18 19 20 21\n", - " gdept_1d (z_c) float64 dask.array\n", - " ... ...\n", - " gphit (y_c, x_c) float64 dask.array\n", - " gphiu (y_c, x_f) float64 dask.array\n", - " gphiv (y_f, x_c) float64 dask.array\n", - " gphif (y_f, x_f) float64 dask.array\n", - " gdept_0 (z_c, y_c, x_c) float64 dask.array\n", - " gdepw_0 (z_f, y_c, x_c) float64 dask.array\n", - "Dimensions without coordinates: axis_nbounds\n", - "Data variables: (12/43)\n", - " deptht_bounds (z_c, axis_nbounds) float32 dask.array\n", - " time_centered_bounds (t, axis_nbounds) object dask.array\n", - " t_bounds (t, axis_nbounds) object dask.array\n", - " toce (t, z_c, y_c, x_c) float32 dask.array\n", - " soce (t, z_c, y_c, x_c) float32 dask.array\n", - " e3t (t, z_c, y_c, x_c) float32 dask.array\n", - " ... ...\n", - " e3u_0 (z_c, y_c, x_f) float64 dask.array\n", - " e3v_0 (z_c, y_f, x_c) float64 dask.array\n", - " e3f_0 (z_c, y_f, x_f) float64 dask.array\n", - " e3w_0 (z_f, y_c, x_c) float64 dask.array\n", - " e3uw_0 (z_f, y_c, x_f) float64 dask.array\n", - " e3vw_0 (z_f, y_f, x_c) float64 dask.array\n", - "Attributes: (12/18)\n", - " Conventions: CF-1.6\n", - " timeStamp: 2023-Mar-28 10:42:16 GMT\n", - " name: NEMO dataset\n", - " description: Ocean grid variables, set on the proper positions\n", - " title: Ocean grid variables\n", - " DOMAIN_dimensions_ids: [1 2]\n", - " ... ...\n", - " Iperio: 0\n", - " Jperio: 0\n", - " NFold: 0\n", - " NFtype: -\n", - " VertCoord: zco\n", - " IsfCav: 0\n" - ] - } - ], - "source": [ - "ds = open_nemo_and_domain_cfg(nemo_files=datadir, domcfg_files=datadir)\n", - "print(ds)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "b4958894-950c-4150-a312-9b70a94c4387", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Help on function compute_missing_metrics in module xnemogcm.metrics:\n", - "\n", - "compute_missing_metrics(ds, all_scale_factors=['e3t', 'e3u', 'e3v', 'e3f', 'e3w', 'e3uw', 'e3vw', 'e3fw'], time_varying=True, periodic=False)\n", - " Add all possible scale factors to the dataset.\n", - " \n", - " For the moment, e3t (or e3t_0) at least needs to be present in the dataset\n", - " for the time_varying=True (time_varying=False) case.\n", - " If e3t_0 is not found (e.g. for nemo 3.6), it will raise a warning and use e3t_1d\n", - " (this will lead to wrong results if terrain-following coordinates are used).\n", - " \n", - " May have some boundary issues.\n", - " \n", - " Will add the metrics to the given dataset. To avoid this, use a ds.copy()\n", - " \n", - " Parameters\n", - " ----------\n", - " ds : xarray.Dataset\n", - " dataset containing the scale factors. Must be xgcm compatible (e.g. opened with xnemogcm)\n", - " all_scale_factors : list\n", - " list of the scale factors to compute (nothing is done for the scale factors\n", - " already present in *ds*)\n", - " Must be a sublist of: ['e3t', 'e3u', 'e3v', 'e3f', 'e3w', 'e3uw', 'e3vw', 'e3fw']\n", - " time_varying : bool\n", - " Whether to use the time varying scale factors (True) of the constant ones (False, 'e3x_0')\n", - " \n", - " Returns\n", - " -------\n", - " the new dataset with the scale factors added\n", - "\n" - ] - } - ], - "source": [ - "help(compute_missing_metrics)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "2f5c7a41-ad3d-43f0-baf0-6cfb4fbbb761", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Dimensions: (z_c: 4, axis_nbounds: 2, t: 1, y_c: 22, x_c: 32,\n", - " x_f: 32, y_f: 22, z_f: 4)\n", - "Coordinates: (12/20)\n", - " * z_c (z_c) int64 0 1 2 3\n", - " time_centered (t) object dask.array\n", - " * t (t) object 0001-07-01 00:00:00\n", - " * x_c (x_c) int64 0 1 2 3 4 5 6 7 ... 25 26 27 28 29 30 31\n", - " * y_c (y_c) int64 0 1 2 3 4 5 6 7 ... 15 16 17 18 19 20 21\n", - " gdept_1d (z_c) float64 dask.array\n", - " ... ...\n", - " gphit (y_c, x_c) float64 dask.array\n", - " gphiu (y_c, x_f) float64 dask.array\n", - " gphiv (y_f, x_c) float64 dask.array\n", - " gphif (y_f, x_f) float64 dask.array\n", - " gdept_0 (z_c, y_c, x_c) float64 dask.array\n", - " gdepw_0 (z_f, y_c, x_c) float64 dask.array\n", - "Dimensions without coordinates: axis_nbounds\n", - "Data variables: (12/47)\n", - " deptht_bounds (z_c, axis_nbounds) float32 dask.array\n", - " time_centered_bounds (t, axis_nbounds) object dask.array\n", - " t_bounds (t, axis_nbounds) object dask.array\n", - " toce (t, z_c, y_c, x_c) float32 dask.array\n", - " soce (t, z_c, y_c, x_c) float32 dask.array\n", - " e3t (t, z_c, y_c, x_c) float32 dask.array\n", - " ... ...\n", - " e3uw_0 (z_f, y_c, x_f) float64 dask.array\n", - " e3vw_0 (z_f, y_f, x_c) float64 dask.array\n", - " e3f (t, z_c, y_f, x_f) float32 dask.array\n", - " e3uw (t, z_f, y_c, x_f) float32 dask.array\n", - " e3vw (t, z_f, y_f, x_c) float32 dask.array\n", - " e3fw (t, z_f, y_f, x_f) float32 dask.array\n", - "Attributes: (12/18)\n", - " Conventions: CF-1.6\n", - " timeStamp: 2023-Mar-28 10:42:16 GMT\n", - " name: NEMO dataset\n", - " description: Ocean grid variables, set on the proper positions\n", - " title: Ocean grid variables\n", - " DOMAIN_dimensions_ids: [1 2]\n", - " ... ...\n", - " Iperio: 0\n", - " Jperio: 0\n", - " NFold: 0\n", - " NFtype: -\n", - " VertCoord: zco\n", - " IsfCav: 0\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/romain/Documents/Education/PhD/Dev-prog/xnemogcm/xnemogcm/metrics.py:63: UserWarning: This function is in pre-phase. Do not expect a high precision, but a good estimate. Some boundary issues may arise.\n", - " warn(\n" - ] - } - ], - "source": [ - "# If you just want to get a copy\n", - "print(\n", - " compute_missing_metrics(ds.copy())\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "613b9c7a-724b-4185-856e-70cb9e5364d2", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/romain/Documents/Education/PhD/Dev-prog/xnemogcm/xnemogcm/metrics.py:63: UserWarning: This function is in pre-phase. Do not expect a high precision, but a good estimate. Some boundary issues may arise.\n", - " warn(\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Dimensions: (z_c: 4, axis_nbounds: 2, t: 1, y_c: 22, x_c: 32,\n", - " x_f: 32, y_f: 22, z_f: 4)\n", - "Coordinates: (12/20)\n", - " * z_c (z_c) int64 0 1 2 3\n", - " time_centered (t) object dask.array\n", - " * t (t) object 0001-07-01 00:00:00\n", - " * x_c (x_c) int64 0 1 2 3 4 5 6 7 ... 25 26 27 28 29 30 31\n", - " * y_c (y_c) int64 0 1 2 3 4 5 6 7 ... 15 16 17 18 19 20 21\n", - " gdept_1d (z_c) float64 dask.array\n", - " ... ...\n", - " gphit (y_c, x_c) float64 dask.array\n", - " gphiu (y_c, x_f) float64 dask.array\n", - " gphiv (y_f, x_c) float64 dask.array\n", - " gphif (y_f, x_f) float64 dask.array\n", - " gdept_0 (z_c, y_c, x_c) float64 dask.array\n", - " gdepw_0 (z_f, y_c, x_c) float64 dask.array\n", - "Dimensions without coordinates: axis_nbounds\n", - "Data variables: (12/47)\n", - " deptht_bounds (z_c, axis_nbounds) float32 dask.array\n", - " time_centered_bounds (t, axis_nbounds) object dask.array\n", - " t_bounds (t, axis_nbounds) object dask.array\n", - " toce (t, z_c, y_c, x_c) float32 dask.array\n", - " soce (t, z_c, y_c, x_c) float32 dask.array\n", - " e3t (t, z_c, y_c, x_c) float32 dask.array\n", - " ... ...\n", - " e3uw_0 (z_f, y_c, x_f) float64 dask.array\n", - " e3vw_0 (z_f, y_f, x_c) float64 dask.array\n", - " e3f (t, z_c, y_f, x_f) float32 dask.array\n", - " e3uw (t, z_f, y_c, x_f) float32 dask.array\n", - " e3vw (t, z_f, y_f, x_c) float32 dask.array\n", - " e3fw (t, z_f, y_f, x_f) float32 dask.array\n", - "Attributes: (12/18)\n", - " Conventions: CF-1.6\n", - " timeStamp: 2023-Mar-28 10:42:16 GMT\n", - " name: NEMO dataset\n", - " description: Ocean grid variables, set on the proper positions\n", - " title: Ocean grid variables\n", - " DOMAIN_dimensions_ids: [1 2]\n", - " ... ...\n", - " Iperio: 0\n", - " Jperio: 0\n", - " NFold: 0\n", - " NFtype: -\n", - " VertCoord: zco\n", - " IsfCav: 0\n" - ] - } - ], - "source": [ - "# If you just want to add the scale factor inplace\n", - "compute_missing_metrics(ds)\n", - "print(ds)" - ] - }, - { - "cell_type": "markdown", - "id": "651306d8-2f5c-4c64-9942-461e04756e0c", - "metadata": {}, - "source": [ - "It is also possible to compute the time constant metrics, i.e. the e3x_0" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "aa9bc4a4-8194-4cc5-9bcf-c7cd08bf7cd1", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/romain/Documents/Education/PhD/Dev-prog/xnemogcm/xnemogcm/metrics.py:63: UserWarning: This function is in pre-phase. Do not expect a high precision, but a good estimate. Some boundary issues may arise.\n", - " warn(\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Dimensions: (z_c: 4, axis_nbounds: 2, t: 1, y_c: 22, x_c: 32,\n", - " x_f: 32, y_f: 22, z_f: 4)\n", - "Coordinates: (12/20)\n", - " * z_c (z_c) int64 0 1 2 3\n", - " time_centered (t) object dask.array\n", - " * t (t) object 0001-07-01 00:00:00\n", - " * x_c (x_c) int64 0 1 2 3 4 5 6 7 ... 25 26 27 28 29 30 31\n", - " * y_c (y_c) int64 0 1 2 3 4 5 6 7 ... 15 16 17 18 19 20 21\n", - " gdept_1d (z_c) float64 dask.array\n", - " ... ...\n", - " gphit (y_c, x_c) float64 dask.array\n", - " gphiu (y_c, x_f) float64 dask.array\n", - " gphiv (y_f, x_c) float64 dask.array\n", - " gphif (y_f, x_f) float64 dask.array\n", - " gdept_0 (z_c, y_c, x_c) float64 dask.array\n", - " gdepw_0 (z_f, y_c, x_c) float64 dask.array\n", - "Dimensions without coordinates: axis_nbounds\n", - "Data variables: (12/48)\n", - " deptht_bounds (z_c, axis_nbounds) float32 dask.array\n", - " time_centered_bounds (t, axis_nbounds) object dask.array\n", - " t_bounds (t, axis_nbounds) object dask.array\n", - " toce (t, z_c, y_c, x_c) float32 dask.array\n", - " soce (t, z_c, y_c, x_c) float32 dask.array\n", - " e3t (t, z_c, y_c, x_c) float32 dask.array\n", - " ... ...\n", - " e3vw_0 (z_f, y_f, x_c) float64 dask.array\n", - " e3f (t, z_c, y_f, x_f) float32 dask.array\n", - " e3uw (t, z_f, y_c, x_f) float32 dask.array\n", - " e3vw (t, z_f, y_f, x_c) float32 dask.array\n", - " e3fw (t, z_f, y_f, x_f) float32 dask.array\n", - " e3fw_0 (z_f, y_f, x_f) float64 dask.array\n", - "Attributes: (12/18)\n", - " Conventions: CF-1.6\n", - " timeStamp: 2023-Mar-28 10:42:16 GMT\n", - " name: NEMO dataset\n", - " description: Ocean grid variables, set on the proper positions\n", - " title: Ocean grid variables\n", - " DOMAIN_dimensions_ids: [1 2]\n", - " ... ...\n", - " Iperio: 0\n", - " Jperio: 0\n", - " NFold: 0\n", - " NFtype: -\n", - " VertCoord: zco\n", - " IsfCav: 0\n" - ] - } - ], - "source": [ - "print(\n", - " compute_missing_metrics(ds.copy(), time_varying=False)\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "69e30349-cbf9-45cb-bd53-6b2123d6c9c2", - "metadata": {}, - "source": [ - "And it is possible to only compute a subset of the possible metrics" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "b190b080-d2ad-444e-b25f-429ae51028fc", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Dimensions: (z_c: 4, axis_nbounds: 2, t: 1, y_c: 22, x_c: 32,\n", - " x_f: 32, y_f: 22, z_f: 4)\n", - "Coordinates: (12/20)\n", - " * z_c (z_c) int64 0 1 2 3\n", - " time_centered (t) object dask.array\n", - " * t (t) object 0001-07-01 00:00:00\n", - " * x_c (x_c) int64 0 1 2 3 4 5 6 7 ... 25 26 27 28 29 30 31\n", - " * y_c (y_c) int64 0 1 2 3 4 5 6 7 ... 15 16 17 18 19 20 21\n", - " gdept_1d (z_c) float64 dask.array\n", - " ... ...\n", - " gphit (y_c, x_c) float64 dask.array\n", - " gphiu (y_c, x_f) float64 dask.array\n", - " gphiv (y_f, x_c) float64 dask.array\n", - " gphif (y_f, x_f) float64 dask.array\n", - " gdept_0 (z_c, y_c, x_c) float64 dask.array\n", - " gdepw_0 (z_f, y_c, x_c) float64 dask.array\n", - "Dimensions without coordinates: axis_nbounds\n", - "Data variables: (12/44)\n", - " deptht_bounds (z_c, axis_nbounds) float32 dask.array\n", - " time_centered_bounds (t, axis_nbounds) object dask.array\n", - " t_bounds (t, axis_nbounds) object dask.array\n", - " toce (t, z_c, y_c, x_c) float32 dask.array\n", - " soce (t, z_c, y_c, x_c) float32 dask.array\n", - " e3t (t, z_c, y_c, x_c) float32 dask.array\n", - " ... ...\n", - " e3uw_0 (z_f, y_c, x_f) float64 dask.array\n", - " e3vw_0 (z_f, y_f, x_c) float64 dask.array\n", - " e3uw (t, z_f, y_c, x_f) float32 dask.array\n", - " e3vw (t, z_f, y_f, x_c) float32 dask.array\n", - " e3fw (t, z_f, y_f, x_f) float32 dask.array\n", - " e3u (t, z_c, y_c, x_f) float32 dask.array\n", - "Attributes: (12/18)\n", - " Conventions: CF-1.6\n", - " timeStamp: 2023-Mar-28 10:42:16 GMT\n", - " name: NEMO dataset\n", - " description: Ocean grid variables, set on the proper positions\n", - " title: Ocean grid variables\n", - " DOMAIN_dimensions_ids: [1 2]\n", - " ... ...\n", - " Iperio: 0\n", - " Jperio: 0\n", - " NFold: 0\n", - " NFtype: -\n", - " VertCoord: zco\n", - " IsfCav: 0\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/romain/Documents/Education/PhD/Dev-prog/xnemogcm/xnemogcm/metrics.py:63: UserWarning: This function is in pre-phase. Do not expect a high precision, but a good estimate. Some boundary issues may arise.\n", - " warn(\n" - ] - } - ], - "source": [ - "print(\n", - " compute_missing_metrics(ds.drop_vars(['e3u', 'e3v', 'e3f', 'e3w']).copy(), all_scale_factors=['e3u'])\n", - ")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.6" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/src_example/open_process_files.ipynb b/src_example/open_process_files.ipynb deleted file mode 100644 index b59ab76..0000000 --- a/src_example/open_process_files.ipynb +++ /dev/null @@ -1,10274 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "d4baf777-28bc-42a2-95d9-714e62b9fa84", - "metadata": {}, - "source": [ - "Start by importing the functions" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "6e326e37-4bfa-4111-bde4-5f3587ab1edd", - "metadata": { - "execution": { - "iopub.execute_input": "2023-03-29T15:17:28.128160Z", - "iopub.status.busy": "2023-03-29T15:17:28.127928Z", - "iopub.status.idle": "2023-03-29T15:17:28.515987Z", - "shell.execute_reply": "2023-03-29T15:17:28.515350Z" - } - }, - "outputs": [], - "source": [ - "from pathlib import Path\n", - "\n", - "from xnemogcm import open_domain_cfg, open_nemo, process_nemo, open_namelist, open_nemo_and_domain_cfg\n", - "from xnemogcm import __version__ as xnemogcm_version" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "c6f5571a-61ec-408f-8eae-6dee765ee048", - "metadata": { - "execution": { - "iopub.execute_input": "2023-03-29T15:17:28.518960Z", - "iopub.status.busy": "2023-03-29T15:17:28.518496Z", - "iopub.status.idle": "2023-03-29T15:17:28.526296Z", - "shell.execute_reply": "2023-03-29T15:17:28.525772Z" - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'0.4.1'" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "xnemogcm_version" - ] - }, - { - "cell_type": "markdown", - "id": "cf68f882-90a2-420a-b5b5-ceded0c96420", - "metadata": {}, - "source": [ - "# First open the domain_cfg and nemo files into 2 datasets\n", - "## domain" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "3928df5c-06c9-4f4b-a85a-c4fad3170903", - "metadata": { - "execution": { - "iopub.execute_input": "2023-03-29T15:17:28.528500Z", - "iopub.status.busy": "2023-03-29T15:17:28.528305Z", - "iopub.status.idle": "2023-03-29T15:17:28.566306Z", - "shell.execute_reply": "2023-03-29T15:17:28.565741Z" - } - }, - "outputs": [], - "source": [ - "open_domain_cfg?" - ] - }, - { - "cell_type": "markdown", - "id": "add13a99-a665-4d2b-822a-436740a9709a", - "metadata": {}, - "source": [ - "---\n", - "\n", - "You can provide the file names / folder using 3 similar methods:\n", - "1. Give the path to the files and xnemogcm opens the domain_cfg_out and mesh_mesk files\n", - "2. Give the path to the data folder + the name of the files\n", - "3. Give the name of the files that already contain the tree (e.g. ['/path/to/file1', '/path/to/file2']\n", - "\n", - "These 3 methods are equivalent, however if your domain files don't have the strandard names you need to provide them by hand.\n", - "\n", - "We use one of the test folder:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "2ee3aa40-af70-4150-a7e6-ea6f690f364f", - "metadata": { - "execution": { - "iopub.execute_input": "2023-03-29T15:17:28.569047Z", - "iopub.status.busy": "2023-03-29T15:17:28.568607Z", - "iopub.status.idle": "2023-03-29T15:17:28.572140Z", - "shell.execute_reply": "2023-03-29T15:17:28.571591Z" - } - }, - "outputs": [], - "source": [ - "datadir = Path('../xnemogcm/test/data/4.2.0/open_and_merge/')" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "fc2b9b94-5106-427d-9d44-59044cec476a", - "metadata": { - "execution": { - "iopub.execute_input": "2023-03-29T15:17:28.574380Z", - "iopub.status.busy": "2023-03-29T15:17:28.573958Z", - "iopub.status.idle": "2023-03-29T15:17:28.688462Z", - "shell.execute_reply": "2023-03-29T15:17:28.687629Z" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "GYRE_1y_00010101_00011230_grid_T.nc GYRE_1y_00010101_00011230_grid_W.nc\r\n", - "GYRE_1y_00010101_00011230_grid_U.nc mesh_mask.nc\r\n", - "GYRE_1y_00010101_00011230_grid_V.nc\r\n" - ] - } - ], - "source": [ - "!ls ../xnemogcm/test/data/4.2.0/open_and_merge/" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "5cd1ee94-3ac2-4d95-9610-ea651583af39", - "metadata": { - "execution": { - "iopub.execute_input": "2023-03-29T15:17:28.691707Z", - "iopub.status.busy": "2023-03-29T15:17:28.691336Z", - "iopub.status.idle": "2023-03-29T15:17:29.504439Z", - "shell.execute_reply": "2023-03-29T15:17:29.503906Z" - } - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
<xarray.Dataset>\n",
-       "Dimensions:    (z_c: 4, y_c: 22, x_c: 32, x_f: 32, y_f: 22, z_f: 4)\n",
-       "Coordinates: (12/18)\n",
-       "    glamt      (y_c, x_c) float64 dask.array<chunksize=(22, 32), meta=np.ndarray>\n",
-       "    glamu      (y_c, x_f) float64 dask.array<chunksize=(22, 32), meta=np.ndarray>\n",
-       "    glamv      (y_f, x_c) float64 dask.array<chunksize=(22, 32), meta=np.ndarray>\n",
-       "    glamf      (y_f, x_f) float64 dask.array<chunksize=(22, 32), meta=np.ndarray>\n",
-       "    gphit      (y_c, x_c) float64 dask.array<chunksize=(22, 32), meta=np.ndarray>\n",
-       "    gphiu      (y_c, x_f) float64 dask.array<chunksize=(22, 32), meta=np.ndarray>\n",
-       "    ...         ...\n",
-       "  * x_c        (x_c) int64 0 1 2 3 4 5 6 7 8 9 ... 22 23 24 25 26 27 28 29 30 31\n",
-       "  * y_c        (y_c) int64 0 1 2 3 4 5 6 7 8 9 ... 12 13 14 15 16 17 18 19 20 21\n",
-       "  * z_c        (z_c) int64 0 1 2 3\n",
-       "  * x_f        (x_f) float64 0.5 1.5 2.5 3.5 4.5 ... 27.5 28.5 29.5 30.5 31.5\n",
-       "  * y_f        (y_f) float64 0.5 1.5 2.5 3.5 4.5 ... 17.5 18.5 19.5 20.5 21.5\n",
-       "  * z_f        (z_f) float64 -0.5 0.5 1.5 2.5\n",
-       "Data variables: (12/28)\n",
-       "    tmask      (z_c, y_c, x_c) int8 dask.array<chunksize=(4, 22, 32), meta=np.ndarray>\n",
-       "    umask      (z_c, y_c, x_f) int8 dask.array<chunksize=(4, 22, 32), meta=np.ndarray>\n",
-       "    vmask      (z_c, y_f, x_c) int8 dask.array<chunksize=(4, 22, 32), meta=np.ndarray>\n",
-       "    fmask      (z_c, y_f, x_f) int8 dask.array<chunksize=(4, 22, 32), meta=np.ndarray>\n",
-       "    tmaskutil  (y_c, x_c) int8 dask.array<chunksize=(22, 32), meta=np.ndarray>\n",
-       "    umaskutil  (y_c, x_f) int8 dask.array<chunksize=(22, 32), meta=np.ndarray>\n",
-       "    ...         ...\n",
-       "    e3u_0      (z_c, y_c, x_f) float64 dask.array<chunksize=(4, 22, 32), meta=np.ndarray>\n",
-       "    e3v_0      (z_c, y_f, x_c) float64 dask.array<chunksize=(4, 22, 32), meta=np.ndarray>\n",
-       "    e3f_0      (z_c, y_f, x_f) float64 dask.array<chunksize=(4, 22, 32), meta=np.ndarray>\n",
-       "    e3w_0      (z_f, y_c, x_c) float64 dask.array<chunksize=(4, 22, 32), meta=np.ndarray>\n",
-       "    e3uw_0     (z_f, y_c, x_f) float64 dask.array<chunksize=(4, 22, 32), meta=np.ndarray>\n",
-       "    e3vw_0     (z_f, y_f, x_c) float64 dask.array<chunksize=(4, 22, 32), meta=np.ndarray>\n",
-       "Attributes: (12/13)\n",
-       "    DOMAIN_dimensions_ids:   [1 2]\n",
-       "    DOMAIN_size_global:      [32 22]\n",
-       "    DOMAIN_halo_size_start:  [0 0]\n",
-       "    DOMAIN_halo_size_end:    [0 0]\n",
-       "    DOMAIN_type:             BOX\n",
-       "    CfgName:                 GYRE\n",
-       "    ...                      ...\n",
-       "    Iperio:                  0\n",
-       "    Jperio:                  0\n",
-       "    NFold:                   0\n",
-       "    NFtype:                  -\n",
-       "    VertCoord:               zco\n",
-       "    IsfCav:                  0
" - ], - "text/plain": [ - "\n", - "Dimensions: (z_c: 4, y_c: 22, x_c: 32, x_f: 32, y_f: 22, z_f: 4)\n", - "Coordinates: (12/18)\n", - " glamt (y_c, x_c) float64 dask.array\n", - " glamu (y_c, x_f) float64 dask.array\n", - " glamv (y_f, x_c) float64 dask.array\n", - " glamf (y_f, x_f) float64 dask.array\n", - " gphit (y_c, x_c) float64 dask.array\n", - " gphiu (y_c, x_f) float64 dask.array\n", - " ... ...\n", - " * x_c (x_c) int64 0 1 2 3 4 5 6 7 8 9 ... 22 23 24 25 26 27 28 29 30 31\n", - " * y_c (y_c) int64 0 1 2 3 4 5 6 7 8 9 ... 12 13 14 15 16 17 18 19 20 21\n", - " * z_c (z_c) int64 0 1 2 3\n", - " * x_f (x_f) float64 0.5 1.5 2.5 3.5 4.5 ... 27.5 28.5 29.5 30.5 31.5\n", - " * y_f (y_f) float64 0.5 1.5 2.5 3.5 4.5 ... 17.5 18.5 19.5 20.5 21.5\n", - " * z_f (z_f) float64 -0.5 0.5 1.5 2.5\n", - "Data variables: (12/28)\n", - " tmask (z_c, y_c, x_c) int8 dask.array\n", - " umask (z_c, y_c, x_f) int8 dask.array\n", - " vmask (z_c, y_f, x_c) int8 dask.array\n", - " fmask (z_c, y_f, x_f) int8 dask.array\n", - " tmaskutil (y_c, x_c) int8 dask.array\n", - " umaskutil (y_c, x_f) int8 dask.array\n", - " ... ...\n", - " e3u_0 (z_c, y_c, x_f) float64 dask.array\n", - " e3v_0 (z_c, y_f, x_c) float64 dask.array\n", - " e3f_0 (z_c, y_f, x_f) float64 dask.array\n", - " e3w_0 (z_f, y_c, x_c) float64 dask.array\n", - " e3uw_0 (z_f, y_c, x_f) float64 dask.array\n", - " e3vw_0 (z_f, y_f, x_c) float64 dask.array\n", - "Attributes: (12/13)\n", - " DOMAIN_dimensions_ids: [1 2]\n", - " DOMAIN_size_global: [32 22]\n", - " DOMAIN_halo_size_start: [0 0]\n", - " DOMAIN_halo_size_end: [0 0]\n", - " DOMAIN_type: BOX\n", - " CfgName: GYRE\n", - " ... ...\n", - " Iperio: 0\n", - " Jperio: 0\n", - " NFold: 0\n", - " NFtype: -\n", - " VertCoord: zco\n", - " IsfCav: 0" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "domcfg = open_domain_cfg(datadir=datadir)\n", - "# or\n", - "domcfg = open_domain_cfg(datadir=datadir, files=['mesh_mask.nc'])\n", - "# or\n", - "domcfg = open_domain_cfg(files=datadir.glob('*mesh_mask*.nc'))\n", - "domcfg" - ] - }, - { - "cell_type": "markdown", - "id": "58fde32f-9f84-47f0-90e5-2590d6664ac5", - "metadata": {}, - "source": [ - "## Nemo\n", - "\n", - "2 options here: 1) open netcdf files and make the preprocess automatically with `open_nemo` or 2) open by hand the files (or retrieve them from anywhere, e.g. zarr on a remote) and process using `process_nemo`.\n", - "\n", - "Note: `open_nemo` internally uses `process_nemo`.\n", - "\n", - "### open_nemo" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "6fa2e261-a188-4973-ad6e-6381017ab5bc", - "metadata": { - "execution": { - "iopub.execute_input": "2023-03-29T15:17:29.507978Z", - "iopub.status.busy": "2023-03-29T15:17:29.507603Z", - "iopub.status.idle": "2023-03-29T15:17:29.512265Z", - "shell.execute_reply": "2023-03-29T15:17:29.511786Z" - } - }, - "outputs": [], - "source": [ - "open_nemo?" - ] - }, - { - "cell_type": "markdown", - "id": "3bc66d2b-a497-4394-a28f-80ac98587e3a", - "metadata": {}, - "source": [ - "---\n", - "We can provide the files folder / name following the same convention as for the `open_domain_cfg` function. We also need to provide the `domcfg` dataset so xnemogcm knows how to set the variables on the proper grid position. We can also provide extra kwargs to the underlying call to `xarray.open_mfdataset` function." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "9e5a0b8c-7199-46d2-9231-273fc57355f5", - "metadata": { - "execution": { - "iopub.execute_input": "2023-03-29T15:17:29.514523Z", - "iopub.status.busy": "2023-03-29T15:17:29.514036Z", - "iopub.status.idle": "2023-03-29T15:17:30.056215Z", - "shell.execute_reply": "2023-03-29T15:17:30.055616Z" - } - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
<xarray.Dataset>\n",
-       "Dimensions:               (z_c: 4, axis_nbounds: 2, t: 1, y_c: 22, x_c: 32,\n",
-       "                           x_f: 32, y_f: 22, z_f: 4)\n",
-       "Coordinates:\n",
-       "  * z_c                   (z_c) int64 0 1 2 3\n",
-       "    time_centered         (t) object dask.array<chunksize=(1,), meta=np.ndarray>\n",
-       "  * t                     (t) object 0001-07-01 00:00:00\n",
-       "  * x_c                   (x_c) int64 0 1 2 3 4 5 6 7 ... 25 26 27 28 29 30 31\n",
-       "  * y_c                   (y_c) int64 0 1 2 3 4 5 6 7 ... 15 16 17 18 19 20 21\n",
-       "    gdept_1d              (z_c) float64 dask.array<chunksize=(4,), meta=np.ndarray>\n",
-       "  * x_f                   (x_f) float64 0.5 1.5 2.5 3.5 ... 28.5 29.5 30.5 31.5\n",
-       "  * y_f                   (y_f) float64 0.5 1.5 2.5 3.5 ... 18.5 19.5 20.5 21.5\n",
-       "  * z_f                   (z_f) float64 -0.5 0.5 1.5 2.5\n",
-       "    gdepw_1d              (z_f) float64 dask.array<chunksize=(4,), meta=np.ndarray>\n",
-       "Dimensions without coordinates: axis_nbounds\n",
-       "Data variables: (12/15)\n",
-       "    deptht_bounds         (z_c, axis_nbounds) float32 dask.array<chunksize=(4, 2), meta=np.ndarray>\n",
-       "    time_centered_bounds  (t, axis_nbounds) object dask.array<chunksize=(1, 2), meta=np.ndarray>\n",
-       "    t_bounds              (t, axis_nbounds) object dask.array<chunksize=(1, 2), meta=np.ndarray>\n",
-       "    toce                  (t, z_c, y_c, x_c) float32 dask.array<chunksize=(1, 4, 22, 32), meta=np.ndarray>\n",
-       "    soce                  (t, z_c, y_c, x_c) float32 dask.array<chunksize=(1, 4, 22, 32), meta=np.ndarray>\n",
-       "    e3t                   (t, z_c, y_c, x_c) float32 dask.array<chunksize=(1, 4, 22, 32), meta=np.ndarray>\n",
-       "    ...                    ...\n",
-       "    depthv_bounds         (z_c, axis_nbounds) float32 dask.array<chunksize=(4, 2), meta=np.ndarray>\n",
-       "    voce                  (t, z_c, y_f, x_c) float32 dask.array<chunksize=(1, 4, 22, 32), meta=np.ndarray>\n",
-       "    e3v                   (t, z_c, y_f, x_c) float32 dask.array<chunksize=(1, 4, 22, 32), meta=np.ndarray>\n",
-       "    depthw_bounds         (z_f, axis_nbounds) float32 dask.array<chunksize=(4, 2), meta=np.ndarray>\n",
-       "    woce                  (t, z_f, y_c, x_c) float32 dask.array<chunksize=(1, 4, 22, 32), meta=np.ndarray>\n",
-       "    e3w                   (t, z_f, y_c, x_c) float32 dask.array<chunksize=(1, 4, 22, 32), meta=np.ndarray>\n",
-       "Attributes:\n",
-       "    Conventions:  CF-1.6\n",
-       "    timeStamp:    2023-Mar-28 10:42:16 GMT\n",
-       "    name:         NEMO dataset\n",
-       "    description:  Ocean grid variables, set on the proper positions\n",
-       "    title:        Ocean grid variables
" - ], - "text/plain": [ - "\n", - "Dimensions: (z_c: 4, axis_nbounds: 2, t: 1, y_c: 22, x_c: 32,\n", - " x_f: 32, y_f: 22, z_f: 4)\n", - "Coordinates:\n", - " * z_c (z_c) int64 0 1 2 3\n", - " time_centered (t) object dask.array\n", - " * t (t) object 0001-07-01 00:00:00\n", - " * x_c (x_c) int64 0 1 2 3 4 5 6 7 ... 25 26 27 28 29 30 31\n", - " * y_c (y_c) int64 0 1 2 3 4 5 6 7 ... 15 16 17 18 19 20 21\n", - " gdept_1d (z_c) float64 dask.array\n", - " * x_f (x_f) float64 0.5 1.5 2.5 3.5 ... 28.5 29.5 30.5 31.5\n", - " * y_f (y_f) float64 0.5 1.5 2.5 3.5 ... 18.5 19.5 20.5 21.5\n", - " * z_f (z_f) float64 -0.5 0.5 1.5 2.5\n", - " gdepw_1d (z_f) float64 dask.array\n", - "Dimensions without coordinates: axis_nbounds\n", - "Data variables: (12/15)\n", - " deptht_bounds (z_c, axis_nbounds) float32 dask.array\n", - " time_centered_bounds (t, axis_nbounds) object dask.array\n", - " t_bounds (t, axis_nbounds) object dask.array\n", - " toce (t, z_c, y_c, x_c) float32 dask.array\n", - " soce (t, z_c, y_c, x_c) float32 dask.array\n", - " e3t (t, z_c, y_c, x_c) float32 dask.array\n", - " ... ...\n", - " depthv_bounds (z_c, axis_nbounds) float32 dask.array\n", - " voce (t, z_c, y_f, x_c) float32 dask.array\n", - " e3v (t, z_c, y_f, x_c) float32 dask.array\n", - " depthw_bounds (z_f, axis_nbounds) float32 dask.array\n", - " woce (t, z_f, y_c, x_c) float32 dask.array\n", - " e3w (t, z_f, y_c, x_c) float32 dask.array\n", - "Attributes:\n", - " Conventions: CF-1.6\n", - " timeStamp: 2023-Mar-28 10:42:16 GMT\n", - " name: NEMO dataset\n", - " description: Ocean grid variables, set on the proper positions\n", - " title: Ocean grid variables" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "nemo = open_nemo(domcfg=domcfg, datadir=datadir)\n", - "# or\n", - "nemo = open_nemo(domcfg=domcfg, files=datadir.glob('*grid*.nc'))\n", - "# or, using attributes from dataset and not name\n", - "datadir2 = Path('../xnemogcm/test/data/4.2.0/nemo_no_grid_in_filename/')\n", - "nemo = open_nemo(\n", - " domcfg=domcfg, files=[\n", - " datadir2 / 'T.nc',\n", - " datadir2 / 'U.nc',\n", - " datadir2 / 'V.nc',\n", - " datadir2 / 'W.nc'\n", - " ]\n", - ")\n", - "nemo" - ] - }, - { - "cell_type": "markdown", - "id": "72017af7-df86-4f61-b2e4-e9ce2826fcd3", - "metadata": {}, - "source": [ - "### process_nemo" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "e64f0c2a-fe6a-465e-b8c2-8df7db3ea0bb", - "metadata": { - "execution": { - "iopub.execute_input": "2023-03-29T15:17:30.058891Z", - "iopub.status.busy": "2023-03-29T15:17:30.058561Z", - "iopub.status.idle": "2023-03-29T15:17:30.063407Z", - "shell.execute_reply": "2023-03-29T15:17:30.062868Z" - } - }, - "outputs": [], - "source": [ - "process_nemo?" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "19b9bd17-e1f4-4be3-8039-7d02311238b0", - "metadata": { - "execution": { - "iopub.execute_input": "2023-03-29T15:17:30.065566Z", - "iopub.status.busy": "2023-03-29T15:17:30.065266Z", - "iopub.status.idle": "2023-03-29T15:17:30.190503Z", - "shell.execute_reply": "2023-03-29T15:17:30.189687Z" - } - }, - "outputs": [], - "source": [ - "import xarray as xr\n", - "datadir2 = Path('../xnemogcm/test/data/4.2.0/nemo_no_grid_in_filename/')\n", - "nemo = process_nemo(\n", - " positions=[\n", - " (xr.open_dataset(datadir2 / 'T.nc'), 'T'),\n", - " (xr.open_dataset(datadir2 / 'U.nc'), 'U'),\n", - " (xr.open_dataset(datadir2 / 'V.nc'), 'V'),\n", - " (xr.open_dataset(datadir2 / 'W.nc'), 'W')\n", - " ],\n", - " domcfg=domcfg\n", - ")\n", - "# or, if the datasets contain the attribute 'description'\n", - "nemo = process_nemo(\n", - " positions=[\n", - " (xr.open_dataset(datadir2 / 'T.nc'), None),\n", - " (xr.open_dataset(datadir2 / 'U.nc'), None),\n", - " (xr.open_dataset(datadir2 / 'V.nc'), None),\n", - " (xr.open_dataset(datadir2 / 'W.nc'), None)\n", - " ],\n", - " domcfg=domcfg\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "90ab171c-d3d3-4c8e-897a-3b18a749390f", - "metadata": {}, - "source": [ - "# Open both at once\n", - "\n", - "It is possible to open the domain and nemo output at once in one unique dataset. What happens is that 2 datasets are created and then merged. Thus all option possible for the `open_nemo` and `open_domain_cfg` functions are still possible." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "c3130a23-e65a-4097-a12d-cf41110a0836", - "metadata": { - "execution": { - "iopub.execute_input": "2023-03-29T15:17:30.193705Z", - "iopub.status.busy": "2023-03-29T15:17:30.193371Z", - "iopub.status.idle": "2023-03-29T15:17:30.199445Z", - "shell.execute_reply": "2023-03-29T15:17:30.198832Z" - } - }, - "outputs": [], - "source": [ - "open_nemo_and_domain_cfg?" - ] - }, - { - "cell_type": "markdown", - "id": "94f9a258-8204-48dd-9c78-c2859461b113", - "metadata": {}, - "source": [ - "---\n", - "Again, mutiple equivalent arguments are possible to open the data" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "361b5317-a173-4442-a7ec-7f70466d2eb3", - "metadata": { - "execution": { - "iopub.execute_input": "2023-03-29T15:17:30.203692Z", - "iopub.status.busy": "2023-03-29T15:17:30.203405Z", - "iopub.status.idle": "2023-03-29T15:17:31.400022Z", - "shell.execute_reply": "2023-03-29T15:17:31.399454Z" - } - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
<xarray.Dataset>\n",
-       "Dimensions:               (z_c: 4, axis_nbounds: 2, t: 1, y_c: 22, x_c: 32,\n",
-       "                           x_f: 32, y_f: 22, z_f: 4)\n",
-       "Coordinates: (12/20)\n",
-       "  * z_c                   (z_c) int64 0 1 2 3\n",
-       "    time_centered         (t) object dask.array<chunksize=(1,), meta=np.ndarray>\n",
-       "  * t                     (t) object 0001-07-01 00:00:00\n",
-       "  * x_c                   (x_c) int64 0 1 2 3 4 5 6 7 ... 25 26 27 28 29 30 31\n",
-       "  * y_c                   (y_c) int64 0 1 2 3 4 5 6 7 ... 15 16 17 18 19 20 21\n",
-       "    gdept_1d              (z_c) float64 dask.array<chunksize=(4,), meta=np.ndarray>\n",
-       "    ...                    ...\n",
-       "    gphit                 (y_c, x_c) float64 dask.array<chunksize=(22, 32), meta=np.ndarray>\n",
-       "    gphiu                 (y_c, x_f) float64 dask.array<chunksize=(22, 32), meta=np.ndarray>\n",
-       "    gphiv                 (y_f, x_c) float64 dask.array<chunksize=(22, 32), meta=np.ndarray>\n",
-       "    gphif                 (y_f, x_f) float64 dask.array<chunksize=(22, 32), meta=np.ndarray>\n",
-       "    gdept_0               (z_c, y_c, x_c) float64 dask.array<chunksize=(4, 22, 32), meta=np.ndarray>\n",
-       "    gdepw_0               (z_f, y_c, x_c) float64 dask.array<chunksize=(4, 22, 32), meta=np.ndarray>\n",
-       "Dimensions without coordinates: axis_nbounds\n",
-       "Data variables: (12/43)\n",
-       "    deptht_bounds         (z_c, axis_nbounds) float32 dask.array<chunksize=(4, 2), meta=np.ndarray>\n",
-       "    time_centered_bounds  (t, axis_nbounds) object dask.array<chunksize=(1, 2), meta=np.ndarray>\n",
-       "    t_bounds              (t, axis_nbounds) object dask.array<chunksize=(1, 2), meta=np.ndarray>\n",
-       "    toce                  (t, z_c, y_c, x_c) float32 dask.array<chunksize=(1, 4, 22, 32), meta=np.ndarray>\n",
-       "    soce                  (t, z_c, y_c, x_c) float32 dask.array<chunksize=(1, 4, 22, 32), meta=np.ndarray>\n",
-       "    e3t                   (t, z_c, y_c, x_c) float32 dask.array<chunksize=(1, 4, 22, 32), meta=np.ndarray>\n",
-       "    ...                    ...\n",
-       "    e3u_0                 (z_c, y_c, x_f) float64 dask.array<chunksize=(4, 22, 32), meta=np.ndarray>\n",
-       "    e3v_0                 (z_c, y_f, x_c) float64 dask.array<chunksize=(4, 22, 32), meta=np.ndarray>\n",
-       "    e3f_0                 (z_c, y_f, x_f) float64 dask.array<chunksize=(4, 22, 32), meta=np.ndarray>\n",
-       "    e3w_0                 (z_f, y_c, x_c) float64 dask.array<chunksize=(4, 22, 32), meta=np.ndarray>\n",
-       "    e3uw_0                (z_f, y_c, x_f) float64 dask.array<chunksize=(4, 22, 32), meta=np.ndarray>\n",
-       "    e3vw_0                (z_f, y_f, x_c) float64 dask.array<chunksize=(4, 22, 32), meta=np.ndarray>\n",
-       "Attributes: (12/18)\n",
-       "    Conventions:             CF-1.6\n",
-       "    timeStamp:               2023-Mar-28 10:42:16 GMT\n",
-       "    name:                    NEMO dataset\n",
-       "    description:             Ocean grid variables, set on the proper positions\n",
-       "    title:                   Ocean grid variables\n",
-       "    DOMAIN_dimensions_ids:   [1 2]\n",
-       "    ...                      ...\n",
-       "    Iperio:                  0\n",
-       "    Jperio:                  0\n",
-       "    NFold:                   0\n",
-       "    NFtype:                  -\n",
-       "    VertCoord:               zco\n",
-       "    IsfCav:                  0
" - ], - "text/plain": [ - "\n", - "Dimensions: (z_c: 4, axis_nbounds: 2, t: 1, y_c: 22, x_c: 32,\n", - " x_f: 32, y_f: 22, z_f: 4)\n", - "Coordinates: (12/20)\n", - " * z_c (z_c) int64 0 1 2 3\n", - " time_centered (t) object dask.array\n", - " * t (t) object 0001-07-01 00:00:00\n", - " * x_c (x_c) int64 0 1 2 3 4 5 6 7 ... 25 26 27 28 29 30 31\n", - " * y_c (y_c) int64 0 1 2 3 4 5 6 7 ... 15 16 17 18 19 20 21\n", - " gdept_1d (z_c) float64 dask.array\n", - " ... ...\n", - " gphit (y_c, x_c) float64 dask.array\n", - " gphiu (y_c, x_f) float64 dask.array\n", - " gphiv (y_f, x_c) float64 dask.array\n", - " gphif (y_f, x_f) float64 dask.array\n", - " gdept_0 (z_c, y_c, x_c) float64 dask.array\n", - " gdepw_0 (z_f, y_c, x_c) float64 dask.array\n", - "Dimensions without coordinates: axis_nbounds\n", - "Data variables: (12/43)\n", - " deptht_bounds (z_c, axis_nbounds) float32 dask.array\n", - " time_centered_bounds (t, axis_nbounds) object dask.array\n", - " t_bounds (t, axis_nbounds) object dask.array\n", - " toce (t, z_c, y_c, x_c) float32 dask.array\n", - " soce (t, z_c, y_c, x_c) float32 dask.array\n", - " e3t (t, z_c, y_c, x_c) float32 dask.array\n", - " ... ...\n", - " e3u_0 (z_c, y_c, x_f) float64 dask.array\n", - " e3v_0 (z_c, y_f, x_c) float64 dask.array\n", - " e3f_0 (z_c, y_f, x_f) float64 dask.array\n", - " e3w_0 (z_f, y_c, x_c) float64 dask.array\n", - " e3uw_0 (z_f, y_c, x_f) float64 dask.array\n", - " e3vw_0 (z_f, y_f, x_c) float64 dask.array\n", - "Attributes: (12/18)\n", - " Conventions: CF-1.6\n", - " timeStamp: 2023-Mar-28 10:42:16 GMT\n", - " name: NEMO dataset\n", - " description: Ocean grid variables, set on the proper positions\n", - " title: Ocean grid variables\n", - " DOMAIN_dimensions_ids: [1 2]\n", - " ... ...\n", - " Iperio: 0\n", - " Jperio: 0\n", - " NFold: 0\n", - " NFtype: -\n", - " VertCoord: zco\n", - " IsfCav: 0" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# the simplest for simple cases, provide the path\n", - "ds = open_nemo_and_domain_cfg(nemo_files=datadir, domcfg_files=datadir)\n", - "# or provide the files\n", - "ds = open_nemo_and_domain_cfg(nemo_files=datadir.glob('*grid*.nc'), domcfg_files=datadir.glob('*mesh*.nc'))\n", - "# or use the nemo_kwargs and domcfg_kwargs dictionnaries\n", - "ds = open_nemo_and_domain_cfg(nemo_kwargs=dict(datadir=datadir), domcfg_kwargs={'files':datadir.glob('*mesh*.nc')})\n", - "ds" - ] - }, - { - "cell_type": "markdown", - "id": "8bd99220-6f03-476d-9621-36499e9ffedc", - "metadata": {}, - "source": [ - "## Remark\n", - "\n", - "All opening are lazy using dask, which makes files quick to open, until you actually load the data you need" - ] - }, - { - "cell_type": "markdown", - "id": "ea964e50-68db-4394-baec-4b3c5fb90b3e", - "metadata": {}, - "source": [ - "# Namelist\n", - "\n", - "It can be convenient to open the namelist used for the run (e.g. to compare different runs with different parameters). This is possible using the `f90nml` package (it needs to be installed, this is an optional dependency)." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "8a6cb055-e2c2-4d37-be4e-3684b0f12a71", - "metadata": { - "execution": { - "iopub.execute_input": "2023-03-29T15:17:31.402997Z", - "iopub.status.busy": "2023-03-29T15:17:31.402560Z", - "iopub.status.idle": "2023-03-29T15:17:31.406932Z", - "shell.execute_reply": "2023-03-29T15:17:31.406343Z" - } - }, - "outputs": [], - "source": [ - "open_namelist?" - ] - }, - { - "cell_type": "markdown", - "id": "c81264ec-2a59-43b6-adfc-b2c19ba96b49", - "metadata": {}, - "source": [ - "---\n", - "Here you provide the folder path containing the reference and configuration namelists, or the filenames (as for nemo and domcfg). You can choose to load both, or only one of them. The configration namelist will overwrite the default one.\n", - "\n", - "For this we need to use another folder of the test data (with simplified namelists for the exemple):" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "1fc7b7ba-cedf-4ebe-8105-de09edcbb7bf", - "metadata": { - "execution": { - "iopub.execute_input": "2023-03-29T15:17:31.409186Z", - "iopub.status.busy": "2023-03-29T15:17:31.408895Z", - "iopub.status.idle": "2023-03-29T15:17:31.411631Z", - "shell.execute_reply": "2023-03-29T15:17:31.411084Z" - } - }, - "outputs": [], - "source": [ - "datadir = Path('../xnemogcm/test/data/namelist/')" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "f413ca78-2d0f-48fd-b9d5-427c4b8ca4b3", - "metadata": { - "execution": { - "iopub.execute_input": "2023-03-29T15:17:31.413698Z", - "iopub.status.busy": "2023-03-29T15:17:31.413414Z", - "iopub.status.idle": "2023-03-29T15:17:31.529759Z", - "shell.execute_reply": "2023-03-29T15:17:31.528930Z" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "namelist_cfg namelist_ref\r\n" - ] - } - ], - "source": [ - "!ls ../xnemogcm/test/data/namelist/" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "feabb3f4-f9b7-4092-b423-22db9cae36a1", - "metadata": { - "execution": { - "iopub.execute_input": "2023-03-29T15:17:31.533181Z", - "iopub.status.busy": "2023-03-29T15:17:31.532561Z", - "iopub.status.idle": "2023-03-29T15:17:31.547995Z", - "shell.execute_reply": "2023-03-29T15:17:31.547484Z" - } - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
<xarray.Dataset>\n",
-       "Dimensions:    ()\n",
-       "Data variables:\n",
-       "    nn_no      int64 0\n",
-       "    cn_exp     <U5 'BASIN'\n",
-       "    nn_it000   int64 1\n",
-       "    nn_itend   int64 5840\n",
-       "    rn_e1_deg  float64 1.0
" - ], - "text/plain": [ - "\n", - "Dimensions: ()\n", - "Data variables:\n", - " nn_no int64 0\n", - " cn_exp \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
<xarray.DataArray 'nn_it000' ()>\n",
-       "array(1)\n",
-       "Attributes:\n",
-       "    namelist:  namrun
" - ], - "text/plain": [ - "\n", - "array(1)\n", - "Attributes:\n", - " namelist: namrun" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "nam.nn_it000" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.2" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/src_example/recombing_mesh_mask_domain_cfg.ipynb b/src_example/recombing_mesh_mask_domain_cfg.ipynb deleted file mode 100644 index 79c8350..0000000 --- a/src_example/recombing_mesh_mask_domain_cfg.ipynb +++ /dev/null @@ -1,3284 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "41aec3c0-ece5-4ba1-b47f-d7a6d67b0860", - "metadata": {}, - "source": [ - "Start by importing the functions" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "18606253-a4d5-4f6a-9da8-7dfd96b72bea", - "metadata": { - "execution": { - "iopub.execute_input": "2023-03-29T15:17:32.904175Z", - "iopub.status.busy": "2023-03-29T15:17:32.903942Z", - "iopub.status.idle": "2023-03-29T15:17:33.292390Z", - "shell.execute_reply": "2023-03-29T15:17:33.291757Z" - } - }, - "outputs": [], - "source": [ - "from pathlib import Path\n", - "\n", - "from xnemogcm import open_domain_cfg, open_nemo_and_domain_cfg\n", - "from xnemogcm import __version__ as xnemogcm_version" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "84a7b456-0689-4cc7-b497-c41ea62ad477", - "metadata": { - "execution": { - "iopub.execute_input": "2023-03-29T15:17:33.295305Z", - "iopub.status.busy": "2023-03-29T15:17:33.294812Z", - "iopub.status.idle": "2023-03-29T15:17:33.302705Z", - "shell.execute_reply": "2023-03-29T15:17:33.302193Z" - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'0.4.1'" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "xnemogcm_version" - ] - }, - { - "cell_type": "markdown", - "id": "96f57a3d-4035-4c7b-acb5-5ae843eb87fd", - "metadata": {}, - "source": [ - "By default nemo outputs a mesh_mask / domain_cfg file per computing processor, if the namelist parameter is set on .true.:\n", - "\n", - "* `ln_write_cfg = .true.` to output the domain_cfg if created analyticaly in the usrdef_zgr.F90 and usrdef_hgr.F90 files\n", - "* `ln_meshmask = .true.` to output the mesh_mask files (that also contain the masks)\n", - "\n", - "While it is possible to recombine the files using the nemo fortran toolbox, xnemogcm can also recombine them easily.\n", - "\n", - "To illustrate this, we use a data folder from the test data:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "7e7eb827-e9ff-4652-8e11-c3ad01b1a65e", - "metadata": { - "execution": { - "iopub.execute_input": "2023-03-29T15:17:33.305220Z", - "iopub.status.busy": "2023-03-29T15:17:33.304915Z", - "iopub.status.idle": "2023-03-29T15:17:33.308137Z", - "shell.execute_reply": "2023-03-29T15:17:33.307575Z" - } - }, - "outputs": [], - "source": [ - "datadir = Path('../xnemogcm/test/data/4.2.0/mesh_mask_multi_files/')" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "9874f77d-9755-4881-afaf-0fe72f61950e", - "metadata": { - "execution": { - "iopub.execute_input": "2023-03-29T15:17:33.310315Z", - "iopub.status.busy": "2023-03-29T15:17:33.310027Z", - "iopub.status.idle": "2023-03-29T15:17:33.424492Z", - "shell.execute_reply": "2023-03-29T15:17:33.423640Z" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "mesh_mask_0000.nc mesh_mask_0001.nc mesh_mask_0002.nc mesh_mask_0003.nc\r\n" - ] - } - ], - "source": [ - "!ls ../xnemogcm/test/data/4.2.0/mesh_mask_multi_files/" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "193b27f6-8421-4cbd-be2e-228a8705a792", - "metadata": { - "execution": { - "iopub.execute_input": "2023-03-29T15:17:33.428228Z", - "iopub.status.busy": "2023-03-29T15:17:33.427622Z", - "iopub.status.idle": "2023-03-29T15:17:34.176712Z", - "shell.execute_reply": "2023-03-29T15:17:34.176187Z" - } - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
<xarray.Dataset>\n",
-       "Dimensions:    (z_c: 4, y_c: 22, x_c: 32, x_f: 32, y_f: 22, z_f: 4)\n",
-       "Coordinates: (12/18)\n",
-       "    glamt      (y_c, x_c) float64 dask.array<chunksize=(11, 16), meta=np.ndarray>\n",
-       "    glamu      (y_c, x_f) float64 dask.array<chunksize=(11, 16), meta=np.ndarray>\n",
-       "    glamv      (y_f, x_c) float64 dask.array<chunksize=(11, 16), meta=np.ndarray>\n",
-       "    glamf      (y_f, x_f) float64 dask.array<chunksize=(11, 16), meta=np.ndarray>\n",
-       "    gphit      (y_c, x_c) float64 dask.array<chunksize=(11, 16), meta=np.ndarray>\n",
-       "    gphiu      (y_c, x_f) float64 dask.array<chunksize=(11, 16), meta=np.ndarray>\n",
-       "    ...         ...\n",
-       "  * x_c        (x_c) int64 0 1 2 3 4 5 6 7 8 9 ... 22 23 24 25 26 27 28 29 30 31\n",
-       "  * y_c        (y_c) int64 0 1 2 3 4 5 6 7 8 9 ... 12 13 14 15 16 17 18 19 20 21\n",
-       "  * z_c        (z_c) int64 0 1 2 3\n",
-       "  * x_f        (x_f) float64 0.5 1.5 2.5 3.5 4.5 ... 27.5 28.5 29.5 30.5 31.5\n",
-       "  * y_f        (y_f) float64 0.5 1.5 2.5 3.5 4.5 ... 17.5 18.5 19.5 20.5 21.5\n",
-       "  * z_f        (z_f) float64 -0.5 0.5 1.5 2.5\n",
-       "Data variables: (12/28)\n",
-       "    tmask      (z_c, y_c, x_c) int8 dask.array<chunksize=(4, 11, 16), meta=np.ndarray>\n",
-       "    umask      (z_c, y_c, x_f) int8 dask.array<chunksize=(4, 11, 16), meta=np.ndarray>\n",
-       "    vmask      (z_c, y_f, x_c) int8 dask.array<chunksize=(4, 11, 16), meta=np.ndarray>\n",
-       "    fmask      (z_c, y_f, x_f) int8 dask.array<chunksize=(4, 11, 16), meta=np.ndarray>\n",
-       "    tmaskutil  (y_c, x_c) int8 dask.array<chunksize=(11, 16), meta=np.ndarray>\n",
-       "    umaskutil  (y_c, x_f) int8 dask.array<chunksize=(11, 16), meta=np.ndarray>\n",
-       "    ...         ...\n",
-       "    e3u_0      (z_c, y_c, x_f) float64 dask.array<chunksize=(4, 11, 16), meta=np.ndarray>\n",
-       "    e3v_0      (z_c, y_f, x_c) float64 dask.array<chunksize=(4, 11, 16), meta=np.ndarray>\n",
-       "    e3f_0      (z_c, y_f, x_f) float64 dask.array<chunksize=(4, 11, 16), meta=np.ndarray>\n",
-       "    e3w_0      (z_f, y_c, x_c) float64 dask.array<chunksize=(4, 11, 16), meta=np.ndarray>\n",
-       "    e3uw_0     (z_f, y_c, x_f) float64 dask.array<chunksize=(4, 11, 16), meta=np.ndarray>\n",
-       "    e3vw_0     (z_f, y_f, x_c) float64 dask.array<chunksize=(4, 11, 16), meta=np.ndarray>\n",
-       "Attributes: (12/13)\n",
-       "    DOMAIN_dimensions_ids:   [1 2]\n",
-       "    DOMAIN_size_global:      [32 22]\n",
-       "    DOMAIN_halo_size_start:  [0 0]\n",
-       "    DOMAIN_halo_size_end:    [0 0]\n",
-       "    DOMAIN_type:             BOX\n",
-       "    CfgName:                 GYRE\n",
-       "    ...                      ...\n",
-       "    Iperio:                  0\n",
-       "    Jperio:                  0\n",
-       "    NFold:                   0\n",
-       "    NFtype:                  -\n",
-       "    VertCoord:               zco\n",
-       "    IsfCav:                  0
" - ], - "text/plain": [ - "\n", - "Dimensions: (z_c: 4, y_c: 22, x_c: 32, x_f: 32, y_f: 22, z_f: 4)\n", - "Coordinates: (12/18)\n", - " glamt (y_c, x_c) float64 dask.array\n", - " glamu (y_c, x_f) float64 dask.array\n", - " glamv (y_f, x_c) float64 dask.array\n", - " glamf (y_f, x_f) float64 dask.array\n", - " gphit (y_c, x_c) float64 dask.array\n", - " gphiu (y_c, x_f) float64 dask.array\n", - " ... ...\n", - " * x_c (x_c) int64 0 1 2 3 4 5 6 7 8 9 ... 22 23 24 25 26 27 28 29 30 31\n", - " * y_c (y_c) int64 0 1 2 3 4 5 6 7 8 9 ... 12 13 14 15 16 17 18 19 20 21\n", - " * z_c (z_c) int64 0 1 2 3\n", - " * x_f (x_f) float64 0.5 1.5 2.5 3.5 4.5 ... 27.5 28.5 29.5 30.5 31.5\n", - " * y_f (y_f) float64 0.5 1.5 2.5 3.5 4.5 ... 17.5 18.5 19.5 20.5 21.5\n", - " * z_f (z_f) float64 -0.5 0.5 1.5 2.5\n", - "Data variables: (12/28)\n", - " tmask (z_c, y_c, x_c) int8 dask.array\n", - " umask (z_c, y_c, x_f) int8 dask.array\n", - " vmask (z_c, y_f, x_c) int8 dask.array\n", - " fmask (z_c, y_f, x_f) int8 dask.array\n", - " tmaskutil (y_c, x_c) int8 dask.array\n", - " umaskutil (y_c, x_f) int8 dask.array\n", - " ... ...\n", - " e3u_0 (z_c, y_c, x_f) float64 dask.array\n", - " e3v_0 (z_c, y_f, x_c) float64 dask.array\n", - " e3f_0 (z_c, y_f, x_f) float64 dask.array\n", - " e3w_0 (z_f, y_c, x_c) float64 dask.array\n", - " e3uw_0 (z_f, y_c, x_f) float64 dask.array\n", - " e3vw_0 (z_f, y_f, x_c) float64 dask.array\n", - "Attributes: (12/13)\n", - " DOMAIN_dimensions_ids: [1 2]\n", - " DOMAIN_size_global: [32 22]\n", - " DOMAIN_halo_size_start: [0 0]\n", - " DOMAIN_halo_size_end: [0 0]\n", - " DOMAIN_type: BOX\n", - " CfgName: GYRE\n", - " ... ...\n", - " Iperio: 0\n", - " Jperio: 0\n", - " NFold: 0\n", - " NFtype: -\n", - " VertCoord: zco\n", - " IsfCav: 0" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "domcfg = open_domain_cfg(datadir=datadir)\n", - "domcfg" - ] - }, - { - "cell_type": "markdown", - "id": "475a6a89-9353-4c11-b49f-f0874b304546", - "metadata": {}, - "source": [ - "We verify that the variables are the same than when opening a unique full mesh_mask file." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "1143759e-b37e-4352-b05c-bad53db8a3b2", - "metadata": { - "execution": { - "iopub.execute_input": "2023-03-29T15:17:34.180003Z", - "iopub.status.busy": "2023-03-29T15:17:34.179479Z", - "iopub.status.idle": "2023-03-29T15:17:34.380865Z", - "shell.execute_reply": "2023-03-29T15:17:34.380226Z" - } - }, - "outputs": [], - "source": [ - "domcfg_1_file = open_domain_cfg(datadir=Path('../xnemogcm/test/data/4.2.0/mesh_mask_1_file/'), files=['mesh_mask.nc'])" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "771405fe-0fef-4bce-a760-bd3d2463b831", - "metadata": { - "execution": { - "iopub.execute_input": "2023-03-29T15:17:34.384149Z", - "iopub.status.busy": "2023-03-29T15:17:34.383515Z", - "iopub.status.idle": "2023-03-29T15:17:34.828933Z", - "shell.execute_reply": "2023-03-29T15:17:34.828376Z" - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "domcfg_1_file.equals(domcfg)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.2" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -}