From a9240b37974562f77407f5435475d533e4d3e1db Mon Sep 17 00:00:00 2001 From: paugier <pierre.augier@univ-grenoble-alpes.fr> Date: Thu, 6 Jun 2024 09:59:32 +0200 Subject: [PATCH] Remove book + lock + build image --- .gitlab-ci.yml | 32 +- CONTRIBUTING.md | 4 +- Makefile | 6 - README.md | 20 +- book/_config.yml | 39 -- book/_toc.yml | 12 - book/aliases.md | 18 - book/conda-forge.md | 3 - book/contributing.md | 1 - book/intro.md | 50 --- book/logo_LEGI.jpg | Bin 61214 -> 0 bytes book/modules.md | 111 ------ book/setup-apps.md | 102 ------ book/venv.md | 27 -- docker/Dockerfile | 2 +- pdm.lock | 842 ++++++++++++++++++++----------------------- pyproject.toml | 4 +- 17 files changed, 404 insertions(+), 869 deletions(-) delete mode 100644 book/_config.yml delete mode 100644 book/_toc.yml delete mode 100644 book/aliases.md delete mode 100644 book/conda-forge.md delete mode 120000 book/contributing.md delete mode 100644 book/intro.md delete mode 100755 book/logo_LEGI.jpg delete mode 100644 book/modules.md delete mode 100644 book/setup-apps.md delete mode 100644 book/venv.md diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d97fe2e..39038ab 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,9 +1,7 @@ --- stages: - image - - doc - module - - deploy variables: DOCKER_IMAGE_URL: gricad-registry.univ-grenoble-alpes.fr/legi/soft/trokata/softsync-python-debian12/ci/default:stable @@ -15,9 +13,9 @@ image: $DOCKER_IMAGE_URL # it is quite unnecessary to run on every invocation. image:build: stage: image - rules: - - if: '$CI_PIPELINE_SOURCE == "schedule"' - - if: '$CI_BUILD_IMAGES == "1"' + # rules: + # - if: '$CI_PIPELINE_SOURCE == "schedule"' + # - if: '$CI_BUILD_IMAGES == "1"' image: name: gcr.io/kaniko-project/executor:debug entrypoint: [ "" ] @@ -62,27 +60,3 @@ module:build: paths: - 3.11.2 expire_in: 5 days - -doc:build_html: - stage: doc - needs: - - job: "image:build" - optional: true - script: - - nox -s book - - rm -rf public - - mv book/_build/html public - artifacts: - when: always - paths: - - public - -pages: - stage: deploy - script: - - echo "Publish to Gitlab pages" - artifacts: - paths: - - public - only: - - main diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6fd82e6..cff79f2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,7 +2,7 @@ ## How to update the module? -1. Clone this repo locally on a Debian 11 (Bullseye). +1. Clone this repo locally on a Debian 12 (Bookworm). 2. Install PDM and Nox for example as explained in [the documentation](https://legi.gricad-pages.univ-grenoble-alpes.fr/soft/trokata/softsync-python-debian12/setup-apps.html). @@ -22,7 +22,7 @@ when the new Docker image has been created (before merging). ## How to update the documentation? -1. Clone this repo locally on a Debian 11 (Bullseye). +1. Clone this repo locally on a Debian 12 (Bookworm). 2. Install Nox for example as explained in [the documentation](https://legi.gricad-pages.univ-grenoble-alpes.fr/soft/trokata/softsync-python-debian12/setup-apps.html). diff --git a/Makefile b/Makefile index 35df45f..9b0fd80 100644 --- a/Makefile +++ b/Makefile @@ -7,9 +7,3 @@ lock: test: pdm run nox -s test --no-venv - -doc: - nox -s book -R - -format: - mdformat *.md book/*.md diff --git a/README.md b/README.md index 808d389..4dadb87 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,17 @@ -# Source to create a Python module on Debian 11 +# Source to create a Python module on Debian 12 -The goal of this repository are two-fold: - -- Create in the CI a tar archive of a virtual environment `/opt/python/3.11.2`. This - environment can be activated at LEGI with `module load python/3.11.2`. - - The latest version can be downloaded at this address: - <https://gricad-gitlab.univ-grenoble-alpes.fr/api/v4/projects/26829/jobs/artifacts/main/download?job=module:build> - -- Build - [a small website](https://legi.gricad-pages.univ-grenoble-alpes.fr/soft/trokata/softsync-python-debian12) - presenting few methods to use Python at LEGI. +The goal of this repository is to create in the CI a tar archive of a virtual +environment `/opt/python/3.11.2`. This environment can be activated at LEGI +with `module load python/3.11.2`. +The latest version can be downloaded at this address: +<https://gricad-gitlab.univ-grenoble-alpes.fr/api/v4/projects/27252/jobs/artifacts/main/download?job=module:build> ## A problem with the module at LEGI? Please feel an issue [here](https://gricad-gitlab.univ-grenoble-alpes.fr/legi/soft/trokata/softsync-python-debian12/-/issues). - ## Authors Main authors: @@ -30,7 +23,6 @@ Contributors: * Gabriel Moreau, UMR 5519 / CNRS UGA G-INP, Grenoble, France * Cyrille Bonamy, UMR 5519 / CNRS UGA G-INP, Grenoble, France - ## Copyright Copyright (C) 2024, LEGI UMR 5519 / CNRS UGA G-INP, Grenoble, France diff --git a/book/_config.yml b/book/_config.yml deleted file mode 100644 index c17d770..0000000 --- a/book/_config.yml +++ /dev/null @@ -1,39 +0,0 @@ -# Book settings -# Learn more at https://jupyterbook.org/customize/config.html - -title: My sample book -author: The Jupyter Book Community -logo: logo_LEGI.jpg - -# Force re-execution of notebooks on each build. -# See https://jupyterbook.org/content/execute.html -execute: - execute_notebooks: force - -# Define the name of the latex output file for PDF builds -latex: - latex_documents: - targetname: book.tex - -# Add a bibtex file so that we can create citations -# bibtex_bibfiles: -# - references.bib - -# Information about where the book exists on the web -repository: - url: https://gricad-gitlab.univ-grenoble-alpes.fr/legi/soft/trokata/softsync-python-debian12 - path_to_book: book # Optional path to your book, relative to the repository root - branch: main # Which branch of the repository should be used when creating links (optional) - -# Add GitHub buttons to your book -# See https://jupyterbook.org/customize/config.html#add-a-link-to-your-repository -html: - use_issues_button: true - use_repository_button: true - -sphinx: - config: - # To avoid warning about default changing due to - # https://github.com/pydata/pydata-sphinx-theme/issues/1492 - html_theme_options: - navigation_with_keys: false diff --git a/book/_toc.yml b/book/_toc.yml deleted file mode 100644 index 66443fa..0000000 --- a/book/_toc.yml +++ /dev/null @@ -1,12 +0,0 @@ -# Table of contents -# Learn more at https://jupyterbook.org/customize/toc.html - -format: jb-book -root: intro -chapters: -- file: aliases.md -- file: setup-apps.md -- file: modules.md -- file: venv.md -- file: conda-forge.md -- file: contributing.md diff --git a/book/aliases.md b/book/aliases.md deleted file mode 100644 index 2f2d73f..0000000 --- a/book/aliases.md +++ /dev/null @@ -1,18 +0,0 @@ -# Setup useful aliases - -This is very useful to create few aliases, which can be done by adding in the file -`~/.bash_aliases` lines like these ones: - -```sh -alias sshcl1f001='ssh -X cl1f001' -alias sshnrj1sv224='ssh -X nrj1sv224' -alias sshnrj1sv223='ssh -X nrj1sv223' -``` - -On the LEGI cluster, one can also have: - -```sh -alias oarsub-inter2cores='oarsub -I -l /core=2' -alias oarsub-inter4cores='oarsub -I -l /core=4' -alias oarsub-inter8cores='oarsub -I -l /core=8' -``` diff --git a/book/conda-forge.md b/book/conda-forge.md deleted file mode 100644 index 474e9b3..0000000 --- a/book/conda-forge.md +++ /dev/null @@ -1,3 +0,0 @@ -# Use conda-forge packages and environments with conda and mamba - -... diff --git a/book/contributing.md b/book/contributing.md deleted file mode 120000 index 44fcc63..0000000 --- a/book/contributing.md +++ /dev/null @@ -1 +0,0 @@ -../CONTRIBUTING.md \ No newline at end of file diff --git a/book/intro.md b/book/intro.md deleted file mode 100644 index 5221b3e..0000000 --- a/book/intro.md +++ /dev/null @@ -1,50 +0,0 @@ -# How to use Python at LEGI - -This is a small introduction on how to use Python at LEGI. We first focus on what can be -done on the machines running Debian and in particular Debian 11 (Bullseye), which is the -version used in summer 2024 on the LEGI clusters. - -```{admonition} Note for LEGI - -It is common when using this website to copy commands from this site and to paste them in -a terminal. Copy/pasting connection does not always work well with x2go (the remote desktop -software used to connect to the LEGI cluster). Therefore, if you need to copy/paste commands, -we advice to open this website from a browser launched in the x2go session. Alternatively, -one can just open a local terminal and connect to the cluster with a simple ssh command. - -``` - -On Linux, it is often reasonable to use the Python provided by the system -(`/usr/bin/python3`). On Debian 11, `python3` corresponds to Python 3.11.2, which is still -in 2024 a good version to be used for developing and computing. - -```{note} - -Yes, Python 3.9 is a bit outdated in 2024. The LEGI cluster is running on Debian 11 -which is nowadays the "old stable" version. The cluster will soon be updated to Debian 12 -(nowadays "Debian stable"), which comes with Python 3.11. In case you need a newer Python -version or other implementations (like PyPy), you can install them with Conda/Mamba/Pixi -(see [our documentation on conda-forge](./conda-forge.md)) or with -[pyenv](https://github.com/pyenv/pyenv). - -``` - -One of the most simple way to use Python at LEGI is to activate (for example with -`module load python/3.11.2`) the big "read-only" virtual environment created with the -repository -[softsync-python-debian12](https://gricad-gitlab.univ-grenoble-alpes.fr/legi/soft/trokata/softsync-python-debian12). -This possibility is described in detailed [here](./modules.md). - -At LEGI, the Debian package `python3-venv` is installed so one can create virtual -environments as explained [here](./venv.md). - -The Debian package `python3-pip` is also installed so one can install packages seen by -the system packages (in `~/.local/lib/python3.9`). However, for most tasks, this practice -is not recommended. We will only use this possibility to install -[pipx](https://github.com/pypa/pipx), which can be used to -[install useful applications](./setup-apps.md). - -## Table of contents - -```{tableofcontents} -``` diff --git a/book/logo_LEGI.jpg b/book/logo_LEGI.jpg deleted file mode 100755 index 77f1cb81a97cf756f131cac1b62a40c4c6b2375f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61214 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 z�)|#jo()TB;M_NdiIBlWLaDC`(LJ8tyClMBc?jstBu674|s~t-OZ5p{zQE*`ikl zSYR;T!Zj+5aRjAG>SNcnQA-%&f=oz2&}r?H1^HLJvRq8=TT@bPDbF{;9cIe)Y94ZJ zoPF5z8;YB)1bxGDXKy<w%oi8Htlq4<mk-O7@~<P9nU|%hO^*dxe1WcyG#z`3T1P3< zMMuzV;wO%rH%9Q#SvVa+ajFefWKsmoJP!hvO{v=Gw_Hg7cIxU$ybxVfn*HQjtf`$L z@3l5r68=CIvb19b@Se|ne<^29^cF9=hAnN~|GG`iIFx6Hj<jJ}rF`{@{JK8xW7wU_ z&o)R>I@<x`cUKVB5MH4;X*IWep*fq^<0Yz(i;oI<(uGr@k6tYVFcIMPCk;XJhUWMn zM;~xiV<yt0Q=^H!?dohY#{5Kpt!J0#*$C(-*lHL~Ipd?L=!kmx^)sRxqQMcNDJ3JT z%GXzfpj-m5vz%d~f>X;UwkqxnT=fuw5ooN<Su`l`y1n{!&C6xhx4s4}+$y?0;L_Gh zFO$5Zl-T#P@@U@fQ4RBZyS`m7CcmGPkh%Wd%yDziXjK{S+tY9UI4(`XEa_b1zvmcn zlUB$7d^CT*Xj$~zJ2%>d?CyB%%*Ew0XuF?Z^yfRt?TGv5q%Q3j*gNmaG>eXIZ0cJ< z{i7fBCpg6Dmq}VYm;IbK{SWyjX-RVIPx$`;tmpo+CzD@TT|SvQnr1P2#(jF=yv6GK gvH6;q>sP+-8D-zQ_Ro75bl;~X2=8^w{h!zW3*iX3ZvX%Q diff --git a/book/modules.md b/book/modules.md deleted file mode 100644 index 56212d4..0000000 --- a/book/modules.md +++ /dev/null @@ -1,111 +0,0 @@ -# LEGI Python module - -We consider here the module based on the system Python 3 provided by Debian -(`/usr/bin/python3`). The exact version depends on the Debian version (3.11.2 for Debian -11 and 3.11.2 for Debian 12). - -This module is a "read-only" virtual environment based on `/usr/bin/python3` containing a -selection of packages useful for fluid mechanics. The module is updated when needed so -that the packages are up-to-date. The module is tested for simple things (like using -Numpy, Pandas, Matplotlib as they should be used in 2024), so these simple things should -always work. If one needs more stability, one should use [other tools](./intro.md). - -These virtual environments are created by the computer department of the lab and **cannot -be modified by the users** (`pip install ...` does not work), meaning that all users -should have the same experience. However, it is still possible to modify this module by -using the virtual environment `PYTHONPATH`, but this is not recommended. - -## Activate and deactivate the module - -One can use the `module` command. On Debian 11, one should do: - -```sh -module load python/3.11.2 -``` - -Deactivating the module can be done with `module unload python`. - -The modules are actually real virtual environments so that one can also activate them by -sourcing the activate script - -```sh -. /opt/python/3.11.2/bin/activate -``` - -In this case, deactivating it can be done with `deactivate`. - -## Create a small virtual environment based on the Python module - -You can create a small virtual environment (see [our page on virtual env](./venv.md)) -from the Python module with something like: - -```sh -module load python/3.11.2 -python -m venv my_venv --system-site-packages -. my_venv/bin/activate -pip install PyFoam -``` - -## Use an older version of this module - -If some scripts stopped working after an update of the module, -[please, fill an issue in this repo](https://gricad-gitlab.univ-grenoble-alpes.fr/legi/soft/trokata/softsync-python-debian12/-/issues). - -However, it is simple to exactly recreate an older version of this module. First -[install the applications used for developping this module](./setup-apps.md). Then, you -should be able to clone the repo with - -```sh -cd ~ -hg clone https://gricad-gitlab.univ-grenoble-alpes.fr/legi/soft/trokata/softsync-python-debian12 -``` - -To recreate an old version, one should run something like - -```sh -cd ~/softsync-python-debian12 -# get all new commits -hg pull -# study which version you want (look at the dates) -hg lg -# update the code (in particular the lockfile) to a specific version -hg update 49 -# this creates the virtual environment -make -``` - -The environment can then be activated with - -```sh -. ~/softsync-python-debian12/.venv -``` - -## What if this module is not sufficient for you needs - -The Python modules are defined and created with -[this repository](https://gricad-gitlab.univ-grenoble-alpes.fr/legi/soft/trokata/softsync-python-debian12). -If you encounter a problem, create an issue -[here](https://gricad-gitlab.univ-grenoble-alpes.fr/legi/soft/trokata/softsync-python-debian12/-/issues). - -Note that the purpose of this module is to **simplify the use of Python for simple -cases**. There are [other tools for other needs](./intro.md). - -- If you need another Python application, you can try to - [install it with pipx](./setup-apps.md). - -- If you need another Python library that can be useful for other people at LEGI, it can - be included in the official Python module. - [Please, fill an issue in this repo](https://gricad-gitlab.univ-grenoble-alpes.fr/legi/soft/trokata/softsync-python-debian12/-/issues). - -- If you need another version of a Python library installed in this module, the module - can be updated. - [Please, fill an issue in this repo](https://gricad-gitlab.univ-grenoble-alpes.fr/legi/soft/trokata/softsync-python-debian12/-/issues). - You can also [create a dedicated virtual environment](./venv.md). - -- If you need another Python library that is not mainstream for fluid mechanics, - [create a dedicated virtual environment](./venv.md) or - [install it with conda-forge](./conda-forge.md). - -- If you need another version of Python or another Python implementations (for example - PyPy), you can use [conda/mamba](./conda-forge.md) or - [pyenv](https://github.com/pyenv/pyenv). diff --git a/book/setup-apps.md b/book/setup-apps.md deleted file mode 100644 index 98111e3..0000000 --- a/book/setup-apps.md +++ /dev/null @@ -1,102 +0,0 @@ -# Install and setup useful applications with pipx - -It is good to install globally few applications useful for developing with Python. We -will show here how it can be done with [pipx](https://github.com/pypa/pipx). - -```{note} - -Pipx installs applications in isolated and dedicated virtual environments, and it is -completely transparent for the users. - -``` - -## Install pipx - -One first needs to install pipx itself. On Debian (and other Linux distributions), one -can run: - -```sh -python3 -m pip install pipx -~/.local/bin/pipx ensurepath -``` - -## Install and setup Mercurial - -We start by installing [Mercurial], which is a version control application (like Git, but -easier and safer) and which can be used to interact with Git repositories hosted on -Github or on Gitlab instances: - -```sh -pipx install mercurial -pipx inject mercurial hg-git hg-evolve hg-fluiddyn -``` - -You need a file `~/.hgrc` containing something like -[this file](https://foss.heptapod.net/fluiddyn/fluiddyn/-/raw/branch/default/doc/hgrc). -It can be downloaded with: - -```sh -wget https://foss.heptapod.net/fluiddyn/fluiddyn/-/raw/branch/default/doc/hgrc -O ~/.hgrc -``` - -````{admonition} Command wget not found? ---- -class: dropdown ---- -You might be more lucky with the equivalent command with `curl`: - -```bash -curl -L https://foss.heptapod.net/fluiddyn/fluiddyn/-/raw/branch/default/doc/hgrc -o ~/.hgrc -``` -```` - -```{warning} -You should now have a file `~/.hgrc` in your home directory. -**Modify it as explained in the file** (change the username and the email address). -``` - -You can check that Mercurial is correctly setup with - -```sh -hg version -v -``` - -When everything is fine, you should be able to clone Git repos with something like: - -```sh -hg clone https://gricad-gitlab.univ-grenoble-alpes.fr/legi/soft/trokata/softsync-python-debian12.git -``` - -or, alternatively and better, but you need to setup a SSH key on -<https://gricad-gitlab.univ-grenoble-alpes.fr/-/user_settings/ssh_keys> (take time to do -this since it is really useful!). - -```sh -hg clone git@gricad-gitlab.univ-grenoble-alpes.fr:legi/soft/trokata/softsync-python-debian12.git -``` - -## Install and setup xonsh - -```sh -# a shell much user friendly that bash -pipx install 'xonsh[full]' -pipx inject xonsh xontrib-vox -``` - -One can setup xonsh by running `xonfig web` and then adding the line -`xontrib load coreutils vox` in the file `~/.xonshrc`. - -## Install PDM, Nox and mdformat - -Finally, let's add few other applications with pipx: - -```sh -# https://pdm-project.org -pipx install pdm -pipx install nox -pipx install mdformat -pipx inject mdformat mdformat-myst -pipx install pypi-timemachine -``` - -[mercurial]: https://www.mercurial-scm.org/ diff --git a/book/venv.md b/book/venv.md deleted file mode 100644 index bfe4eff..0000000 --- a/book/venv.md +++ /dev/null @@ -1,27 +0,0 @@ -# Create and use virtual environments - -This page is about standard Python environments. Note that one can also -[create conda environment with conda/mamba/pixi](./conda-forge.md). - -## With `venv` - -See the official Python documentation on -[Installing using pip in virtual environments](https://packaging.python.org/en/latest/guides/installing-using-pip-and-virtual-environments/). - -````{admonition} Note for LEGI - -You can create a virtual environment from the LEGI Python module with something like: - -```sh -module load python/3.11.2 -python -m venv my_venv --system-site-packages -. my_venv/bin/activate -pip install PyFoam -``` - -```` - -## With PDM - -It is useful to better control our virtual environments. A good tool to do that in 2024 -is [PDM](https://pdm-project.org). diff --git a/docker/Dockerfile b/docker/Dockerfile index eb50c71..95451b6 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,4 +1,4 @@ -FROM debian:bullseye +FROM debian:bookworm LABEL Pierre Augier <pierre.augier@univ-grenoble-alpes.fr> RUN apt-get update diff --git a/pdm.lock b/pdm.lock index 9d45d7c..e416142 100644 --- a/pdm.lock +++ b/pdm.lock @@ -5,23 +5,21 @@ groups = ["default"] strategy = ["cross_platform", "inherit_metadata"] lock_version = "4.4.1" -content_hash = "sha256:d21331ea5144eea158ff92e73f8025b7bd107f2efd95460f5172d9ce3d79b056" +content_hash = "sha256:f8256011e4bc09590f2ea72cec476e73388a2e69fbe4a187f15c5cb8b0548960" [[package]] name = "anyio" -version = "4.3.0" +version = "4.4.0" requires_python = ">=3.8" summary = "High level compatibility layer for multiple asynchronous event loop implementations" groups = ["default"] dependencies = [ - "exceptiongroup>=1.0.2; python_version < \"3.11\"", "idna>=2.8", "sniffio>=1.1", - "typing-extensions>=4.1; python_version < \"3.11\"", ] files = [ - {file = "anyio-4.3.0-py3-none-any.whl", hash = "sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8"}, - {file = "anyio-4.3.0.tar.gz", hash = "sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6"}, + {file = "anyio-4.4.0-py3-none-any.whl", hash = "sha256:c1b2d8f46a8a812513012e1107cb0e68c17159a7a594208005a57dc776e1bdc7"}, + {file = "anyio-4.4.0.tar.gz", hash = "sha256:5aadc6a1bbb7cdb0bede386cac5e2940f5e2ff3aa20277e991cf028e0585ce94"}, ] [[package]] @@ -100,16 +98,13 @@ files = [ [[package]] name = "astroid" -version = "3.2.0" +version = "3.2.2" requires_python = ">=3.8.0" summary = "An abstract syntax tree for Python with inference support." groups = ["default"] -dependencies = [ - "typing-extensions>=4.0.0; python_version < \"3.11\"", -] files = [ - {file = "astroid-3.2.0-py3-none-any.whl", hash = "sha256:16ee8ca5c75ac828783028cc1f967777f0e507c6886a295ad143e0f405b975a2"}, - {file = "astroid-3.2.0.tar.gz", hash = "sha256:f7f829f8506ade59f1b3c6c93d8fac5b1ebc721685fa9af23e9794daf1d450a3"}, + {file = "astroid-3.2.2-py3-none-any.whl", hash = "sha256:e8a0083b4bb28fcffb6207a3bfc9e5d0a68be951dd7e336d5dcf639c682388c0"}, + {file = "astroid-3.2.2.tar.gz", hash = "sha256:8ead48e31b92b2e217b6c9733a21afafe479d52d6e164dd25fb1a770c7c3cf94"}, ] [[package]] @@ -131,9 +126,6 @@ version = "2.0.4" requires_python = ">=3.8" summary = "Simple LRU cache for asyncio" groups = ["default"] -dependencies = [ - "typing-extensions>=4.0.0; python_version < \"3.11\"", -] files = [ {file = "async-lru-2.0.4.tar.gz", hash = "sha256:b8a59a5df60805ff63220b2a0c5b5393da5521b113cd5465a44eb037d81a5627"}, {file = "async_lru-2.0.4-py3-none-any.whl", hash = "sha256:ff02944ce3c288c5be660c42dbcca0742b32c3b279d6dceda655190240b99224"}, @@ -152,17 +144,16 @@ files = [ [[package]] name = "autopep8" -version = "2.1.0" +version = "2.2.0" requires_python = ">=3.8" summary = "A tool that automatically formats Python code to conform to the PEP 8 style guide" groups = ["default"] dependencies = [ "pycodestyle>=2.11.0", - "tomli; python_version < \"3.11\"", ] files = [ - {file = "autopep8-2.1.0-py2.py3-none-any.whl", hash = "sha256:2bb76888c5edbcafe6aabab3c47ba534f5a2c2d245c2eddced4a30c4b4946357"}, - {file = "autopep8-2.1.0.tar.gz", hash = "sha256:1fa8964e4618929488f4ec36795c7ff12924a68b8bf01366c094fc52f770b6e7"}, + {file = "autopep8-2.2.0-py2.py3-none-any.whl", hash = "sha256:05418a981f038969d8bdcd5636bf15948db7555ae944b9f79b5a34b35f1370d4"}, + {file = "autopep8-2.2.0.tar.gz", hash = "sha256:d306a0581163ac29908280ad557773a95a9bede072c0fafed6f141f5311f43c1"}, ] [[package]] @@ -216,14 +207,12 @@ dependencies = [ "packaging>=22.0", "pathspec>=0.9.0", "platformdirs>=2", - "tomli>=1.1.0; python_version < \"3.11\"", - "typing-extensions>=4.0.1; python_version < \"3.11\"", ] files = [ - {file = "black-24.4.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:37aae07b029fa0174d39daf02748b379399b909652a806e5708199bd93899da1"}, - {file = "black-24.4.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:da33a1a5e49c4122ccdfd56cd021ff1ebc4a1ec4e2d01594fef9b6f267a9e741"}, - {file = "black-24.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef703f83fc32e131e9bcc0a5094cfe85599e7109f896fe8bc96cc402f3eb4b6e"}, - {file = "black-24.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:b9176b9832e84308818a99a561e90aa479e73c523b3f77afd07913380ae2eab7"}, + {file = "black-24.4.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:257d724c2c9b1660f353b36c802ccece186a30accc7742c176d29c146df6e474"}, + {file = "black-24.4.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bdde6f877a18f24844e381d45e9947a49e97933573ac9d4345399be37621e26c"}, + {file = "black-24.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e151054aa00bad1f4e1f04919542885f89f5f7d086b8a59e5000e6c616896ffb"}, + {file = "black-24.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:7e122b1c4fb252fd85df3ca93578732b4749d9be076593076ef4d07a0233c3e1"}, {file = "black-24.4.2-py3-none-any.whl", hash = "sha256:d36ed1124bb81b32f8614555b34cc4259c3fbc7eec17870e8ff8ded335b58d8c"}, {file = "black-24.4.2.tar.gz", hash = "sha256:c872b53057f000085da66a19c55d68f6f8ddcac2642392ad3a355878406fbd4d"}, ] @@ -245,13 +234,13 @@ files = [ [[package]] name = "certifi" -version = "2024.2.2" +version = "2024.6.2" requires_python = ">=3.6" summary = "Python package for providing Mozilla's CA Bundle." groups = ["default"] files = [ - {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, - {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, + {file = "certifi-2024.6.2-py3-none-any.whl", hash = "sha256:ddc6c8ce995e6987e7faf5e3f1b02b302836a0e5d98ece18392cb1a36c72ad56"}, + {file = "certifi-2024.6.2.tar.gz", hash = "sha256:3cd43f1c6fa7dedc5899d69d3ad0398fd018ad1a17fba83ddaf78aa46c747516"}, ] [[package]] @@ -264,17 +253,17 @@ dependencies = [ "pycparser", ] files = [ - {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:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a3.11.256b1e4"}, - {file = "cffi-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8"}, + {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.tar.gz", hash = "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0"}, ] @@ -286,12 +275,13 @@ summary = "Time-handling functionality from netcdf4-python" groups = ["default"] dependencies = [ "numpy>1.13.3; python_version < \"3.12.0.rc1\"", + "numpy>=1.26.0b1; python_version >= \"3.12.0.rc1\"", ] files = [ - {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-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.tar.gz", hash = "sha256:d0a6b29f72a13f08e008b9becff247cc75c84acb213332ede18879c5b6aa4dfd"}, ] @@ -303,21 +293,21 @@ summary = "The Real First Universal Charset Detector. Open, modern and actively groups = ["default"] files = [ {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, - {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-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-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, ] @@ -381,16 +371,16 @@ dependencies = [ "numpy>=1.20", ] files = [ - {file = "contourpy-1.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bb6834cbd983b19f06908b45bfc2dad6ac9479ae04abe923a275b5f48f1a186b"}, - {file = "contourpy-1.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1d59e739ab0e3520e62a26c60707cc3ab0365d2f8fecea74bfe4de72dc56388f"}, - {file = "contourpy-1.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd3db01f59fdcbce5b22afad19e390260d6d0222f35a1023d9adc5690a889364"}, - {file = "contourpy-1.2.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a12a813949e5066148712a0626895c26b2578874e4cc63160bb007e6df3436fe"}, - {file = "contourpy-1.2.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe0ccca550bb8e5abc22f530ec0466136379c01321fd94f30a22231e8a48d985"}, - {file = "contourpy-1.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1d59258c3c67c865435d8fbeb35f8c59b8bef3d6f46c1f29f6123556af28445"}, - {file = "contourpy-1.2.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f32c38afb74bd98ce26de7cc74a67b40afb7b05aae7b42924ea990d51e4dac02"}, - {file = "contourpy-1.2.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d31a63bc6e6d87f77d71e1abbd7387ab817a66733734883d1fc0021ed9bfa083"}, - {file = "contourpy-1.2.1-cp39-cp39-win32.whl", hash = "sha256:ddcb8581510311e13421b1f544403c16e901c4e8f09083c881fab2be80ee31ba"}, - {file = "contourpy-1.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:10a37ae557aabf2509c79715cd20b62e4c7c28b8cd62dd7d99e5ed3ce28c3fd9"}, + {file = "contourpy-1.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6022cecf8f44e36af10bd9118ca71f371078b4c168b6e0fab43d4a889985dbb5"}, + {file = "contourpy-1.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ef5adb9a3b1d0c645ff694f9bca7702ec2c70f4d734f9922ea34de02294fdf72"}, + {file = "contourpy-1.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6150ffa5c767bc6332df27157d95442c379b7dce3a38dff89c0f39b63275696f"}, + {file = "contourpy-1.2.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c863140fafc615c14a4bf4efd0f4425c02230eb8ef02784c9a156461e62c965"}, + {file = "contourpy-1.2.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:00e5388f71c1a0610e6fe56b5c44ab7ba14165cdd6d695429c5cd94021e390b2"}, + {file = "contourpy-1.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4492d82b3bc7fbb7e3610747b159869468079fe149ec5c4d771fa1f614a14df"}, + {file = "contourpy-1.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:49e70d111fee47284d9dd867c9bb9a7058a3c617274900780c43e38d90fe1205"}, + {file = "contourpy-1.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b59c0ffceff8d4d3996a45f2bb6f4c207f94684a96bf3d9728dbb77428dd8cb8"}, + {file = "contourpy-1.2.1-cp311-cp311-win32.whl", hash = "sha256:7b4182299f251060996af5249c286bae9361fa8c6a9cda5efc29fe8bfd6062ec"}, + {file = "contourpy-1.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2855c8b0b55958265e8b5888d6a615ba02883b225f2227461aa9127c578a4922"}, {file = "contourpy-1.2.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a31f94983fecbac95e58388210427d68cd30fe8a36927980fab9c20062645609"}, {file = "contourpy-1.2.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef2b055471c0eb466033760a521efb9d8a32b99ab907fc8358481a1dd29e3bd3"}, {file = "contourpy-1.2.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:b33d2bc4f69caedcd0a275329eb2198f560b325605810895627be5d4b876bf7f"}, @@ -410,7 +400,7 @@ files = [ [[package]] name = "dask" -version = "2024.5.0" +version = "2024.5.2" requires_python = ">=3.9" summary = "Parallel PyData with Task Scheduling" groups = ["default"] @@ -425,24 +415,24 @@ dependencies = [ "toolz>=0.10.0", ] files = [ - {file = "dask-2024.5.0-py3-none-any.whl", hash = "sha256:a9f8535c832cc5dc25c7ca4768eb47e6e3e49e152c50c28749ae103535787422"}, - {file = "dask-2024.5.0.tar.gz", hash = "sha256:324f94cdcd93831d24579021b063a2821099c4d51ec094dbc17e0d3ad1d3d351"}, + {file = "dask-2024.5.2-py3-none-any.whl", hash = "sha256:acc2cfe41d9e0151c216ac40396dbe34df13bc3d8c51dfece190349e4f2243af"}, + {file = "dask-2024.5.2.tar.gz", hash = "sha256:5c9722c44d0195e78b6e54197aa3302e6fcaaac2310fd3014560bcb86253dcb3"}, ] [[package]] name = "dask" -version = "2024.5.0" +version = "2024.5.2" extras = ["array"] requires_python = ">=3.9" summary = "Parallel PyData with Task Scheduling" groups = ["default"] dependencies = [ - "dask==2024.5.0", + "dask==2024.5.2", "numpy>=1.21", ] files = [ - {file = "dask-2024.5.0-py3-none-any.whl", hash = "sha256:a9f8535c832cc5dc25c7ca4768eb47e6e3e49e152c50c28749ae103535787422"}, - {file = "dask-2024.5.0.tar.gz", hash = "sha256:324f94cdcd93831d24579021b063a2821099c4d51ec094dbc17e0d3ad1d3d351"}, + {file = "dask-2024.5.2-py3-none-any.whl", hash = "sha256:acc2cfe41d9e0151c216ac40396dbe34df13bc3d8c51dfece190349e4f2243af"}, + {file = "dask-2024.5.2.tar.gz", hash = "sha256:5c9722c44d0195e78b6e54197aa3302e6fcaaac2310fd3014560bcb86253dcb3"}, ] [[package]] @@ -452,10 +442,10 @@ requires_python = ">=3.8" summary = "An implementation of the Debug Adapter Protocol for Python" groups = ["default"] files = [ - {file = "debugpy-1.8.1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:bfb20cb57486c8e4793d41996652e5a6a885b4d9175dd369045dad59eaacea42"}, - {file = "debugpy-1.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efd3fdd3f67a7e576dd869c184c5dd71d9aaa36ded271939da352880c012e703"}, - {file = "debugpy-1.8.1-cp39-cp39-win32.whl", hash = "sha256:58911e8521ca0c785ac7a0539f1e77e0ce2df753f786188f382229278b4cdf23"}, - {file = "debugpy-1.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:6df9aa9599eb05ca179fb0b810282255202a66835c6efb1d112d21ecb830ddd3"}, + {file = "debugpy-1.8.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:016a9fcfc2c6b57f939673c874310d8581d51a0fe0858e7fac4e240c5eb743cb"}, + {file = "debugpy-1.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd97ed11a4c7f6d042d320ce03d83b20c3fb40da892f994bc041bbc415d7a099"}, + {file = "debugpy-1.8.1-cp311-cp311-win32.whl", hash = "sha256:0de56aba8249c28a300bdb0672a9b94785074eb82eb672db66c8144fff673146"}, + {file = "debugpy-1.8.1-cp311-cp311-win_amd64.whl", hash = "sha256:1a9fe0829c2b854757b4fd0a338d93bc17249a3bf69ecf765c61d4c522bb92a8"}, {file = "debugpy-1.8.1-py2.py3-none-any.whl", hash = "sha256:28acbe2241222b87e255260c76741e1fbf04fdc3b6d094fcf57b6c6f75ce1242"}, {file = "debugpy-1.8.1.zip", hash = "sha256:f696d6be15be87aef621917585f9bb94b1dc9e8aced570db1b8a6fc14e8f9b42"}, ] @@ -488,7 +478,7 @@ version = "0.3.8" requires_python = ">=3.8" summary = "serialize all of Python" groups = ["default"] -marker = "python_version < \"3.11\"" +marker = "python_version >= \"3.11\"" files = [ {file = "dill-0.3.8-py3-none-any.whl", hash = "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7"}, {file = "dill-0.3.8.tar.gz", hash = "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca"}, @@ -515,18 +505,6 @@ files = [ {file = "distro-1.9.0.tar.gz", hash = "sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed"}, ] -[[package]] -name = "exceptiongroup" -version = "1.2.1" -requires_python = ">=3.7" -summary = "Backport of PEP 654 (exception groups)" -groups = ["default"] -marker = "python_version < \"3.11\"" -files = [ - {file = "exceptiongroup-1.2.1-py3-none-any.whl", hash = "sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad"}, - {file = "exceptiongroup-1.2.1.tar.gz", hash = "sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16"}, -] - [[package]] name = "executing" version = "2.0.1" @@ -587,15 +565,14 @@ summary = "Efficient and easy Fast Fourier Transform (FFT) for Python." groups = ["default"] dependencies = [ "fluiddyn>=0.2.3", - "importlib-metadata; python_version < \"3.10\"", "transonic>=0.6.4", ] files = [ - {file = "fluidfft-0.4.0.post1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c5d9c1ab848d1793f652731209f6ef246ce7ff1e6c3aaa25f554e1222e39eecf"}, - {file = "fluidfft-0.4.0.post1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ce9cc3a5f5758a80de121c8399289345508f14ddba99a3f8b556aa6484d3356e"}, - {file = "fluidfft-0.4.0.post1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:683c466ce430e88d684852280e540ae1718540dc93f182f3c63e86e01c6b7be2"}, - {file = "fluidfft-0.4.0.post1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50252bf2b17cfe9be49d41119d6528ab50608217bcf0cdd450b0849091b0b8da"}, - {file = "fluidfft-0.4.0.post1-cp39-cp39-win_amd64.whl", hash = "sha256:7dd0d013933dc8b6d4b187fc1693d87217f6e314a368d1838c06933d66473ebf"}, + {file = "fluidfft-0.4.0.post1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1c7e1ee37b141b38f19b1da9a0f849cbccf414a847cb91b2ec418a3117a7d76c"}, + {file = "fluidfft-0.4.0.post1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7689c293f3467986a992dbe778f0a5e7cea315ef53c3b25a9c4578a06c8b5abc"}, + {file = "fluidfft-0.4.0.post1-cp311-cp311-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e83650ec76a74ef5c272f5b29501d92614bb755aaa1c3dc102a48db1b4938112"}, + {file = "fluidfft-0.4.0.post1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3d604530b6292002131971d5ac19ee1c38a77fdd778fd51fa6c9a415f2c3a25"}, + {file = "fluidfft-0.4.0.post1-cp311-cp311-win_amd64.whl", hash = "sha256:2e314ba8df1572d5ee83bb8bafff8d59ae7c51c928fdb597b4e0af92098c57a3"}, {file = "fluidfft-0.4.0.post1.tar.gz", hash = "sha256:70791c92f43d7611c5db89d069e745875fca9be02948156a6c1b184fbc87cb4d"}, ] @@ -652,7 +629,7 @@ files = [ [[package]] name = "fluidimage" -version = "0.5.1" +version = "0.5.2" requires_python = "<3.13,>=3.9" summary = "Fluid image processing with Python." groups = ["default"] @@ -674,43 +651,43 @@ dependencies = [ "trio>=0.13", ] files = [ - {file = "fluidimage-0.5.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0910d1fc354f23eaf0973e0fc819a996865df778f1445e85971267e324e2ecea"}, - {file = "fluidimage-0.5.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c9cabafe5373835074c289c157fd2adad6a4ba2c4f7722c6dc62b33375cf6c51"}, - {file = "fluidimage-0.5.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7ff50109c5932ba3e08f5f9c4971775d3f946062f6038eb2266513b2070d2f8"}, - {file = "fluidimage-0.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed1f9185fd1f49ebb475e6500471a3a20863f10b944dd318ac19b71e1621436d"}, - {file = "fluidimage-0.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:4a26873a36e0269aae12d90b2f9bf6388599ced653017b2993c209c5df4d6d92"}, - {file = "fluidimage-0.5.1.tar.gz", hash = "sha256:648d24d1c046b105de5ebcc2e8d1c1f6e418152a3c4b945cfa35e4255495295b"}, + {file = "fluidimage-0.5.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0a42e2bb2d6f0b716375f0f01143f9778c1c8a5ff78b960f2d45a733dbeaea90"}, + {file = "fluidimage-0.5.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:acd213c83abca657fa52a507cf2717abc2ae212ae5d77a659336449cca8fee7e"}, + {file = "fluidimage-0.5.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:61de5e60bfd21a1f9f93af4aaa059c31273c719ab837a2a8c9aaf8826d7c3662"}, + {file = "fluidimage-0.5.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b82b77acfb85d9403849c7d82581c23f2ad846d5b5fc04b844417a03f3704997"}, + {file = "fluidimage-0.5.2-cp311-cp311-win_amd64.whl", hash = "sha256:11e699035d69bed27f0873cb2e33ba8191e4e7e1937049bf866e1373545f3648"}, + {file = "fluidimage-0.5.2.tar.gz", hash = "sha256:56aa8a0b987da0a5a39994671ab1c976c26c7092d818a2a82e6184a455c2b275"}, ] [[package]] name = "fluidimage" -version = "0.5.1" +version = "0.5.2" extras = ["all"] requires_python = "<3.13,>=3.9" summary = "Fluid image processing with Python." groups = ["default"] dependencies = [ - "fluidimage==0.5.1", + "fluidimage==0.5.2", "fluidimage[graph,opencv,pims,pytest]", ] files = [ - {file = "fluidimage-0.5.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0910d1fc354f23eaf0973e0fc819a996865df778f1445e85971267e324e2ecea"}, - {file = "fluidimage-0.5.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c9cabafe5373835074c289c157fd2adad6a4ba2c4f7722c6dc62b33375cf6c51"}, - {file = "fluidimage-0.5.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7ff50109c5932ba3e08f5f9c4971775d3f946062f6038eb2266513b2070d2f8"}, - {file = "fluidimage-0.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed1f9185fd1f49ebb475e6500471a3a20863f10b944dd318ac19b71e1621436d"}, - {file = "fluidimage-0.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:4a26873a36e0269aae12d90b2f9bf6388599ced653017b2993c209c5df4d6d92"}, - {file = "fluidimage-0.5.1.tar.gz", hash = "sha256:648d24d1c046b105de5ebcc2e8d1c1f6e418152a3c4b945cfa35e4255495295b"}, + {file = "fluidimage-0.5.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0a42e2bb2d6f0b716375f0f01143f9778c1c8a5ff78b960f2d45a733dbeaea90"}, + {file = "fluidimage-0.5.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:acd213c83abca657fa52a507cf2717abc2ae212ae5d77a659336449cca8fee7e"}, + {file = "fluidimage-0.5.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:61de5e60bfd21a1f9f93af4aaa059c31273c719ab837a2a8c9aaf8826d7c3662"}, + {file = "fluidimage-0.5.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b82b77acfb85d9403849c7d82581c23f2ad846d5b5fc04b844417a03f3704997"}, + {file = "fluidimage-0.5.2-cp311-cp311-win_amd64.whl", hash = "sha256:11e699035d69bed27f0873cb2e33ba8191e4e7e1937049bf866e1373545f3648"}, + {file = "fluidimage-0.5.2.tar.gz", hash = "sha256:56aa8a0b987da0a5a39994671ab1c976c26c7092d818a2a82e6184a455c2b275"}, ] [[package]] name = "fluidimage" -version = "0.5.1" +version = "0.5.2" extras = ["graph", "opencv", "pims", "pytest"] requires_python = "<3.13,>=3.9" summary = "Fluid image processing with Python." groups = ["default"] dependencies = [ - "fluidimage==0.5.1", + "fluidimage==0.5.2", "gprof2dot", "opencv-python", "pims", @@ -718,12 +695,12 @@ dependencies = [ "pytest-asyncio", ] files = [ - {file = "fluidimage-0.5.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0910d1fc354f23eaf0973e0fc819a996865df778f1445e85971267e324e2ecea"}, - {file = "fluidimage-0.5.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c9cabafe5373835074c289c157fd2adad6a4ba2c4f7722c6dc62b33375cf6c51"}, - {file = "fluidimage-0.5.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7ff50109c5932ba3e08f5f9c4971775d3f946062f6038eb2266513b2070d2f8"}, - {file = "fluidimage-0.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed1f9185fd1f49ebb475e6500471a3a20863f10b944dd318ac19b71e1621436d"}, - {file = "fluidimage-0.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:4a26873a36e0269aae12d90b2f9bf6388599ced653017b2993c209c5df4d6d92"}, - {file = "fluidimage-0.5.1.tar.gz", hash = "sha256:648d24d1c046b105de5ebcc2e8d1c1f6e418152a3c4b945cfa35e4255495295b"}, + {file = "fluidimage-0.5.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0a42e2bb2d6f0b716375f0f01143f9778c1c8a5ff78b960f2d45a733dbeaea90"}, + {file = "fluidimage-0.5.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:acd213c83abca657fa52a507cf2717abc2ae212ae5d77a659336449cca8fee7e"}, + {file = "fluidimage-0.5.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:61de5e60bfd21a1f9f93af4aaa059c31273c719ab837a2a8c9aaf8826d7c3662"}, + {file = "fluidimage-0.5.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b82b77acfb85d9403849c7d82581c23f2ad846d5b5fc04b844417a03f3704997"}, + {file = "fluidimage-0.5.2-cp311-cp311-win_amd64.whl", hash = "sha256:11e699035d69bed27f0873cb2e33ba8191e4e7e1937049bf866e1373545f3648"}, + {file = "fluidimage-0.5.2.tar.gz", hash = "sha256:56aa8a0b987da0a5a39994671ab1c976c26c7092d818a2a82e6184a455c2b275"}, ] [[package]] @@ -743,11 +720,11 @@ dependencies = [ "xarray", ] files = [ - {file = "fluidsim-0.8.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6021cd8e5d56a39bac365aa950c02f544a1c50e14dd993495df5ad64442295ba"}, - {file = "fluidsim-0.8.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:12ce2f932c0fb9a7b6ff54bd65c2073a4b425b40d5cc5d6e0a0c9b85cfe9c00d"}, - {file = "fluidsim-0.8.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bdb1c502d0fe6bd6f7bae5d452dd618655cac0e685c8661550426f5e771d1c26"}, - {file = "fluidsim-0.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8678408c8799851ae42894dc4e52a68510db3c3a70ebc72c52d2d42bf4f82061"}, - {file = "fluidsim-0.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:b7c5e5696ee00bc16bf5929e34ede4594396f08700dee8c36dca72e3a7c96a6e"}, + {file = "fluidsim-0.8.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:59ab5503363bb497cb726880b58e4ed3b0bf4ea6acf563d95417bbb3e675551a"}, + {file = "fluidsim-0.8.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:44956075b7f0898e8e082573098cc579bf9123357d5b6b8434caa2348fcaca10"}, + {file = "fluidsim-0.8.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e2670fd5d64700eeec267a62bfe9fd92637a9ddb111f08224a06ecd028815e2"}, + {file = "fluidsim-0.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32981d6d4cecee491dd83efd1cd12c2cae878324d7c05e10c76d5edd87804884"}, + {file = "fluidsim-0.8.1-cp311-cp311-win_amd64.whl", hash = "sha256:8c0ed8620dc5547b47bbfaff2404a9a3a4320b73350727243f89ed3141b57730"}, {file = "fluidsim-0.8.1.tar.gz", hash = "sha256:44c70f388c429856f5df24705cddb2e024d7d1376d2153e113ef111af90b857b"}, ] @@ -759,30 +736,29 @@ summary = "Pure-Python core library for FluidSim framework" groups = ["default"] dependencies = [ "fluiddyn", - "importlib-metadata; python_version < \"3.10\"", ] files = [ - {file = "fluidsim_core-0.8.1-py3-none-any.whl", hash = "sha256:d53b56f2387284a2a2862099edc0b0ed4ada3d9b883.11.2a2b5f1c459a41a1c7"}, + {file = "fluidsim_core-0.8.1-py3-none-any.whl", hash = "sha256:d53b56f2387284a2a2862099edc0b0ed4ada3d9b883c9e2a2b5f1c459a41a1c7"}, {file = "fluidsim_core-0.8.1.tar.gz", hash = "sha256:3dfb51d5db1a574089738a4b8e1c76e75da32b25dceb349207dcece73d1b1646"}, ] [[package]] name = "fonttools" -version = "4.51.0" +version = "4.53.0" requires_python = ">=3.8" summary = "Tools to manipulate font files" groups = ["default"] files = [ - {file = "fonttools-4.51.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:60a3409c9112aec02d5fb546f557bca6efa773dcb32ac147c6baf5f742e6258b"}, - {file = "fonttools-4.51.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f7e89853d8bea103c8e3514b9f9dc86b5b4120afb4583b57eb10dfa5afbe0936"}, - {file = "fonttools-4.51.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56fc244f2585d6c00b9bcc59e6593e646cf095a96fe68d62cd4da53dd1287b55"}, - {file = "fonttools-4.51.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d145976194a5242fdd22df18a1b451481a88071feadf251221af110ca8f00ce"}, - {file = "fonttools-4.51.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c5b8cab0c137ca229433570151b5c1fc6af212680b58b15abd797dcdd9dd5051"}, - {file = "fonttools-4.51.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:54dcf21a2f2d06ded676e3c3f9f74b2bafded3a8ff12f0983160b13.11.2fb4a7"}, - {file = "fonttools-4.51.0-cp39-cp39-win32.whl", hash = "sha256:0118ef998a0699a96c7b28457f15546815015a2710a1b23a7bf6c1be60c01636"}, - {file = "fonttools-4.51.0-cp39-cp39-win_amd64.whl", hash = "sha256:599bdb75e220241cedc6faebfafedd7670335d2e29620d207dd0378a4e9ccc5a"}, - {file = "fonttools-4.51.0-py3-none-any.whl", hash = "sha256:15c94eeef6b095831067f72c825eb0e2d48bb4cea0647c1b05c981ecba2bf39f"}, - {file = "fonttools-4.51.0.tar.gz", hash = "sha256:dc0673361331566d7a663d7ce0f6fdcbfbdc1f59c6e3ed1165ad7202ca183c68"}, + {file = "fonttools-4.53.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a209d2e624ba492df4f3bfad5996d1f76f03069c6133c60cd04f9a9e715595ec"}, + {file = "fonttools-4.53.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4f520d9ac5b938e6494f58a25c77564beca7d0199ecf726e1bd3d56872c59749"}, + {file = "fonttools-4.53.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eceef49f457253000e6a2d0f7bd08ff4e9fe96ec4ffce2dbcb32e34d9c1b8161"}, + {file = "fonttools-4.53.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa1f3e34373aa16045484b4d9d352d4c6b5f9f77ac77a178252ccbc851e8b2ee"}, + {file = "fonttools-4.53.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:28d072169fe8275fb1a0d35e3233f6df36a7e8474e56cb790a7258ad822b6fd6"}, + {file = "fonttools-4.53.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4a2a6ba400d386e904fd05db81f73bee0008af37799a7586deaa4aef8cd5971e"}, + {file = "fonttools-4.53.0-cp311-cp311-win32.whl", hash = "sha256:bb7273789f69b565d88e97e9e1da602b4ee7ba733caf35a6c2affd4334d4f005"}, + {file = "fonttools-4.53.0-cp311-cp311-win_amd64.whl", hash = "sha256:9fe9096a60113e1d755e9e6bda15ef7e03391ee0554d22829aa506cdf946f796"}, + {file = "fonttools-4.53.0-py3-none-any.whl", hash = "sha256:6b4f04b1fbc01a3569d63359f2227c89ab294550de277fd09d8fca6185669fa4"}, + {file = "fonttools-4.53.0.tar.gz", hash = "sha256:c93ed66d32de1559b6fc348838c7572d5c0ac1e4a258e76763a5caddd8944002"}, ] [[package]] @@ -812,13 +788,13 @@ files = [ [[package]] name = "fsspec" -version = "2024.3.1" +version = "2024.6.0" requires_python = ">=3.8" summary = "File-system specification" groups = ["default"] files = [ - {file = "fsspec-2024.3.1-py3-none-any.whl", hash = "sha256:918d18d41bf73f0e2b261824baeb1b124bcf771767e3a26425cd7dec3332f512"}, - {file = "fsspec-2024.3.1.tar.gz", hash = "sha256:f39780e282d7d117ffb42bb96992f8a90795e4d0fb0f661a70ca39fe9c43ded9"}, + {file = "fsspec-2024.6.0-py3-none-any.whl", hash = "sha256:58d7122eb8a1a46f7f13453187bfea4972d66bf01618d37366521b1998034cee"}, + {file = "fsspec-2024.6.0.tar.gz", hash = "sha256:f579960a56e6d8038a9efc8f9c77279ec12e6299aa86b0769a7e9c46b94527c2"}, ] [[package]] @@ -876,13 +852,13 @@ files = [ [[package]] name = "gprof2dot" -version = "2022.7.29" -requires_python = ">=2.7" +version = "2024.6.6" +requires_python = ">=3.8" summary = "Generate a dot graph from the output of several profilers." groups = ["default"] files = [ - {file = "gprof2dot-2022.7.29-py2.py3-none-any.whl", hash = "sha256:f165b3851d3c52ee4915eb1bd6cca571e5759823c2cd0f71a79bda93c2dc85d6"}, - {file = "gprof2dot-2022.7.29.tar.gz", hash = "sha256:45b4d298bd36608fccf9511c3fd88a773f7a1abc04d6cd39445b11ba43133ec5"}, + {file = "gprof2dot-2024.6.6-py2.py3-none-any.whl", hash = "sha256:45b14ad7ce64e299c8f526881007b9eb2c6b75505d5613e96e66ee4d5ab33696"}, + {file = "gprof2dot-2024.6.6.tar.gz", hash = "sha256:fa1420c60025a9eb7734f65225b4da02a10fc6dd741b37fa129bc6b41951e5ab"}, ] [[package]] @@ -921,10 +897,10 @@ dependencies = [ "numpy>=1.17.3", ] files = [ - {file = "h5py-3.11.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f4e025e852754ca833401777c25888acb96889ee2c27e7e629a19aee288833f0"}, - {file = "h5py-3.11.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6c4b760082626120031d7902cd983d8c1f424cdba2809f1067511ef283629d4b"}, - {file = "h5py-3.11.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67462d0669f8f5459529de179f7771bd697389fcb3faab54d63bf788599a48ea"}, - {file = "h5py-3.11.0-cp39-cp39-win_amd64.whl", hash = "sha256:d9c944d364688f827dc889cf83f1fca311caf4fa50b19f009d1f2b525edd33a3"}, + {file = "h5py-3.11.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bbd732a08187a9e2a6ecf9e8af713f1d68256ee0f7c8b652a32795670fb481ba"}, + {file = "h5py-3.11.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75bd7b3d93fbeee40860fd70cdc88df4464e06b70a5ad9ce1446f5f32eb84007"}, + {file = "h5py-3.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:52c416f8eb0daae39dabe71415cb531f95dce2d81e1f61a74537a50c63b28ab3"}, + {file = "h5py-3.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:083e0329ae534a264940d6513f47f5ada617da536d8dccbafc3026aefc33c90e"}, {file = "h5py-3.11.0.tar.gz", hash = "sha256:7b7e8f78072a2edec87c9836f25f34203fd492a4475709a18b417a33cfb21fa9"}, ] @@ -998,25 +974,10 @@ dependencies = [ "zipp>=0.5", ] files = [ - {file = "importlib_metadata-7.1.0-py3-none-any.whl", hash = "sha256:3.11.2b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570"}, + {file = "importlib_metadata-7.1.0-py3-none-any.whl", hash = "sha256:30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570"}, {file = "importlib_metadata-7.1.0.tar.gz", hash = "sha256:b78938b926ee8d5f020fc4772d487045805a55ddbad2ecf21c6d60938dc7fcd2"}, ] -[[package]] -name = "importlib-resources" -version = "6.4.0" -requires_python = ">=3.8" -summary = "Read resources from Python packages" -groups = ["default"] -marker = "python_version < \"3.10\"" -dependencies = [ - "zipp>=3.1.0; python_version < \"3.10\"", -] -files = [ - {file = "importlib_resources-6.4.0-py3-none-any.whl", hash = "sha256:50d10f043df93.11.2d4194ea07ec57960f66a80449ff867bfe782b4c486ba78c"}, - {file = "importlib_resources-6.4.0.tar.gz", hash = "sha256:cdb2b453b8046ca4e3798eb1d84f3cce1446a0e8e7b5ef4efb600f19fc398145"}, -] - [[package]] name = "iniconfig" version = "2.0.0" @@ -1056,26 +1017,25 @@ files = [ [[package]] name = "ipython" -version = "8.18.1" -requires_python = ">=3.9" +version = "8.25.0" +requires_python = ">=3.10" summary = "IPython: Productive Interactive Computing" groups = ["default"] dependencies = [ "colorama; sys_platform == \"win32\"", "decorator", - "exceptiongroup; python_version < \"3.11\"", "jedi>=0.16", "matplotlib-inline", - "pexpect>4.3; sys_platform != \"win32\"", + "pexpect>4.3; sys_platform != \"win32\" and sys_platform != \"emscripten\"", "prompt-toolkit<3.1.0,>=3.0.41", "pygments>=2.4.0", "stack-data", - "traitlets>=5", - "typing-extensions; python_version < \"3.10\"", + "traitlets>=5.13.0", + "typing-extensions>=4.6; python_version < \"3.12\"", ] files = [ - {file = "ipython-8.18.1-py3-none-any.whl", hash = "sha256:e8267419d72d81955ec1177f8a29aaa90ac80ad647499201119e2f05e99aa397"}, - {file = "ipython-8.18.1.tar.gz", hash = "sha256:ca6f079bb33457c66e233e4580ebfc4128855b4cf6370dddd73842a9563e8a27"}, + {file = "ipython-8.25.0-py3-none-any.whl", hash = "sha256:53eee7ad44df903a06655871cbab66d156a051fd86f3ec6750470ac9604ac1ab"}, + {file = "ipython-8.25.0.tar.gz", hash = "sha256:c6ed726a140b6e725b911528f80439c534fac915246af3efc39440a6b0f9d716"}, ] [[package]] @@ -1150,7 +1110,7 @@ summary = "A Python implementation of the JSON5 data format." groups = ["default"] files = [ {file = "json5-0.9.25-py3-none-any.whl", hash = "sha256:34ed7d834b1341a86987ed52f3f76cd8ee184394906b6e22a1e0deb9ab294e8f"}, - {file = "json5-0.9.25.tar.gz", hash = "sha256:548e41b9be043.11.26776f05df8635a00fe06104ea51ed24b67f908856e151ae"}, + {file = "json5-0.9.25.tar.gz", hash = "sha256:548e41b9be043f9426776f05df8635a00fe06104ea51ed24b67f908856e151ae"}, ] [[package]] @@ -1220,12 +1180,11 @@ files = [ [[package]] name = "jupyter-client" -version = "8.6.1" +version = "8.6.2" requires_python = ">=3.8" summary = "Jupyter protocol implementation and client libraries" groups = ["default"] dependencies = [ - "importlib-metadata>=4.8.3; python_version < \"3.10\"", "jupyter-core!=5.0.*,>=4.12", "python-dateutil>=2.8.2", "pyzmq>=23.0", @@ -1233,8 +1192,8 @@ dependencies = [ "traitlets>=5.3", ] files = [ - {file = "jupyter_client-8.6.1-py3-none-any.whl", hash = "sha256:3b7bd22f058434e3b9a7ea4b1500ed47de2713872288c0d511d19926f99b459f"}, - {file = "jupyter_client-8.6.1.tar.gz", hash = "sha256:e842515e2bab8e19186d89fdfea7abd15e39dd581f94e399f00e2af5a1652d3f"}, + {file = "jupyter_client-8.6.2-py3-none-any.whl", hash = "sha256:50cbc5c66fd1b8f65ecb66bc490ab73217993632809b6e505687de18e9dea39f"}, + {file = "jupyter_client-8.6.2.tar.gz", hash = "sha256:2bda14d55ee5ba58552a8c53ae43d215ad9868853489213f37da060ced54d8df"}, ] [[package]] @@ -1280,17 +1239,16 @@ requires_python = ">=3.8" summary = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server" groups = ["default"] dependencies = [ - "importlib-metadata>=4.8.3; python_version < \"3.10\"", "jupyter-server>=1.1.2", ] files = [ - {file = "jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943.11.2cb4f545001"}, + {file = "jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001"}, {file = "jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da"}, ] [[package]] name = "jupyter-server" -version = "2.14.0" +version = "2.14.1" requires_python = ">=3.8" summary = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications." groups = ["default"] @@ -1316,8 +1274,8 @@ dependencies = [ "websocket-client>=1.7", ] files = [ - {file = "jupyter_server-2.14.0-py3-none-any.whl", hash = "sha256:fb6be52c713e80e004fac34b35a0990d6d36ba06fd0a2b2ed82b899143a64210"}, - {file = "jupyter_server-2.14.0.tar.gz", hash = "sha256:659154cea512083434fd7c93b7fe0897af7a2fd0b9dd4749282b42eaac4ae677"}, + {file = "jupyter_server-2.14.1-py3-none-any.whl", hash = "sha256:16f7177c3a4ea8fe37784e2d31271981a812f0b2874af17339031dc3510cc2a5"}, + {file = "jupyter_server-2.14.1.tar.gz", hash = "sha256:12558d158ec7a0653bf96cc272bc7ad79e0127d503b982ed144399346694f726"}, ] [[package]] @@ -1351,14 +1309,13 @@ files = [ [[package]] name = "jupyterlab" -version = "4.2.0" +version = "4.2.1" requires_python = ">=3.8" summary = "JupyterLab computational environment" groups = ["default"] dependencies = [ "async-lru>=1.0.0", "httpx>=0.25.0", - "importlib-metadata>=4.8.3; python_version < \"3.10\"", "ipykernel>=6.5.0", "jinja2>=3.0.3", "jupyter-core", @@ -1367,13 +1324,12 @@ dependencies = [ "jupyterlab-server<3,>=2.27.1", "notebook-shim>=0.2", "packaging", - "tomli>=1.2.2; python_version < \"3.11\"", "tornado>=6.2.0", "traitlets", ] files = [ - {file = "jupyterlab-4.2.0-py3-none-any.whl", hash = "sha256:0dfe9278e25a145362289c555d9beb505697d269c10e99909766af7c440ad3cc"}, - {file = "jupyterlab-4.2.0.tar.gz", hash = "sha256:356e9205a6a2ab689c47c8fe4919dba6c076e376d03f26baadc05748c2435dd5"}, + {file = "jupyterlab-4.2.1-py3-none-any.whl", hash = "sha256:6ac6e3827b3c890e6e549800e8a4f4aaea6a69321e2240007902aa7a0c56a8e4"}, + {file = "jupyterlab-4.2.1.tar.gz", hash = "sha256:a10fb71085a6900820c62d43324005046402ffc8f0fde696103e37238a839507"}, ] [[package]] @@ -1432,13 +1388,12 @@ files = [ [[package]] name = "jupyterlab-server" -version = "2.27.1" +version = "2.27.2" requires_python = ">=3.8" summary = "A set of server components for JupyterLab and JupyterLab like applications." groups = ["default"] dependencies = [ "babel>=2.10", - "importlib-metadata>=4.8.3; python_version < \"3.10\"", "jinja2>=3.0.3", "json5>=0.9.0", "jsonschema>=4.18.0", @@ -1447,8 +1402,8 @@ dependencies = [ "requests>=2.31", ] files = [ - {file = "jupyterlab_server-2.27.1-py3-none-any.whl", hash = "sha256:f5e26156e5258b24d532c84e7c74cc212e203bff93eb856f81c24c16daeecc75"}, - {file = "jupyterlab_server-2.27.1.tar.gz", hash = "sha256:097b5ac709b676c7284ac9c5e373f11930a561f52cd5a86e4fc7e5a9c8a8631d"}, + {file = "jupyterlab_server-2.27.2-py3-none-any.whl", hash = "sha256:54aa2d64fd86383b5438d9f0c032f043c4d8c0264b8af9f60bd061157466ea43"}, + {file = "jupyterlab_server-2.27.2.tar.gz", hash = "sha256:15cbb349dc45e954e09bacf81b9f9bcb10815ff660fb2034ecd7417db3a7ea27"}, ] [[package]] @@ -1478,7 +1433,6 @@ dependencies = [ "nbformat", "packaging", "pyyaml", - "tomli; python_version < \"3.11\"", ] files = [ {file = "jupytext-1.16.2-py3-none-any.whl", hash = "sha256:197a43fef31dca612b68b311e01b8abd54441c7e637810b16b6cb8f2ab66065e"}, @@ -1492,21 +1446,21 @@ requires_python = ">=3.7" summary = "A fast implementation of the Cassowary constraint solver" groups = ["default"] files = [ - {file = "kiwisolver-1.4.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9407b6a5f0d675e8a827ad8742e1d6b49d9c1a1da5d952a67d50ef5f4170b18d"}, - {file = "kiwisolver-1.4.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:15568384086b6df3c65353820a4473575dbad192e35010f622c6ce3eebd57af9"}, - {file = "kiwisolver-1.4.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0dc9db8e79f0036e8173c466d21ef18e1befc02de8bf8aa8dc0813a6dc8a7046"}, - {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:cdc8a402aaee9a798b50d8b827d7ecf75edc5fb35ea0f91f213ff927c15f4ff0"}, - {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6c3bd3cde54cafb87d74d8db50b909705c62b17c2099b8f2e25b461882e544ff"}, - {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:955e8513d07a283056b1396e9a57ceddbd272d9252c14f154d450d227606eb54"}, - {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:346f5343b9e3f00b8db8ba359350eb124b98c99efd0b408728ac6ebf38173958"}, - {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b9098e0049e88c6a24ff64545cdfc50807818ba6c1b739cae221bbbcbc58aad3"}, - {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:00bd361b903dc4bbf4eb165f24d1acbee754fce22ded24c3d56eec268658a5cf"}, - {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7b8b454bac16428b22560d0a1cf0a09875339cab69df61d7805bf48919415901"}, - {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:f1d072c2eb0ad60d4c183f3fb44ac6f73fb7a8f16a2694a91f988275cbf352f9"}, - {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:31a82d498054cac9f6d0b53d02bb85811185bcb477d4b60144f915f3b3126342"}, - {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6512cb89e334e4700febbffaaa52761b65b4f5a3cf33f960213d5656cea36a77"}, - {file = "kiwisolver-1.4.5-cp39-cp39-win32.whl", hash = "sha256:9db8ea4c388fdb0f780fe91346fd438657ea602d58348753d9fb265ce1bca67f"}, - {file = "kiwisolver-1.4.5-cp39-cp39-win_amd64.whl", hash = "sha256:59415f46a37f7f2efeec758353dd2eae1b07640d8ca0f0c42548ec4125492635"}, + {file = "kiwisolver-1.4.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:11863aa14a51fd6ec28688d76f1735f8f69ab1fabf388851a595d0721af042f5"}, + {file = "kiwisolver-1.4.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8ab3919a9997ab7ef2fbbed0cc99bb28d3c13e6d4b1ad36e97e482558a91be90"}, + {file = "kiwisolver-1.4.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fcc700eadbbccbf6bc1bcb9dbe0786b4b1cb91ca0dcda336eef5c2beed37b797"}, + {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dfdd7c0b105af050eb3d64997809dc21da247cf44e63dc73ff0fd20b96be55a9"}, + {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76c6a5964640638cdeaa0c359382e5703e9293030fe730018ca06bc2010c4437"}, + {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bbea0db94288e29afcc4c28afbf3a7ccaf2d7e027489c449cf7e8f83c6346eb9"}, + {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ceec1a6bc6cab1d6ff5d06592a91a692f90ec7505d6463a88a52cc0eb58545da"}, + {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:040c1aebeda72197ef477a906782b5ab0d387642e93bda547336b8957c61022e"}, + {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f91de7223d4c7b793867797bacd1ee53bfe7359bd70d27b7b58a04efbb9436c8"}, + {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:faae4860798c31530dd184046a900e652c95513796ef51a12bc086710c2eec4d"}, + {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:b0157420efcb803e71d1b28e2c287518b8808b7cf1ab8af36718fd0a2c453eb0"}, + {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:06f54715b7737c2fecdbf140d1afb11a33d59508a47bf11bb38ecf21dc9ab79f"}, + {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fdb7adb641a0d13bdcd4ef48e062363d8a9ad4a182ac7647ec88f695e719ae9f"}, + {file = "kiwisolver-1.4.5-cp311-cp311-win32.whl", hash = "sha256:bb86433b1cfe686da83ce32a9d3a8dd308e85c76b60896d58f082136f10bffac"}, + {file = "kiwisolver-1.4.5-cp311-cp311-win_amd64.whl", hash = "sha256:6c08e1312a9cf1074d17b17728d3dfce2a5125b2d791527f33ffbe805200a355"}, {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5c7b3b3a728dc6faf3fc372ef24f21d1e3cee2ac3e9596691d746e5a536de920"}, {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:620ced262a86244e2be10a676b646f29c34537d0d9cc8eb26c08f53d98013390"}, {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:378a214a1e3bbf5ac4a8708304318b4f890da88c9e6a07699c4ae7174c09a68d"}, @@ -1613,22 +1567,22 @@ requires_python = ">=3.7" summary = "Safely add untrusted strings to HTML/XML markup." groups = ["default"] files = [ - {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-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.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, ] [[package]] name = "matplotlib" -version = "3.8.4" +version = "3.9.0" requires_python = ">=3.9" summary = "Python plotting package" groups = ["default"] @@ -1636,25 +1590,25 @@ dependencies = [ "contourpy>=1.0.1", "cycler>=0.10", "fonttools>=4.22.0", - "importlib-resources>=3.2.0; python_version < \"3.10\"", "kiwisolver>=1.3.1", - "numpy>=1.21", + "numpy>=1.23", "packaging>=20.0", "pillow>=8", "pyparsing>=2.3.1", "python-dateutil>=2.7", ] files = [ - {file = "matplotlib-3.8.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:843cbde2f0946dadd8c5c11c6d91847abd18ec76859dc319362a0964493f0ba6"}, - {file = "matplotlib-3.8.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1c13f041a7178f9780fb61cc3a2b10423d5e125480e4be51beaf62b172413b67"}, - {file = "matplotlib-3.8.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb44f53af0a62dc80bba4443.11.27f2fde6acfdac281d95bc872dc148a6509cc"}, - {file = "matplotlib-3.8.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:606e3b90897554c989b1e38a258c626d46c873523de432b1462f295db13de6f9"}, - {file = "matplotlib-3.8.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9bb0189011785ea794ee827b68777db3ca3f93f3e339ea4d920315a0e5a78d54"}, - {file = "matplotlib-3.8.4-cp39-cp39-win_amd64.whl", hash = "sha256:6209e5c9aaccc056e63b547a8152661324404dd92340a6e479b3a7f24b42a5d0"}, - {file = "matplotlib-3.8.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c7064120a59ce6f64103c9cefba8ffe6fba87f2c61d67c401186423.11.20fd35"}, - {file = "matplotlib-3.8.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0e47eda4eb2614300fc7bb4657fced3e83d6334d03da2173b09e447418d499f"}, - {file = "matplotlib-3.8.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:493e9f6aa5819156b58fce42b296ea31969f2aab71c5b680b4ea7a3cb5c07d94"}, - {file = "matplotlib-3.8.4.tar.gz", hash = "sha256:8aac397d5e9ec158960e31c381c5ffc52ddd52bd9a47717e2a694038167dffea"}, + {file = "matplotlib-3.9.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:063af8587fceeac13b0936c42a2b6c732c2ab1c98d38abc3337e430e1ff75e38"}, + {file = "matplotlib-3.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9a2fa6d899e17ddca6d6526cf6e7ba677738bf2a6a9590d702c277204a7c6152"}, + {file = "matplotlib-3.9.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:550cdda3adbd596078cca7d13ed50b77879104e2e46392dcd7c75259d8f00e85"}, + {file = "matplotlib-3.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76cce0f31b351e3551d1f3779420cf8f6ec0d4a8cf9c0237a3b549fd28eb4abb"}, + {file = "matplotlib-3.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c53aeb514ccbbcbab55a27f912d79ea30ab21ee0531ee2c09f13800efb272674"}, + {file = "matplotlib-3.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:a5be985db2596d761cdf0c2eaf52396f26e6a64ab46bd8cd810c48972349d1be"}, + {file = "matplotlib-3.9.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bd4f2831168afac55b881db82a7730992aa41c4f007f1913465fb182d6fb20c0"}, + {file = "matplotlib-3.9.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:290d304e59be2b33ef5c2d768d0237f5bd132986bdcc66f80bc9bcc300066a03"}, + {file = "matplotlib-3.9.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ff2e239c26be4f24bfa45860c20ffccd118d270c5b5d081fa4ea409b5469fcd"}, + {file = "matplotlib-3.9.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:af4001b7cae70f7eaacfb063db605280058246de590fa7874f00f62259f2df7e"}, + {file = "matplotlib-3.9.0.tar.gz", hash = "sha256:e6d29ea6c19e34b30fb7d88b7081f869a03014f66fe06d62cc77d5a6ea88ed7a"}, ] [[package]] @@ -1725,8 +1679,8 @@ requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" summary = "Python bindings for MPI" groups = ["default"] files = [ - {file = "mpi4py-3.1.6-cp39-cp39-win32.whl", hash = "sha256:e8bd3fd0056580b1aaa4966ab9e54566bf6d6b35ff94c0ee7ceba83d55d039ac"}, - {file = "mpi4py-3.1.6-cp39-cp39-win_amd64.whl", hash = "sha256:f9a35e23deadf7de9063523f19863957f379d0f13afc2b9787eafc9d570ab868"}, + {file = "mpi4py-3.1.6-cp311-cp311-win32.whl", hash = "sha256:33d16f85d827417fd451ae61c304a26f5a1c3e881d9555c58fc8d5c7ac171034"}, + {file = "mpi4py-3.1.6-cp311-cp311-win_amd64.whl", hash = "sha256:542fa0b3caa69fbb8f5e8ea60fea3414eef1444d93af28b4ee6486a3f8f27640"}, {file = "mpi4py-3.1.6.tar.gz", hash = "sha256:c8fa625e0f92b082ef955bfb52f19fa6691d29273d7d71135d295aa143dee6cb"}, ] @@ -1778,7 +1732,6 @@ dependencies = [ "beautifulsoup4", "bleach!=5.0.0", "defusedxml", - "importlib-metadata>=3.6; python_version < \"3.10\"", "jinja2>=3.0", "jupyter-core>=4.7", "jupyterlab-pygments", @@ -1859,24 +1812,23 @@ dependencies = [ "numpy", ] files = [ - {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-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.tar.gz", hash = "sha256:824881d0aacfde5bd982d6adedd8574259c85553781e7b83e0ce82b890bfa0ef"}, ] [[package]] name = "networkx" -version = "3.2.1" -requires_python = ">=3.9" +version = "3.3" +requires_python = ">=3.10" summary = "Python package for creating and manipulating graphs and networks" groups = ["default"] files = [ - {file = "networkx-3.2.1-py3-none-any.whl", hash = "sha256:f18c69adc97877c42332c170849c96cefa91881c99a7cb3e95b7c659ebdc1ec2"}, - {file = "networkx-3.2.1.tar.gz", hash = "sha256:9f1bb5cf3409bf324e0a722c20bdb4c20ee39bf1c30ce8ae499c8502b0b5e0c6"}, + {file = "networkx-3.3-py3-none-any.whl", hash = "sha256:28575580c6ebdaf4505b22c6256a2b9de86b316dc63ba9e93abde3d78dfdbcf2"}, + {file = "networkx-3.3.tar.gz", hash = "sha256:0c127d8b2f4865f59ae9cb8aafcd60b5c70f3241ebd66f7defad7c4ab90126c9"}, ] [[package]] @@ -1900,14 +1852,14 @@ requires_python = ">=3.9" summary = "Fundamental package for array computing in Python" groups = ["default"] files = [ - {file = "numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c"}, - {file = "numpy-1.26.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be"}, - {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764"}, - {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3"}, - {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd"}, - {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c"}, - {file = "numpy-1.26.4-cp39-cp39-win32.whl", hash = "sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6"}, - {file = "numpy-1.26.4-cp39-cp39-win_amd64.whl", hash = "sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea"}, + {file = "numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71"}, + {file = "numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef"}, + {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e"}, + {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5"}, + {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a"}, + {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a"}, + {file = "numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20"}, + {file = "numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2"}, {file = "numpy-1.26.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30"}, {file = "numpy-1.26.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c"}, {file = "numpy-1.26.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0"}, @@ -1916,7 +1868,7 @@ files = [ [[package]] name = "opencv-python" -version = "4.9.0.80" +version = "4.10.0.82" requires_python = ">=3.6" summary = "Wrapper package for OpenCV python bindings." groups = ["default"] @@ -1925,16 +1877,18 @@ dependencies = [ "numpy>=1.17.3; python_version >= \"3.8\"", "numpy>=1.19.3; python_version >= \"3.6\" and platform_system == \"Linux\" and platform_machine == \"aarch64\"", "numpy>=1.19.3; python_version >= \"3.9\"", - "numpy>=1.21.0; python_version <= \"3.9\" and platform_system == \"Darwin\" and platform_machine == \"arm64\"", + "numpy>=1.21.2; python_version >= \"3.10\"", + "numpy>=1.21.4; python_version >= \"3.10\" and platform_system == \"Darwin\"", + "numpy>=1.23.5; python_version >= \"3.11\"", ] files = [ - {file = "opencv-python-4.9.0.80.tar.gz", hash = "sha256:1a9f0e6267de3a1a1db0c54213d022c7c8b5b9ca4b580e80bdc58516c922c9e1"}, - {file = "opencv_python-4.9.0.80-cp37-abi3-macosx_10_16_x86_64.whl", hash = "sha256:7e5f7aa4486651a6ebfa8ed4b594b65bd2d2f41beeb4241a3e4b1b85acbbbadb"}, - {file = "opencv_python-4.9.0.80-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:71dfb9555ccccdd77305fc3dcca5897fbf0cf28b297c51ee55e079c065d812a3"}, - {file = "opencv_python-4.9.0.80-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b34a52e9da36dda8c151c6394aed602e4b17fa041df0b9f5b93ae10b0fcca2a"}, - {file = "opencv_python-4.9.0.80-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4088cab82b66a3b37ffc452976b14a3c599269c247895ae9ceb4066d8188a57"}, - {file = "opencv_python-4.9.0.80-cp37-abi3-win32.whl", hash = "sha256:dcf000c36dd1651118a2462257e3a9e76db789a78432e1f303c7bac54f63ef6c"}, - {file = "opencv_python-4.9.0.80-cp37-abi3-win_amd64.whl", hash = "sha256:3f16f08e02b2a2da44259c7cc712e779eff1dd8b55fdb0323e8cab09548086c0"}, + {file = "opencv-python-4.10.0.82.tar.gz", hash = "sha256:dbc021eaa310c4145c47cd648cb973db69bb5780d6e635386cd53d3ea76bd2d5"}, + {file = "opencv_python-4.10.0.82-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:5f78652339957ec24b80a782becfb32f822d2008a865512121fad8c3ce233e9a"}, + {file = "opencv_python-4.10.0.82-cp37-abi3-macosx_12_0_x86_64.whl", hash = "sha256:e6be19a0615aa8c4e0d34e0c7b133e26e386f4b7e9b557b69479104ab2c133ec"}, + {file = "opencv_python-4.10.0.82-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b49e530f7fd86f671514b39ffacdf5d14ceb073bc79d0de46bbb6b0cad78eaf"}, + {file = "opencv_python-4.10.0.82-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:955c5ce8ac90c9e4636ad7f5c0d9c75b80abbe347182cfd09b0e3eec6e50472c"}, + {file = "opencv_python-4.10.0.82-cp37-abi3-win32.whl", hash = "sha256:ff54adc9e4daaf438e669664af08bec4a268c7b7356079338b8e4fae03810f2c"}, + {file = "opencv_python-4.10.0.82-cp37-abi3-win_amd64.whl", hash = "sha256:2e3c2557b176f1e528417520a52c0600a92c1bb1c359f3df8e6411ab4293f065"}, ] [[package]] @@ -1980,20 +1934,20 @@ requires_python = ">=3.9" summary = "Powerful data structures for data analysis, time series, and statistics" groups = ["default"] dependencies = [ - "numpy>=1.22.4; python_version < \"3.11\"", + "numpy>=1.23.2; python_version == \"3.11\"", "python-dateutil>=2.8.2", "pytz>=2020.1", "tzdata>=2022.7", ] files = [ - {file = "pandas-2.2.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0ca6377b8fca51815f382bd0b697a0814c8bda55115678cbc94c30aacbb6eff2"}, - {file = "pandas-2.2.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9057e6aa78a584bc93a13f0a9bf7e753a5e9770a30b4d758b8d5f2a62a9433cd"}, - {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:001910ad31abc7bf06f49dcc903755d2f7f3a9186c0c040b827e522e9cef0863"}, - {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66b479b0bd07204e37583c191535505410daa8df638fd8e75ae1b383851fe921"}, - {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a77e9d1c386196879aa5eb712e77461aaee433e54c68cf253053a73b7e49c33a"}, - {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:92fd6b027924a7e178ac202cfbe25e53368db90d56872d20ffae94b96c7acc57"}, - {file = "pandas-2.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:640cef9aa381b60e296db324337a554aeeb883ead99dc8f6c18e81a93942f5f4"}, - {file = "pandas-2.2.2.tar.gz", hash = "sha256:9e79019aba43cb4fda9e4d983f8e88ca0373adbb697ae9c6c43.11.218de28b54"}, + {file = "pandas-2.2.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:696039430f7a562b74fa45f540aca068ea85fa34c244d0deee539cb6d70aa288"}, + {file = "pandas-2.2.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8e90497254aacacbc4ea6ae5e7a8cd75629d6ad2b30025a4a8b09aa4faf55151"}, + {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58b84b91b0b9f4bafac2a0ac55002280c094dfc6402402332c0913a59654ab2b"}, + {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2123dc9ad6a814bcdea0f099885276b31b24f7edf40f6cdbc0912672e22eee"}, + {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:2925720037f06e89af896c70bca73459d7e6a4be96f9de79e2d440bd499fe0db"}, + {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0cace394b6ea70c01ca1595f839cf193df35d1575986e484ad35c4aeae7266c1"}, + {file = "pandas-2.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:873d13d177501a28b2756375d59816c365e42ed8417b41665f346289adc68d24"}, + {file = "pandas-2.2.2.tar.gz", hash = "sha256:9e79019aba43cb4fda9e4d983f8e88ca0373adbb697ae9c6c43093218de28b54"}, ] [[package]] @@ -2063,7 +2017,7 @@ name = "pexpect" version = "4.9.0" summary = "Pexpect allows easy control of interactive console applications." groups = ["default"] -marker = "sys_platform != \"win32\"" +marker = "sys_platform != \"win32\" and sys_platform != \"emscripten\"" dependencies = [ "ptyprocess>=0.5", ] @@ -2079,17 +2033,17 @@ requires_python = ">=3.8" summary = "Python Imaging Library (Fork)" groups = ["default"] files = [ - {file = "pillow-10.3.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:2ed854e716a89b1afcedea551cd85f2eb2a807613752ab997b9974aaa0d56936"}, - {file = "pillow-10.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:dc1a390a82755a8c26c9964d457d4c9cbec5405896cba94cf51f36ea0d855002"}, - {file = "pillow-10.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4203efca580f0dd6f882ca211f923168548f7ba334c189e9eab1178ab840bf60"}, - {file = "pillow-10.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3102045a10945173d38336f6e71a8dc71bcaeed55c3123ad4af82c52807b9375"}, - {file = "pillow-10.3.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:6fb1b30043271ec92dc65f6d9f0b7a830c210b8a96423074b15c7bc999975f57"}, - {file = "pillow-10.3.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:1dfc94946bc60ea375cc39cff0b8da6c7e5f8fcdc1d946beb8da5c216156ddd8"}, - {file = "pillow-10.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b09b86b27a064c9624d0a6c54da01c1beaf5b6cadfa609cf63789b1d08a797b9"}, - {file = "pillow-10.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d3b2348a78bc939b4fed6552abfd2e7988e0f81443ef3911a4b8498ca084f6eb"}, - {file = "pillow-10.3.0-cp39-cp39-win32.whl", hash = "sha256:45ebc7b45406febf07fef35d856f0293a92e7417ae7933207e90bf9090b70572"}, - {file = "pillow-10.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:0ba26351b137ca4e0db0342d5d00d2e355eb29372c05afd544ebf47c0956ffeb"}, - {file = "pillow-10.3.0-cp39-cp39-win_arm64.whl", hash = "sha256:50fd3f6b26e3441ae07b7c979309638b72abc1a25da31a81a7fbd9495713ef4f"}, + {file = "pillow-10.3.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:5f77cf66e96ae734717d341c145c5949c63180842a545c47a0ce7ae52ca83795"}, + {file = "pillow-10.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e4b878386c4bf293578b48fc570b84ecfe477d3b77ba39a6e87150af77f40c57"}, + {file = "pillow-10.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdcbb4068117dfd9ce0138d068ac512843c52295ed996ae6dd1faf537b6dbc27"}, + {file = "pillow-10.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9797a6c8fe16f25749b371c02e2ade0efb51155e767a971c61734b1bf6293994"}, + {file = "pillow-10.3.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:9e91179a242bbc99be65e139e30690e081fe6cb91a8e77faf4c409653de39451"}, + {file = "pillow-10.3.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:1b87bd9d81d179bd8ab871603bd80d8645729939f90b71e62914e816a76fc6bd"}, + {file = "pillow-10.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:81d09caa7b27ef4e61cb7d8fbf1714f5aec1c6b6c5270ee53504981e6e9121ad"}, + {file = "pillow-10.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:048ad577748b9fa4a99a0548c64f2cb8d672d5bf2e643a739ac8faff1164238c"}, + {file = "pillow-10.3.0-cp311-cp311-win32.whl", hash = "sha256:7161ec49ef0800947dc5570f86568a7bb36fa97dd09e9827dc02b718c5643f09"}, + {file = "pillow-10.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:8eb0908e954d093b02a543dc963984d6e99ad2b5e36503d8a0aaf040505f747d"}, + {file = "pillow-10.3.0-cp311-cp311-win_arm64.whl", hash = "sha256:4e6f7d1c414191c1199f8996d3f2282b9ebea0945693fb67392c75a3a320941f"}, {file = "pillow-10.3.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:6b02471b72526ab8a18c39cb7967b72d194ec53c1fd0a70b050565a0f366d355"}, {file = "pillow-10.3.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8ab74c06ffdab957d7670c2a5a6e1a70181cd10b727cd788c4dd9005b6a8acd9"}, {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:048eeade4c33fdf7e08da40ef402e748df113fd0b4584e32c4af74fe78baaeb2"}, @@ -2135,13 +2089,13 @@ files = [ [[package]] name = "platformdirs" -version = "4.2.1" +version = "4.2.2" requires_python = ">=3.8" summary = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." groups = ["default"] files = [ - {file = "platformdirs-4.2.1-py3-none-any.whl", hash = "sha256:17d5a1161b3fd67b390023cb2d3b026bbd40abde6fdb052dfbd3a29c3ba22ee1"}, - {file = "platformdirs-4.2.1.tar.gz", hash = "sha256:031cd18d4ec63ec53e82dceaac0417d218a6863f7745dfcc9efe7793b7039bdf"}, + {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"}, + {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"}, ] [[package]] @@ -2178,7 +2132,7 @@ files = [ [[package]] name = "prompt-toolkit" -version = "3.0.43" +version = "3.0.46" requires_python = ">=3.7.0" summary = "Library for building powerful interactive command lines in Python" groups = ["default"] @@ -2186,8 +2140,8 @@ dependencies = [ "wcwidth", ] files = [ - {file = "prompt_toolkit-3.0.43-py3-none-any.whl", hash = "sha256:a11a29cb3bf0a28a387fe5122cdb649816a957cd9261dcedf8c9f1fef33eacf6"}, - {file = "prompt_toolkit-3.0.43.tar.gz", hash = "sha256:3527b7af26106cbc65a040bcc84839a3566ec1b051bb0bfe953631e704b0ff7d"}, + {file = "prompt_toolkit-3.0.46-py3-none-any.whl", hash = "sha256:45abe60a8300f3c618b23c16c4bb98c6fc80af8ce8b17c7ae92db48db3ee63c1"}, + {file = "prompt_toolkit-3.0.46.tar.gz", hash = "sha256:869c50d682152336e23c4db7f74667639b5047494202ffe7670817053fd57795"}, ] [[package]] @@ -2211,7 +2165,7 @@ name = "ptyprocess" version = "0.7.0" summary = "Run a subprocess in a pseudo terminal" groups = ["default"] -marker = "sys_platform != \"win32\" or os_name != \"nt\"" +marker = "sys_platform != \"win32\" and sys_platform != \"emscripten\" or os_name != \"nt\"" files = [ {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, @@ -2259,12 +2213,11 @@ dependencies = [ "numpy<2.0,>=1.20", ] files = [ - {file = "pyFFTW-0.13.1-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:c05b7ddec15070c72704d0ad5e632222b0775327ab6890af288a2a36eb15043e"}, - {file = "pyFFTW-0.13.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d872744959a4df7307b32fbeb288137ed242cf24034a791abb3ee901c8c1bf3e"}, - {file = "pyFFTW-0.13.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9a67d3109fb2c549ee95c8dbbcf07020400672cbfb48f79c3f88b615a1c95598"}, - {file = "pyFFTW-0.13.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d799b442815f56b821b615ee3e8960ab9f3bc1e7a4bcbcf5813b847005875b47"}, - {file = "pyFFTW-0.13.1-cp39-cp39-win32.whl", hash = "sha256:18ac39489848a10785ddd998df242f58d5f75017c414297fee470bfdec202168"}, - {file = "pyFFTW-0.13.1-cp39-cp39-win_amd64.whl", hash = "sha256:af58834b496b473419c4dcd47e01657d1d066e9c23198e1cb82eba82356c9097"}, + {file = "pyFFTW-0.13.1-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:dee09034f5d0464b828a8fd37da46776fc740e31870dd9e5d36d15c34f72102c"}, + {file = "pyFFTW-0.13.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b5ee9b582befebcdb29a8d73e03e70c96ecd53625c9c72eb753a967cf2979b4"}, + {file = "pyFFTW-0.13.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8bfce5e4190b07af8dfca4bfeef7481ea61148744bd92d4df944357ee3939a83"}, + {file = "pyFFTW-0.13.1-cp311-cp311-win32.whl", hash = "sha256:51675f9bc7536a3ac9893d8277a3af000ce4207ad978db219bdc715662ce1bcb"}, + {file = "pyFFTW-0.13.1-cp311-cp311-win_amd64.whl", hash = "sha256:11c280b8062a201cc6aab6641b7a4f4d45d8e5f5f2d9ba2c1514c9510e0c5f32"}, {file = "pyFFTW-0.13.1-pp38-pypy38_pp73-macosx_10_13_x86_64.whl", hash = "sha256:415040bcadcad887bf112d2db0ff4b13e808d1aad7fddcd60acef20e0e11c84a"}, {file = "pyFFTW-0.13.1-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e68503033864f9650f480624a0830b10367ad446cb7b5bef33d0d1c596519446"}, {file = "pyFFTW-0.13.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:7ccfa55d50a5464890a9486b835965e29f9df4e9d3e856cc51c9d2a34964e4a8"}, @@ -2284,24 +2237,22 @@ files = [ [[package]] name = "pylint" -version = "3.2.0" +version = "3.2.2" requires_python = ">=3.8.0" summary = "python code static checker" groups = ["default"] dependencies = [ - "astroid<=3.3.0-dev0,>=3.2.0", + "astroid<=3.3.0-dev0,>=3.2.2", "colorama>=0.4.5; sys_platform == \"win32\"", - "dill>=0.2; python_version < \"3.11\"", + "dill>=0.3.6; python_version >= \"3.11\"", "isort!=5.13.0,<6,>=4.2.5", "mccabe<0.8,>=0.6", "platformdirs>=2.2.0", - "tomli>=1.1.0; python_version < \"3.11\"", "tomlkit>=0.10.1", - "typing-extensions>=3.10.0; python_version < \"3.10\"", ] files = [ - {file = "pylint-3.2.0-py3-none-any.whl", hash = "sha256:9f20c05398520474dac03d7abb21ab93181f91d4c110e1e0b32bc0d016c34fa4"}, - {file = "pylint-3.2.0.tar.gz", hash = "sha256:ad8baf17c8ea5502f23ae38d7c1b7ec78bd865ce34af9a0b986282e2611a8ff2"}, + {file = "pylint-3.2.2-py3-none-any.whl", hash = "sha256:3f8788ab20bb8383e06dd2233e50f8e08949cfd9574804564803441a4946eab4"}, + {file = "pylint-3.2.2.tar.gz", hash = "sha256:d068ca1dfd735fb92a07d33cb8f288adc0f6bc1287a139ca2425366f7cbe38f8"}, ] [[package]] @@ -2317,72 +2268,70 @@ files = [ [[package]] name = "pyside6" -version = "6.7.0" +version = "6.7.1" requires_python = "<3.13,>=3.9" summary = "Python bindings for the Qt cross-platform application and UI framework" groups = ["default"] dependencies = [ - "PySide6-Addons==6.7.0", - "PySide6-Essentials==6.7.0", - "shiboken6==6.7.0", + "PySide6-Addons==6.7.1", + "PySide6-Essentials==6.7.1", + "shiboken6==6.7.1", ] files = [ - {file = "PySide6-6.7.0-cp39-abi3-macosx_11_0_universal2.whl", hash = "sha256:4e2f4ddb1d342ffd12558101c30095338da0db34c203e0d17de03e45c7762286"}, - {file = "PySide6-6.7.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:64d6b5751f8d04aedc5e8ea53ddc6613b392919056511a988b790fd3a00f7d01"}, - {file = "PySide6-6.7.0-cp39-abi3-manylinux_2_31_aarch64.whl", hash = "sha256:edc541e37dcf41626a30e82bcdb061592a45424c0558f26523ac5140ec34b448"}, - {file = "PySide6-6.7.0-cp39-abi3-win_amd64.whl", hash = "sha256:190fb017b7f144b375f1a06b518b1241a78c15e7a073708a255d229687bc905a"}, + {file = "PySide6-6.7.1-cp39-abi3-macosx_11_0_universal2.whl", hash = "sha256:fb50aad5023ca6f4a4e62079aa57258f72cff65e33100849dab85087017f3041"}, + {file = "PySide6-6.7.1-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:45a539286e3a8afafd3ebc6b3391d587ce86293564ecba3a994e335dc68fe599"}, + {file = "PySide6-6.7.1-cp39-abi3-manylinux_2_31_aarch64.whl", hash = "sha256:98ac591d8b54844f366fe806e92437487f31250b24aaf647bd192f958e4d2afb"}, + {file = "PySide6-6.7.1-cp39-abi3-win_amd64.whl", hash = "sha256:ea088381d99b53950c87510fd42801a3b6e21d15e7a9ff6c69f96a34a9030fbc"}, ] [[package]] name = "pyside6-addons" -version = "6.7.0" +version = "6.7.1" requires_python = "<3.13,>=3.9" summary = "Python bindings for the Qt cross-platform application and UI framework (Addons)" groups = ["default"] dependencies = [ - "PySide6-Essentials==6.7.0", - "shiboken6==6.7.0", + "PySide6-Essentials==6.7.1", + "shiboken6==6.7.1", ] files = [ - {file = "PySide6_Addons-6.7.0-cp39-abi3-macosx_11_0_universal2.whl", hash = "sha256:a87645f0f2dcb2ebe4035ae53ccf329fe503ed394c9f0830de3bfc7205c14f63"}, - {file = "PySide6_Addons-6.7.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:888df2a916f1d59984e2f351e7d5850da0a04103e39501eb7d6a9b150e7431e6"}, - {file = "PySide6_Addons-6.7.0-cp39-abi3-manylinux_2_31_aarch64.whl", hash = "sha256:0716410d3591c144be2fda3a6443fe13a7a88b4d91b45b05fd955782ac19613d"}, - {file = "PySide6_Addons-6.7.0-cp39-abi3-win_amd64.whl", hash = "sha256:d1712336b33b5a5784bbce4c9b1af984057ff1dc4fafbaf241c090ee9bc3788d"}, + {file = "PySide6_Addons-6.7.1-cp39-abi3-macosx_11_0_universal2.whl", hash = "sha256:f360baa915fbd0be9beb3439e937d8accbaa56dd03c4b95f4c869d679343eb3e"}, + {file = "PySide6_Addons-6.7.1-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:e9fbfc31e0de5075ee98d92cdbd7ccd274e4ac25100c890ae5bddfc8804a304c"}, + {file = "PySide6_Addons-6.7.1-cp39-abi3-manylinux_2_31_aarch64.whl", hash = "sha256:e7de1210580217cf605c5ac8cb0f21ebcc51b261e6f9c90908eb596991607789"}, + {file = "PySide6_Addons-6.7.1-cp39-abi3-win_amd64.whl", hash = "sha256:58c91a27aba1190f48200d7ec6b12422b955b1ca3f68e82fc97081561d77ba4f"}, ] [[package]] name = "pyside6-essentials" -version = "6.7.0" +version = "6.7.1" requires_python = "<3.13,>=3.9" summary = "Python bindings for the Qt cross-platform application and UI framework (Essentials)" groups = ["default"] dependencies = [ - "shiboken6==6.7.0", + "shiboken6==6.7.1", ] files = [ - {file = "PySide6_Essentials-6.7.0-cp39-abi3-macosx_11_0_universal2.whl", hash = "sha256:d229dae03b1825cc93deac785898b71576957d9fb97b1007897f30604ca5ecd1"}, - {file = "PySide6_Essentials-6.7.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:e013238fe40596b804068e34ac173514943a41bf8e5fbb4edfc7c30b00431bd5"}, - {file = "PySide6_Essentials-6.7.0-cp39-abi3-manylinux_2_31_aarch64.whl", hash = "sha256:412db37d56982c1ad1e6536daaefe760177a9ab897ae147b926a7d6c8befcdd4"}, - {file = "PySide6_Essentials-6.7.0-cp39-abi3-win_amd64.whl", hash = "sha256:8489bd692380f79455955101194bfcf0cd6444825a1ef198907b4de1f976d8b4"}, + {file = "PySide6_Essentials-6.7.1-cp39-abi3-macosx_11_0_universal2.whl", hash = "sha256:a527ec6d36533ad1ef04209b01d3d3d0286e0caaf26ec0fb0db601abbe738aac"}, + {file = "PySide6_Essentials-6.7.1-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:b2d70dc4376c1b1ff5b2988a428a0ed5a889173ce9a0b56803468063d0ef7c75"}, + {file = "PySide6_Essentials-6.7.1-cp39-abi3-manylinux_2_31_aarch64.whl", hash = "sha256:b1cc7eadccd2a3a6cf4bc789b874bd316714b8c5191ade4a710b952bd0d2cc81"}, + {file = "PySide6_Essentials-6.7.1-cp39-abi3-win_amd64.whl", hash = "sha256:9a42670f1288759abef1bb1ce948f05acc2cc07a88df14e06467a9c43405b616"}, ] [[package]] name = "pytest" -version = "8.2.0" +version = "8.2.2" requires_python = ">=3.8" summary = "pytest: simple powerful testing with Python" groups = ["default"] dependencies = [ "colorama; sys_platform == \"win32\"", - "exceptiongroup>=1.0.0rc8; python_version < \"3.11\"", "iniconfig", "packaging", "pluggy<2.0,>=1.5", - "tomli>=1; python_version < \"3.11\"", ] files = [ - {file = "pytest-8.2.0-py3-none-any.whl", hash = "sha256:1733f0620f6cda4095bbf0d9ff8022486e91892245bb9e7d5542c018f612f233"}, - {file = "pytest-8.2.0.tar.gz", hash = "sha256:d507d4482197eac0ba2bae2e9babf0672eb333017bcedaa5fb1a3d42c1174b3f"}, + {file = "pytest-8.2.2-py3-none-any.whl", hash = "sha256:c434598117762e2bd304e526244f67bf66bbd7b5d6cf22138be51ff661980343"}, + {file = "pytest-8.2.2.tar.gz", hash = "sha256:de4bb8104e201939ccdc688b27a89a7be2079b22e2bd2b07f806b6ba71117977"}, ] [[package]] @@ -2402,7 +2351,7 @@ files = [ [[package]] name = "pytest-asyncio" -version = "0.23.6" +version = "0.23.7" requires_python = ">=3.8" summary = "Pytest support for asyncio" groups = ["default"] @@ -2410,8 +2359,8 @@ dependencies = [ "pytest<9,>=7.0.0", ] files = [ - {file = "pytest-asyncio-0.23.6.tar.gz", hash = "sha256:ffe523a89c1c222598c76856e76852b787504ddb72dd5d9b6617ffa8aa2cde5f"}, - {file = "pytest_asyncio-0.23.6-py3-none-any.whl", hash = "sha256:68516fdd1018ac57b846c9846b954f0393b26f094764a28c955eabb0536a4e8a"}, + {file = "pytest_asyncio-0.23.7-py3-none-any.whl", hash = "sha256:009b48127fbe44518a547bddd25611551b0e43ccdbf1e67d12479f569832c20b"}, + {file = "pytest_asyncio-0.23.7.tar.gz", hash = "sha256:5f5c72948f4c49e7db4f29f2521d4031f1c27f86e57b046126654083d4770268"}, ] [[package]] @@ -2455,7 +2404,7 @@ files = [ [[package]] name = "pythran" -version = "0.15.0" +version = "0.16.1" requires_python = ">=3.7" summary = "Ahead of Time compiler for numeric kernels" groups = ["default"] @@ -2467,8 +2416,7 @@ dependencies = [ "setuptools", ] files = [ - {file = "pythran-0.15.0-py3-none-any.whl", hash = "sha256:74d52f9b5fc4d307a48c7ee741dff3bcb55014f91b6fb851a22cd8f381d404d1"}, - {file = "pythran-0.15.0.tar.gz", hash = "sha256:f9bc61bcb96df2cd4b578abc5a62dfb3fbb0b0ef02c264513dfb615c5f87871c"}, + {file = "pythran-0.16.1.tar.gz", hash = "sha256:861748c0f9c7d422b32724b114b3817d818ed4eab86c09781aa0a3f7ceabb7f9"}, ] [[package]] @@ -2488,8 +2436,9 @@ summary = "Python for Window Extensions" groups = ["default"] marker = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\"" files = [ - {file = "pywin32-306-cp39-cp39-win32.whl", hash = "sha256:e25fd5b485b55ac9c057f67d94bc203f3f6595078d1fb3b458c9c28b7153a802"}, - {file = "pywin32-306-cp39-cp39-win_amd64.whl", hash = "sha256:39b61c15272833b5c3.11.2989999dcae836b1eed650252ab1b7bfbe1d59f30f4"}, + {file = "pywin32-306-cp311-cp311-win32.whl", hash = "sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407"}, + {file = "pywin32-306-cp311-cp311-win_amd64.whl", hash = "sha256:a7639f51c184c0272e93f244eb24dafca9b1855707d94c192d4a0b4c01e1100e"}, + {file = "pywin32-306-cp311-cp311-win_arm64.whl", hash = "sha256:70dba0c913d19f942a2db25217d9a1b726c278f483a919f1abfed79c9cf64d3a"}, ] [[package]] @@ -2500,7 +2449,7 @@ summary = "Pseudo terminal support for Windows from Python." groups = ["default"] marker = "os_name == \"nt\"" files = [ - {file = "pywinpty-2.0.13-cp39-none-win_amd64.whl", hash = "sha256:71cb613a9ee24174730ac7ae439fd179ca34ccb8c5349e8d7b72ab5dea2c6f4b"}, + {file = "pywinpty-2.0.13-cp311-none-win_amd64.whl", hash = "sha256:b96fb14698db1284db84ca38c79f15b4cfdc3172065b5137383910567591fa99"}, {file = "pywinpty-2.0.13.tar.gz", hash = "sha256:c34e32351a3313ddd0d7da23d27f835c860d32fe4ac814d372a3ea9594f41dde"}, ] @@ -2511,14 +2460,14 @@ requires_python = ">=3.6" summary = "YAML parser and emitter for Python" groups = ["default"] files = [ - {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, - {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, - {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, - {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, - {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, + {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, + {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, ] @@ -2532,17 +2481,18 @@ dependencies = [ "cffi; implementation_name == \"pypy\"", ] files = [ - {file = "pyzmq-26.0.3-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:2ed8357f4c6e0daa4f3baf31832df8a33334e0fe5b020a61bc8b345a3db7a606"}, - {file = "pyzmq-26.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c1c8f2a2ca45292084c75bb6d3a25545cff0ed931ed228d3a1810ae3758f975f"}, - {file = "pyzmq-26.0.3-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:b63731993cdddcc8e087c64e9cf003f909262b359110070183d7f3025d1c56b5"}, - {file = "pyzmq-26.0.3-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b3cd31f859b662ac5d7f4226ec7d8bd60384fa037fc02aee6ff0b53ba29a3ba8"}, - {file = "pyzmq-26.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:115f8359402fa527cf47708d6f8a0f8234f0e9ca0cab7c18c9c189c194dbf620"}, - {file = "pyzmq-26.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:715bdf952b9533ba13dfcf1f431a8f49e63cecc31d91d007bc1deb914f47d0e4"}, - {file = "pyzmq-26.0.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:e1258c639e00bf5e8a522fec6c3eaa3e30cf1c23a2f21a586be7e04d50c9acab"}, - {file = "pyzmq-26.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:15c59e780be8f30a60816a9adab900c12a58d79c1ac742b4a8df044ab2a6d920"}, - {file = "pyzmq-26.0.3-cp39-cp39-win32.whl", hash = "sha256:d0cdde3c78d8ab5b46595054e5def32a755fc028685add5ddc7403e9f6de9879"}, - {file = "pyzmq-26.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:ce828058d482ef860746bf532822842e0ff484e27f540ef5c813d516dd8896d2"}, - {file = "pyzmq-26.0.3-cp39-cp39-win_arm64.whl", hash = "sha256:788f15721c64109cf720791714dc14afd0f449d63f3a5487724f024345067381"}, + {file = "pyzmq-26.0.3-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:a72a84570f84c374b4c287183debc776dc319d3e8ce6b6a0041ce2e400de3f32"}, + {file = "pyzmq-26.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7ca684ee649b55fd8f378127ac8462fb6c85f251c2fb027eb3c887e8ee347bcd"}, + {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e222562dc0f38571c8b1ffdae9d7adb866363134299264a1958d077800b193b7"}, + {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f17cde1db0754c35a91ac00b22b25c11da6eec5746431d6e5092f0cd31a3fea9"}, + {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b7c0c0b3244bb2275abe255d4a30c050d541c6cb18b870975553f1fb6f37527"}, + {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:ac97a21de3712afe6a6c071abfad40a6224fd14fa6ff0ff8d0c6e6cd4e2f807a"}, + {file = "pyzmq-26.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:88b88282e55fa39dd556d7fc04160bcf39dea015f78e0cecec8ff4f06c1fc2b5"}, + {file = "pyzmq-26.0.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:72b67f966b57dbd18dcc7efbc1c7fc9f5f983e572db1877081f075004614fcdd"}, + {file = "pyzmq-26.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f4b6cecbbf3b7380f3b61de3a7b93cb721125dc125c854c14ddc91225ba52f83"}, + {file = "pyzmq-26.0.3-cp311-cp311-win32.whl", hash = "sha256:eed56b6a39216d31ff8cd2f1d048b5bf1700e4b32a01b14379c3b6dde9ce3aa3"}, + {file = "pyzmq-26.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:3191d312c73e3cfd0f0afdf51df8405aafeb0bad71e7ed8f68b24b63c4f36500"}, + {file = "pyzmq-26.0.3-cp311-cp311-win_arm64.whl", hash = "sha256:b6907da3017ef55139cf0e417c5123a84c7332520e73a6902ff1f79046cd3b94"}, {file = "pyzmq-26.0.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2c18645ef6294d99b256806e34653e86236eb266278c8ec8112622b61db255de"}, {file = "pyzmq-26.0.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7e6bc96ebe49604df3ec2c6389cc3876cabe475e6bfc84ced1bf4e630662cb35"}, {file = "pyzmq-26.0.3-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:971e8990c5cc4ddcff26e149398fc7b0f6a042306e82500f5e8db3b10ce69f84"}, @@ -2584,8 +2534,8 @@ files = [ [[package]] name = "requests" -version = "2.31.0" -requires_python = ">=3.7" +version = "2.32.3" +requires_python = ">=3.8" summary = "Python HTTP for Humans." groups = ["default"] dependencies = [ @@ -2595,8 +2545,8 @@ dependencies = [ "urllib3<3,>=1.21.1", ] files = [ - {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, - {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, + {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, + {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, ] [[package]] @@ -2646,19 +2596,19 @@ requires_python = ">=3.8" summary = "Python bindings to Rust's persistent data structures (rpds)" groups = ["default"] files = [ - {file = "rpds_py-0.18.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:19e515b78c3fc1039dd7da0a33c28c3154458f947f4dc198d3c72db2b6b5dc93"}, - {file = "rpds_py-0.18.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a7b28c5b066bca9a4eb4e2f2663012debe680f097979d880657f00e1c30875a0"}, - {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:673fdbbf668dd958eff750e500495ef3f611e2ecc209464f661bc82e9838991e"}, - {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d960de62227635d2e61068f42a6cb6aae91a7fe00fca0e3aeed17667c8a34611"}, - {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:352a88dc7892f1da66b6027af06a2e7e5d53fe05924cc2cfc56495b586a10b72"}, - {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4e0ee01ad8260184db21468a6e1c37afa0529acc12c3a697ee498d3c2c4dcaf3"}, - {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4c39ad2f512b4041343ea3c7894339e4ca7839ac38ca83d68a832fc8b3748ab"}, - {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aaa71ee43a703c321906813bb252f69524f02aa05bf4eec85f0c41d5d62d0f4c"}, - {file = "rpds_py-0.18.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:6cd8098517c64a85e790657e7b1e509b9fe07487fd358e19431cb120f7d96338"}, - {file = "rpds_py-0.18.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:4adec039b8e2928983f885c53b7cc4cda8965b62b6596501a0308d2703f8af1b"}, - {file = "rpds_py-0.18.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:32b7daaa3e9389db3695964ce8e566e3413b0c43e3394c05e4b243a4cd7bef26"}, - {file = "rpds_py-0.18.1-cp39-none-win32.whl", hash = "sha256:2625f03b105328729f9450c8badda34d5243231eef6535f80064d57035738360"}, - {file = "rpds_py-0.18.1-cp39-none-win_amd64.whl", hash = "sha256:bf18932d0003c8c4d51a39f244231986ab23ee057d235a12b2684ea26a353590"}, + {file = "rpds_py-0.18.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:6b5ff7e1d63a8281654b5e2896d7f08799378e594f09cf3674e832ecaf396ce8"}, + {file = "rpds_py-0.18.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8927638a4d4137a289e41d0fd631551e89fa346d6dbcfc31ad627557d03ceb6d"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:154bf5c93d79558b44e5b50cc354aa0459e518e83677791e6adb0b039b7aa6a7"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:07f2139741e5deb2c5154a7b9629bc5aa48c766b643c1a6750d16f865a82c5fc"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c7672e9fba7425f79019db9945b16e308ed8bc89348c23d955c8c0540da0a07"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:489bdfe1abd0406eba6b3bb4fdc87c7fa40f1031de073d0cfb744634cc8fa261"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c20f05e8e3d4fc76875fc9cb8cf24b90a63f5a1b4c5b9273f0e8225e169b100"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:967342e045564cef76dfcf1edb700b1e20838d83b1aa02ab313e6a497cf923b8"}, + {file = "rpds_py-0.18.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2cc7c1a47f3a63282ab0f422d90ddac4aa3034e39fc66a559ab93041e6505da7"}, + {file = "rpds_py-0.18.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f7afbfee1157e0f9376c00bb232e80a60e59ed716e3211a80cb8506550671e6e"}, + {file = "rpds_py-0.18.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9e6934d70dc50f9f8ea47081ceafdec09245fd9f6032669c3b45705dea096b88"}, + {file = "rpds_py-0.18.1-cp311-none-win32.whl", hash = "sha256:c69882964516dc143083d3795cb508e806b09fc3800fd0d4cddc1df6c36e76bb"}, + {file = "rpds_py-0.18.1-cp311-none-win_amd64.whl", hash = "sha256:70a838f7754483bcdc830444952fd89645569e7452e3226de4a613a4c1793fb2"}, {file = "rpds_py-0.18.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:cbfbea39ba64f5e53ae2915de36f130588bba71245b418060ec3330ebf85678e"}, {file = "rpds_py-0.18.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:a3d456ff2a6a4d2adcdf3c1c960a36f4fd2fec6e3b4902a42a384d17cf4e7a65"}, {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7700936ef9d006b7ef605dc53aa364da2de5a3aa65516a1f3ce73bf82ecfc7ae"}, @@ -2697,32 +2647,32 @@ files = [ [[package]] name = "scikit-image" -version = "0.22.0" -requires_python = ">=3.9" +version = "0.23.2" +requires_python = ">=3.10" summary = "Image processing in Python" groups = ["default"] dependencies = [ - "imageio>=2.27", - "lazy-loader>=0.3", + "imageio>=2.33", + "lazy-loader>=0.4", "networkx>=2.8", - "numpy>=1.22", + "numpy>=1.23", "packaging>=21", - "pillow>=9.0.1", - "scipy>=1.8", + "pillow>=9.1", + "scipy>=1.9", "tifffile>=2022.8.12", ] files = [ - {file = "scikit_image-0.22.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:22318b35044cfeeb63ee60c56fc62450e5fe516228138f1d06c7a26378248a86"}, - {file = "scikit_image-0.22.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:9e801c44a814afdadeabf4dffdffc23733e393767958b82319706f5fa3e1eaa9"}, - {file = "scikit_image-0.22.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c472a1fb3665ec5c00423684590631d95f9afcbc97f01407d348b821880b2cb3"}, - {file = "scikit_image-0.22.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b7a6c89e8d6252332121b58f50e1625c35f7d6a85489c0b6b7ee4f5155d547a"}, - {file = "scikit_image-0.22.0-cp39-cp39-win_amd64.whl", hash = "sha256:5071b8f6341bfb0737ab05c8ab4ac0261f9e25dbcc7b5d31e5ed230fd24a7929"}, - {file = "scikit_image-0.22.0.tar.gz", hash = "sha256:018d734df1d2da2719087d15f679d19285fce97cd37695103deadfaef2873236"}, + {file = "scikit_image-0.23.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ee83fdb1843ee938eabdfeb9498623282935ea30aa20dffc5d5d16698efb4b2a"}, + {file = "scikit_image-0.23.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:a158f50d3df4867bbd1c698520ede8bc493e430ad83f54ac1f0d8f57b328779b"}, + {file = "scikit_image-0.23.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55de3326be124334b89314e9e04c8971ad98d6681e11a243f71bfb85ef9554b0"}, + {file = "scikit_image-0.23.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fce619a6d84fe40c1208fa579b646e93ce13ef0afc3652a23e9782b2c183291a"}, + {file = "scikit_image-0.23.2-cp311-cp311-win_amd64.whl", hash = "sha256:ee65669aa586e110346f567ed5c92d1bd63799a19e951cb83da3f54b0caf7c52"}, + {file = "scikit_image-0.23.2.tar.gz", hash = "sha256:c9da4b2c3117e3e30364a3d14496ee5c72b09eb1a4ab1292b302416faa360590"}, ] [[package]] name = "scikit-learn" -version = "1.4.2" +version = "1.5.0" requires_python = ">=3.9" summary = "A set of python modules for machine learning and data mining" groups = ["default"] @@ -2730,20 +2680,20 @@ dependencies = [ "joblib>=1.2.0", "numpy>=1.19.5", "scipy>=1.6.0", - "threadpoolctl>=2.0.0", + "threadpoolctl>=3.1.0", ] files = [ - {file = "scikit-learn-1.4.2.tar.gz", hash = "sha256:daa1c471d95bad080c6e44b4946c9390a4842adc3082572c20e4f8884e39e959"}, - {file = "scikit_learn-1.4.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d9993d5e78a8148b1d0fdf5b15ed92452af5581734129998c26f481c46586d68"}, - {file = "scikit_learn-1.4.2-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:426d258fddac674fdf33f3cb2d54d26f49406e2599dbf9a32b4d1696091d4256"}, - {file = "scikit_learn-1.4.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5460a1a5b043ae5ae4596b3126a4ec33ccba1b51e7ca2c5d36dac2169f62ab1d"}, - {file = "scikit_learn-1.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49d64ef6cb8c093d883e5a36c4766548d974898d378e395ba41a806d0e824db8"}, - {file = "scikit_learn-1.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:c97a50b05c194be9146d61fe87dbf8eac62b203d9e87a3ccc6ae9aed2dfaf361"}, + {file = "scikit_learn-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2a65af2d8a6cce4e163a7951a4cfbfa7fceb2d5c013a4b593686c7f16445cf9d"}, + {file = "scikit_learn-1.5.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:4c0c56c3005f2ec1db3787aeaabefa96256580678cec783986836fc64f8ff622"}, + {file = "scikit_learn-1.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f77547165c00625551e5c250cefa3f03f2fc92c5e18668abd90bfc4be2e0bff"}, + {file = "scikit_learn-1.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:118a8d229a41158c9f90093e46b3737120a165181a1b58c03461447aa4657415"}, + {file = "scikit_learn-1.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:a03b09f9f7f09ffe8c5efffe2e9de1196c696d811be6798ad5eddf323c6f4d40"}, + {file = "scikit_learn-1.5.0.tar.gz", hash = "sha256:789e3db01c750ed6d496fa2db7d50637857b451e57bcae863bff707c1247bef7"}, ] [[package]] name = "scipy" -version = "1.13.0" +version = "1.13.1" requires_python = ">=3.9" summary = "Fundamental algorithms for scientific computing in Python" groups = ["default"] @@ -2751,13 +2701,13 @@ dependencies = [ "numpy<2.3,>=1.22.4", ] files = [ - {file = "scipy-1.13.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5407708195cb38d70fd2d6bb04b1b9dd5c92297d86e9f9daae1576bd9e06f602"}, - {file = "scipy-1.13.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:ac38c4c92951ac0f729c4c48c9e13eb3675d9986cc0c83943784d7390d540c78"}, - {file = "scipy-1.13.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09c74543c4fbeb67af6ce457f6a6a28e5d3739a87f62412e4a16e46f164f0ae5"}, - {file = "scipy-1.13.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28e286bf9ac422d6beb559bc61312c348ca9b0f0dae0d7c5afde7f722d6ea13d"}, - {file = "scipy-1.13.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:33fde20efc380bd23a78a4d26d59fc8704e9b5fd9b08841693eb46716ba13d86"}, - {file = "scipy-1.13.0-cp39-cp39-win_amd64.whl", hash = "sha256:45c08bec71d3546d606989ba6e7daa6f0992918171e2a6f7fbedfa7361c2de1e"}, - {file = "scipy-1.13.0.tar.gz", hash = "sha256:58569af537ea29d3f78e5abd18398459f195546bb3be23d16677fb26616cc11e"}, + {file = "scipy-1.13.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:27e52b09c0d3a1d5b63e1105f24177e544a222b43611aaf5bc44d4a0979e32f9"}, + {file = "scipy-1.13.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:54f430b00f0133e2224c3ba42b805bfd0086fe488835effa33fa291561932326"}, + {file = "scipy-1.13.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e89369d27f9e7b0884ae559a3a956e77c02114cc60a6058b4e5011572eea9299"}, + {file = "scipy-1.13.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a78b4b3345f1b6f68a763c6e25c0c9a23a9fd0f39f5f3d200efe8feda560a5fa"}, + {file = "scipy-1.13.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:45484bee6d65633752c490404513b9ef02475b4284c4cfab0ef946def50b3f59"}, + {file = "scipy-1.13.1-cp311-cp311-win_amd64.whl", hash = "sha256:5713f62f781eebd8d597eb3f88b8bf9274e79eeabf63afb4a737abc6c84ad37b"}, + {file = "scipy-1.13.1.tar.gz", hash = "sha256:095a87a0312b08dfd6a6155cbbd310a8c51800fc931b8c0b84003014b874ed3c"}, ] [[package]] @@ -2789,26 +2739,26 @@ files = [ [[package]] name = "setuptools" -version = "69.5.1" +version = "70.0.0" requires_python = ">=3.8" summary = "Easily download, build, install, upgrade, and uninstall Python packages" groups = ["default"] files = [ - {file = "setuptools-69.5.1-py3-none-any.whl", hash = "sha256:c636ac361bc47580504644275c9ad802c50415c7522212252c033bd15f301f32"}, - {file = "setuptools-69.5.1.tar.gz", hash = "sha256:6c1fccdac05a97e598fb0ae3bbed5904ccb317337a51139dcd51453611bbb987"}, + {file = "setuptools-70.0.0-py3-none-any.whl", hash = "sha256:54faa7f2e8d2d11bcd2c07bed282eef1046b5c080d1c32add737d7b5817b1ad4"}, + {file = "setuptools-70.0.0.tar.gz", hash = "sha256:f211a66637b8fa059bb28183da127d4e86396c991a942b028c6650d4319c3fd0"}, ] [[package]] name = "shiboken6" -version = "6.7.0" +version = "6.7.1" requires_python = "<3.13,>=3.9" summary = "Python/C++ bindings helper module" groups = ["default"] files = [ - {file = "shiboken6-6.7.0-cp39-abi3-macosx_11_0_universal2.whl", hash = "sha256:32c53afea91a3c9f85b1908e50a1f96974e4d78bc63ee8dafa346fc0707a9786"}, - {file = "shiboken6-6.7.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:7887ba7ecfddb09ee9966325c1e229a17f3f444b0257b77cb7838792287d3e05"}, - {file = "shiboken6-6.7.0-cp39-abi3-manylinux_2_31_aarch64.whl", hash = "sha256:5ac384f4f4c0bc5bdd7e6b9b1d36798c063107943a122ea6d123947321bcf315"}, - {file = "shiboken6-6.7.0-cp39-abi3-win_amd64.whl", hash = "sha256:1a65d4c046454ee78a2ce4d6c7268846a3bdff31f59d88638b9383f62938f4b8"}, + {file = "shiboken6-6.7.1-cp39-abi3-macosx_11_0_universal2.whl", hash = "sha256:80aa412a45d984592a865f95a6d0e39b70e41ef251d11a39880802454d9d87c8"}, + {file = "shiboken6-6.7.1-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:6322b7a6232fc93eac0b11489007734438ae1e6213429fd6d7521d04072c2f87"}, + {file = "shiboken6-6.7.1-cp39-abi3-manylinux_2_31_aarch64.whl", hash = "sha256:ec53bfcc4bb762bc845548410e17a09447837a3f20102efb4f91c12688648091"}, + {file = "shiboken6-6.7.1-cp39-abi3-win_amd64.whl", hash = "sha256:a023ac2dc24c9325dbd0698bb7c21057e2361e92a2e187009820433342c882a0"}, ] [[package]] @@ -2914,26 +2864,27 @@ dependencies = [ "scipy!=1.9.2,>=1.8", ] files = [ - {file = "statsmodels-0.14.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:201c3d00929c4a67cda1fe05b098c8dcf1b1eeefa88e80a8f963a844801ed59f"}, - {file = "statsmodels-0.14.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9edefa4ce08e40bc1d67d2f79bc686ee5e238e801312b5a029ee7786448c389a"}, - {file = "statsmodels-0.14.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29c78a7601fdae1aa32104c5ebff2e0b72c26f33e870e2f94ab1bcfd927ece9b"}, - {file = "statsmodels-0.14.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f36494df7c03d63168fccee5038a62f469469ed6a4dd6eaeb9338abedcd0d5f5"}, - {file = "statsmodels-0.14.2-cp39-cp39-win_amd64.whl", hash = "sha256:8875823bdd41806dc853333cc4e1b7ef9481bad2380a999e66ea42382cf2178d"}, + {file = "statsmodels-0.14.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:50fcb633987779e795142f51ba49fb27648d46e8a1382b32ebe8e503aaabaa9e"}, + {file = "statsmodels-0.14.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:876794068abfaeed41df71b7887000031ecf44fbfa6b50d53ccb12ebb4ab747a"}, + {file = "statsmodels-0.14.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7a91f6c4943de13e3ce2e20ee3b5d26d02bd42300616a421becd53756f5deb37"}, + {file = "statsmodels-0.14.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4864a1c4615c5ea5f2e3b078a75bdedc90dd9da210a37e0738e064b419eccee2"}, + {file = "statsmodels-0.14.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:afbd92410e0df06f3d8c4e7c0e2e71f63f4969531f280fb66059e2ecdb6e0415"}, + {file = "statsmodels-0.14.2-cp311-cp311-win_amd64.whl", hash = "sha256:8e004cfad0e46ce73fe3f3812010c746f0d4cfd48e307b45c14e9e360f3d2510"}, {file = "statsmodels-0.14.2.tar.gz", hash = "sha256:890550147ad3a81cda24f0ba1a5c4021adc1601080bd00e191ae7cd6feecd6ad"}, ] [[package]] name = "sympy" -version = "1.12" +version = "1.12.1" requires_python = ">=3.8" summary = "Computer algebra system (CAS) in Python" groups = ["default"] dependencies = [ - "mpmath>=0.19", + "mpmath<1.4.0,>=1.1.0", ] files = [ - {file = "sympy-1.12-py3-none-any.whl", hash = "sha256:c3588cd4295d0c0f603d0f2ae780587e64e2efeedb3521e46b9bb1d08d184fa5"}, - {file = "sympy-1.12.tar.gz", hash = "sha256:ebf595c8dac3e0fdc4152c51878b498396ec7f30e7a914d6071e674d49420fb8"}, + {file = "sympy-1.12.1-py3-none-any.whl", hash = "sha256:9b2cbc7f1a640289430e13d2a56f02f867a1da0190f2f99d8968c2f74da0e515"}, + {file = "sympy-1.12.1.tar.gz", hash = "sha256:2877b03f998cd8c08f07cd0de5b767119cd3ef40d09f41c30d722f6686b0fb88"}, ] [[package]] @@ -2964,7 +2915,7 @@ files = [ [[package]] name = "textual" -version = "0.60.0" +version = "0.65.1" requires_python = "<4.0,>=3.8" summary = "Modern Text User Interface framework" groups = ["default"] @@ -2974,8 +2925,8 @@ dependencies = [ "typing-extensions<5.0.0,>=4.4.0", ] files = [ - {file = "textual-0.60.0-py3-none-any.whl", hash = "sha256:be7870ed12014cf7a91ea9f96a3c49b1a52f93e0e76686a5fa276951d65867a7"}, - {file = "textual-0.60.0.tar.gz", hash = "sha256:5a9117d6fd48d105ba9671fe6eca8197d607fd2d20fe5405681621fc34b17cfe"}, + {file = "textual-0.65.1-py3-none-any.whl", hash = "sha256:12a2a00f9b5675577fffa0f71171be5cdd138c42460b7ee95b3182542ee25aa0"}, + {file = "textual-0.65.1.tar.gz", hash = "sha256:22b05430aa2c7f90adc38fb7458bdde9395ca90960063432ae1273510e35e682"}, ] [[package]] @@ -2991,7 +2942,7 @@ files = [ [[package]] name = "tifffile" -version = "2024.5.10" +version = "2024.5.22" requires_python = ">=3.9" summary = "Read and write TIFF files" groups = ["default"] @@ -2999,8 +2950,8 @@ dependencies = [ "numpy", ] files = [ - {file = "tifffile-2024.5.10-py3-none-any.whl", hash = "sha256:4154f091aa24d4e75bfad9ab2d5424a68c70e67b8220188066dc61946d4551bd"}, - {file = "tifffile-2024.5.10.tar.gz", hash = "sha256:aa1e1b12be952ab20717d6848bd6d4a5ee88d2aa319f1152bff4354ad728ec86"}, + {file = "tifffile-2024.5.22-py3-none-any.whl", hash = "sha256:e281781c15d7d197d7e12749849c965651413aa905f97a48b0f84bd90a3b4c6f"}, + {file = "tifffile-2024.5.22.tar.gz", hash = "sha256:3a105801d1b86d55692a98812a170c39d3f0447aeacb1d94635d38077cb328c4"}, ] [[package]] @@ -3017,18 +2968,6 @@ files = [ {file = "tinycss2-1.3.0.tar.gz", hash = "sha256:152f9acabd296a8375fbca5b84c961ff95971fcfc32e79550c8df8e29118c54d"}, ] -[[package]] -name = "tomli" -version = "2.0.1" -requires_python = ">=3.7" -summary = "A lil' TOML parser" -groups = ["default"] -marker = "python_version < \"3.11\"" -files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, -] - [[package]] name = "tomlkit" version = "0.12.5" @@ -3101,22 +3040,21 @@ files = [ [[package]] name = "trio" -version = "0.25.0" +version = "0.25.1" requires_python = ">=3.8" summary = "A friendly Python library for async concurrency and I/O" groups = ["default"] dependencies = [ "attrs>=23.2.0", "cffi>=1.14; os_name == \"nt\" and implementation_name != \"pypy\"", - "exceptiongroup; python_version < \"3.11\"", "idna", "outcome", "sniffio>=1.3.0", "sortedcontainers", ] files = [ - {file = "trio-0.25.0-py3-none-any.whl", hash = "sha256:e6458efe29cc543e557a91e614e2b51710eba2961669329ce9c862d50c6e8e81"}, - {file = "trio-0.25.0.tar.gz", hash = "sha256:9b41f5993ad2c0e5f62d0acca320ec657fdb6b2a2c22b8c7aed6caf154475c4e"}, + {file = "trio-0.25.1-py3-none-any.whl", hash = "sha256:e42617ba091e7b2e50c899052e83a3c403101841de925187f61e7b7eaebdf3fb"}, + {file = "trio-0.25.1.tar.gz", hash = "sha256:9f5314f014ea3af489e77b001861c535005c3858d38ec46b6b071ebfa339d7fb"}, ] [[package]] @@ -3132,13 +3070,13 @@ files = [ [[package]] name = "typing-extensions" -version = "4.11.0" +version = "4.12.1" requires_python = ">=3.8" summary = "Backported and Experimental Type Hints for Python 3.8+" groups = ["default"] files = [ - {file = "typing_extensions-4.11.0-py3-none-any.whl", hash = "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a"}, - {file = "typing_extensions-4.11.0.tar.gz", hash = "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0"}, + {file = "typing_extensions-4.12.1-py3-none-any.whl", hash = "sha256:6024b58b69089e5a89c347397254e35f1bf02a907728ec7fee9bf0fe837d203a"}, + {file = "typing_extensions-4.12.1.tar.gz", hash = "sha256:915f5e35ff76f56588223f15fdd5938f9a1cf9195c0de25130c627e4d597f6d1"}, ] [[package]] @@ -3213,13 +3151,13 @@ files = [ [[package]] name = "webcolors" -version = "1.13" -requires_python = ">=3.7" +version = "24.6.0" +requires_python = ">=3.8" summary = "A library for working with the color formats defined by HTML and CSS." groups = ["default"] files = [ - {file = "webcolors-1.13-py3-none-any.whl", hash = "sha256:29bc7e8752c0a1bd4a1f03c14d6e6a72e93d82193738fa860cbff59d0fcc11bf"}, - {file = "webcolors-1.13.tar.gz", hash = "sha256:c225b674c83fa923be93d235330ce0300373d02885cef23238813b0d5668304a"}, + {file = "webcolors-24.6.0-py3-none-any.whl", hash = "sha256:8cf5bc7e28defd1d48b9e83d5fc30741328305a8195c29a8e668fa45586568a1"}, + {file = "webcolors-24.6.0.tar.gz", hash = "sha256:1d160d1de46b3e81e58d0a280d0c78b467dc80f47294b91b1ad8029d2cedb55b"}, ] [[package]] @@ -3261,12 +3199,12 @@ files = [ [[package]] name = "zipp" -version = "3.18.1" +version = "3.19.2" requires_python = ">=3.8" summary = "Backport of pathlib-compatible object wrapper for zip files" groups = ["default"] marker = "python_version < \"3.12\"" files = [ - {file = "zipp-3.18.1-py3-none-any.whl", hash = "sha256:206f5a15f2af3dbaee80769fb7dc6f249695e940acca08dfb2a4769fe61e538b"}, - {file = "zipp-3.18.1.tar.gz", hash = "sha256:2884ed22e7d8961de1c9a05142eb69a247f120291bc0206a00a7642f09b5b715"}, + {file = "zipp-3.19.2-py3-none-any.whl", hash = "sha256:f091755f667055f2d02b32c53771a7a6c8b47e1fdbc4b72a8b9072b3eef8015c"}, + {file = "zipp-3.19.2.tar.gz", hash = "sha256:bf1dcf6450f873a13e952a29504887c89e6de7506209e5b1bcc3460135d4de19"}, ] diff --git a/pyproject.toml b/pyproject.toml index af0e0fe..0f9238f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "softsync-python-debian12" version = "0.1.0" -description = "Source to create a Python module on Debian 11" +description = "Source to create a Python module on Debian 12" authors = [ {name = "pierre.augier", email = "pierre.augier@univ-grenoble-alpes.fr"}, ] @@ -57,7 +57,7 @@ dependencies = [ "fluidfft", "formattex", ] -requires-python = "==3.9.*" +requires-python = "==3.11.*" readme = "README.md" license = {text = "MIT"} -- GitLab