From 3b11bcf09a803cef923d4af871ae9033a0287395 Mon Sep 17 00:00:00 2001 From: vfisikop Date: Tue, 11 Mar 2025 22:50:50 +0200 Subject: [PATCH] Rename dingo to dingo_walk --- .github/workflows/ubuntu.yml | 6 +- .gitignore | 4 +- README.md | 56 +- build.py | 2 +- dingo/__main__.py | 10 - {dingo => dingo_walk}/MetabolicNetwork.py | 16 +- {dingo => dingo_walk}/PolytopeSampler.py | 10 +- {dingo => dingo_walk}/__init__.py | 82 +- dingo_walk/__main__.py | 10 + {dingo => dingo_walk}/bindings/bindings.cpp | 0 {dingo => dingo_walk}/bindings/bindings.h | 0 {dingo => dingo_walk}/bindings/hmc_sampling.h | 0 {dingo => dingo_walk}/illustrations.py | 54 +- {dingo => dingo_walk}/loading_models.py | 16 +- {dingo => dingo_walk}/nullspace.py | 4 +- {dingo => dingo_walk}/parser.py | 28 +- {dingo => dingo_walk}/preprocess.py | 190 +-- .../pyoptinterface_based_impl.py | 0 {dingo => dingo_walk}/scaling.py | 4 +- {dingo => dingo_walk}/utils.py | 120 +- {dingo => dingo_walk}/volestipy.pyx | 2 +- ext_data/matlab_model_wrapper.m | 18 +- poetry.lock | 1364 +++++++++-------- pyproject.toml | 18 +- setup.py | 35 +- tests/correlation.py | 30 +- tests/fba.py | 8 +- tests/full_dimensional.py | 14 +- tests/max_ball.py | 12 +- tests/preprocess.py | 77 +- tests/rounding.py | 10 +- tests/sampling.py | 10 +- tests/sampling_no_multiphase.py | 8 +- tests/scaling.py | 12 +- tutorials/CONTRIBUTING.md | 104 +- tutorials/README.md | 4 +- tutorials/dingo_tutorial.ipynb | 72 +- 37 files changed, 1291 insertions(+), 1119 deletions(-) delete mode 100644 dingo/__main__.py rename {dingo => dingo_walk}/MetabolicNetwork.py (94%) rename {dingo => dingo_walk}/PolytopeSampler.py (97%) rename {dingo => dingo_walk}/__init__.py (71%) create mode 100644 dingo_walk/__main__.py rename {dingo => dingo_walk}/bindings/bindings.cpp (100%) rename {dingo => dingo_walk}/bindings/bindings.h (100%) rename {dingo => dingo_walk}/bindings/hmc_sampling.h (100%) rename {dingo => dingo_walk}/illustrations.py (92%) rename {dingo => dingo_walk}/loading_models.py (94%) rename {dingo => dingo_walk}/nullspace.py (94%) rename {dingo => dingo_walk}/parser.py (85%) rename {dingo => dingo_walk}/preprocess.py (81%) rename {dingo => dingo_walk}/pyoptinterface_based_impl.py (100%) rename {dingo => dingo_walk}/scaling.py (96%) rename {dingo => dingo_walk}/utils.py (93%) rename {dingo => dingo_walk}/volestipy.pyx (99%) diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index 17bd6bda..2bcd431c 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -1,11 +1,11 @@ -# dingo : a python library for metabolic networks sampling and analysis -# dingo is part of GeomScale project +# dingo_walk : a python library for metabolic networks sampling and analysis +# dingo_walk is part of GeomScale project # Copyright (c) 2021-2022 Vissarion Fisikopoulos # Licensed under GNU LGPL.3, see LICENCE file -name: dingo-ubuntu +name: dingo_walk-ubuntu on: [push, pull_request] diff --git a/.gitignore b/.gitignore index 23c482eb..507f8473 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,7 @@ build dist boost_1_76_0 -dingo.egg-info +dingo_walk.egg-info *.pyc *.so volestipy.cpp @@ -12,4 +12,4 @@ volestipy.egg-info venv lp_solve_5.5/ .devcontainer/ -.github/dependabot.yml \ No newline at end of file +.github/dependabot.yml diff --git a/README.md b/README.md index 9e122771..b335139e 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,17 @@ -

+

-**dingo** is a Python package that analyzes metabolic networks. +**dingo_walk** is a Python package that analyzes metabolic networks. It relies on high dimensional sampling with Markov Chain Monte Carlo (MCMC) methods and fast optimization methods to analyze the possible states of a -metabolic network. To perform MCMC sampling, `dingo` relies on the `C++` library +metabolic network. To perform MCMC sampling, `dingo_walk` relies on the `C++` library [volesti](https://github.com/GeomScale/volume_approximation), which provides several algorithms for sampling convex polytopes. -`dingo` also performs two standard methods to analyze the flux space of a +`dingo_walk` also performs two standard methods to analyze the flux space of a metabolic network, namely Flux Balance Analysis and Flux Variability Analysis. -`dingo` is part of [GeomScale](https://geomscale.github.io/) project. +`dingo_walk` is part of [GeomScale](https://geomscale.github.io/) project. -[![unit-tests](https://github.com/GeomScale/dingo/workflows/dingo-ubuntu/badge.svg)](https://github.com/GeomScale/dingo/actions?query=workflow%3Adingo-ubuntu) +[![unit-tests](https://github.com/GeomScale/dingo/workflows/dingo_walk-ubuntu/badge.svg)](https://github.com/GeomScale/dingo/actions?query=workflow%3Adingo_walk-ubuntu) [![Tutorial In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/GeomScale/dingo/blob/develop/tutorials/dingo_tutorial.ipynb) [![Chat](https://badges.gitter.im/geomscale.png)](https://gitter.im/GeomScale/community?utm_source=share-link&utm_medium=link&utm_campaign=share-link) @@ -28,7 +28,7 @@ If you have a different version of Python installed, you'll need to install it ( -To load the submodules that dingo uses, run +To load the submodules that dingo_walk uses, run ````bash git submodule update --init @@ -55,7 +55,7 @@ sudo apt-get update -y sudo apt-get install -y libsuitesparse-dev ``` -To install the Python dependencies, `dingo` is using [Poetry](https://python-poetry.org/), +To install the Python dependencies, `dingo_walk` is using [Poetry](https://python-poetry.org/), ``` curl -sSL https://install.python-poetry.org | python3 - --version 1.3.2 poetry shell @@ -98,28 +98,28 @@ python3 tests/sampling.py gurobi ## Tutorial You can have a look at our [Google Colab notebook](https://colab.research.google.com/github/GeomScale/dingo/blob/develop/tutorials/dingo_tutorial.ipynb) -on how to use `dingo`. +on how to use `dingo_walk`. ## Documentation -It quite simple to use dingo in your code. In general, dingo provides two classes: +It quite simple to use dingo_walk in your code. In general, dingo_walk provides two classes: - `metabolic_network` represents a metabolic network - `polytope_sampler` can be used to sample from the flux space of a metabolic network or from a general convex polytope. - The following script shows how you could sample steady states of a metabolic network with dingo. To initialize a metabolic network object you have to provide the path to the `json` file as those in [BiGG](http://bigg.ucsd.edu/models) dataset or the `mat` file (using the `matlab` wrapper in folder `/ext_data` to modify a standard `mat` file of a model as those in BiGG dataset): + The following script shows how you could sample steady states of a metabolic network with dingo_walk. To initialize a metabolic network object you have to provide the path to the `json` file as those in [BiGG](http://bigg.ucsd.edu/models) dataset or the `mat` file (using the `matlab` wrapper in folder `/ext_data` to modify a standard `mat` file of a model as those in BiGG dataset): ```python -from dingo import MetabolicNetwork, PolytopeSampler +from dingo_walk import MetabolicNetwork, PolytopeSampler model = MetabolicNetwork.from_json('path/to/model_file.json') sampler = PolytopeSampler(model) steady_states = sampler.generate_steady_states() ``` -`dingo` can also load a model given in `.sbml` format using the following command, +`dingo_walk` can also load a model given in `.sbml` format using the following command, ```python model = MetabolicNetwork.from_sbml('path/to/model_file.sbml') @@ -147,10 +147,10 @@ The default option is to run the sequential [Multiphase Monte Carlo Sampling alg #### Rounding the polytope -`dingo` provides three methods to round a polytope: (i) Bring the polytope to John position by apllying to it the transformation that maps the largest inscribed ellipsoid of the polytope to the unit ball, (ii) Bring the polytope to near-isotropic position by using uniform sampling with Billiard Walk, (iii) Apply to the polytope the transformation that maps the smallest enclosing ellipsoid of a uniform sample from the interior of the polytope to the unit ball. +`dingo_walk` provides three methods to round a polytope: (i) Bring the polytope to John position by apllying to it the transformation that maps the largest inscribed ellipsoid of the polytope to the unit ball, (ii) Bring the polytope to near-isotropic position by using uniform sampling with Billiard Walk, (iii) Apply to the polytope the transformation that maps the smallest enclosing ellipsoid of a uniform sample from the interior of the polytope to the unit ball. ```python -from dingo import MetabolicNetwork, PolytopeSampler +from dingo_walk import MetabolicNetwork, PolytopeSampler model = MetabolicNetwork.from_json('path/to/model_file.json') sampler = PolytopeSampler(model) @@ -170,31 +170,31 @@ samples = sample_from_polytope(A_rounded, b_rounded) Last you can map the samples back to steady states, ```python -from dingo import map_samples_to_steady_states +from dingo_walk import map_samples_to_steady_states steady_states = map_samples_to_steady_states(samples, N, N_shift, Tr, Tr_shift) ``` #### Other MCMC sampling methods -To use any other MCMC sampling method that `dingo` provides you can use the following piece of code: +To use any other MCMC sampling method that `dingo_walk` provides you can use the following piece of code: ```python sampler = polytope_sampler(model) steady_states = sampler.generate_steady_states_no_multiphase() #default parameters (method = 'billiard_walk', n=1000, burn_in=0, thinning=1) ``` -The MCMC methods that dingo (through `volesti` library) provides are the following: (i) 'cdhr': Coordinate Directions Hit-and-Run, (ii) 'rdhr': Random Directions Hit-and-Run, +The MCMC methods that dingo_walk (through `volesti` library) provides are the following: (i) 'cdhr': Coordinate Directions Hit-and-Run, (ii) 'rdhr': Random Directions Hit-and-Run, (iii) 'billiard_walk', (iv) 'ball_walk', (v) 'dikin_walk', (vi) 'john_walk', (vii) 'vaidya_walk'. #### Switch the linear programming solver -We use `pyoptinterface` to interface with the linear programming solvers. To switch the solver that `dingo` uses, you can use the `set_default_solver` function. The default solver is `highs` and you can switch to `gurobi` by running, +We use `pyoptinterface` to interface with the linear programming solvers. To switch the solver that `dingo_walk` uses, you can use the `set_default_solver` function. The default solver is `highs` and you can switch to `gurobi` by running, ```python -from dingo import set_default_solver +from dingo_walk import set_default_solver set_default_solver("gurobi") ``` @@ -205,7 +205,7 @@ You can also switch to other solvers that `pyoptinterface` supports, but we reco To apply FVA and FBA methods you have to use the class `metabolic_network`, ```python -from dingo import MetabolicNetwork +from dingo_walk import MetabolicNetwork model = MetabolicNetwork.from_json('path/to/model_file.json') fva_output = model.fva() @@ -233,7 +233,7 @@ while the output vectors are the same with the previous example. ### Set the restriction in the flux space -FVA and FBA, restrict the flux space to the set of flux vectors that have an objective value equal to the optimal value of the function. dingo allows for a more relaxed option where you could ask for flux vectors that have an objective value equal to at least a percentage of the optimal value, +FVA and FBA, restrict the flux space to the set of flux vectors that have an objective value equal to the optimal value of the function. dingo_walk allows for a more relaxed option where you could ask for flux vectors that have an objective value equal to at least a percentage of the optimal value, ```python model.set_opt_percentage(90) @@ -273,7 +273,7 @@ steady_states = sampler.generate_steady_states() The generated steady states can be used to estimate the marginal density function of each flux. You can plot the histogram using the samples, ```python -from dingo import plot_histogram +from dingo_walk import plot_histogram model = MetabolicNetwork.from_json('path/to/e_coli_core.json') sampler = PolytopeSampler(model) @@ -288,16 +288,16 @@ plot_histogram( ) ``` -The default number of bins is 60. dingo uses the package `matplotlib` for plotting. +The default number of bins is 60. dingo_walk uses the package `matplotlib` for plotting. -![histogram](./doc/e_coli_aconta.png) +![histogram](https://raw.githubusercontent.com/GeomScale/dingo/refs/heads/develop/doc/e_coli_aconta.png) ### Plot a copula between two fluxes The generated steady states can be used to estimate and plot the copula between two fluxes. You can plot the copula using the samples, ```python -from dingo import plot_copula +from dingo_walk import plot_copula model = MetabolicNetwork.from_json('path/to/e_coli_core.json') sampler = PolytopeSampler(model) @@ -312,8 +312,8 @@ data_flux1=[steady_states[13],reactions[13]] plot_copula(data_flux1, data_flux2, n=10) ``` -The default number of cells is 5x5=25. dingo uses the package `plotly` for plotting. +The default number of cells is 5x5=25. dingo_walk uses the package `plotly` for plotting. -![histogram](./doc/aconta_ppc_copula.png) +![histogram](https://raw.githubusercontent.com/GeomScale/dingo/refs/heads/develop/doc/aconta_ppc_copula.png) diff --git a/build.py b/build.py index c5bca212..57dd5f53 100644 --- a/build.py +++ b/build.py @@ -19,7 +19,7 @@ def build(setup_kwargs): # This function will be executed in setup.py: def build(setup_kwargs): # The file you want to compile - extensions = ["dingo/volestipy.pyx"] + extensions = ["dingo_walk/volestipy.pyx"] # gcc arguments hack: enable optimizations os.environ["CFLAGS"] = [ diff --git a/dingo/__main__.py b/dingo/__main__.py deleted file mode 100644 index bffeaa94..00000000 --- a/dingo/__main__.py +++ /dev/null @@ -1,10 +0,0 @@ -# dingo : a python library for metabolic networks sampling and analysis -# dingo is part of GeomScale project - -# Copyright (c) 2021 Apostolos Chalkis - -# Licensed under GNU LGPL.3, see LICENCE file - -from dingo import dingo_main - -dingo_main() diff --git a/dingo/MetabolicNetwork.py b/dingo_walk/MetabolicNetwork.py similarity index 94% rename from dingo/MetabolicNetwork.py rename to dingo_walk/MetabolicNetwork.py index 7be66c0a..4f4ac959 100644 --- a/dingo/MetabolicNetwork.py +++ b/dingo_walk/MetabolicNetwork.py @@ -1,5 +1,5 @@ -# dingo : a python library for metabolic networks sampling and analysis -# dingo is part of GeomScale project +# dingo_walk : a python library for metabolic networks sampling and analysis +# dingo_walk is part of GeomScale project # Copyright (c) 2021 Apostolos Chalkis # Copyright (c) 2021 Vissarion Fisikopoulos @@ -11,8 +11,8 @@ import sys from typing import Dict import cobra -from dingo.loading_models import read_json_file, read_mat_file, read_sbml_file, parse_cobra_model -from dingo.pyoptinterface_based_impl import fba,fva,inner_ball,remove_redundant_facets +from dingo_walk.loading_models import read_json_file, read_mat_file, read_sbml_file, parse_cobra_model +from dingo_walk.pyoptinterface_based_impl import fba,fva,inner_ball,remove_redundant_facets class MetabolicNetwork: def __init__(self, tuple_args): @@ -250,18 +250,18 @@ def set_active_bound(reaction: str, reac_index: int, bound: float) -> None: # Turn off reactions not present in media for rxn_id in exchange_rxns - frozen_media_rxns: """ - is_export for us, needs to check on the S - order reactions to their lb and ub + is_export for us, needs to check on the S + order reactions to their lb and ub """ # is_export = rxn.reactants and not rxn.products reac_index = self._reactions.index(rxn_id) - products = np.any(self._S[:,reac_index] > 0) + products = np.any(self._S[:,reac_index] > 0) reactants_exist = np.any(self._S[:,reac_index] < 0) is_export = True if not products and reactants_exist else False set_active_bound( rxn_id, reac_index, min(0.0, -self._lb[reac_index] if is_export else self._ub[reac_index]) ) - + def set_solver(self, solver: str): self._parameters["solver"] = solver diff --git a/dingo/PolytopeSampler.py b/dingo_walk/PolytopeSampler.py similarity index 97% rename from dingo/PolytopeSampler.py rename to dingo_walk/PolytopeSampler.py index 27f37853..d5c90a7f 100644 --- a/dingo/PolytopeSampler.py +++ b/dingo_walk/PolytopeSampler.py @@ -1,5 +1,5 @@ -# dingo : a python library for metabolic networks sampling and analysis -# dingo is part of GeomScale project +# dingo_walk : a python library for metabolic networks sampling and analysis +# dingo_walk is part of GeomScale project # Copyright (c) 2021 Apostolos Chalkis # Copyright (c) 2024 Ke Shi @@ -10,14 +10,14 @@ import numpy as np import warnings import math -from dingo.MetabolicNetwork import MetabolicNetwork -from dingo.utils import ( +from dingo_walk.MetabolicNetwork import MetabolicNetwork +from dingo_walk.utils import ( map_samples_to_steady_states, get_matrices_of_low_dim_polytope, get_matrices_of_full_dim_polytope, ) -from dingo.pyoptinterface_based_impl import fba,fva,inner_ball,remove_redundant_facets +from dingo_walk.pyoptinterface_based_impl import fba,fva,inner_ball,remove_redundant_facets from volestipy import HPolytope diff --git a/dingo/__init__.py b/dingo_walk/__init__.py similarity index 71% rename from dingo/__init__.py rename to dingo_walk/__init__.py index 067c8b98..c58cb1b2 100644 --- a/dingo/__init__.py +++ b/dingo_walk/__init__.py @@ -1,5 +1,5 @@ -# dingo : a python library for metabolic networks sampling and analysis -# dingo is part of GeomScale project +# dingo_walk : a python library for metabolic networks sampling and analysis +# dingo_walk is part of GeomScale project # Copyright (c) 2021 Apostolos Chalkis @@ -9,25 +9,25 @@ import sys import os import pickle -from dingo.loading_models import read_json_file -from dingo.nullspace import nullspace_dense, nullspace_sparse -from dingo.scaling import gmscale -from dingo.utils import ( +from dingo_walk.loading_models import read_json_file +from dingo_walk.nullspace import nullspace_dense, nullspace_sparse +from dingo_walk.scaling import gmscale +from dingo_walk.utils import ( apply_scaling, remove_almost_redundant_facets, map_samples_to_steady_states, get_matrices_of_low_dim_polytope, get_matrices_of_full_dim_polytope, ) -from dingo.illustrations import ( +from dingo_walk.illustrations import ( plot_copula, plot_histogram, ) -from dingo.parser import dingo_args -from dingo.MetabolicNetwork import MetabolicNetwork -from dingo.PolytopeSampler import PolytopeSampler +from dingo_walk.parser import dingo_walk_args +from dingo_walk.MetabolicNetwork import MetabolicNetwork +from dingo_walk.PolytopeSampler import PolytopeSampler -from dingo.pyoptinterface_based_impl import fba, fva, inner_ball, remove_redundant_facets, set_default_solver +from dingo_walk.pyoptinterface_based_impl import fba, fva, inner_ball, remove_redundant_facets, set_default_solver from volestipy import HPolytope @@ -50,12 +50,12 @@ def get_name(args_network): return name -def dingo_main(): - """A function that (a) reads the inputs using argparse package, (b) calls the proper dingo pipeline +def dingo_walk_main(): + """A function that (a) reads the inputs using argparse package, (b) calls the proper dingo_walk pipeline and (c) saves the outputs using pickle package """ - args = dingo_args() + args = dingo_walk_args() if args.metabolic_network is None and args.polytope is None and not args.histogram: raise Exception( @@ -75,7 +75,7 @@ def dingo_main(): # Move to the output directory os.chdir(output_path_dir) - + set_default_solver(args.solver) if args.model_name is None: @@ -133,11 +133,11 @@ def dingo_main(): raise Exception("An unknown format file given.") model.set_solver(args.solver) - + result_obj = model.fva() - with open("dingo_fva_" + name + ".pckl", "wb") as dingo_fva_file: - pickle.dump(result_obj, dingo_fva_file) + with open("dingo_walk_fva_" + name + ".pckl", "wb") as dingo_walk_fva_file: + pickle.dump(result_obj, dingo_walk_fva_file) elif args.fba: @@ -147,13 +147,13 @@ def dingo_main(): model = MetabolicNetwork.fom_mat(args.metabolic_network) else: raise Exception("An unknown format file given.") - + model.set_solver(args.solver) result_obj = model.fba() - with open("dingo_fba_" + name + ".pckl", "wb") as dingo_fba_file: - pickle.dump(result_obj, dingo_fba_file) + with open("dingo_walk_fba_" + name + ".pckl", "wb") as dingo_walk_fba_file: + pickle.dump(result_obj, dingo_walk_fba_file) elif args.metabolic_network is not None: @@ -175,13 +175,13 @@ def dingo_main(): name, ) - with open("dingo_model_" + name + ".pckl", "wb") as dingo_model_file: - pickle.dump(model, dingo_model_file) + with open("dingo_walk_model_" + name + ".pckl", "wb") as dingo_walk_model_file: + pickle.dump(model, dingo_walk_model_file) with open( - "dingo_polytope_sampler_" + name + ".pckl", "wb" - ) as dingo_polytope_file: - pickle.dump(polytope_info, dingo_polytope_file) + "dingo_walk_polytope_sampler_" + name + ".pckl", "wb" + ) as dingo_walk_polytope_file: + pickle.dump(polytope_info, dingo_walk_polytope_file) else: @@ -197,18 +197,18 @@ def dingo_main(): name, ) - with open("dingo_model_" + name + ".pckl", "wb") as dingo_model_file: - pickle.dump(model, dingo_model_file) + with open("dingo_walk_model_" + name + ".pckl", "wb") as dingo_walk_model_file: + pickle.dump(model, dingo_walk_model_file) with open( - "dingo_polytope_sampler_" + name + ".pckl", "wb" - ) as dingo_polytope_file: - pickle.dump(polytope_info, dingo_polytope_file) + "dingo_walk_polytope_sampler_" + name + ".pckl", "wb" + ) as dingo_walk_polytope_file: + pickle.dump(polytope_info, dingo_walk_polytope_file) with open( - "dingo_steady_states_" + name + ".pckl", "wb" - ) as dingo_steadystates_file: - pickle.dump(steady_states, dingo_steadystates_file) + "dingo_walk_steady_states_" + name + ".pckl", "wb" + ) as dingo_walk_steadystates_file: + pickle.dump(steady_states, dingo_walk_steadystates_file) else: @@ -227,7 +227,7 @@ def dingo_main(): ) else: - raise Exception("The input file has to be generated by dingo package.") + raise Exception("The input file has to be generated by dingo_walk package.") if args.model_name is None: name = input_obj[-1] @@ -238,14 +238,14 @@ def dingo_main(): ) with open( - "dingo_polytope_sampler" + name + "_improved.pckl", "wb" - ) as dingo_polytope_file: - pickle.dump(polytope_info, dingo_polytope_file) + "dingo_walk_polytope_sampler" + name + "_improved.pckl", "wb" + ) as dingo_walk_polytope_file: + pickle.dump(polytope_info, dingo_walk_polytope_file) - with open("dingo_steady_states_" + name + ".pckl", "wb") as dingo_network_file: - pickle.dump(steady_states, dingo_network_file) + with open("dingo_walk_steady_states_" + name + ".pckl", "wb") as dingo_walk_network_file: + pickle.dump(steady_states, dingo_walk_network_file) if __name__ == "__main__": - dingo_main() + dingo_walk_main() diff --git a/dingo_walk/__main__.py b/dingo_walk/__main__.py new file mode 100644 index 00000000..e4c76bf2 --- /dev/null +++ b/dingo_walk/__main__.py @@ -0,0 +1,10 @@ +# dingo_walk : a python library for metabolic networks sampling and analysis +# dingo_walk is part of GeomScale project + +# Copyright (c) 2021 Apostolos Chalkis + +# Licensed under GNU LGPL.3, see LICENCE file + +from dingo_walk import dingo_walk_main + +dingo_walk_main() diff --git a/dingo/bindings/bindings.cpp b/dingo_walk/bindings/bindings.cpp similarity index 100% rename from dingo/bindings/bindings.cpp rename to dingo_walk/bindings/bindings.cpp diff --git a/dingo/bindings/bindings.h b/dingo_walk/bindings/bindings.h similarity index 100% rename from dingo/bindings/bindings.h rename to dingo_walk/bindings/bindings.h diff --git a/dingo/bindings/hmc_sampling.h b/dingo_walk/bindings/hmc_sampling.h similarity index 100% rename from dingo/bindings/hmc_sampling.h rename to dingo_walk/bindings/hmc_sampling.h diff --git a/dingo/illustrations.py b/dingo_walk/illustrations.py similarity index 92% rename from dingo/illustrations.py rename to dingo_walk/illustrations.py index fd37b651..3948beb2 100644 --- a/dingo/illustrations.py +++ b/dingo_walk/illustrations.py @@ -1,5 +1,5 @@ -# dingo : a python library for metabolic networks sampling and analysis -# dingo is part of GeomScale project +# dingo_walk : a python library for metabolic networks sampling and analysis +# dingo_walk is part of GeomScale project # Copyright (c) 2022 Apostolos Chalkis, Vissarion Fisikopoulos, Elias Tsigaridas @@ -10,7 +10,7 @@ import plotly.graph_objects as go import plotly.io as pio import plotly.express as px -from dingo.utils import compute_copula +from dingo_walk.utils import compute_copula import plotly.figure_factory as ff from scipy.cluster import hierarchy @@ -32,7 +32,7 @@ def plot_copula(data_flux1, data_flux2, n = 5, width = 900 , height = 600, expor fig = go.Figure( data = [go.Surface(z=copula)], layout = go.Layout( - height = height, + height = height, width = width, ) ) @@ -48,7 +48,7 @@ def plot_copula(data_flux1, data_flux2, n = 5, width = 900 , height = 600, expor margin=dict(r=30, b=30, l=30, t=50)) fig.layout.template = None - + fig.show() fig_name = data_flux1[1] + "_" + data_flux2[1] + "_copula." + export_format @@ -97,7 +97,7 @@ def plot_corr_matrix(corr_matrix, reactions, removed_reactions=[], format="svg") removed_reactions -- A list with the removed reactions in case of a preprocess. If provided removed reactions are not plotted. """ - + sns_colormap = [[0.0, '#3f7f93'], [0.1, '#6397a7'], [0.2, '#88b1bd'], @@ -109,26 +109,26 @@ def plot_corr_matrix(corr_matrix, reactions, removed_reactions=[], format="svg") [0.8, '#e8848b'], [0.9, '#e15e68'], [1.0, '#da3b46']] - + if removed_reactions != 0: for reaction in reactions: index = reactions.index(reaction) if reaction in removed_reactions: reactions[index] = None - - fig = px.imshow(corr_matrix, + + fig = px.imshow(corr_matrix, color_continuous_scale = sns_colormap, x = reactions, y = reactions, origin="upper") - + fig.update_layout( xaxis=dict(tickfont=dict(size=5)), yaxis=dict(tickfont=dict(size=5)), width=900, height=900, plot_bgcolor="rgba(0,0,0,0)") - + fig.update_traces(xgap=1, ygap=1, hoverongaps=False) - + fig.show() - + fig_name = "CorrelationMatrix." + format pio.write_image(fig, fig_name, scale=2) @@ -141,18 +141,18 @@ def plot_dendrogram(dissimilarity_matrix, reactions , plot_labels=False, t=2.0, dissimilarity_matrix -- A matrix produced from the "cluster_corr_reactions" function reactions -- A list with the model's reactions plot_labels -- A boolean variable that if True plots the reactions labels in the dendrogram - t -- A threshold that defines a threshold that cuts the dendrogram + t -- A threshold that defines a threshold that cuts the dendrogram at a specific height and colors the occuring clusters accordingly - linkage -- linkage defines the type of linkage. + linkage -- linkage defines the type of linkage. Available linkage types are: single, average, complete, ward. """ fig = ff.create_dendrogram(dissimilarity_matrix, labels=reactions, - linkagefun=lambda x: hierarchy.linkage(x, linkage), + linkagefun=lambda x: hierarchy.linkage(x, linkage), color_threshold=t) fig.update_layout(width=800, height=800) - + if plot_labels == False: fig.update_layout( xaxis=dict( @@ -166,9 +166,9 @@ def plot_dendrogram(dissimilarity_matrix, reactions , plot_labels=False, t=2.0, yaxis=dict( title_font=dict(size=10), tickfont=dict(size=8) ) ) - + fig.show() - + def plot_graph(G, pos): @@ -184,24 +184,24 @@ def plot_graph(G, pos): for u, v, data in G.edges(data=True): x0, y0 = pos[u] x1, y1 = pos[v] - + edge_color = 'blue' if data['weight'] > 0 else 'red' - - fig.add_trace(go.Scatter(x=[x0, x1], y=[y0, y1], mode='lines', - line=dict(width=abs(data['weight']) * 1, + + fig.add_trace(go.Scatter(x=[x0, x1], y=[y0, y1], mode='lines', + line=dict(width=abs(data['weight']) * 1, color=edge_color), hoverinfo='none', showlegend=False)) for node in G.nodes(): x, y = pos[node] node_name = G.nodes[node].get('name', f'Node {node}') - - fig.add_trace(go.Scatter(x=[x], y=[y], mode='markers', + + fig.add_trace(go.Scatter(x=[x], y=[y], mode='markers', marker=dict(size=10), text=[node_name], textposition='top center', name = node_name, showlegend=False)) - + fig.update_layout(width=800, height=800) - fig.show() \ No newline at end of file + fig.show() diff --git a/dingo/loading_models.py b/dingo_walk/loading_models.py similarity index 94% rename from dingo/loading_models.py rename to dingo_walk/loading_models.py index 84efceb5..cfd9feb0 100644 --- a/dingo/loading_models.py +++ b/dingo_walk/loading_models.py @@ -1,5 +1,5 @@ -# dingo : a python library for metabolic networks sampling and analysis -# dingo is part of GeomScale project +# dingo_walk : a python library for metabolic networks sampling and analysis +# dingo_walk is part of GeomScale project # Copyright (c) 2021 Apostolos Chalkis # Copyright (c) 2021 Haris Zafeiropoulos @@ -23,7 +23,7 @@ def read_json_file(input_file): input_file -- a json file that contains the information about a mettabolic network, for example see http://bigg.ucsd.edu/models """ - try: + try: cobra.io.load_matlab_model( input_file ) except: cobra_config = cobra.Configuration() @@ -45,7 +45,7 @@ def read_mat_file(input_file): Keyword arguments: input_file -- a mat file that contains a MATLAB structure with the information about a mettabolic network, for example see http://bigg.ucsd.edu/models """ - try: + try: cobra.io.load_matlab_model( input_file ) except: cobra_config = cobra.Configuration() @@ -56,8 +56,8 @@ def read_mat_file(input_file): return (parse_cobra_model( model )) def read_sbml_file(input_file): - """A Python function, based on the cobra.io.read_sbml_model() function of cabrapy - and the extract_polytope() function of PolyRound + """A Python function, based on the cobra.io.read_sbml_model() function of cabrapy + and the extract_polytope() function of PolyRound (https://gitlab.com/csb.ethz/PolyRound/-/blob/master/PolyRound/static_classes/parse_sbml_stoichiometry.py) to read an SBML file (.xml) and return: (a) lower/upper flux bounds @@ -68,10 +68,10 @@ def read_sbml_file(input_file): (f) the objective function to maximize the biomass pseudoreaction Keyword arguments: - input_file -- a xml file that contains an SBML model with the information about a mettabolic network, for example see: + input_file -- a xml file that contains an SBML model with the information about a mettabolic network, for example see: https://github.com/VirtualMetabolicHuman/AGORA/blob/master/CurrentVersion/AGORA_1_03/AGORA_1_03_sbml/Abiotrophia_defectiva_ATCC_49176.xml """ - try: + try: cobra.io.read_sbml_model( input_file ) except: cobra_config = cobra.Configuration() diff --git a/dingo/nullspace.py b/dingo_walk/nullspace.py similarity index 94% rename from dingo/nullspace.py rename to dingo_walk/nullspace.py index f6ca33ed..985068e5 100644 --- a/dingo/nullspace.py +++ b/dingo_walk/nullspace.py @@ -1,5 +1,5 @@ -# dingo : a python library for metabolic networks sampling and analysis -# dingo is part of GeomScale project +# dingo_walk : a python library for metabolic networks sampling and analysis +# dingo_walk is part of GeomScale project # Copyright (c) 2021 Apostolos Chalkis # Copyright (c) 2021 Haris Zafeiropoulos diff --git a/dingo/parser.py b/dingo_walk/parser.py similarity index 85% rename from dingo/parser.py rename to dingo_walk/parser.py index 6736d3cb..97e53679 100644 --- a/dingo/parser.py +++ b/dingo_walk/parser.py @@ -1,5 +1,5 @@ -# dingo : a python library for metabolic networks sampling and analysis -# dingo is part of GeomScale project +# dingo_walk : a python library for metabolic networks sampling and analysis +# dingo_walk is part of GeomScale project # Copyright (c) 2021 Apostolos Chalkis # Copyright (c) 2021 Haris Zafeiropoulos @@ -9,26 +9,26 @@ import argparse -def dingo_args(): +def dingo_walk_args(): parser = argparse.ArgumentParser() parser = argparse.ArgumentParser( - description="a parser to read the inputs of dingo package \ - dingo is a Python library for the analysis of \ + description="a parser to read the inputs of dingo_walk package \ + dingo_walk is a Python library for the analysis of \ metabolic networks developed by the \ GeomScale group - https://geomscale.github.io/ ", usage="%(prog)s [--help | -h] : help \n\n \ The default method is to generate uniformly distributed steady states of the given model:\n\ 1. provide just your metabolic model: \n \ - python -m dingo -i path_to_my_model \n\n \ + python -m dingo_walk -i path_to_my_model \n\n \ 2. or ask for more: \n \ - python -m dingo -i path_to_my_model -n 2000 -s gurobi \n \ + python -m dingo_walk -i path_to_my_model -n 2000 -s gurobi \n \ \n\n\ - You could give a full dimensional polytope derived from a model by dingo and saved to a `pickle` file:\n\ - python -m dingo -poly path_to_pickle_file -n 1000 \n \ + You could give a full dimensional polytope derived from a model by dingo_walk and saved to a `pickle` file:\n\ + python -m dingo_walk -poly path_to_pickle_file -n 1000 \n \ \n\n \ You could ask for FVA or FBA methods:\n \ - python -m dingo -i path_to_my_model -fva True\n \ + python -m dingo_walk -i path_to_my_model -fva True\n \ \n\n\ We recommend to use gurobi library for more stable and fast computations.", ) @@ -59,7 +59,7 @@ def dingo_args(): optional.add_argument( "--polytope", "-poly", - help="the path to a pickle file generated by dingo that contains a full dimensional polytope derived from a model. This file could be used to sample more steady states of a preprocessed metabolic network.", + help="the path to a pickle file generated by dingo_walk that contains a full dimensional polytope derived from a model. This file could be used to sample more steady states of a preprocessed metabolic network.", required=False, default=None, metavar="", @@ -86,7 +86,7 @@ def dingo_args(): optional.add_argument( "--steady_states", "-st", - help="A path to a pickle file that was generated by dingo and contains steady states of a model.", + help="A path to a pickle file that was generated by dingo_walk and contains steady states of a model.", required=False, default=None, metavar="", @@ -95,7 +95,7 @@ def dingo_args(): optional.add_argument( "--metabolites_reactions", "-mr", - help="A path to a pickle file that was generated by dingo and contains the names of the metabolites and the reactions of a model.", + help="A path to a pickle file that was generated by dingo_walk and contains the names of the metabolites and the reactions of a model.", required=False, default=None, metavar="", @@ -167,7 +167,7 @@ def dingo_args(): optional.add_argument( "--output_directory", "-o", - help="the output directory for the dingo output", + help="the output directory for the dingo_walk output", required=False, default=None, metavar="", diff --git a/dingo/preprocess.py b/dingo_walk/preprocess.py similarity index 81% rename from dingo/preprocess.py rename to dingo_walk/preprocess.py index 4f711ff2..81a76234 100644 --- a/dingo/preprocess.py +++ b/dingo_walk/preprocess.py @@ -2,36 +2,36 @@ import cobra import cobra.manipulation from collections import Counter -from dingo import MetabolicNetwork, PolytopeSampler -from dingo.utils import correlated_reactions +from dingo_walk import MetabolicNetwork, PolytopeSampler +from dingo_walk.utils import correlated_reactions import numpy as np class PreProcess: - + def __init__(self, model, tol = 1e-6, open_exchanges = False, verbose = False): """ model -- parameter gets a cobra model as input - - tol -- parameter gets a cutoff value used to classify + + tol -- parameter gets a cutoff value used to classify zero-flux and mle reactions and compare FBA solutions before and after reactions removal - + open_exchanges -- parameter is used in the function that identifies blocked reactions - It controls whether or not to open all exchange reactions + It controls whether or not to open all exchange reactions to very high flux ranges. - - verbose -- A boolean type variable that if True + + verbose -- A boolean type variable that if True additional information for preprocess is printed. """ - + self._model = model self._tol = tol - + self._open_exchanges = open_exchanges self._verbose = verbose - + if self._tol > 1e-6 and verbose == True: print("Tolerance value set to",self._tol,"while default value is 1e-6. A looser check will be performed") @@ -49,10 +49,10 @@ def _objective_function(self): """ A function used to find the objective function of a model """ - + objective = str(self._model.summary()._objective) self._objective = objective.split(" ")[1] - + return self._objective @@ -60,26 +60,26 @@ def _initial(self): """ A function used to find reaction ids of a model """ - + self._initial_reactions = [ reaction.id for reaction in \ self._model.reactions ] - + return self._initial_reactions - - + + def _reaction_bounds_dictionary(self): """ A function used to create a dictionary that maps reactions with their corresponding bounds. It is used to later restore bounds to their wild-type values """ - + self._reaction_bounds_dict = { } - + for reaction_id in self._initial_reactions: bounds = self._model.reactions.get_by_id(reaction_id).bounds self._reaction_bounds_dict[reaction_id] = bounds - + return self._reaction_bounds_dict @@ -87,41 +87,41 @@ def _essentials(self): """ A function used to find all the essential reactions and append them into a list. Essential reactions are - the ones that are required for growth. If removed the + the ones that are required for growth. If removed the objective function gets zeroed. """ - + self._essential_reactions = [ reaction.id for reaction in \ cobra.flux_analysis.find_essential_reactions(self._model) ] - + return self._essential_reactions - + def _zero_flux(self): """ A function used to find zero-flux reactions. - “Zero-flux” reactions cannot carry a flux while maintaining + “Zero-flux” reactions cannot carry a flux while maintaining at least 90% of the maximum growth rate. These reactions have both a min and a max flux equal to 0, when running a FVA analysis with the fraction of optimum set to 90% """ - + tol = self._tol - + fva = cobra.flux_analysis.flux_variability_analysis(self._model, fraction_of_optimum=0.9) zero_flux = fva.loc[ (abs(fva['minimum']) < tol ) & (abs(fva['maximum']) < tol)] self._zero_flux_reactions = zero_flux.index.tolist() - + return self._zero_flux_reactions - - + + def _blocked(self): """ A function used to find blocked reactions. "Blocked" reactions that cannot carry a flux in any condition. These reactions can not have any flux other than 0 """ - + self._blocked_reactions = cobra.flux_analysis.find_blocked_reactions(self._model, open_exchanges=self._open_exchanges) return self._blocked_reactions @@ -130,12 +130,12 @@ def _metabolically_less_efficient(self): """ A function used to find metabolically less efficient reactions. "Metabolically less efficient" require a reduction in growth rate if used - These reactions are found when running an FBA and setting the - optimal growth rate as the lower bound of the objective function (in + These reactions are found when running an FBA and setting the + optimal growth rate as the lower bound of the objective function (in this case biomass production. After running an FVA with the fraction of optimum set to 0.95, the reactions that have no flux are the metabolically less efficient. """ - + tol = self._tol fba_solution = self._model.optimize() @@ -146,124 +146,124 @@ def _metabolically_less_efficient(self): fva = cobra.flux_analysis.flux_variability_analysis(self._model, fraction_of_optimum=0.95) mle = fva.loc[ (abs(fva['minimum']) < tol ) & (abs(fva['maximum']) < tol)] self._mle_reactions = mle.index.tolist() - + self._model.reactions.get_by_id(self._objective).lower_bound = wt_lower_bound - + return self._mle_reactions - - + + def _remove_model_reactions(self): """ A function used to set the lower and upper bounds of certain reactions to 0 (it turns off reactions) """ - + for reaction in self._removed_reactions: self._model.reactions.get_by_id(reaction).lower_bound = 0 self._model.reactions.get_by_id(reaction).upper_bound = 0 - + return self._model - - + + def reduce(self, extend=False): """ A function that calls the "remove_model_reactions" function - and removes blocked, zero-flux and metabolically less efficient + and removes blocked, zero-flux and metabolically less efficient reactions from the model. - - Then it finds the remaining reactions in the model after + + Then it finds the remaining reactions in the model after exclusion of the essential reactions. - + When the "extend" parameter is set to True, the function performes - an additional check to remove further reactions. These reactions - are the ones that if knocked-down, they do not affect the value - of the objective function. Reactions are removed in an ordered way. - The ones with the least overall correlation in a correlation matrix - are removed first. These reactions are removed one by one from the model. - If this removal produces an infeasible solution (or a solution of 0) + an additional check to remove further reactions. These reactions + are the ones that if knocked-down, they do not affect the value + of the objective function. Reactions are removed in an ordered way. + The ones with the least overall correlation in a correlation matrix + are removed first. These reactions are removed one by one from the model. + If this removal produces an infeasible solution (or a solution of 0) to the objective function, these reactions are restored to their initial bounds. - - A dingo-type tuple is then created from the cobra model - using the "cobra_dingo_tuple" function. - + + A dingo_walk-type tuple is then created from the cobra model + using the "cobra_dingo_walk_tuple" function. + The outputs are (a) A list of the removed reactions ids - (b) A reduced dingo model - """ - + (b) A reduced dingo_walk model + """ + # create a list from the combined blocked, zero-flux, mle reactions blocked_mle_zero = self._blocked_reactions + self._mle_reactions + self._zero_flux_reactions - list_removed_reactions = list(set(blocked_mle_zero)) + list_removed_reactions = list(set(blocked_mle_zero)) self._removed_reactions = list_removed_reactions - + # remove these reactions from the model self._remove_model_reactions() - + remained_reactions = list((Counter(self._initial_reactions)-Counter(self._removed_reactions)).elements()) remained_reactions = list((Counter(remained_reactions)-Counter(self._essential_reactions)).elements()) - + tol = self._tol - + if extend != False and extend != True: raise Exception("Wrong Input to extend parameter") - + elif extend == False: - + if self._verbose == True: print(len(self._removed_reactions), "of the", len(self._initial_reactions), \ - "reactions were removed from the model with extend set to", extend) - - # call this functon to convert cobra to dingo model - self._dingo_model = MetabolicNetwork.from_cobra_model(self._model) - return self._removed_reactions, self._dingo_model + "reactions were removed from the model with extend set to", extend) + + # call this functon to convert cobra to dingo_walk model + self._dingo_walk_model = MetabolicNetwork.from_cobra_model(self._model) + return self._removed_reactions, self._dingo_walk_model elif extend == True: - - reduced_dingo_model = MetabolicNetwork.from_cobra_model(self._model) - reactions = reduced_dingo_model.reactions - sampler = PolytopeSampler(reduced_dingo_model) + + reduced_dingo_walk_model = MetabolicNetwork.from_cobra_model(self._model) + reactions = reduced_dingo_walk_model.reactions + sampler = PolytopeSampler(reduced_dingo_walk_model) steady_states = sampler.generate_steady_states() - # calculate correlation matrix with additional filtering from copula indicator + # calculate correlation matrix with additional filtering from copula indicator corr_matrix = correlated_reactions( - steady_states, + steady_states, pearson_cutoff = 0, - indicator_cutoff = 0, + indicator_cutoff = 0, cells = 10, cop_coeff = 0.3, lower_triangle = False) - + # convert pearson values to absolute values abs_array = abs(corr_matrix) - # sum absolute pearson values per row + # sum absolute pearson values per row sum_array = np.sum((abs_array), axis=1) # get indices of ordered sum values order_sum_indices = np.argsort(sum_array) - + fba_solution_before = self._model.optimize().objective_value - + # count additional reactions with a possibility of removal - additional_removed_reactions_count = 0 - + additional_removed_reactions_count = 0 + # find additional reactions with a possibility of removal for index in order_sum_indices: if reactions[index] in remained_reactions: reaction = reactions[index] - + # perform a knock-out and check the output self._model.reactions.get_by_id(reaction).lower_bound = 0 self._model.reactions.get_by_id(reaction).upper_bound = 0 - + try: fba_solution_after = self._model.optimize().objective_value if (abs(fba_solution_after - fba_solution_before) > tol): # restore bounds self._model.reactions.get_by_id(reaction).bounds = self._reaction_bounds_dict[reaction] - + # if system has no solution except: self._model.reactions.get_by_id(reaction).bounds = self._reaction_bounds_dict[reaction] - + finally: if (fba_solution_after != None) and (abs(fba_solution_after - fba_solution_before) < tol): self._removed_reactions.append(reaction) @@ -272,12 +272,12 @@ def reduce(self, extend=False): # restore bounds self._model.reactions.get_by_id(reaction).bounds = self._reaction_bounds_dict[reaction] - - if self._verbose == True: + + if self._verbose == True: print(len(self._removed_reactions), "of the", len(self._initial_reactions), \ "reactions were removed from the model with extend set to", extend) print(additional_removed_reactions_count, "additional reaction(s) removed") - - # call this functon to convert cobra to dingo model - self._dingo_model = MetabolicNetwork.from_cobra_model(self._model) - return self._removed_reactions, self._dingo_model + + # call this functon to convert cobra to dingo_walk model + self._dingo_walk_model = MetabolicNetwork.from_cobra_model(self._model) + return self._removed_reactions, self._dingo_walk_model diff --git a/dingo/pyoptinterface_based_impl.py b/dingo_walk/pyoptinterface_based_impl.py similarity index 100% rename from dingo/pyoptinterface_based_impl.py rename to dingo_walk/pyoptinterface_based_impl.py diff --git a/dingo/scaling.py b/dingo_walk/scaling.py similarity index 96% rename from dingo/scaling.py rename to dingo_walk/scaling.py index 8a73a366..3b371260 100644 --- a/dingo/scaling.py +++ b/dingo_walk/scaling.py @@ -1,5 +1,5 @@ -# dingo : a python library for metabolic networks sampling and analysis -# dingo is part of GeomScale project +# dingo_walk : a python library for metabolic networks sampling and analysis +# dingo_walk is part of GeomScale project # Copyright (c) 2021 Apostolos Chalkis # Copyright (c) 2021 Haris Zafeiropoulos diff --git a/dingo/utils.py b/dingo_walk/utils.py similarity index 93% rename from dingo/utils.py rename to dingo_walk/utils.py index 303840cb..d1a3fb69 100644 --- a/dingo/utils.py +++ b/dingo_walk/utils.py @@ -1,5 +1,5 @@ -# dingo : a python library for metabolic networks sampling and analysis -# dingo is part of GeomScale project +# dingo_walk : a python library for metabolic networks sampling and analysis +# dingo_walk is part of GeomScale project # Copyright (c) 2021 Apostolos Chalkis @@ -9,8 +9,8 @@ import math import scipy.sparse as sp from scipy.sparse import diags -from dingo.scaling import gmscale -from dingo.nullspace import nullspace_dense, nullspace_sparse +from dingo_walk.scaling import gmscale +from dingo_walk.nullspace import nullspace_dense, nullspace_sparse from scipy.cluster import hierarchy from networkx.algorithms.components import connected_components import networkx as nx @@ -37,14 +37,14 @@ def compute_copula(flux1, flux2, n): rng = range((j*math.floor(N/n)),((j+1)*math.floor(N/n))) grouped_flux1[I1[rng]] = j grouped_flux2[I2[rng]] = j - + for i in range(n): for j in range(n): copula[i,j] = sum((grouped_flux1==i) *( grouped_flux2==j)) - + copula = copula / N return copula - + def apply_scaling(A, b, cs, rs): """A Python function to apply the scaling computed by the function `gmscale` to a convex polytope @@ -207,7 +207,7 @@ def get_matrices_of_full_dim_polytope(A, b, Aeq, beq): -def correlated_reactions(steady_states, reactions=[], pearson_cutoff = 0.90, indicator_cutoff = 10, +def correlated_reactions(steady_states, reactions=[], pearson_cutoff = 0.90, indicator_cutoff = 10, cells = 10, cop_coeff = 0.3, lower_triangle = True, verbose = False): """A Python function to calculate the pearson correlation matrix of a model and filter values based on the copula's indicator @@ -222,36 +222,36 @@ def correlated_reactions(steady_states, reactions=[], pearson_cutoff = 0.90, ind lower_triangle -- A boolean variable that if True plots only the lower triangular matrix verbose -- A boolean variable that if True additional information is printed as an output. """ - + if cop_coeff > 0.4 or cop_coeff < 0.2: raise Exception("Input value to cop_coeff parameter must be between 0.2 and 0.4") - + # calculate coefficients to access red and blue copula mass cop_coeff_1 = cop_coeff cop_coeff_2 = 1 - cop_coeff cop_coeff_3 = 1 + cop_coeff - + # compute correlation matrix corr_matrix = np.corrcoef(steady_states, rowvar=True) - + # replace not assigned values with 0 corr_matrix[np.isnan(corr_matrix)] = 0 # create a copy of correlation matrix to replace/filter values - filtered_corr_matrix = corr_matrix.copy() - + filtered_corr_matrix = corr_matrix.copy() + # find indices of correlation matrix where correlation does not occur no_corr_indices = np.argwhere((filtered_corr_matrix < pearson_cutoff) & (filtered_corr_matrix > -pearson_cutoff)) - + # replace values from the correlation matrix that do not overcome # the pearson cutoff with 0 - for i in range(0, no_corr_indices.shape[0]): + for i in range(0, no_corr_indices.shape[0]): index1 = no_corr_indices[i][0] index2 = no_corr_indices[i][1] - - filtered_corr_matrix[index1, index2] = 0 - # if user does not provide an indicator cutoff then do not proceed + filtered_corr_matrix[index1, index2] = 0 + + # if user does not provide an indicator cutoff then do not proceed # with the filtering of the correlation matrix if indicator_cutoff == 0: if lower_triangle == True: @@ -262,42 +262,42 @@ def correlated_reactions(steady_states, reactions=[], pearson_cutoff = 0.90, ind np.fill_diagonal(filtered_corr_matrix, 1) return filtered_corr_matrix else: - # a dictionary that will store for each filtered reaction combination, - # the pearson correlation value, the copula's indicator value + # a dictionary that will store for each filtered reaction combination, + # the pearson correlation value, the copula's indicator value # and the correlation classification indicator_dict = {} - + # keep only the lower triangle corr_matrix = np.tril(corr_matrix) # replace diagonal values with 0 np.fill_diagonal(corr_matrix, 0) - + # find indices of correlation matrix where correlation occurs corr_indices = np.argwhere((corr_matrix > pearson_cutoff) | (corr_matrix < -pearson_cutoff)) - + # compute copula for each set of correlated reactions for i in range(0, corr_indices.shape[0]): - + index1 = corr_indices[i][0] index2 = corr_indices[i][1] - + reaction1 = reactions[index1] reaction2 = reactions[index2] - + flux1 = steady_states[index1] flux2 = steady_states[index2] - + copula = compute_copula(flux1, flux2, cells) rows, cols = copula.shape - + red_mass = 0 blue_mass = 0 indicator = 0 - + for row in range(rows): for col in range(cols): # values in the diagonal - if ((row-col >= -cop_coeff_1*rows) & (row-col <= cop_coeff_1*rows)): + if ((row-col >= -cop_coeff_1*rows) & (row-col <= cop_coeff_1*rows)): # values near the top left and bottom right corner if ((row+col < cop_coeff_2*rows) | (row+col > cop_coeff_3*rows)): red_mass = red_mass + copula[row][col] @@ -307,19 +307,19 @@ def correlated_reactions(steady_states, reactions=[], pearson_cutoff = 0.90, ind blue_mass = blue_mass + copula[row][col] indicator = (red_mass+1e-9) / (blue_mass+1e-9) - + # classify specific pair of reactions as positive or negative - # correlated based on indicator cutoff + # correlated based on indicator cutoff if indicator > indicator_cutoff: pearson = filtered_corr_matrix[index1, index2] indicator_dict[reaction1 + "~" + reaction2] = {'pearson': pearson, - 'indicator': indicator, + 'indicator': indicator, 'classification': "positive"} elif indicator < 1/indicator_cutoff: pearson = filtered_corr_matrix[index1, index2] indicator_dict[reaction1 + "~" + reaction2] = {'pearson': pearson, - 'indicator': indicator, + 'indicator': indicator, 'classification': "negative"} # if they do not overcome the cutoff replace their corresponding @@ -329,12 +329,12 @@ def correlated_reactions(steady_states, reactions=[], pearson_cutoff = 0.90, ind filtered_corr_matrix[index2, index1] = 0 pearson = filtered_corr_matrix[index1, index2] indicator_dict[reaction1 + "~" + reaction2] = {'pearson': pearson, - 'indicator': indicator, + 'indicator': indicator, 'classification': "no correlation"} - + if verbose == True: print("Completed process of",i+1,"from",corr_indices.shape[0],"copulas") - + if lower_triangle == True: filtered_corr_matrix[np.triu_indices(filtered_corr_matrix.shape[0], 1)] = np.nan np.fill_diagonal(filtered_corr_matrix, 1) @@ -346,21 +346,21 @@ def correlated_reactions(steady_states, reactions=[], pearson_cutoff = 0.90, ind -def cluster_corr_reactions(correlation_matrix, reactions, linkage="ward", +def cluster_corr_reactions(correlation_matrix, reactions, linkage="ward", t = 4.0, correction=True): """A Python function for hierarchical clustering of the correlation matrix Keyword arguments: correlation_matrix -- A numpy 2D array of a correlation matrix reactions -- A list with the model's reactions - linkage -- linkage defines the type of linkage. + linkage -- linkage defines the type of linkage. Available linkage types are: single, average, complete, ward. - t -- A threshold that defines a threshold that cuts the dendrogram + t -- A threshold that defines a threshold that cuts the dendrogram at a specific height and produces clusters correction -- A boolean variable that if True converts the values of the the correlation matrix to absolute values. """ - + # function to return a nested list with grouped reactions based on clustering def clusters_list(reactions, labels): clusters = [] @@ -372,21 +372,21 @@ def clusters_list(reactions, labels): cluster.append(reactions[where]) clusters.append(cluster) return clusters - - if correction == True: + + if correction == True: dissimilarity_matrix = 1 - abs(correlation_matrix) else: dissimilarity_matrix = 1 - correlation_matrix - + Z = hierarchy.linkage(dissimilarity_matrix, linkage) labels = hierarchy.fcluster(Z, t, criterion='distance') - + clusters = clusters_list(reactions, labels) return dissimilarity_matrix, labels, clusters - - -def graph_corr_matrix(correlation_matrix, reactions, correction=True, + + +def graph_corr_matrix(correlation_matrix, reactions, correction=True, clusters=[], subgraph_nodes = 5): """A Python function that creates the main graph and its subgraphs from a correlation matrix. @@ -397,27 +397,27 @@ def graph_corr_matrix(correlation_matrix, reactions, correction=True, correction -- A boolean variable that if True converts the values of the the correlation matrix to absolute values. clusters -- A nested list with clustered reactions created from the "" function. - subgraph_nodes -- A variable that specifies a cutoff for a graph's nodes. + subgraph_nodes -- A variable that specifies a cutoff for a graph's nodes. It filters subgraphs with low number of nodes.. """ - + graph_matrix = correlation_matrix.copy() np.fill_diagonal(graph_matrix, 0) - + if correction == True: graph_matrix = abs(graph_matrix) - + G = nx.from_numpy_array(graph_matrix) G = nx.relabel_nodes(G, lambda x: reactions[x]) - + pos = nx.spring_layout(G) unconnected_nodes = list(nx.isolates(G)) G.remove_nodes_from(unconnected_nodes) G_nodes = G.nodes() - + graph_list = [] layout_list = [] - + graph_list.append(G) layout_list.append(pos) @@ -425,14 +425,14 @@ def graph_corr_matrix(correlation_matrix, reactions, correction=True, H_nodes_list = [] for i in range(len(subgraphs)): - if len(subgraphs[i].nodes()) > subgraph_nodes and len(subgraphs[i].nodes()) != len(G_nodes): + if len(subgraphs[i].nodes()) > subgraph_nodes and len(subgraphs[i].nodes()) != len(G_nodes): H = G.subgraph(subgraphs[i].nodes()) for cluster in clusters: if H.has_node(cluster[0]) and H.nodes() not in H_nodes_list: H_nodes_list.append(H.nodes()) - + pos = nx.spring_layout(H) graph_list.append(H) layout_list.append(pos) - - return graph_list, layout_list \ No newline at end of file + + return graph_list, layout_list diff --git a/dingo/volestipy.pyx b/dingo_walk/volestipy.pyx similarity index 99% rename from dingo/volestipy.pyx rename to dingo_walk/volestipy.pyx index 6e8d3a98..ba3bf52d 100644 --- a/dingo/volestipy.pyx +++ b/dingo_walk/volestipy.pyx @@ -26,7 +26,7 @@ import json import scipy.io # ---------------------------------------------------------------------------------- -from dingo.pyoptinterface_based_impl import inner_ball +from dingo_walk.pyoptinterface_based_impl import inner_ball # Set the time def get_time_seed(): diff --git a/ext_data/matlab_model_wrapper.m b/ext_data/matlab_model_wrapper.m index c75bd7a8..5a33aec2 100644 --- a/ext_data/matlab_model_wrapper.m +++ b/ext_data/matlab_model_wrapper.m @@ -3,14 +3,14 @@ fldnames = fieldnames(model); -dingo_model = struct; -dingo_model.S = model.(fldnames{1}).S; -dingo_model.lb = model.(fldnames{1}).lb; -dingo_model.ub = model.(fldnames{1}).ub; -dingo_model.c = model.(fldnames{1}).c; -dingo_model.index_obj = find(dingo_model.c == 1); -dingo_model.rxns = model.(fldnames{1}).rxns; -dingo_model.mets = model.(fldnames{1}).mets; +dingo_walk_model = struct; +dingo_walk_model.S = model.(fldnames{1}).S; +dingo_walk_model.lb = model.(fldnames{1}).lb; +dingo_walk_model.ub = model.(fldnames{1}).ub; +dingo_walk_model.c = model.(fldnames{1}).c; +dingo_walk_model.index_obj = find(dingo_walk_model.c == 1); +dingo_walk_model.rxns = model.(fldnames{1}).rxns; +dingo_walk_model.mets = model.(fldnames{1}).mets; -save('dingo_model.mat', 'dingo_model') +save('dingo_walk_model.mat', 'dingo_walk_model') diff --git a/poetry.lock b/poetry.lock index 635b3761..f3b0ad81 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,15 +1,30 @@ # This file is automatically @generated by Poetry and should not be changed by hand. +[[package]] +name = "annotated-types" +version = "0.7.0" +description = "Reusable constraint types to use with typing.Annotated" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, + {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, +] + +[package.dependencies] +typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.9\""} + [[package]] name = "anyio" -version = "4.4.0" +version = "4.5.2" description = "High level compatibility layer for multiple asynchronous event loop implementations" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "anyio-4.4.0-py3-none-any.whl", hash = "sha256:c1b2d8f46a8a812513012e1107cb0e68c17159a7a594208005a57dc776e1bdc7"}, - {file = "anyio-4.4.0.tar.gz", hash = "sha256:5aadc6a1bbb7cdb0bede386cac5e2940f5e2ff3aa20277e991cf028e0585ce94"}, + {file = "anyio-4.5.2-py3-none-any.whl", hash = "sha256:c011ee36bc1e8ba40e5a81cb9df91925c218fe9b778554e0b56a21e1b5d4716f"}, + {file = "anyio-4.5.2.tar.gz", hash = "sha256:23009af4ed04ce05991845451e11ef02fc7c5ed29179ac9a420e5ad0ac7ddc5b"}, ] [package.dependencies] @@ -19,9 +34,9 @@ sniffio = ">=1.1" typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} [package.extras] -doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] -trio = ["trio (>=0.23)"] +doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21.0b1)"] +trio = ["trio (>=0.26.1)"] [[package]] name = "appdirs" @@ -49,91 +64,91 @@ files = [ [[package]] name = "certifi" -version = "2024.7.4" +version = "2025.1.31" description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.7.4-py3-none-any.whl", hash = "sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90"}, - {file = "certifi-2024.7.4.tar.gz", hash = "sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b"}, + {file = "certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe"}, + {file = "certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651"}, ] [[package]] name = "cffi" -version = "1.17.0" +version = "1.17.1" description = "Foreign Function Interface for Python calling C code." category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "cffi-1.17.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f9338cc05451f1942d0d8203ec2c346c830f8e86469903d5126c1f0a13a2bcbb"}, - {file = "cffi-1.17.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a0ce71725cacc9ebf839630772b07eeec220cbb5f03be1399e0457a1464f8e1a"}, - {file = "cffi-1.17.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c815270206f983309915a6844fe994b2fa47e5d05c4c4cef267c3b30e34dbe42"}, - {file = "cffi-1.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6bdcd415ba87846fd317bee0774e412e8792832e7805938987e4ede1d13046d"}, - {file = "cffi-1.17.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8a98748ed1a1df4ee1d6f927e151ed6c1a09d5ec21684de879c7ea6aa96f58f2"}, - {file = "cffi-1.17.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0a048d4f6630113e54bb4b77e315e1ba32a5a31512c31a273807d0027a7e69ab"}, - {file = "cffi-1.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24aa705a5f5bd3a8bcfa4d123f03413de5d86e497435693b638cbffb7d5d8a1b"}, - {file = "cffi-1.17.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:856bf0924d24e7f93b8aee12a3a1095c34085600aa805693fb7f5d1962393206"}, - {file = "cffi-1.17.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:4304d4416ff032ed50ad6bb87416d802e67139e31c0bde4628f36a47a3164bfa"}, - {file = "cffi-1.17.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:331ad15c39c9fe9186ceaf87203a9ecf5ae0ba2538c9e898e3a6967e8ad3db6f"}, - {file = "cffi-1.17.0-cp310-cp310-win32.whl", hash = "sha256:669b29a9eca6146465cc574659058ed949748f0809a2582d1f1a324eb91054dc"}, - {file = "cffi-1.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:48b389b1fd5144603d61d752afd7167dfd205973a43151ae5045b35793232aa2"}, - {file = "cffi-1.17.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c5d97162c196ce54af6700949ddf9409e9833ef1003b4741c2b39ef46f1d9720"}, - {file = "cffi-1.17.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5ba5c243f4004c750836f81606a9fcb7841f8874ad8f3bf204ff5e56332b72b9"}, - {file = "cffi-1.17.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bb9333f58fc3a2296fb1d54576138d4cf5d496a2cc118422bd77835e6ae0b9cb"}, - {file = "cffi-1.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:435a22d00ec7d7ea533db494da8581b05977f9c37338c80bc86314bec2619424"}, - {file = "cffi-1.17.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d1df34588123fcc88c872f5acb6f74ae59e9d182a2707097f9e28275ec26a12d"}, - {file = "cffi-1.17.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df8bb0010fdd0a743b7542589223a2816bdde4d94bb5ad67884348fa2c1c67e8"}, - {file = "cffi-1.17.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8b5b9712783415695663bd463990e2f00c6750562e6ad1d28e072a611c5f2a6"}, - {file = "cffi-1.17.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ffef8fd58a36fb5f1196919638f73dd3ae0db1a878982b27a9a5a176ede4ba91"}, - {file = "cffi-1.17.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4e67d26532bfd8b7f7c05d5a766d6f437b362c1bf203a3a5ce3593a645e870b8"}, - {file = "cffi-1.17.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:45f7cd36186db767d803b1473b3c659d57a23b5fa491ad83c6d40f2af58e4dbb"}, - {file = "cffi-1.17.0-cp311-cp311-win32.whl", hash = "sha256:a9015f5b8af1bb6837a3fcb0cdf3b874fe3385ff6274e8b7925d81ccaec3c5c9"}, - {file = "cffi-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:b50aaac7d05c2c26dfd50c3321199f019ba76bb650e346a6ef3616306eed67b0"}, - {file = "cffi-1.17.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aec510255ce690d240f7cb23d7114f6b351c733a74c279a84def763660a2c3bc"}, - {file = "cffi-1.17.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2770bb0d5e3cc0e31e7318db06efcbcdb7b31bcb1a70086d3177692a02256f59"}, - {file = "cffi-1.17.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:db9a30ec064129d605d0f1aedc93e00894b9334ec74ba9c6bdd08147434b33eb"}, - {file = "cffi-1.17.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a47eef975d2b8b721775a0fa286f50eab535b9d56c70a6e62842134cf7841195"}, - {file = "cffi-1.17.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f3e0992f23bbb0be00a921eae5363329253c3b86287db27092461c887b791e5e"}, - {file = "cffi-1.17.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6107e445faf057c118d5050560695e46d272e5301feffda3c41849641222a828"}, - {file = "cffi-1.17.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb862356ee9391dc5a0b3cbc00f416b48c1b9a52d252d898e5b7696a5f9fe150"}, - {file = "cffi-1.17.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c1c13185b90bbd3f8b5963cd8ce7ad4ff441924c31e23c975cb150e27c2bf67a"}, - {file = "cffi-1.17.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:17c6d6d3260c7f2d94f657e6872591fe8733872a86ed1345bda872cfc8c74885"}, - {file = "cffi-1.17.0-cp312-cp312-win32.whl", hash = "sha256:c3b8bd3133cd50f6b637bb4322822c94c5ce4bf0d724ed5ae70afce62187c492"}, - {file = "cffi-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:dca802c8db0720ce1c49cce1149ff7b06e91ba15fa84b1d59144fef1a1bc7ac2"}, - {file = "cffi-1.17.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6ce01337d23884b21c03869d2f68c5523d43174d4fc405490eb0091057943118"}, - {file = "cffi-1.17.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cab2eba3830bf4f6d91e2d6718e0e1c14a2f5ad1af68a89d24ace0c6b17cced7"}, - {file = "cffi-1.17.0-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:14b9cbc8f7ac98a739558eb86fabc283d4d564dafed50216e7f7ee62d0d25377"}, - {file = "cffi-1.17.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b00e7bcd71caa0282cbe3c90966f738e2db91e64092a877c3ff7f19a1628fdcb"}, - {file = "cffi-1.17.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:41f4915e09218744d8bae14759f983e466ab69b178de38066f7579892ff2a555"}, - {file = "cffi-1.17.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e4760a68cab57bfaa628938e9c2971137e05ce48e762a9cb53b76c9b569f1204"}, - {file = "cffi-1.17.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:011aff3524d578a9412c8b3cfaa50f2c0bd78e03eb7af7aa5e0df59b158efb2f"}, - {file = "cffi-1.17.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:a003ac9edc22d99ae1286b0875c460351f4e101f8c9d9d2576e78d7e048f64e0"}, - {file = "cffi-1.17.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ef9528915df81b8f4c7612b19b8628214c65c9b7f74db2e34a646a0a2a0da2d4"}, - {file = "cffi-1.17.0-cp313-cp313-win32.whl", hash = "sha256:70d2aa9fb00cf52034feac4b913181a6e10356019b18ef89bc7c12a283bf5f5a"}, - {file = "cffi-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:b7b6ea9e36d32582cda3465f54c4b454f62f23cb083ebc7a94e2ca6ef011c3a7"}, - {file = "cffi-1.17.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:964823b2fc77b55355999ade496c54dde161c621cb1f6eac61dc30ed1b63cd4c"}, - {file = "cffi-1.17.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:516a405f174fd3b88829eabfe4bb296ac602d6a0f68e0d64d5ac9456194a5b7e"}, - {file = "cffi-1.17.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dec6b307ce928e8e112a6bb9921a1cb00a0e14979bf28b98e084a4b8a742bd9b"}, - {file = "cffi-1.17.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e4094c7b464cf0a858e75cd14b03509e84789abf7b79f8537e6a72152109c76e"}, - {file = "cffi-1.17.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2404f3de742f47cb62d023f0ba7c5a916c9c653d5b368cc966382ae4e57da401"}, - {file = "cffi-1.17.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3aa9d43b02a0c681f0bfbc12d476d47b2b2b6a3f9287f11ee42989a268a1833c"}, - {file = "cffi-1.17.0-cp38-cp38-win32.whl", hash = "sha256:0bb15e7acf8ab35ca8b24b90af52c8b391690ef5c4aec3d31f38f0d37d2cc499"}, - {file = "cffi-1.17.0-cp38-cp38-win_amd64.whl", hash = "sha256:93a7350f6706b31f457c1457d3a3259ff9071a66f312ae64dc024f049055f72c"}, - {file = "cffi-1.17.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1a2ddbac59dc3716bc79f27906c010406155031a1c801410f1bafff17ea304d2"}, - {file = "cffi-1.17.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6327b572f5770293fc062a7ec04160e89741e8552bf1c358d1a23eba68166759"}, - {file = "cffi-1.17.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbc183e7bef690c9abe5ea67b7b60fdbca81aa8da43468287dae7b5c046107d4"}, - {file = "cffi-1.17.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bdc0f1f610d067c70aa3737ed06e2726fd9d6f7bfee4a351f4c40b6831f4e82"}, - {file = "cffi-1.17.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6d872186c1617d143969defeadac5a904e6e374183e07977eedef9c07c8953bf"}, - {file = "cffi-1.17.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0d46ee4764b88b91f16661a8befc6bfb24806d885e27436fdc292ed7e6f6d058"}, - {file = "cffi-1.17.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f76a90c345796c01d85e6332e81cab6d70de83b829cf1d9762d0a3da59c7932"}, - {file = "cffi-1.17.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0e60821d312f99d3e1569202518dddf10ae547e799d75aef3bca3a2d9e8ee693"}, - {file = "cffi-1.17.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:eb09b82377233b902d4c3fbeeb7ad731cdab579c6c6fda1f763cd779139e47c3"}, - {file = "cffi-1.17.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:24658baf6224d8f280e827f0a50c46ad819ec8ba380a42448e24459daf809cf4"}, - {file = "cffi-1.17.0-cp39-cp39-win32.whl", hash = "sha256:0fdacad9e0d9fc23e519efd5ea24a70348305e8d7d85ecbb1a5fa66dc834e7fb"}, - {file = "cffi-1.17.0-cp39-cp39-win_amd64.whl", hash = "sha256:7cbc78dc018596315d4e7841c8c3a7ae31cc4d638c9b627f87d52e8abaaf2d29"}, - {file = "cffi-1.17.0.tar.gz", hash = "sha256:f3157624b7558b914cb039fd1af735e5e8049a87c817cc215109ad1c8779df76"}, + {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, + {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, + {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, + {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, + {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, + {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, + {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, + {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, + {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, + {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, + {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, + {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, + {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, + {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, + {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, + {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, ] [package.dependencies] @@ -141,27 +156,27 @@ pycparser = "*" [[package]] name = "cobra" -version = "0.26.3" +version = "0.29.1" description = "COBRApy is a package for constraint-based modeling of metabolic networks." category = "main" optional = false python-versions = "*" files = [ - {file = "cobra-0.26.3-py2.py3-none-any.whl", hash = "sha256:efd75ba1b2d12bb64d88ec67bd6037d76eaebb2af349f314090dbfedc424201a"}, - {file = "cobra-0.26.3.tar.gz", hash = "sha256:69c768c452777c13efc4d068460812af93ba6dee7b75d4c0c6c3ddee27f6b598"}, + {file = "cobra-0.29.1-py2.py3-none-any.whl", hash = "sha256:734df889e751171c12ee9c5ec6f2567f47f9997e183822d4290776aa650c9593"}, + {file = "cobra-0.29.1.tar.gz", hash = "sha256:47cd4fe80eb329ed75ccfb7ecbaac6275e986685392d52922bc8ad3cbc599674"}, ] [package.dependencies] appdirs = ">=1.4,<2.0" -depinfo = ">=1.7,<2.0" +depinfo = ">=2.2,<3.0" diskcache = ">=5.0,<6.0" future = "*" httpx = ">=0.24,<1.0" importlib-resources = "*" -numpy = ">=1.13,<1.24" -optlang = ">=1.5,<2.0" -pandas = ">=1.0,<2.0" -pydantic = ">=1.6,<2.0" +numpy = ">=1.13" +optlang = ">=1.8,<2.0" +pandas = ">=1.0,<3.0" +pydantic = ">=1.6" python-libsbml = ">=5.19,<6.0" rich = ">=8.0" "ruamel.yaml" = ">=0.16,<1.0" @@ -376,18 +391,19 @@ files = [ [[package]] name = "depinfo" -version = "1.7.0" +version = "2.2.0" description = "List any package's direct dependencies and their versions." category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "depinfo-1.7.0-py2.py3-none-any.whl", hash = "sha256:5f772fdcd5a376f2d5c01e6eac7120d91316536b1e1885aea1e87f03f86a38ab"}, - {file = "depinfo-1.7.0.tar.gz", hash = "sha256:770c82e02f7f1f58c8ff87f8ad132ef3b5f5acbce586b838fadd0eb25b131340"}, + {file = "depinfo-2.2.0-py3-none-any.whl", hash = "sha256:3d9ba933e7a9d718b9915f75c844a38c5603cd3cdba1816ab95e0b148b100d8f"}, + {file = "depinfo-2.2.0.tar.gz", hash = "sha256:e0971be11519a823b126c875e17ad3ad8adaa6a86737395b9dbcef3ca0e77b0c"}, ] [package.extras] development = ["black", "isort", "tox"] +rich = ["rich"] [[package]] name = "diskcache" @@ -418,54 +434,62 @@ test = ["pytest (>=6)"] [[package]] name = "fonttools" -version = "4.53.1" +version = "4.56.0" description = "Tools to manipulate font files" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "fonttools-4.53.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0679a30b59d74b6242909945429dbddb08496935b82f91ea9bf6ad240ec23397"}, - {file = "fonttools-4.53.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e8bf06b94694251861ba7fdeea15c8ec0967f84c3d4143ae9daf42bbc7717fe3"}, - {file = "fonttools-4.53.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b96cd370a61f4d083c9c0053bf634279b094308d52fdc2dd9a22d8372fdd590d"}, - {file = "fonttools-4.53.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1c7c5aa18dd3b17995898b4a9b5929d69ef6ae2af5b96d585ff4005033d82f0"}, - {file = "fonttools-4.53.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e013aae589c1c12505da64a7d8d023e584987e51e62006e1bb30d72f26522c41"}, - {file = "fonttools-4.53.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9efd176f874cb6402e607e4cc9b4a9cd584d82fc34a4b0c811970b32ba62501f"}, - {file = "fonttools-4.53.1-cp310-cp310-win32.whl", hash = "sha256:c8696544c964500aa9439efb6761947393b70b17ef4e82d73277413f291260a4"}, - {file = "fonttools-4.53.1-cp310-cp310-win_amd64.whl", hash = "sha256:8959a59de5af6d2bec27489e98ef25a397cfa1774b375d5787509c06659b3671"}, - {file = "fonttools-4.53.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:da33440b1413bad53a8674393c5d29ce64d8c1a15ef8a77c642ffd900d07bfe1"}, - {file = "fonttools-4.53.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5ff7e5e9bad94e3a70c5cd2fa27f20b9bb9385e10cddab567b85ce5d306ea923"}, - {file = "fonttools-4.53.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6e7170d675d12eac12ad1a981d90f118c06cf680b42a2d74c6c931e54b50719"}, - {file = "fonttools-4.53.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bee32ea8765e859670c4447b0817514ca79054463b6b79784b08a8df3a4d78e3"}, - {file = "fonttools-4.53.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6e08f572625a1ee682115223eabebc4c6a2035a6917eac6f60350aba297ccadb"}, - {file = "fonttools-4.53.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b21952c092ffd827504de7e66b62aba26fdb5f9d1e435c52477e6486e9d128b2"}, - {file = "fonttools-4.53.1-cp311-cp311-win32.whl", hash = "sha256:9dfdae43b7996af46ff9da520998a32b105c7f098aeea06b2226b30e74fbba88"}, - {file = "fonttools-4.53.1-cp311-cp311-win_amd64.whl", hash = "sha256:d4d0096cb1ac7a77b3b41cd78c9b6bc4a400550e21dc7a92f2b5ab53ed74eb02"}, - {file = "fonttools-4.53.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d92d3c2a1b39631a6131c2fa25b5406855f97969b068e7e08413325bc0afba58"}, - {file = "fonttools-4.53.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3b3c8ebafbee8d9002bd8f1195d09ed2bd9ff134ddec37ee8f6a6375e6a4f0e8"}, - {file = "fonttools-4.53.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32f029c095ad66c425b0ee85553d0dc326d45d7059dbc227330fc29b43e8ba60"}, - {file = "fonttools-4.53.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10f5e6c3510b79ea27bb1ebfcc67048cde9ec67afa87c7dd7efa5c700491ac7f"}, - {file = "fonttools-4.53.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f677ce218976496a587ab17140da141557beb91d2a5c1a14212c994093f2eae2"}, - {file = "fonttools-4.53.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9e6ceba2a01b448e36754983d376064730690401da1dd104ddb543519470a15f"}, - {file = "fonttools-4.53.1-cp312-cp312-win32.whl", hash = "sha256:791b31ebbc05197d7aa096bbc7bd76d591f05905d2fd908bf103af4488e60670"}, - {file = "fonttools-4.53.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ed170b5e17da0264b9f6fae86073be3db15fa1bd74061c8331022bca6d09bab"}, - {file = "fonttools-4.53.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:c818c058404eb2bba05e728d38049438afd649e3c409796723dfc17cd3f08749"}, - {file = "fonttools-4.53.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:651390c3b26b0c7d1f4407cad281ee7a5a85a31a110cbac5269de72a51551ba2"}, - {file = "fonttools-4.53.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e54f1bba2f655924c1138bbc7fa91abd61f45c68bd65ab5ed985942712864bbb"}, - {file = "fonttools-4.53.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9cd19cf4fe0595ebdd1d4915882b9440c3a6d30b008f3cc7587c1da7b95be5f"}, - {file = "fonttools-4.53.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2af40ae9cdcb204fc1d8f26b190aa16534fcd4f0df756268df674a270eab575d"}, - {file = "fonttools-4.53.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:35250099b0cfb32d799fb5d6c651220a642fe2e3c7d2560490e6f1d3f9ae9169"}, - {file = "fonttools-4.53.1-cp38-cp38-win32.whl", hash = "sha256:f08df60fbd8d289152079a65da4e66a447efc1d5d5a4d3f299cdd39e3b2e4a7d"}, - {file = "fonttools-4.53.1-cp38-cp38-win_amd64.whl", hash = "sha256:7b6b35e52ddc8fb0db562133894e6ef5b4e54e1283dff606fda3eed938c36fc8"}, - {file = "fonttools-4.53.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:75a157d8d26c06e64ace9df037ee93a4938a4606a38cb7ffaf6635e60e253b7a"}, - {file = "fonttools-4.53.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4824c198f714ab5559c5be10fd1adf876712aa7989882a4ec887bf1ef3e00e31"}, - {file = "fonttools-4.53.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:becc5d7cb89c7b7afa8321b6bb3dbee0eec2b57855c90b3e9bf5fb816671fa7c"}, - {file = "fonttools-4.53.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84ec3fb43befb54be490147b4a922b5314e16372a643004f182babee9f9c3407"}, - {file = "fonttools-4.53.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:73379d3ffdeecb376640cd8ed03e9d2d0e568c9d1a4e9b16504a834ebadc2dfb"}, - {file = "fonttools-4.53.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:02569e9a810f9d11f4ae82c391ebc6fb5730d95a0657d24d754ed7763fb2d122"}, - {file = "fonttools-4.53.1-cp39-cp39-win32.whl", hash = "sha256:aae7bd54187e8bf7fd69f8ab87b2885253d3575163ad4d669a262fe97f0136cb"}, - {file = "fonttools-4.53.1-cp39-cp39-win_amd64.whl", hash = "sha256:e5b708073ea3d684235648786f5f6153a48dc8762cdfe5563c57e80787c29fbb"}, - {file = "fonttools-4.53.1-py3-none-any.whl", hash = "sha256:f1f8758a2ad110bd6432203a344269f445a2907dc24ef6bccfd0ac4e14e0d71d"}, - {file = "fonttools-4.53.1.tar.gz", hash = "sha256:e128778a8e9bc11159ce5447f76766cefbd876f44bd79aff030287254e4752c4"}, + {file = "fonttools-4.56.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:331954d002dbf5e704c7f3756028e21db07097c19722569983ba4d74df014000"}, + {file = "fonttools-4.56.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8d1613abd5af2f93c05867b3a3759a56e8bf97eb79b1da76b2bc10892f96ff16"}, + {file = "fonttools-4.56.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:705837eae384fe21cee5e5746fd4f4b2f06f87544fa60f60740007e0aa600311"}, + {file = "fonttools-4.56.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc871904a53a9d4d908673c6faa15689874af1c7c5ac403a8e12d967ebd0c0dc"}, + {file = "fonttools-4.56.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:38b947de71748bab150259ee05a775e8a0635891568e9fdb3cdd7d0e0004e62f"}, + {file = "fonttools-4.56.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:86b2a1013ef7a64d2e94606632683f07712045ed86d937c11ef4dde97319c086"}, + {file = "fonttools-4.56.0-cp310-cp310-win32.whl", hash = "sha256:133bedb9a5c6376ad43e6518b7e2cd2f866a05b1998f14842631d5feb36b5786"}, + {file = "fonttools-4.56.0-cp310-cp310-win_amd64.whl", hash = "sha256:17f39313b649037f6c800209984a11fc256a6137cbe5487091c6c7187cae4685"}, + {file = "fonttools-4.56.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7ef04bc7827adb7532be3d14462390dd71287644516af3f1e67f1e6ff9c6d6df"}, + {file = "fonttools-4.56.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ffda9b8cd9cb8b301cae2602ec62375b59e2e2108a117746f12215145e3f786c"}, + {file = "fonttools-4.56.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e993e8db36306cc3f1734edc8ea67906c55f98683d6fd34c3fc5593fdbba4c"}, + {file = "fonttools-4.56.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:003548eadd674175510773f73fb2060bb46adb77c94854af3e0cc5bc70260049"}, + {file = "fonttools-4.56.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bd9825822e7bb243f285013e653f6741954d8147427aaa0324a862cdbf4cbf62"}, + {file = "fonttools-4.56.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b23d30a2c0b992fb1c4f8ac9bfde44b5586d23457759b6cf9a787f1a35179ee0"}, + {file = "fonttools-4.56.0-cp311-cp311-win32.whl", hash = "sha256:47b5e4680002ae1756d3ae3b6114e20aaee6cc5c69d1e5911f5ffffd3ee46c6b"}, + {file = "fonttools-4.56.0-cp311-cp311-win_amd64.whl", hash = "sha256:14a3e3e6b211660db54ca1ef7006401e4a694e53ffd4553ab9bc87ead01d0f05"}, + {file = "fonttools-4.56.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d6f195c14c01bd057bc9b4f70756b510e009c83c5ea67b25ced3e2c38e6ee6e9"}, + {file = "fonttools-4.56.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fa760e5fe8b50cbc2d71884a1eff2ed2b95a005f02dda2fa431560db0ddd927f"}, + {file = "fonttools-4.56.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d54a45d30251f1d729e69e5b675f9a08b7da413391a1227781e2a297fa37f6d2"}, + {file = "fonttools-4.56.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:661a8995d11e6e4914a44ca7d52d1286e2d9b154f685a4d1f69add8418961563"}, + {file = "fonttools-4.56.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9d94449ad0a5f2a8bf5d2f8d71d65088aee48adbe45f3c5f8e00e3ad861ed81a"}, + {file = "fonttools-4.56.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f59746f7953f69cc3290ce2f971ab01056e55ddd0fb8b792c31a8acd7fee2d28"}, + {file = "fonttools-4.56.0-cp312-cp312-win32.whl", hash = "sha256:bce60f9a977c9d3d51de475af3f3581d9b36952e1f8fc19a1f2254f1dda7ce9c"}, + {file = "fonttools-4.56.0-cp312-cp312-win_amd64.whl", hash = "sha256:300c310bb725b2bdb4f5fc7e148e190bd69f01925c7ab437b9c0ca3e1c7cd9ba"}, + {file = "fonttools-4.56.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:f20e2c0dfab82983a90f3d00703ac0960412036153e5023eed2b4641d7d5e692"}, + {file = "fonttools-4.56.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f36a0868f47b7566237640c026c65a86d09a3d9ca5df1cd039e30a1da73098a0"}, + {file = "fonttools-4.56.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62b4c6802fa28e14dba010e75190e0e6228513573f1eeae57b11aa1a39b7e5b1"}, + {file = "fonttools-4.56.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a05d1f07eb0a7d755fbe01fee1fd255c3a4d3730130cf1bfefb682d18fd2fcea"}, + {file = "fonttools-4.56.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0073b62c3438cf0058488c002ea90489e8801d3a7af5ce5f7c05c105bee815c3"}, + {file = "fonttools-4.56.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e2cad98c94833465bcf28f51c248aaf07ca022efc6a3eba750ad9c1e0256d278"}, + {file = "fonttools-4.56.0-cp313-cp313-win32.whl", hash = "sha256:d0cb73ccf7f6d7ca8d0bc7ea8ac0a5b84969a41c56ac3ac3422a24df2680546f"}, + {file = "fonttools-4.56.0-cp313-cp313-win_amd64.whl", hash = "sha256:62cc1253827d1e500fde9dbe981219fea4eb000fd63402283472d38e7d8aa1c6"}, + {file = "fonttools-4.56.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3fd3fccb7b9adaaecfa79ad51b759f2123e1aba97f857936ce044d4f029abd71"}, + {file = "fonttools-4.56.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:193b86e9f769320bc98ffdb42accafb5d0c8c49bd62884f1c0702bc598b3f0a2"}, + {file = "fonttools-4.56.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e81c1cc80c1d8bf071356cc3e0e25071fbba1c75afc48d41b26048980b3c771"}, + {file = "fonttools-4.56.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9270505a19361e81eecdbc2c251ad1e1a9a9c2ad75fa022ccdee533f55535dc"}, + {file = "fonttools-4.56.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:53f5e9767978a4daf46f28e09dbeb7d010319924ae622f7b56174b777258e5ba"}, + {file = "fonttools-4.56.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:9da650cb29bc098b8cfd15ef09009c914b35c7986c8fa9f08b51108b7bc393b4"}, + {file = "fonttools-4.56.0-cp38-cp38-win32.whl", hash = "sha256:965d0209e6dbdb9416100123b6709cb13f5232e2d52d17ed37f9df0cc31e2b35"}, + {file = "fonttools-4.56.0-cp38-cp38-win_amd64.whl", hash = "sha256:654ac4583e2d7c62aebc6fc6a4c6736f078f50300e18aa105d87ce8925cfac31"}, + {file = "fonttools-4.56.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ca7962e8e5fc047cc4e59389959843aafbf7445b6c08c20d883e60ced46370a5"}, + {file = "fonttools-4.56.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a1af375734018951c31c0737d04a9d5fd0a353a0253db5fbed2ccd44eac62d8c"}, + {file = "fonttools-4.56.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:442ad4122468d0e47d83bc59d0e91b474593a8c813839e1872e47c7a0cb53b10"}, + {file = "fonttools-4.56.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3cf4f8d2a30b454ac682e12c61831dcb174950c406011418e739de592bbf8f76"}, + {file = "fonttools-4.56.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:96a4271f63a615bcb902b9f56de00ea225d6896052c49f20d0c91e9f43529a29"}, + {file = "fonttools-4.56.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6c1d38642ca2dddc7ae992ef5d026e5061a84f10ff2b906be5680ab089f55bb8"}, + {file = "fonttools-4.56.0-cp39-cp39-win32.whl", hash = "sha256:2d351275f73ebdd81dd5b09a8b8dac7a30f29a279d41e1c1192aedf1b6dced40"}, + {file = "fonttools-4.56.0-cp39-cp39-win_amd64.whl", hash = "sha256:d6ca96d1b61a707ba01a43318c9c40aaf11a5a568d1e61146fafa6ab20890793"}, + {file = "fonttools-4.56.0-py3-none-any.whl", hash = "sha256:1088182f68c303b50ca4dc0c82d42083d176cba37af1937e1a976a31149d4d14"}, + {file = "fonttools-4.56.0.tar.gz", hash = "sha256:a114d1567e1a1586b7e9e7fc2ff686ca542a82769a296cef131e4c4af51e58f4"}, ] [package.extras] @@ -508,28 +532,29 @@ files = [ [[package]] name = "highsbox" -version = "1.7.2.post1" +version = "1.9.0" description = "highsbox: binary distribution of HiGHS optimizer" category = "main" optional = false python-versions = "*" files = [ - {file = "highsbox-1.7.2.post1-py3-none-macosx_10_9_x86_64.whl", hash = "sha256:5237e1a3e54cfb5c4dfa5986a7a716b9f7ef342cbc67f94439d9d1409a529e43"}, - {file = "highsbox-1.7.2.post1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:5a143360ed2829eefe26f648d349b4de22934926930f9312982f6c7a0dffb138"}, - {file = "highsbox-1.7.2.post1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:d9db8a151cb33e05a30d82a5395a1818d43ac25474e97a4eda3798c9e04c1bd5"}, - {file = "highsbox-1.7.2.post1-py3-none-win_amd64.whl", hash = "sha256:d004685cecc9a2058d7d1498625fb5b78329bf6fa90e652e43b506ea82f34ec6"}, + {file = "highsbox-1.9.0-py3-none-macosx_10_9_x86_64.whl", hash = "sha256:365fb6f8b5fb0127660e94d4d5db88a3635679ba3122e6d92fbc16ed3d2df25d"}, + {file = "highsbox-1.9.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:1e7509bc5bfb500522dd72676eca4fe08f220b3f20953746e643d1f2c7ad90f6"}, + {file = "highsbox-1.9.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:d2745eec920a835c9970936b67a2d24b9432cc9f5cfd429743c978a9f39d170e"}, + {file = "highsbox-1.9.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:1d03d8988fa885e4c81e1d9e3e8b65c9a5d841ba18c9c00eec75257d156571ec"}, + {file = "highsbox-1.9.0-py3-none-win_amd64.whl", hash = "sha256:91e79f61c9397c89828038cbe1799927653e45451ddb106c3acca1ded21df61d"}, ] [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.7" description = "A minimal low-level HTTP client." category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.7-py3-none-any.whl", hash = "sha256:a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd"}, + {file = "httpcore-1.0.7.tar.gz", hash = "sha256:8551cb62a169ec7162ac7be8d4817d561f60e08eaa485234898414bb5a8a0b4c"}, ] [package.dependencies] @@ -540,18 +565,18 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (>=1.0.0,<2.0.0)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" -version = "0.27.0" +version = "0.28.1" description = "The next generation HTTP client." category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "httpx-0.27.0-py3-none-any.whl", hash = "sha256:71d5465162c13681bff01ad59b2cc68dd838ea1f10e51574bac27103f00c91a5"}, - {file = "httpx-0.27.0.tar.gz", hash = "sha256:a0cb88a46f32dc874e04ee956e4c2764aba2aa228f650b06788ba6bda2962ab5"}, + {file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"}, + {file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc"}, ] [package.dependencies] @@ -559,44 +584,51 @@ anyio = "*" certifi = "*" httpcore = ">=1.0.0,<2.0.0" idna = "*" -sniffio = "*" [package.extras] brotli = ["brotli", "brotlicffi"] cli = ["click (>=8.0.0,<9.0.0)", "pygments (>=2.0.0,<3.0.0)", "rich (>=10,<14)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (>=1.0.0,<2.0.0)"] +zstd = ["zstandard (>=0.18.0)"] [[package]] name = "idna" -version = "3.7" +version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" category = "main" optional = false -python-versions = ">=3.5" +python-versions = ">=3.6" files = [ - {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, - {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, ] +[package.extras] +all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] + [[package]] name = "importlib-resources" -version = "6.4.2" +version = "6.4.5" description = "Read resources from Python packages" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_resources-6.4.2-py3-none-any.whl", hash = "sha256:8bba8c54a8a3afaa1419910845fa26ebd706dc716dd208d9b158b4b6966f5c5c"}, - {file = "importlib_resources-6.4.2.tar.gz", hash = "sha256:6cbfbefc449cc6e2095dd184691b7a12a04f40bc75dd4c55d31c34f174cdf57a"}, + {file = "importlib_resources-6.4.5-py3-none-any.whl", hash = "sha256:ac29d5f956f01d5e4bb63102a5a19957f1b9175e45649977264a1416783bb717"}, + {file = "importlib_resources-6.4.5.tar.gz", hash = "sha256:980862a1d16c9e147a59603677fa2aa5fd82b87f223b6cb870695bcfce830065"}, ] [package.dependencies] zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} [package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] +cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -test = ["jaraco.test (>=5.4)", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-ruff (>=0.2.1)", "zipp (>=3.17)"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["jaraco.test (>=5.4)", "pytest (>=6,!=8.1.*)", "zipp (>=3.17)"] +type = ["pytest-mypy"] [[package]] name = "kaleido" @@ -616,116 +648,126 @@ files = [ [[package]] name = "kiwisolver" -version = "1.4.5" +version = "1.4.7" description = "A fast implementation of the Cassowary constraint solver" category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "kiwisolver-1.4.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:05703cf211d585109fcd72207a31bb170a0f22144d68298dc5e61b3c946518af"}, - {file = "kiwisolver-1.4.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:146d14bebb7f1dc4d5fbf74f8a6cb15ac42baadee8912eb84ac0b3b2a3dc6ac3"}, - {file = "kiwisolver-1.4.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6ef7afcd2d281494c0a9101d5c571970708ad911d028137cd558f02b851c08b4"}, - {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9eaa8b117dc8337728e834b9c6e2611f10c79e38f65157c4c38e9400286f5cb1"}, - {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ec20916e7b4cbfb1f12380e46486ec4bcbaa91a9c448b97023fde0d5bbf9e4ff"}, - {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39b42c68602539407884cf70d6a480a469b93b81b7701378ba5e2328660c847a"}, - {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa12042de0171fad672b6c59df69106d20d5596e4f87b5e8f76df757a7c399aa"}, - {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2a40773c71d7ccdd3798f6489aaac9eee213d566850a9533f8d26332d626b82c"}, - {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:19df6e621f6d8b4b9c4d45f40a66839294ff2bb235e64d2178f7522d9170ac5b"}, - {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:83d78376d0d4fd884e2c114d0621624b73d2aba4e2788182d286309ebdeed770"}, - {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:e391b1f0a8a5a10ab3b9bb6afcfd74f2175f24f8975fb87ecae700d1503cdee0"}, - {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:852542f9481f4a62dbb5dd99e8ab7aedfeb8fb6342349a181d4036877410f525"}, - {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59edc41b24031bc25108e210c0def6f6c2191210492a972d585a06ff246bb79b"}, - {file = "kiwisolver-1.4.5-cp310-cp310-win32.whl", hash = "sha256:a6aa6315319a052b4ee378aa171959c898a6183f15c1e541821c5c59beaa0238"}, - {file = "kiwisolver-1.4.5-cp310-cp310-win_amd64.whl", hash = "sha256:d0ef46024e6a3d79c01ff13801cb19d0cad7fd859b15037aec74315540acc276"}, - {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-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:32d5cf40c4f7c7b3ca500f8985eb3fb3a7dfc023215e876f207956b5ea26632a"}, - {file = "kiwisolver-1.4.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f846c260f483d1fd217fe5ed7c173fb109efa6b1fc8381c8b7552c5781756192"}, - {file = "kiwisolver-1.4.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5ff5cf3571589b6d13bfbfd6bcd7a3f659e42f96b5fd1c4830c4cf21d4f5ef45"}, - {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7269d9e5f1084a653d575c7ec012ff57f0c042258bf5db0954bf551c158466e7"}, - {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da802a19d6e15dffe4b0c24b38b3af68e6c1a68e6e1d8f30148c83864f3881db"}, - {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3aba7311af82e335dd1e36ffff68aaca609ca6290c2cb6d821a39aa075d8e3ff"}, - {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:763773d53f07244148ccac5b084da5adb90bfaee39c197554f01b286cf869228"}, - {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2270953c0d8cdab5d422bee7d2007f043473f9d2999631c86a223c9db56cbd16"}, - {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d099e745a512f7e3bbe7249ca835f4d357c586d78d79ae8f1dcd4d8adeb9bda9"}, - {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:74db36e14a7d1ce0986fa104f7d5637aea5c82ca6326ed0ec5694280942d1162"}, - {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:7e5bab140c309cb3a6ce373a9e71eb7e4873c70c2dda01df6820474f9889d6d4"}, - {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:0f114aa76dc1b8f636d077979c0ac22e7cd8f3493abbab152f20eb8d3cda71f3"}, - {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:88a2df29d4724b9237fc0c6eaf2a1adae0cdc0b3e9f4d8e7dc54b16812d2d81a"}, - {file = "kiwisolver-1.4.5-cp312-cp312-win32.whl", hash = "sha256:72d40b33e834371fd330fb1472ca19d9b8327acb79a5821d4008391db8e29f20"}, - {file = "kiwisolver-1.4.5-cp312-cp312-win_amd64.whl", hash = "sha256:2c5674c4e74d939b9d91dda0fae10597ac7521768fec9e399c70a1f27e2ea2d9"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3a2b053a0ab7a3960c98725cfb0bf5b48ba82f64ec95fe06f1d06c99b552e130"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cd32d6c13807e5c66a7cbb79f90b553642f296ae4518a60d8d76243b0ad2898"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59ec7b7c7e1a61061850d53aaf8e93db63dce0c936db1fda2658b70e4a1be709"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:da4cfb373035def307905d05041c1d06d8936452fe89d464743ae7fb8371078b"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2400873bccc260b6ae184b2b8a4fec0e4082d30648eadb7c3d9a13405d861e89"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1b04139c4236a0f3aff534479b58f6f849a8b351e1314826c2d230849ed48985"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:4e66e81a5779b65ac21764c295087de82235597a2293d18d943f8e9e32746265"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:7931d8f1f67c4be9ba1dd9c451fb0eeca1a25b89e4d3f89e828fe12a519b782a"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:b3f7e75f3015df442238cca659f8baa5f42ce2a8582727981cbfa15fee0ee205"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:bbf1d63eef84b2e8c89011b7f2235b1e0bf7dacc11cac9431fc6468e99ac77fb"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:4c380469bd3f970ef677bf2bcba2b6b0b4d5c75e7a020fb863ef75084efad66f"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-win32.whl", hash = "sha256:9408acf3270c4b6baad483865191e3e582b638b1654a007c62e3efe96f09a9a3"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-win_amd64.whl", hash = "sha256:5b94529f9b2591b7af5f3e0e730a4e0a41ea174af35a4fd067775f9bdfeee01a"}, - {file = "kiwisolver-1.4.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:11c7de8f692fc99816e8ac50d1d1aef4f75126eefc33ac79aac02c099fd3db71"}, - {file = "kiwisolver-1.4.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:53abb58632235cd154176ced1ae8f0d29a6657aa1aa9decf50b899b755bc2b93"}, - {file = "kiwisolver-1.4.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:88b9f257ca61b838b6f8094a62418421f87ac2a1069f7e896c36a7d86b5d4c29"}, - {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3195782b26fc03aa9c6913d5bad5aeb864bdc372924c093b0f1cebad603dd712"}, - {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fc579bf0f502e54926519451b920e875f433aceb4624a3646b3252b5caa9e0b6"}, - {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a580c91d686376f0f7c295357595c5a026e6cbc3d77b7c36e290201e7c11ecb"}, - {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cfe6ab8da05c01ba6fbea630377b5da2cd9bcbc6338510116b01c1bc939a2c18"}, - {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:d2e5a98f0ec99beb3c10e13b387f8db39106d53993f498b295f0c914328b1333"}, - {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a51a263952b1429e429ff236d2f5a21c5125437861baeed77f5e1cc2d2c7c6da"}, - {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3edd2fa14e68c9be82c5b16689e8d63d89fe927e56debd6e1dbce7a26a17f81b"}, - {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:74d1b44c6cfc897df648cc9fdaa09bc3e7679926e6f96df05775d4fb3946571c"}, - {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:76d9289ed3f7501012e05abb8358bbb129149dbd173f1f57a1bf1c22d19ab7cc"}, - {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:92dea1ffe3714fa8eb6a314d2b3c773208d865a0e0d35e713ec54eea08a66250"}, - {file = "kiwisolver-1.4.5-cp38-cp38-win32.whl", hash = "sha256:5c90ae8c8d32e472be041e76f9d2f2dbff4d0b0be8bd4041770eddb18cf49a4e"}, - {file = "kiwisolver-1.4.5-cp38-cp38-win_amd64.whl", hash = "sha256:c7940c1dc63eb37a67721b10d703247552416f719c4188c54e04334321351ced"}, - {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-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"}, - {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaf7be1207676ac608a50cd08f102f6742dbfc70e8d60c4db1c6897f62f71523"}, - {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ba55dce0a9b8ff59495ddd050a0225d58bd0983d09f87cfe2b6aec4f2c1234e4"}, - {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:fd32ea360bcbb92d28933fc05ed09bffcb1704ba3fc7942e81db0fd4f81a7892"}, - {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5e7139af55d1688f8b960ee9ad5adafc4ac17c1c473fe07133ac092310d76544"}, - {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:dced8146011d2bc2e883f9bd68618b8247387f4bbec46d7392b3c3b032640126"}, - {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9bf3325c47b11b2e51bca0824ea217c7cd84491d8ac4eefd1e409705ef092bd"}, - {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5794cf59533bc3f1b1c821f7206a3617999db9fbefc345360aafe2e067514929"}, - {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:e368f200bbc2e4f905b8e71eb38b3c04333bddaa6a2464a6355487b02bb7fb09"}, - {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5d706eba36b4c4d5bc6c6377bb6568098765e990cfc21ee16d13963fab7b3e7"}, - {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85267bd1aa8880a9c88a8cb71e18d3d64d2751a790e6ca6c27b8ccc724bcd5ad"}, - {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:210ef2c3a1f03272649aff1ef992df2e724748918c4bc2d5a90352849eb40bea"}, - {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:11d011a7574eb3b82bcc9c1a1d35c1d7075677fdd15de527d91b46bd35e935ee"}, - {file = "kiwisolver-1.4.5.tar.gz", hash = "sha256:e57e563a57fb22a142da34f38acc2fc1a5c864bc29ca1517a88abc963e60d6ec"}, + {file = "kiwisolver-1.4.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8a9c83f75223d5e48b0bc9cb1bf2776cf01563e00ade8775ffe13b0b6e1af3a6"}, + {file = "kiwisolver-1.4.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:58370b1ffbd35407444d57057b57da5d6549d2d854fa30249771775c63b5fe17"}, + {file = "kiwisolver-1.4.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:aa0abdf853e09aff551db11fce173e2177d00786c688203f52c87ad7fcd91ef9"}, + {file = "kiwisolver-1.4.7-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8d53103597a252fb3ab8b5845af04c7a26d5e7ea8122303dd7a021176a87e8b9"}, + {file = "kiwisolver-1.4.7-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:88f17c5ffa8e9462fb79f62746428dd57b46eb931698e42e990ad63103f35e6c"}, + {file = "kiwisolver-1.4.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88a9ca9c710d598fd75ee5de59d5bda2684d9db36a9f50b6125eaea3969c2599"}, + {file = "kiwisolver-1.4.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f4d742cb7af1c28303a51b7a27aaee540e71bb8e24f68c736f6f2ffc82f2bf05"}, + {file = "kiwisolver-1.4.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e28c7fea2196bf4c2f8d46a0415c77a1c480cc0724722f23d7410ffe9842c407"}, + {file = "kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e968b84db54f9d42046cf154e02911e39c0435c9801681e3fc9ce8a3c4130278"}, + {file = "kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0c18ec74c0472de033e1bebb2911c3c310eef5649133dd0bedf2a169a1b269e5"}, + {file = "kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8f0ea6da6d393d8b2e187e6a5e3fb81f5862010a40c3945e2c6d12ae45cfb2ad"}, + {file = "kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:f106407dda69ae456dd1227966bf445b157ccc80ba0dff3802bb63f30b74e895"}, + {file = "kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:84ec80df401cfee1457063732d90022f93951944b5b58975d34ab56bb150dfb3"}, + {file = "kiwisolver-1.4.7-cp310-cp310-win32.whl", hash = "sha256:71bb308552200fb2c195e35ef05de12f0c878c07fc91c270eb3d6e41698c3bcc"}, + {file = "kiwisolver-1.4.7-cp310-cp310-win_amd64.whl", hash = "sha256:44756f9fd339de0fb6ee4f8c1696cfd19b2422e0d70b4cefc1cc7f1f64045a8c"}, + {file = "kiwisolver-1.4.7-cp310-cp310-win_arm64.whl", hash = "sha256:78a42513018c41c2ffd262eb676442315cbfe3c44eed82385c2ed043bc63210a"}, + {file = "kiwisolver-1.4.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d2b0e12a42fb4e72d509fc994713d099cbb15ebf1103545e8a45f14da2dfca54"}, + {file = "kiwisolver-1.4.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2a8781ac3edc42ea4b90bc23e7d37b665d89423818e26eb6df90698aa2287c95"}, + {file = "kiwisolver-1.4.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:46707a10836894b559e04b0fd143e343945c97fd170d69a2d26d640b4e297935"}, + {file = "kiwisolver-1.4.7-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef97b8df011141c9b0f6caf23b29379f87dd13183c978a30a3c546d2c47314cb"}, + {file = "kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ab58c12a2cd0fc769089e6d38466c46d7f76aced0a1f54c77652446733d2d02"}, + {file = "kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:803b8e1459341c1bb56d1c5c010406d5edec8a0713a0945851290a7930679b51"}, + {file = "kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f9a9e8a507420fe35992ee9ecb302dab68550dedc0da9e2880dd88071c5fb052"}, + {file = "kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18077b53dc3bb490e330669a99920c5e6a496889ae8c63b58fbc57c3d7f33a18"}, + {file = "kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6af936f79086a89b3680a280c47ea90b4df7047b5bdf3aa5c524bbedddb9e545"}, + {file = "kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:3abc5b19d24af4b77d1598a585b8a719beb8569a71568b66f4ebe1fb0449460b"}, + {file = "kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:933d4de052939d90afbe6e9d5273ae05fb836cc86c15b686edd4b3560cc0ee36"}, + {file = "kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:65e720d2ab2b53f1f72fb5da5fb477455905ce2c88aaa671ff0a447c2c80e8e3"}, + {file = "kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3bf1ed55088f214ba6427484c59553123fdd9b218a42bbc8c6496d6754b1e523"}, + {file = "kiwisolver-1.4.7-cp311-cp311-win32.whl", hash = "sha256:4c00336b9dd5ad96d0a558fd18a8b6f711b7449acce4c157e7343ba92dd0cf3d"}, + {file = "kiwisolver-1.4.7-cp311-cp311-win_amd64.whl", hash = "sha256:929e294c1ac1e9f615c62a4e4313ca1823ba37326c164ec720a803287c4c499b"}, + {file = "kiwisolver-1.4.7-cp311-cp311-win_arm64.whl", hash = "sha256:e33e8fbd440c917106b237ef1a2f1449dfbb9b6f6e1ce17c94cd6a1e0d438376"}, + {file = "kiwisolver-1.4.7-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:5360cc32706dab3931f738d3079652d20982511f7c0ac5711483e6eab08efff2"}, + {file = "kiwisolver-1.4.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:942216596dc64ddb25adb215c3c783215b23626f8d84e8eff8d6d45c3f29f75a"}, + {file = "kiwisolver-1.4.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:48b571ecd8bae15702e4f22d3ff6a0f13e54d3d00cd25216d5e7f658242065ee"}, + {file = "kiwisolver-1.4.7-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ad42ba922c67c5f219097b28fae965e10045ddf145d2928bfac2eb2e17673640"}, + {file = "kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:612a10bdae23404a72941a0fc8fa2660c6ea1217c4ce0dbcab8a8f6543ea9e7f"}, + {file = "kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9e838bba3a3bac0fe06d849d29772eb1afb9745a59710762e4ba3f4cb8424483"}, + {file = "kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:22f499f6157236c19f4bbbd472fa55b063db77a16cd74d49afe28992dff8c258"}, + {file = "kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:693902d433cf585133699972b6d7c42a8b9f8f826ebcaf0132ff55200afc599e"}, + {file = "kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4e77f2126c3e0b0d055f44513ed349038ac180371ed9b52fe96a32aa071a5107"}, + {file = "kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:657a05857bda581c3656bfc3b20e353c232e9193eb167766ad2dc58b56504948"}, + {file = "kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4bfa75a048c056a411f9705856abfc872558e33c055d80af6a380e3658766038"}, + {file = "kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:34ea1de54beef1c104422d210c47c7d2a4999bdecf42c7b5718fbe59a4cac383"}, + {file = "kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:90da3b5f694b85231cf93586dad5e90e2d71b9428f9aad96952c99055582f520"}, + {file = "kiwisolver-1.4.7-cp312-cp312-win32.whl", hash = "sha256:18e0cca3e008e17fe9b164b55735a325140a5a35faad8de92dd80265cd5eb80b"}, + {file = "kiwisolver-1.4.7-cp312-cp312-win_amd64.whl", hash = "sha256:58cb20602b18f86f83a5c87d3ee1c766a79c0d452f8def86d925e6c60fbf7bfb"}, + {file = "kiwisolver-1.4.7-cp312-cp312-win_arm64.whl", hash = "sha256:f5a8b53bdc0b3961f8b6125e198617c40aeed638b387913bf1ce78afb1b0be2a"}, + {file = "kiwisolver-1.4.7-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2e6039dcbe79a8e0f044f1c39db1986a1b8071051efba3ee4d74f5b365f5226e"}, + {file = "kiwisolver-1.4.7-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a1ecf0ac1c518487d9d23b1cd7139a6a65bc460cd101ab01f1be82ecf09794b6"}, + {file = "kiwisolver-1.4.7-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7ab9ccab2b5bd5702ab0803676a580fffa2aa178c2badc5557a84cc943fcf750"}, + {file = "kiwisolver-1.4.7-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f816dd2277f8d63d79f9c8473a79fe54047bc0467754962840782c575522224d"}, + {file = "kiwisolver-1.4.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf8bcc23ceb5a1b624572a1623b9f79d2c3b337c8c455405ef231933a10da379"}, + {file = "kiwisolver-1.4.7-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dea0bf229319828467d7fca8c7c189780aa9ff679c94539eed7532ebe33ed37c"}, + {file = "kiwisolver-1.4.7-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c06a4c7cf15ec739ce0e5971b26c93638730090add60e183530d70848ebdd34"}, + {file = "kiwisolver-1.4.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:913983ad2deb14e66d83c28b632fd35ba2b825031f2fa4ca29675e665dfecbe1"}, + {file = "kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5337ec7809bcd0f424c6b705ecf97941c46279cf5ed92311782c7c9c2026f07f"}, + {file = "kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:4c26ed10c4f6fa6ddb329a5120ba3b6db349ca192ae211e882970bfc9d91420b"}, + {file = "kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c619b101e6de2222c1fcb0531e1b17bbffbe54294bfba43ea0d411d428618c27"}, + {file = "kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:073a36c8273647592ea332e816e75ef8da5c303236ec0167196793eb1e34657a"}, + {file = "kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:3ce6b2b0231bda412463e152fc18335ba32faf4e8c23a754ad50ffa70e4091ee"}, + {file = "kiwisolver-1.4.7-cp313-cp313-win32.whl", hash = "sha256:f4c9aee212bc89d4e13f58be11a56cc8036cabad119259d12ace14b34476fd07"}, + {file = "kiwisolver-1.4.7-cp313-cp313-win_amd64.whl", hash = "sha256:8a3ec5aa8e38fc4c8af308917ce12c536f1c88452ce554027e55b22cbbfbff76"}, + {file = "kiwisolver-1.4.7-cp313-cp313-win_arm64.whl", hash = "sha256:76c8094ac20ec259471ac53e774623eb62e6e1f56cd8690c67ce6ce4fcb05650"}, + {file = "kiwisolver-1.4.7-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5d5abf8f8ec1f4e22882273c423e16cae834c36856cac348cfbfa68e01c40f3a"}, + {file = "kiwisolver-1.4.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:aeb3531b196ef6f11776c21674dba836aeea9d5bd1cf630f869e3d90b16cfade"}, + {file = "kiwisolver-1.4.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b7d755065e4e866a8086c9bdada157133ff466476a2ad7861828e17b6026e22c"}, + {file = "kiwisolver-1.4.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08471d4d86cbaec61f86b217dd938a83d85e03785f51121e791a6e6689a3be95"}, + {file = "kiwisolver-1.4.7-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7bbfcb7165ce3d54a3dfbe731e470f65739c4c1f85bb1018ee912bae139e263b"}, + {file = "kiwisolver-1.4.7-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5d34eb8494bea691a1a450141ebb5385e4b69d38bb8403b5146ad279f4b30fa3"}, + {file = "kiwisolver-1.4.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9242795d174daa40105c1d86aba618e8eab7bf96ba8c3ee614da8302a9f95503"}, + {file = "kiwisolver-1.4.7-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a0f64a48bb81af7450e641e3fe0b0394d7381e342805479178b3d335d60ca7cf"}, + {file = "kiwisolver-1.4.7-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:8e045731a5416357638d1700927529e2b8ab304811671f665b225f8bf8d8f933"}, + {file = "kiwisolver-1.4.7-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:4322872d5772cae7369f8351da1edf255a604ea7087fe295411397d0cfd9655e"}, + {file = "kiwisolver-1.4.7-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:e1631290ee9271dffe3062d2634c3ecac02c83890ada077d225e081aca8aab89"}, + {file = "kiwisolver-1.4.7-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:edcfc407e4eb17e037bca59be0e85a2031a2ac87e4fed26d3e9df88b4165f92d"}, + {file = "kiwisolver-1.4.7-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:4d05d81ecb47d11e7f8932bd8b61b720bf0b41199358f3f5e36d38e28f0532c5"}, + {file = "kiwisolver-1.4.7-cp38-cp38-win32.whl", hash = "sha256:b38ac83d5f04b15e515fd86f312479d950d05ce2368d5413d46c088dda7de90a"}, + {file = "kiwisolver-1.4.7-cp38-cp38-win_amd64.whl", hash = "sha256:d83db7cde68459fc803052a55ace60bea2bae361fc3b7a6d5da07e11954e4b09"}, + {file = "kiwisolver-1.4.7-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3f9362ecfca44c863569d3d3c033dbe8ba452ff8eed6f6b5806382741a1334bd"}, + {file = "kiwisolver-1.4.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e8df2eb9b2bac43ef8b082e06f750350fbbaf2887534a5be97f6cf07b19d9583"}, + {file = "kiwisolver-1.4.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f32d6edbc638cde7652bd690c3e728b25332acbadd7cad670cc4a02558d9c417"}, + {file = "kiwisolver-1.4.7-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:e2e6c39bd7b9372b0be21456caab138e8e69cc0fc1190a9dfa92bd45a1e6e904"}, + {file = "kiwisolver-1.4.7-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:dda56c24d869b1193fcc763f1284b9126550eaf84b88bbc7256e15028f19188a"}, + {file = "kiwisolver-1.4.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79849239c39b5e1fd906556c474d9b0439ea6792b637511f3fe3a41158d89ca8"}, + {file = "kiwisolver-1.4.7-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5e3bc157fed2a4c02ec468de4ecd12a6e22818d4f09cde2c31ee3226ffbefab2"}, + {file = "kiwisolver-1.4.7-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3da53da805b71e41053dc670f9a820d1157aae77b6b944e08024d17bcd51ef88"}, + {file = "kiwisolver-1.4.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:8705f17dfeb43139a692298cb6637ee2e59c0194538153e83e9ee0c75c2eddde"}, + {file = "kiwisolver-1.4.7-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:82a5c2f4b87c26bb1a0ef3d16b5c4753434633b83d365cc0ddf2770c93829e3c"}, + {file = "kiwisolver-1.4.7-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ce8be0466f4c0d585cdb6c1e2ed07232221df101a4c6f28821d2aa754ca2d9e2"}, + {file = "kiwisolver-1.4.7-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:409afdfe1e2e90e6ee7fc896f3df9a7fec8e793e58bfa0d052c8a82f99c37abb"}, + {file = "kiwisolver-1.4.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5b9c3f4ee0b9a439d2415012bd1b1cc2df59e4d6a9939f4d669241d30b414327"}, + {file = "kiwisolver-1.4.7-cp39-cp39-win32.whl", hash = "sha256:a79ae34384df2b615eefca647a2873842ac3b596418032bef9a7283675962644"}, + {file = "kiwisolver-1.4.7-cp39-cp39-win_amd64.whl", hash = "sha256:cf0438b42121a66a3a667de17e779330fc0f20b0d97d59d2f2121e182b0505e4"}, + {file = "kiwisolver-1.4.7-cp39-cp39-win_arm64.whl", hash = "sha256:764202cc7e70f767dab49e8df52c7455e8de0df5d858fa801a11aa0d882ccf3f"}, + {file = "kiwisolver-1.4.7-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:94252291e3fe68001b1dd747b4c0b3be12582839b95ad4d1b641924d68fd4643"}, + {file = "kiwisolver-1.4.7-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:5b7dfa3b546da08a9f622bb6becdb14b3e24aaa30adba66749d38f3cc7ea9706"}, + {file = "kiwisolver-1.4.7-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bd3de6481f4ed8b734da5df134cd5a6a64fe32124fe83dde1e5b5f29fe30b1e6"}, + {file = "kiwisolver-1.4.7-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a91b5f9f1205845d488c928e8570dcb62b893372f63b8b6e98b863ebd2368ff2"}, + {file = "kiwisolver-1.4.7-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40fa14dbd66b8b8f470d5fc79c089a66185619d31645f9b0773b88b19f7223c4"}, + {file = "kiwisolver-1.4.7-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:eb542fe7933aa09d8d8f9d9097ef37532a7df6497819d16efe4359890a2f417a"}, + {file = "kiwisolver-1.4.7-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:bfa1acfa0c54932d5607e19a2c24646fb4c1ae2694437789129cf099789a3b00"}, + {file = "kiwisolver-1.4.7-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:eee3ea935c3d227d49b4eb85660ff631556841f6e567f0f7bda972df6c2c9935"}, + {file = "kiwisolver-1.4.7-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f3160309af4396e0ed04db259c3ccbfdc3621b5559b5453075e5de555e1f3a1b"}, + {file = "kiwisolver-1.4.7-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a17f6a29cf8935e587cc8a4dbfc8368c55edc645283db0ce9801016f83526c2d"}, + {file = "kiwisolver-1.4.7-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:10849fb2c1ecbfae45a693c070e0320a91b35dd4bcf58172c023b994283a124d"}, + {file = "kiwisolver-1.4.7-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:ac542bf38a8a4be2dc6b15248d36315ccc65f0743f7b1a76688ffb6b5129a5c2"}, + {file = "kiwisolver-1.4.7-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:8b01aac285f91ca889c800042c35ad3b239e704b150cfd3382adfc9dcc780e39"}, + {file = "kiwisolver-1.4.7-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:48be928f59a1f5c8207154f935334d374e79f2b5d212826307d072595ad76a2e"}, + {file = "kiwisolver-1.4.7-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f37cfe618a117e50d8c240555331160d73d0411422b59b5ee217843d7b693608"}, + {file = "kiwisolver-1.4.7-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:599b5c873c63a1f6ed7eead644a8a380cfbdf5db91dcb6f85707aaab213b1674"}, + {file = "kiwisolver-1.4.7-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:801fa7802e5cfabe3ab0c81a34c323a319b097dfb5004be950482d882f3d7225"}, + {file = "kiwisolver-1.4.7-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:0c6c43471bc764fad4bc99c5c2d6d16a676b1abf844ca7c8702bdae92df01ee0"}, + {file = "kiwisolver-1.4.7.tar.gz", hash = "sha256:9893ff81bd7107f7b685d3017cc6583daadb4fc26e4a888350df530e41980a60"}, ] [[package]] @@ -873,40 +915,40 @@ test = ["codecov (>=2.1)", "pytest (>=7.2)", "pytest-cov (>=4.0)"] [[package]] name = "numpy" -version = "1.23.5" -description = "NumPy is the fundamental package for array computing with Python." +version = "1.24.4" +description = "Fundamental package for array computing in Python" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "numpy-1.23.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9c88793f78fca17da0145455f0d7826bcb9f37da4764af27ac945488116efe63"}, - {file = "numpy-1.23.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e9f4c4e51567b616be64e05d517c79a8a22f3606499941d97bb76f2ca59f982d"}, - {file = "numpy-1.23.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7903ba8ab592b82014713c491f6c5d3a1cde5b4a3bf116404e08f5b52f6daf43"}, - {file = "numpy-1.23.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e05b1c973a9f858c74367553e236f287e749465f773328c8ef31abe18f691e1"}, - {file = "numpy-1.23.5-cp310-cp310-win32.whl", hash = "sha256:522e26bbf6377e4d76403826ed689c295b0b238f46c28a7251ab94716da0b280"}, - {file = "numpy-1.23.5-cp310-cp310-win_amd64.whl", hash = "sha256:dbee87b469018961d1ad79b1a5d50c0ae850000b639bcb1b694e9981083243b6"}, - {file = "numpy-1.23.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ce571367b6dfe60af04e04a1834ca2dc5f46004ac1cc756fb95319f64c095a96"}, - {file = "numpy-1.23.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:56e454c7833e94ec9769fa0f86e6ff8e42ee38ce0ce1fa4cbb747ea7e06d56aa"}, - {file = "numpy-1.23.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5039f55555e1eab31124a5768898c9e22c25a65c1e0037f4d7c495a45778c9f2"}, - {file = "numpy-1.23.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58f545efd1108e647604a1b5aa809591ccd2540f468a880bedb97247e72db387"}, - {file = "numpy-1.23.5-cp311-cp311-win32.whl", hash = "sha256:b2a9ab7c279c91974f756c84c365a669a887efa287365a8e2c418f8b3ba73fb0"}, - {file = "numpy-1.23.5-cp311-cp311-win_amd64.whl", hash = "sha256:0cbe9848fad08baf71de1a39e12d1b6310f1d5b2d0ea4de051058e6e1076852d"}, - {file = "numpy-1.23.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f063b69b090c9d918f9df0a12116029e274daf0181df392839661c4c7ec9018a"}, - {file = "numpy-1.23.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0aaee12d8883552fadfc41e96b4c82ee7d794949e2a7c3b3a7201e968c7ecab9"}, - {file = "numpy-1.23.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92c8c1e89a1f5028a4c6d9e3ccbe311b6ba53694811269b992c0b224269e2398"}, - {file = "numpy-1.23.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d208a0f8729f3fb790ed18a003f3a57895b989b40ea4dce4717e9cf4af62c6bb"}, - {file = "numpy-1.23.5-cp38-cp38-win32.whl", hash = "sha256:06005a2ef6014e9956c09ba07654f9837d9e26696a0470e42beedadb78c11b07"}, - {file = "numpy-1.23.5-cp38-cp38-win_amd64.whl", hash = "sha256:ca51fcfcc5f9354c45f400059e88bc09215fb71a48d3768fb80e357f3b457e1e"}, - {file = "numpy-1.23.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8969bfd28e85c81f3f94eb4a66bc2cf1dbdc5c18efc320af34bffc54d6b1e38f"}, - {file = "numpy-1.23.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a7ac231a08bb37f852849bbb387a20a57574a97cfc7b6cabb488a4fc8be176de"}, - {file = "numpy-1.23.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf837dc63ba5c06dc8797c398db1e223a466c7ece27a1f7b5232ba3466aafe3d"}, - {file = "numpy-1.23.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33161613d2269025873025b33e879825ec7b1d831317e68f4f2f0f84ed14c719"}, - {file = "numpy-1.23.5-cp39-cp39-win32.whl", hash = "sha256:af1da88f6bc3d2338ebbf0e22fe487821ea4d8e89053e25fa59d1d79786e7481"}, - {file = "numpy-1.23.5-cp39-cp39-win_amd64.whl", hash = "sha256:09b7847f7e83ca37c6e627682f145856de331049013853f344f37b0c9690e3df"}, - {file = "numpy-1.23.5-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:abdde9f795cf292fb9651ed48185503a2ff29be87770c3b8e2a14b0cd7aa16f8"}, - {file = "numpy-1.23.5-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9a909a8bae284d46bbfdefbdd4a262ba19d3bc9921b1e76126b1d21c3c34135"}, - {file = "numpy-1.23.5-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:01dd17cbb340bf0fc23981e52e1d18a9d4050792e8fb8363cecbf066a84b827d"}, - {file = "numpy-1.23.5.tar.gz", hash = "sha256:1b1766d6f397c18153d40015ddfc79ddb715cabadc04d2d228d4e5a8bc4ded1a"}, + {file = "numpy-1.24.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c0bfb52d2169d58c1cdb8cc1f16989101639b34c7d3ce60ed70b19c63eba0b64"}, + {file = "numpy-1.24.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ed094d4f0c177b1b8e7aa9cba7d6ceed51c0e569a5318ac0ca9a090680a6a1b1"}, + {file = "numpy-1.24.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79fc682a374c4a8ed08b331bef9c5f582585d1048fa6d80bc6c35bc384eee9b4"}, + {file = "numpy-1.24.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ffe43c74893dbf38c2b0a1f5428760a1a9c98285553c89e12d70a96a7f3a4d6"}, + {file = "numpy-1.24.4-cp310-cp310-win32.whl", hash = "sha256:4c21decb6ea94057331e111a5bed9a79d335658c27ce2adb580fb4d54f2ad9bc"}, + {file = "numpy-1.24.4-cp310-cp310-win_amd64.whl", hash = "sha256:b4bea75e47d9586d31e892a7401f76e909712a0fd510f58f5337bea9572c571e"}, + {file = "numpy-1.24.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f136bab9c2cfd8da131132c2cf6cc27331dd6fae65f95f69dcd4ae3c3639c810"}, + {file = "numpy-1.24.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e2926dac25b313635e4d6cf4dc4e51c8c0ebfed60b801c799ffc4c32bf3d1254"}, + {file = "numpy-1.24.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:222e40d0e2548690405b0b3c7b21d1169117391c2e82c378467ef9ab4c8f0da7"}, + {file = "numpy-1.24.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7215847ce88a85ce39baf9e89070cb860c98fdddacbaa6c0da3ffb31b3350bd5"}, + {file = "numpy-1.24.4-cp311-cp311-win32.whl", hash = "sha256:4979217d7de511a8d57f4b4b5b2b965f707768440c17cb70fbf254c4b225238d"}, + {file = "numpy-1.24.4-cp311-cp311-win_amd64.whl", hash = "sha256:b7b1fc9864d7d39e28f41d089bfd6353cb5f27ecd9905348c24187a768c79694"}, + {file = "numpy-1.24.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1452241c290f3e2a312c137a9999cdbf63f78864d63c79039bda65ee86943f61"}, + {file = "numpy-1.24.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:04640dab83f7c6c85abf9cd729c5b65f1ebd0ccf9de90b270cd61935eef0197f"}, + {file = "numpy-1.24.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5425b114831d1e77e4b5d812b69d11d962e104095a5b9c3b641a218abcc050e"}, + {file = "numpy-1.24.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd80e219fd4c71fc3699fc1dadac5dcf4fd882bfc6f7ec53d30fa197b8ee22dc"}, + {file = "numpy-1.24.4-cp38-cp38-win32.whl", hash = "sha256:4602244f345453db537be5314d3983dbf5834a9701b7723ec28923e2889e0bb2"}, + {file = "numpy-1.24.4-cp38-cp38-win_amd64.whl", hash = "sha256:692f2e0f55794943c5bfff12b3f56f99af76f902fc47487bdfe97856de51a706"}, + {file = "numpy-1.24.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2541312fbf09977f3b3ad449c4e5f4bb55d0dbf79226d7724211acc905049400"}, + {file = "numpy-1.24.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9667575fb6d13c95f1b36aca12c5ee3356bf001b714fc354eb5465ce1609e62f"}, + {file = "numpy-1.24.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3a86ed21e4f87050382c7bc96571755193c4c1392490744ac73d660e8f564a9"}, + {file = "numpy-1.24.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d11efb4dbecbdf22508d55e48d9c8384db795e1b7b51ea735289ff96613ff74d"}, + {file = "numpy-1.24.4-cp39-cp39-win32.whl", hash = "sha256:6620c0acd41dbcb368610bb2f4d83145674040025e5536954782467100aa8835"}, + {file = "numpy-1.24.4-cp39-cp39-win_amd64.whl", hash = "sha256:befe2bf740fd8373cf56149a5c23a0f601e82869598d41f8e188a0e9869926f8"}, + {file = "numpy-1.24.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:31f13e25b4e304632a4619d0e0777662c2ffea99fcae2029556b17d8ff958aef"}, + {file = "numpy-1.24.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95f7ac6540e95bc440ad77f56e520da5bf877f87dca58bd095288dce8940532a"}, + {file = "numpy-1.24.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e98f220aa76ca2a977fe435f5b04d7b3470c0a2e6312907b37ba6068f26787f2"}, + {file = "numpy-1.24.4.tar.gz", hash = "sha256:80f5e3a4e498641401868df4208b74581206afbee7cf7b8329daae82676d9463"}, ] [[package]] @@ -930,51 +972,49 @@ development = ["black", "isort", "tox"] [[package]] name = "packaging" -version = "24.1" +version = "24.2" description = "Core utilities for Python packages" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, - {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, + {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, + {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, ] [[package]] name = "pandas" -version = "1.5.3" +version = "2.0.3" description = "Powerful data structures for data analysis, time series, and statistics" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "pandas-1.5.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3749077d86e3a2f0ed51367f30bf5b82e131cc0f14260c4d3e499186fccc4406"}, - {file = "pandas-1.5.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:972d8a45395f2a2d26733eb8d0f629b2f90bebe8e8eddbb8829b180c09639572"}, - {file = "pandas-1.5.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:50869a35cbb0f2e0cd5ec04b191e7b12ed688874bd05dd777c19b28cbea90996"}, - {file = "pandas-1.5.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3ac844a0fe00bfaeb2c9b51ab1424e5c8744f89860b138434a363b1f620f354"}, - {file = "pandas-1.5.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a0a56cef15fd1586726dace5616db75ebcfec9179a3a55e78f72c5639fa2a23"}, - {file = "pandas-1.5.3-cp310-cp310-win_amd64.whl", hash = "sha256:478ff646ca42b20376e4ed3fa2e8d7341e8a63105586efe54fa2508ee087f328"}, - {file = "pandas-1.5.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6973549c01ca91ec96199e940495219c887ea815b2083722821f1d7abfa2b4dc"}, - {file = "pandas-1.5.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c39a8da13cede5adcd3be1182883aea1c925476f4e84b2807a46e2775306305d"}, - {file = "pandas-1.5.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f76d097d12c82a535fda9dfe5e8dd4127952b45fea9b0276cb30cca5ea313fbc"}, - {file = "pandas-1.5.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e474390e60ed609cec869b0da796ad94f420bb057d86784191eefc62b65819ae"}, - {file = "pandas-1.5.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f2b952406a1588ad4cad5b3f55f520e82e902388a6d5a4a91baa8d38d23c7f6"}, - {file = "pandas-1.5.3-cp311-cp311-win_amd64.whl", hash = "sha256:bc4c368f42b551bf72fac35c5128963a171b40dce866fb066540eeaf46faa003"}, - {file = "pandas-1.5.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:14e45300521902689a81f3f41386dc86f19b8ba8dd5ac5a3c7010ef8d2932813"}, - {file = "pandas-1.5.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9842b6f4b8479e41968eced654487258ed81df7d1c9b7b870ceea24ed9459b31"}, - {file = "pandas-1.5.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:26d9c71772c7afb9d5046e6e9cf42d83dd147b5cf5bcb9d97252077118543792"}, - {file = "pandas-1.5.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5fbcb19d6fceb9e946b3e23258757c7b225ba450990d9ed63ccceeb8cae609f7"}, - {file = "pandas-1.5.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:565fa34a5434d38e9d250af3c12ff931abaf88050551d9fbcdfafca50d62babf"}, - {file = "pandas-1.5.3-cp38-cp38-win32.whl", hash = "sha256:87bd9c03da1ac870a6d2c8902a0e1fd4267ca00f13bc494c9e5a9020920e1d51"}, - {file = "pandas-1.5.3-cp38-cp38-win_amd64.whl", hash = "sha256:41179ce559943d83a9b4bbacb736b04c928b095b5f25dd2b7389eda08f46f373"}, - {file = "pandas-1.5.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c74a62747864ed568f5a82a49a23a8d7fe171d0c69038b38cedf0976831296fa"}, - {file = "pandas-1.5.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c4c00e0b0597c8e4f59e8d461f797e5d70b4d025880516a8261b2817c47759ee"}, - {file = "pandas-1.5.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a50d9a4336a9621cab7b8eb3fb11adb82de58f9b91d84c2cd526576b881a0c5a"}, - {file = "pandas-1.5.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd05f7783b3274aa206a1af06f0ceed3f9b412cf665b7247eacd83be41cf7bf0"}, - {file = "pandas-1.5.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f69c4029613de47816b1bb30ff5ac778686688751a5e9c99ad8c7031f6508e5"}, - {file = "pandas-1.5.3-cp39-cp39-win32.whl", hash = "sha256:7cec0bee9f294e5de5bbfc14d0573f65526071029d036b753ee6507d2a21480a"}, - {file = "pandas-1.5.3-cp39-cp39-win_amd64.whl", hash = "sha256:dfd681c5dc216037e0b0a2c821f5ed99ba9f03ebcf119c7dac0e9a7b960b9ec9"}, - {file = "pandas-1.5.3.tar.gz", hash = "sha256:74a3fd7e5a7ec052f183273dc7b0acd3a863edf7520f5d3a1765c04ffdb3b0b1"}, + {file = "pandas-2.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e4c7c9f27a4185304c7caf96dc7d91bc60bc162221152de697c98eb0b2648dd8"}, + {file = "pandas-2.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f167beed68918d62bffb6ec64f2e1d8a7d297a038f86d4aed056b9493fca407f"}, + {file = "pandas-2.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce0c6f76a0f1ba361551f3e6dceaff06bde7514a374aa43e33b588ec10420183"}, + {file = "pandas-2.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba619e410a21d8c387a1ea6e8a0e49bb42216474436245718d7f2e88a2f8d7c0"}, + {file = "pandas-2.0.3-cp310-cp310-win32.whl", hash = "sha256:3ef285093b4fe5058eefd756100a367f27029913760773c8bf1d2d8bebe5d210"}, + {file = "pandas-2.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:9ee1a69328d5c36c98d8e74db06f4ad518a1840e8ccb94a4ba86920986bb617e"}, + {file = "pandas-2.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b084b91d8d66ab19f5bb3256cbd5ea661848338301940e17f4492b2ce0801fe8"}, + {file = "pandas-2.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:37673e3bdf1551b95bf5d4ce372b37770f9529743d2498032439371fc7b7eb26"}, + {file = "pandas-2.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9cb1e14fdb546396b7e1b923ffaeeac24e4cedd14266c3497216dd4448e4f2d"}, + {file = "pandas-2.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9cd88488cceb7635aebb84809d087468eb33551097d600c6dad13602029c2df"}, + {file = "pandas-2.0.3-cp311-cp311-win32.whl", hash = "sha256:694888a81198786f0e164ee3a581df7d505024fbb1f15202fc7db88a71d84ebd"}, + {file = "pandas-2.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:6a21ab5c89dcbd57f78d0ae16630b090eec626360085a4148693def5452d8a6b"}, + {file = "pandas-2.0.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e4da0d45e7f34c069fe4d522359df7d23badf83abc1d1cef398895822d11061"}, + {file = "pandas-2.0.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:32fca2ee1b0d93dd71d979726b12b61faa06aeb93cf77468776287f41ff8fdc5"}, + {file = "pandas-2.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:258d3624b3ae734490e4d63c430256e716f488c4fcb7c8e9bde2d3aa46c29089"}, + {file = "pandas-2.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eae3dc34fa1aa7772dd3fc60270d13ced7346fcbcfee017d3132ec625e23bb0"}, + {file = "pandas-2.0.3-cp38-cp38-win32.whl", hash = "sha256:f3421a7afb1a43f7e38e82e844e2bca9a6d793d66c1a7f9f0ff39a795bbc5e02"}, + {file = "pandas-2.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:69d7f3884c95da3a31ef82b7618af5710dba95bb885ffab339aad925c3e8ce78"}, + {file = "pandas-2.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5247fb1ba347c1261cbbf0fcfba4a3121fbb4029d95d9ef4dc45406620b25c8b"}, + {file = "pandas-2.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:81af086f4543c9d8bb128328b5d32e9986e0c84d3ee673a2ac6fb57fd14f755e"}, + {file = "pandas-2.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1994c789bf12a7c5098277fb43836ce090f1073858c10f9220998ac74f37c69b"}, + {file = "pandas-2.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ec591c48e29226bcbb316e0c1e9423622bc7a4eaf1ef7c3c9fa1a3981f89641"}, + {file = "pandas-2.0.3-cp39-cp39-win32.whl", hash = "sha256:04dbdbaf2e4d46ca8da896e1805bc04eb85caa9a82e259e8eed00254d5e0c682"}, + {file = "pandas-2.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:1168574b036cd8b93abc746171c9b4f1b83467438a5e45909fed645cf8692dbc"}, + {file = "pandas-2.0.3.tar.gz", hash = "sha256:c02f372a88e0d17f36d3093a644c73cfc1788e876a7c4bcb4020a77512e2043c"}, ] [package.dependencies] @@ -983,11 +1023,32 @@ numpy = [ {version = ">=1.21.0", markers = "python_version >= \"3.10\""}, {version = ">=1.23.2", markers = "python_version >= \"3.11\""}, ] -python-dateutil = ">=2.8.1" +python-dateutil = ">=2.8.2" pytz = ">=2020.1" +tzdata = ">=2022.1" [package.extras] -test = ["hypothesis (>=5.5.3)", "pytest (>=6.0)", "pytest-xdist (>=1.31)"] +all = ["PyQt5 (>=5.15.1)", "SQLAlchemy (>=1.4.16)", "beautifulsoup4 (>=4.9.3)", "bottleneck (>=1.3.2)", "brotlipy (>=0.7.0)", "fastparquet (>=0.6.3)", "fsspec (>=2021.07.0)", "gcsfs (>=2021.07.0)", "html5lib (>=1.1)", "hypothesis (>=6.34.2)", "jinja2 (>=3.0.0)", "lxml (>=4.6.3)", "matplotlib (>=3.6.1)", "numba (>=0.53.1)", "numexpr (>=2.7.3)", "odfpy (>=1.4.1)", "openpyxl (>=3.0.7)", "pandas-gbq (>=0.15.0)", "psycopg2 (>=2.8.6)", "pyarrow (>=7.0.0)", "pymysql (>=1.0.2)", "pyreadstat (>=1.1.2)", "pytest (>=7.3.2)", "pytest-asyncio (>=0.17.0)", "pytest-xdist (>=2.2.0)", "python-snappy (>=0.6.0)", "pyxlsb (>=1.0.8)", "qtpy (>=2.2.0)", "s3fs (>=2021.08.0)", "scipy (>=1.7.1)", "tables (>=3.6.1)", "tabulate (>=0.8.9)", "xarray (>=0.21.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=1.4.3)", "zstandard (>=0.15.2)"] +aws = ["s3fs (>=2021.08.0)"] +clipboard = ["PyQt5 (>=5.15.1)", "qtpy (>=2.2.0)"] +compression = ["brotlipy (>=0.7.0)", "python-snappy (>=0.6.0)", "zstandard (>=0.15.2)"] +computation = ["scipy (>=1.7.1)", "xarray (>=0.21.0)"] +excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.0.7)", "pyxlsb (>=1.0.8)", "xlrd (>=2.0.1)", "xlsxwriter (>=1.4.3)"] +feather = ["pyarrow (>=7.0.0)"] +fss = ["fsspec (>=2021.07.0)"] +gcp = ["gcsfs (>=2021.07.0)", "pandas-gbq (>=0.15.0)"] +hdf5 = ["tables (>=3.6.1)"] +html = ["beautifulsoup4 (>=4.9.3)", "html5lib (>=1.1)", "lxml (>=4.6.3)"] +mysql = ["SQLAlchemy (>=1.4.16)", "pymysql (>=1.0.2)"] +output-formatting = ["jinja2 (>=3.0.0)", "tabulate (>=0.8.9)"] +parquet = ["pyarrow (>=7.0.0)"] +performance = ["bottleneck (>=1.3.2)", "numba (>=0.53.1)", "numexpr (>=2.7.1)"] +plot = ["matplotlib (>=3.6.1)"] +postgresql = ["SQLAlchemy (>=1.4.16)", "psycopg2 (>=2.8.6)"] +spss = ["pyreadstat (>=1.1.2)"] +sql-other = ["SQLAlchemy (>=1.4.16)"] +test = ["hypothesis (>=6.34.2)", "pytest (>=7.3.2)", "pytest-asyncio (>=0.17.0)", "pytest-xdist (>=2.2.0)"] +xml = ["lxml (>=4.6.3)"] [[package]] name = "pillow" @@ -1089,14 +1150,14 @@ xmp = ["defusedxml"] [[package]] name = "plotly" -version = "5.23.0" +version = "5.24.1" description = "An open-source, interactive data visualization library for Python" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "plotly-5.23.0-py3-none-any.whl", hash = "sha256:76cbe78f75eddc10c56f5a4ee3e7ccaade7c0a57465546f02098c0caed6c2d1a"}, - {file = "plotly-5.23.0.tar.gz", hash = "sha256:89e57d003a116303a34de6700862391367dd564222ab71f8531df70279fc0193"}, + {file = "plotly-5.24.1-py3-none-any.whl", hash = "sha256:f67073a1e637eb0dc3e46324d9d51e2fe76e9727c892dde64ddf1e1b51f29089"}, + {file = "plotly-5.24.1.tar.gz", hash = "sha256:dbc8ac8339d248a4bcc36e08a5659bacfe1b079390b8953533f4eb22169b4bae"}, ] [package.dependencies] @@ -1117,74 +1178,148 @@ files = [ [[package]] name = "pydantic" -version = "1.10.17" -description = "Data validation and settings management using python type hints" +version = "2.10.6" +description = "Data validation using Python type hints" category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pydantic-1.10.17-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0fa51175313cc30097660b10eec8ca55ed08bfa07acbfe02f7a42f6c242e9a4b"}, - {file = "pydantic-1.10.17-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c7e8988bb16988890c985bd2093df9dd731bfb9d5e0860db054c23034fab8f7a"}, - {file = "pydantic-1.10.17-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:371dcf1831f87c9e217e2b6a0c66842879a14873114ebb9d0861ab22e3b5bb1e"}, - {file = "pydantic-1.10.17-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4866a1579c0c3ca2c40575398a24d805d4db6cb353ee74df75ddeee3c657f9a7"}, - {file = "pydantic-1.10.17-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:543da3c6914795b37785703ffc74ba4d660418620cc273490d42c53949eeeca6"}, - {file = "pydantic-1.10.17-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7623b59876f49e61c2e283551cc3647616d2fbdc0b4d36d3d638aae8547ea681"}, - {file = "pydantic-1.10.17-cp310-cp310-win_amd64.whl", hash = "sha256:409b2b36d7d7d19cd8310b97a4ce6b1755ef8bd45b9a2ec5ec2b124db0a0d8f3"}, - {file = "pydantic-1.10.17-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fa43f362b46741df8f201bf3e7dff3569fa92069bcc7b4a740dea3602e27ab7a"}, - {file = "pydantic-1.10.17-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2a72d2a5ff86a3075ed81ca031eac86923d44bc5d42e719d585a8eb547bf0c9b"}, - {file = "pydantic-1.10.17-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4ad32aed3bf5eea5ca5decc3d1bbc3d0ec5d4fbcd72a03cdad849458decbc63"}, - {file = "pydantic-1.10.17-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aeb4e741782e236ee7dc1fb11ad94dc56aabaf02d21df0e79e0c21fe07c95741"}, - {file = "pydantic-1.10.17-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:d2f89a719411cb234105735a520b7c077158a81e0fe1cb05a79c01fc5eb59d3c"}, - {file = "pydantic-1.10.17-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:db3b48d9283d80a314f7a682f7acae8422386de659fffaba454b77a083c3937d"}, - {file = "pydantic-1.10.17-cp311-cp311-win_amd64.whl", hash = "sha256:9c803a5113cfab7bbb912f75faa4fc1e4acff43e452c82560349fff64f852e1b"}, - {file = "pydantic-1.10.17-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:820ae12a390c9cbb26bb44913c87fa2ff431a029a785642c1ff11fed0a095fcb"}, - {file = "pydantic-1.10.17-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c1e51d1af306641b7d1574d6d3307eaa10a4991542ca324f0feb134fee259815"}, - {file = "pydantic-1.10.17-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e53fb834aae96e7b0dadd6e92c66e7dd9cdf08965340ed04c16813102a47fab"}, - {file = "pydantic-1.10.17-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e2495309b1266e81d259a570dd199916ff34f7f51f1b549a0d37a6d9b17b4dc"}, - {file = "pydantic-1.10.17-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:098ad8de840c92ea586bf8efd9e2e90c6339d33ab5c1cfbb85be66e4ecf8213f"}, - {file = "pydantic-1.10.17-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:525bbef620dac93c430d5d6bdbc91bdb5521698d434adf4434a7ef6ffd5c4b7f"}, - {file = "pydantic-1.10.17-cp312-cp312-win_amd64.whl", hash = "sha256:6654028d1144df451e1da69a670083c27117d493f16cf83da81e1e50edce72ad"}, - {file = "pydantic-1.10.17-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c87cedb4680d1614f1d59d13fea353faf3afd41ba5c906a266f3f2e8c245d655"}, - {file = "pydantic-1.10.17-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11289fa895bcbc8f18704efa1d8020bb9a86314da435348f59745473eb042e6b"}, - {file = "pydantic-1.10.17-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:94833612d6fd18b57c359a127cbfd932d9150c1b72fea7c86ab58c2a77edd7c7"}, - {file = "pydantic-1.10.17-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d4ecb515fa7cb0e46e163ecd9d52f9147ba57bc3633dca0e586cdb7a232db9e3"}, - {file = "pydantic-1.10.17-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7017971ffa7fd7808146880aa41b266e06c1e6e12261768a28b8b41ba55c8076"}, - {file = "pydantic-1.10.17-cp37-cp37m-win_amd64.whl", hash = "sha256:e840e6b2026920fc3f250ea8ebfdedf6ea7a25b77bf04c6576178e681942ae0f"}, - {file = "pydantic-1.10.17-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bfbb18b616abc4df70591b8c1ff1b3eabd234ddcddb86b7cac82657ab9017e33"}, - {file = "pydantic-1.10.17-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ebb249096d873593e014535ab07145498957091aa6ae92759a32d40cb9998e2e"}, - {file = "pydantic-1.10.17-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8c209af63ccd7b22fba94b9024e8b7fd07feffee0001efae50dd99316b27768"}, - {file = "pydantic-1.10.17-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d4b40c9e13a0b61583e5599e7950490c700297b4a375b55b2b592774332798b7"}, - {file = "pydantic-1.10.17-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c31d281c7485223caf6474fc2b7cf21456289dbaa31401844069b77160cab9c7"}, - {file = "pydantic-1.10.17-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ae5184e99a060a5c80010a2d53c99aee76a3b0ad683d493e5f0620b5d86eeb75"}, - {file = "pydantic-1.10.17-cp38-cp38-win_amd64.whl", hash = "sha256:ad1e33dc6b9787a6f0f3fd132859aa75626528b49cc1f9e429cdacb2608ad5f0"}, - {file = "pydantic-1.10.17-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7e17c0ee7192e54a10943f245dc79e36d9fe282418ea05b886e1c666063a7b54"}, - {file = "pydantic-1.10.17-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cafb9c938f61d1b182dfc7d44a7021326547b7b9cf695db5b68ec7b590214773"}, - {file = "pydantic-1.10.17-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95ef534e3c22e5abbdbdd6f66b6ea9dac3ca3e34c5c632894f8625d13d084cbe"}, - {file = "pydantic-1.10.17-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62d96b8799ae3d782df7ec9615cb59fc32c32e1ed6afa1b231b0595f6516e8ab"}, - {file = "pydantic-1.10.17-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:ab2f976336808fd5d539fdc26eb51f9aafc1f4b638e212ef6b6f05e753c8011d"}, - {file = "pydantic-1.10.17-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b8ad363330557beac73159acfbeed220d5f1bfcd6b930302a987a375e02f74fd"}, - {file = "pydantic-1.10.17-cp39-cp39-win_amd64.whl", hash = "sha256:48db882e48575ce4b39659558b2f9f37c25b8d348e37a2b4e32971dd5a7d6227"}, - {file = "pydantic-1.10.17-py3-none-any.whl", hash = "sha256:e41b5b973e5c64f674b3b4720286ded184dcc26a691dd55f34391c62c6934688"}, - {file = "pydantic-1.10.17.tar.gz", hash = "sha256:f434160fb14b353caf634149baaf847206406471ba70e64657c1e8330277a991"}, + {file = "pydantic-2.10.6-py3-none-any.whl", hash = "sha256:427d664bf0b8a2b34ff5dd0f5a18df00591adcee7198fbd71981054cef37b584"}, + {file = "pydantic-2.10.6.tar.gz", hash = "sha256:ca5daa827cce33de7a42be142548b0096bf05a7e7b365aebfa5f8eeec7128236"}, ] [package.dependencies] -typing-extensions = ">=4.2.0" +annotated-types = ">=0.6.0" +pydantic-core = "2.27.2" +typing-extensions = ">=4.12.2" [package.extras] -dotenv = ["python-dotenv (>=0.10.4)"] -email = ["email-validator (>=1.0.3)"] +email = ["email-validator (>=2.0.0)"] +timezone = ["tzdata"] + +[[package]] +name = "pydantic-core" +version = "2.27.2" +description = "Core functionality for Pydantic validation and serialization" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pydantic_core-2.27.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2d367ca20b2f14095a8f4fa1210f5a7b78b8a20009ecced6b12818f455b1e9fa"}, + {file = "pydantic_core-2.27.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:491a2b73db93fab69731eaee494f320faa4e093dbed776be1a829c2eb222c34c"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7969e133a6f183be60e9f6f56bfae753585680f3b7307a8e555a948d443cc05a"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3de9961f2a346257caf0aa508a4da705467f53778e9ef6fe744c038119737ef5"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2bb4d3e5873c37bb3dd58714d4cd0b0e6238cebc4177ac8fe878f8b3aa8e74c"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:280d219beebb0752699480fe8f1dc61ab6615c2046d76b7ab7ee38858de0a4e7"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47956ae78b6422cbd46f772f1746799cbb862de838fd8d1fbd34a82e05b0983a"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:14d4a5c49d2f009d62a2a7140d3064f686d17a5d1a268bc641954ba181880236"}, + {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:337b443af21d488716f8d0b6164de833e788aa6bd7e3a39c005febc1284f4962"}, + {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:03d0f86ea3184a12f41a2d23f7ccb79cdb5a18e06993f8a45baa8dfec746f0e9"}, + {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7041c36f5680c6e0f08d922aed302e98b3745d97fe1589db0a3eebf6624523af"}, + {file = "pydantic_core-2.27.2-cp310-cp310-win32.whl", hash = "sha256:50a68f3e3819077be2c98110c1f9dcb3817e93f267ba80a2c05bb4f8799e2ff4"}, + {file = "pydantic_core-2.27.2-cp310-cp310-win_amd64.whl", hash = "sha256:e0fd26b16394ead34a424eecf8a31a1f5137094cabe84a1bcb10fa6ba39d3d31"}, + {file = "pydantic_core-2.27.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8e10c99ef58cfdf2a66fc15d66b16c4a04f62bca39db589ae8cba08bc55331bc"}, + {file = "pydantic_core-2.27.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:26f32e0adf166a84d0cb63be85c562ca8a6fa8de28e5f0d92250c6b7e9e2aff7"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c19d1ea0673cd13cc2f872f6c9ab42acc4e4f492a7ca9d3795ce2b112dd7e15"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e68c4446fe0810e959cdff46ab0a41ce2f2c86d227d96dc3847af0ba7def306"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9640b0059ff4f14d1f37321b94061c6db164fbe49b334b31643e0528d100d99"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:40d02e7d45c9f8af700f3452f329ead92da4c5f4317ca9b896de7ce7199ea459"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c1fd185014191700554795c99b347d64f2bb637966c4cfc16998a0ca700d048"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d81d2068e1c1228a565af076598f9e7451712700b673de8f502f0334f281387d"}, + {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1a4207639fb02ec2dbb76227d7c751a20b1a6b4bc52850568e52260cae64ca3b"}, + {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:3de3ce3c9ddc8bbd88f6e0e304dea0e66d843ec9de1b0042b0911c1663ffd474"}, + {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:30c5f68ded0c36466acede341551106821043e9afaad516adfb6e8fa80a4e6a6"}, + {file = "pydantic_core-2.27.2-cp311-cp311-win32.whl", hash = "sha256:c70c26d2c99f78b125a3459f8afe1aed4d9687c24fd677c6a4436bc042e50d6c"}, + {file = "pydantic_core-2.27.2-cp311-cp311-win_amd64.whl", hash = "sha256:08e125dbdc505fa69ca7d9c499639ab6407cfa909214d500897d02afb816e7cc"}, + {file = "pydantic_core-2.27.2-cp311-cp311-win_arm64.whl", hash = "sha256:26f0d68d4b235a2bae0c3fc585c585b4ecc51382db0e3ba402a22cbc440915e4"}, + {file = "pydantic_core-2.27.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9e0c8cfefa0ef83b4da9588448b6d8d2a2bf1a53c3f1ae5fca39eb3061e2f0b0"}, + {file = "pydantic_core-2.27.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:83097677b8e3bd7eaa6775720ec8e0405f1575015a463285a92bfdfe254529ef"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:172fce187655fece0c90d90a678424b013f8fbb0ca8b036ac266749c09438cb7"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:519f29f5213271eeeeb3093f662ba2fd512b91c5f188f3bb7b27bc5973816934"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05e3a55d124407fffba0dd6b0c0cd056d10e983ceb4e5dbd10dda135c31071d6"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c3ed807c7b91de05e63930188f19e921d1fe90de6b4f5cd43ee7fcc3525cb8c"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fb4aadc0b9a0c063206846d603b92030eb6f03069151a625667f982887153e2"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28ccb213807e037460326424ceb8b5245acb88f32f3d2777427476e1b32c48c4"}, + {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:de3cd1899e2c279b140adde9357c4495ed9d47131b4a4eaff9052f23398076b3"}, + {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:220f892729375e2d736b97d0e51466252ad84c51857d4d15f5e9692f9ef12be4"}, + {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a0fcd29cd6b4e74fe8ddd2c90330fd8edf2e30cb52acda47f06dd615ae72da57"}, + {file = "pydantic_core-2.27.2-cp312-cp312-win32.whl", hash = "sha256:1e2cb691ed9834cd6a8be61228471d0a503731abfb42f82458ff27be7b2186fc"}, + {file = "pydantic_core-2.27.2-cp312-cp312-win_amd64.whl", hash = "sha256:cc3f1a99a4f4f9dd1de4fe0312c114e740b5ddead65bb4102884b384c15d8bc9"}, + {file = "pydantic_core-2.27.2-cp312-cp312-win_arm64.whl", hash = "sha256:3911ac9284cd8a1792d3cb26a2da18f3ca26c6908cc434a18f730dc0db7bfa3b"}, + {file = "pydantic_core-2.27.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7d14bd329640e63852364c306f4d23eb744e0f8193148d4044dd3dacdaacbd8b"}, + {file = "pydantic_core-2.27.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82f91663004eb8ed30ff478d77c4d1179b3563df6cdb15c0817cd1cdaf34d154"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71b24c7d61131bb83df10cc7e687433609963a944ccf45190cfc21e0887b08c9"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa8e459d4954f608fa26116118bb67f56b93b209c39b008277ace29937453dc9"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce8918cbebc8da707ba805b7fd0b382816858728ae7fe19a942080c24e5b7cd1"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eda3f5c2a021bbc5d976107bb302e0131351c2ba54343f8a496dc8783d3d3a6a"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8086fa684c4775c27f03f062cbb9eaa6e17f064307e86b21b9e0abc9c0f02e"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8d9b3388db186ba0c099a6d20f0604a44eabdeef1777ddd94786cdae158729e4"}, + {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7a66efda2387de898c8f38c0cf7f14fca0b51a8ef0b24bfea5849f1b3c95af27"}, + {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:18a101c168e4e092ab40dbc2503bdc0f62010e95d292b27827871dc85450d7ee"}, + {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ba5dd002f88b78a4215ed2f8ddbdf85e8513382820ba15ad5ad8955ce0ca19a1"}, + {file = "pydantic_core-2.27.2-cp313-cp313-win32.whl", hash = "sha256:1ebaf1d0481914d004a573394f4be3a7616334be70261007e47c2a6fe7e50130"}, + {file = "pydantic_core-2.27.2-cp313-cp313-win_amd64.whl", hash = "sha256:953101387ecf2f5652883208769a79e48db18c6df442568a0b5ccd8c2723abee"}, + {file = "pydantic_core-2.27.2-cp313-cp313-win_arm64.whl", hash = "sha256:ac4dbfd1691affb8f48c2c13241a2e3b60ff23247cbcf981759c768b6633cf8b"}, + {file = "pydantic_core-2.27.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d3e8d504bdd3f10835468f29008d72fc8359d95c9c415ce6e767203db6127506"}, + {file = "pydantic_core-2.27.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:521eb9b7f036c9b6187f0b47318ab0d7ca14bd87f776240b90b21c1f4f149320"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85210c4d99a0114f5a9481b44560d7d1e35e32cc5634c656bc48e590b669b145"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d716e2e30c6f140d7560ef1538953a5cd1a87264c737643d481f2779fc247fe1"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f66d89ba397d92f840f8654756196d93804278457b5fbede59598a1f9f90b228"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:669e193c1c576a58f132e3158f9dfa9662969edb1a250c54d8fa52590045f046"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdbe7629b996647b99c01b37f11170a57ae675375b14b8c13b8518b8320ced5"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d262606bf386a5ba0b0af3b97f37c83d7011439e3dc1a9298f21efb292e42f1a"}, + {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:cabb9bcb7e0d97f74df8646f34fc76fbf793b7f6dc2438517d7a9e50eee4f14d"}, + {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_armv7l.whl", hash = "sha256:d2d63f1215638d28221f664596b1ccb3944f6e25dd18cd3b86b0a4c408d5ebb9"}, + {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bca101c00bff0adb45a833f8451b9105d9df18accb8743b08107d7ada14bd7da"}, + {file = "pydantic_core-2.27.2-cp38-cp38-win32.whl", hash = "sha256:f6f8e111843bbb0dee4cb6594cdc73e79b3329b526037ec242a3e49012495b3b"}, + {file = "pydantic_core-2.27.2-cp38-cp38-win_amd64.whl", hash = "sha256:fd1aea04935a508f62e0d0ef1f5ae968774a32afc306fb8545e06f5ff5cdf3ad"}, + {file = "pydantic_core-2.27.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c10eb4f1659290b523af58fa7cffb452a61ad6ae5613404519aee4bfbf1df993"}, + {file = "pydantic_core-2.27.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ef592d4bad47296fb11f96cd7dc898b92e795032b4894dfb4076cfccd43a9308"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c61709a844acc6bf0b7dce7daae75195a10aac96a596ea1b776996414791ede4"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c5f762659e47fdb7b16956c71598292f60a03aa92f8b6351504359dbdba6cf"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c9775e339e42e79ec99c441d9730fccf07414af63eac2f0e48e08fd38a64d76"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57762139821c31847cfb2df63c12f725788bd9f04bc2fb392790959b8f70f118"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d1e85068e818c73e048fe28cfc769040bb1f475524f4745a5dc621f75ac7630"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:097830ed52fd9e427942ff3b9bc17fab52913b2f50f2880dc4a5611446606a54"}, + {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:044a50963a614ecfae59bb1eaf7ea7efc4bc62f49ed594e18fa1e5d953c40e9f"}, + {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:4e0b4220ba5b40d727c7f879eac379b822eee5d8fff418e9d3381ee45b3b0362"}, + {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e4f4bb20d75e9325cc9696c6802657b58bc1dbbe3022f32cc2b2b632c3fbb96"}, + {file = "pydantic_core-2.27.2-cp39-cp39-win32.whl", hash = "sha256:cca63613e90d001b9f2f9a9ceb276c308bfa2a43fafb75c8031c4f66039e8c6e"}, + {file = "pydantic_core-2.27.2-cp39-cp39-win_amd64.whl", hash = "sha256:77d1bca19b0f7021b3a982e6f903dcd5b2b06076def36a652e3907f596e29f67"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2bf14caea37e91198329b828eae1618c068dfb8ef17bb33287a7ad4b61ac314e"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b0cb791f5b45307caae8810c2023a184c74605ec3bcbb67d13846c28ff731ff8"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:688d3fd9fcb71f41c4c015c023d12a79d1c4c0732ec9eb35d96e3388a120dcf3"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d591580c34f4d731592f0e9fe40f9cc1b430d297eecc70b962e93c5c668f15f"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:82f986faf4e644ffc189a7f1aafc86e46ef70372bb153e7001e8afccc6e54133"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:bec317a27290e2537f922639cafd54990551725fc844249e64c523301d0822fc"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:0296abcb83a797db256b773f45773da397da75a08f5fcaef41f2044adec05f50"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0d75070718e369e452075a6017fbf187f788e17ed67a3abd47fa934d001863d9"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7e17b560be3c98a8e3aa66ce828bdebb9e9ac6ad5466fba92eb74c4c95cb1151"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c33939a82924da9ed65dab5a65d427205a73181d8098e79b6b426bdf8ad4e656"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:00bad2484fa6bda1e216e7345a798bd37c68fb2d97558edd584942aa41b7d278"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c817e2b40aba42bac6f457498dacabc568c3b7a986fc9ba7c8d9d260b71485fb"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:251136cdad0cb722e93732cb45ca5299fb56e1344a833640bf93b2803f8d1bfd"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d2088237af596f0a524d3afc39ab3b036e8adb054ee57cbb1dcf8e09da5b29cc"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d4041c0b966a84b4ae7a09832eb691a35aec90910cd2dbe7a208de59be77965b"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:8083d4e875ebe0b864ffef72a4304827015cff328a1be6e22cc850753bfb122b"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f141ee28a0ad2123b6611b6ceff018039df17f32ada8b534e6aa039545a3efb2"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7d0c8399fcc1848491f00e0314bd59fb34a9c008761bcb422a057670c3f65e35"}, + {file = "pydantic_core-2.27.2.tar.gz", hash = "sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39"}, +] + +[package.dependencies] +typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" [[package]] name = "pygments" -version = "2.18.0" +version = "2.19.1" description = "Pygments is a syntax highlighting package written in Python." category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, - {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, + {file = "pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c"}, + {file = "pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f"}, ] [package.extras] @@ -1192,31 +1327,31 @@ windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pyoptinterface" -version = "0.2.7" +version = "0.2.8" description = "Python interface to multiple optimization solvers" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "pyoptinterface-0.2.7-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:031241ff2b30c5d131a49b068eb14f186908885619484ec30d4eccb60f3768cd"}, - {file = "pyoptinterface-0.2.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:649101cb5644fe2c376bcd5cf8134fc7c97b0772d959787e644cffa31fd390a2"}, - {file = "pyoptinterface-0.2.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1c33d3dd9abf02486ad98d8b475315ba9bf30fd116a257066f134df07d3cdd2"}, - {file = "pyoptinterface-0.2.7-cp310-cp310-win_amd64.whl", hash = "sha256:fe80640fa0d5363c8af06dc82bb13d2da4f06c7ec9cd9ff01982fd19f8bf5bf2"}, - {file = "pyoptinterface-0.2.7-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:70c5bfa24d596dec7087dafb222a8234650806034a5925497845c5d02cc1272c"}, - {file = "pyoptinterface-0.2.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2fd64112e7c21aa9ab6875067180f516f7d4c398efcf576d2b2f9724b952667b"}, - {file = "pyoptinterface-0.2.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad7631be9ca1fe2c90f0a74205a544ed3536947860d2fc2aa16d3af6490e808d"}, - {file = "pyoptinterface-0.2.7-cp311-cp311-win_amd64.whl", hash = "sha256:e326320db59c4ef8a6e2150ea178902ede4671c8a4665a7e3104ddda922373dd"}, - {file = "pyoptinterface-0.2.7-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:5897d7deb6f9020d907b7af9f445eed56fb40831d8b7557db05f8f159f43d63a"}, - {file = "pyoptinterface-0.2.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:525417eb030298a3956bec18eaa92d7ae64fbb60d2d3657408b6173415e17d16"}, - {file = "pyoptinterface-0.2.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4540161fd5791fbf1edc8cc5a3aa7a812e55d65db86d5baac4cfcfca50eb2b8"}, - {file = "pyoptinterface-0.2.7-cp312-cp312-win_amd64.whl", hash = "sha256:d03b76013a948df1463ad814b03a63362824f6ca25a3ad41f954f376dc126c2b"}, - {file = "pyoptinterface-0.2.7-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:15d6ee9528c6ecd1c9600b390d2e5c3c5591fb6f83aa2f8f74829130635e4df7"}, - {file = "pyoptinterface-0.2.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee6a810e4fd47a94c5d1530ab959cd041d76caa90cf73bbb61c7845b9b60a496"}, - {file = "pyoptinterface-0.2.7-cp38-cp38-win_amd64.whl", hash = "sha256:2affc5592767196853e2a16e370f90149bc40411394ca3d76f8862b44ae7e9d8"}, - {file = "pyoptinterface-0.2.7-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:0d53001764300df23e7e8ce912041a2d95c874415994a2ec1e25a40e04afaec1"}, - {file = "pyoptinterface-0.2.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:568321e0b076c2bb108464f5bce6bca33b99165b972850e9872ad86f5100a8a8"}, - {file = "pyoptinterface-0.2.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d123b2b5d5147e0deeee26dec7f39d3b5d87580d5eb6523b784047c3753c3a20"}, - {file = "pyoptinterface-0.2.7-cp39-cp39-win_amd64.whl", hash = "sha256:1afbe2e5a8fb948859bf8127f43b6c1bd71de16fb6009247dfba75d8dc9deeab"}, + {file = "pyoptinterface-0.2.8-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:484745f3f1da7fc7c70436b7c18475c0b2a12b2bb145da81b32ba6824ac8232c"}, + {file = "pyoptinterface-0.2.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:07f62e5a6fa972a2ce5b10fdc74edf38b3ed2d699779a29691ecbbeec251d1f5"}, + {file = "pyoptinterface-0.2.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1a9de839f13812683d74852af176f00317a004b5d3bb9bc2cb2338f51c3d285"}, + {file = "pyoptinterface-0.2.8-cp310-cp310-win_amd64.whl", hash = "sha256:ab13879b7e65ce0df12d0abe3c4c73f55aacef4e14b1f3a723abf6cc525d3877"}, + {file = "pyoptinterface-0.2.8-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:9cf468f4aad1c0536b21e20ca8387d4eb8386e992d14b17cfced2633f4ac2e6c"}, + {file = "pyoptinterface-0.2.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f5573a88cd8b3d61e85a13a78ca088454a86f94bc6f5768b54b0c703954e390f"}, + {file = "pyoptinterface-0.2.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9421af2ccda2ebba92845b17d88d92b6283db2a5753aa9d7463f96c42865b2e0"}, + {file = "pyoptinterface-0.2.8-cp311-cp311-win_amd64.whl", hash = "sha256:6b233dc6066e1e142000e22a57e3aaaff0315bfd384cd9118c1f6daf0d97c4f7"}, + {file = "pyoptinterface-0.2.8-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:ec02437f434baf3e2e1f46fed75aa43dd02a28496e5e9a0b4c3d9b03f43dd809"}, + {file = "pyoptinterface-0.2.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8b8fc3af435eb010dabf258f3514f7007438200000520a9afc77ed9beaabd931"}, + {file = "pyoptinterface-0.2.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a928f9ac8fb79491f470cf52b54719f2e797311021ac3e4a4c73c6fef25e534"}, + {file = "pyoptinterface-0.2.8-cp312-cp312-win_amd64.whl", hash = "sha256:13285ac5f54e82f91d10d777973e37b2e290313236f06e93318c07bb9158704d"}, + {file = "pyoptinterface-0.2.8-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:5cb02b12a2f74db919f1a6a80007bd30f1e32f154d2c75883f64c128109badc9"}, + {file = "pyoptinterface-0.2.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2e8c0abbe82bc4286c5e5ccd121a90b433ee6edeb4fb973c847b482801eb7f9"}, + {file = "pyoptinterface-0.2.8-cp38-cp38-win_amd64.whl", hash = "sha256:b05df942a699b80a15bde07bd9741e15f26204c6fe58b8c87eb4ac0273879544"}, + {file = "pyoptinterface-0.2.8-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:d1c3fe5011f3fbd53bb84294efc75e83e7e1a1bb443081691f988f93399f948d"}, + {file = "pyoptinterface-0.2.8-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0f7647b21d4bccfbad1029fb8da84ebbab388bf2cd405b222ab17274bc8e0196"}, + {file = "pyoptinterface-0.2.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:caed0d9d9d51c5dc36f78aeb314577acab5272155a0913fbedf7b2bc64616ec4"}, + {file = "pyoptinterface-0.2.8-cp39-cp39-win_amd64.whl", hash = "sha256:42e4a5964240fd8d094d7f3a4becd280b2dc7f4a9c7f1f4c4e7413319b5c676c"}, ] [package.dependencies] @@ -1230,14 +1365,14 @@ test = ["numpy", "pytest"] [[package]] name = "pyparsing" -version = "3.1.2" +version = "3.1.4" description = "pyparsing module - Classes and methods to define and execute parsing grammars" category = "main" optional = false python-versions = ">=3.6.8" files = [ - {file = "pyparsing-3.1.2-py3-none-any.whl", hash = "sha256:f9db75911801ed778fe61bb643079ff86601aca99fcae6345aa67292038fb742"}, - {file = "pyparsing-3.1.2.tar.gz", hash = "sha256:a1bac0ce561155ecc3ed78ca94d3c9378656ad4c94c1270de543f621420f94ad"}, + {file = "pyparsing-3.1.4-py3-none-any.whl", hash = "sha256:a6a7ee4235a3f944aa1fa2249307708f893fe5717dc603503c6c7969c070fb7c"}, + {file = "pyparsing-3.1.4.tar.gz", hash = "sha256:f86ec8d1a83f11977c9a6ea7598e8c27fc5cddfa5b07ea2241edbbde1d7bc032"}, ] [package.extras] @@ -1293,6 +1428,14 @@ files = [ {file = "python_libsbml-5.20.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b1ef224f746aac4e1b0f917113b6334abd2fa3eb63bde41149a1b006bacfba81"}, {file = "python_libsbml-5.20.4-cp312-cp312-win32.whl", hash = "sha256:b5cc68b5fe6d139a4557cba9d9913b3e196582bdb7975bea6a2c25faaecdfadb"}, {file = "python_libsbml-5.20.4-cp312-cp312-win_amd64.whl", hash = "sha256:40c5e9ec86c467b4f325b5365ca369ecc1c9ced608e390d3cc1726f79da68968"}, + {file = "python_libsbml-5.20.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:233c01e17a0750ea73411ce79b069bf113968cabeb88d61fc9378d068c4c585c"}, + {file = "python_libsbml-5.20.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6e8c99146b15b0c5c9aabb6ec85e30489a1b8105cf7d2483b44e0407d7d04309"}, + {file = "python_libsbml-5.20.4-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cde96e40eb6809de40443e28f8242674842e2cfbb9c84d2c28321f553fbd344e"}, + {file = "python_libsbml-5.20.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ff1eb26b1d39531c80813ed9c18f9dc6aca66e437a81131bd0ed1c97371df11"}, + {file = "python_libsbml-5.20.4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:576d6a64d3bd04803db160d992b7e6ac9be4bc2ba735a3a33fa623ca4e86fe09"}, + {file = "python_libsbml-5.20.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:2c0d0eddb043a5065abead423dec089d99191727a0f6505ddd2c942512a4307d"}, + {file = "python_libsbml-5.20.4-cp313-cp313-win32.whl", hash = "sha256:1c5539b2189e38e5b39c34eafe1ef86ffb9179ece91c48623a48412cb88a6f5c"}, + {file = "python_libsbml-5.20.4-cp313-cp313-win_amd64.whl", hash = "sha256:aac5a989e24341713e3c2fd126c6deebdb062adb287b41a45c48c72a4bd828ca"}, {file = "python_libsbml-5.20.4-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feeecfffa72f94ac74475180f1046feb019b30ec86f9ef435c31e4585a0762f4"}, {file = "python_libsbml-5.20.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4bd57cc81dc508c42c0bed66e6aed67b8dc2d3b56802d56192be418bf032a175"}, {file = "python_libsbml-5.20.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:56402db093a38adb35b985a0c31b8875b360aeba04f29e5675be9a691a6911bf"}, @@ -1322,46 +1465,46 @@ files = [ [[package]] name = "pytz" -version = "2024.1" +version = "2025.1" description = "World timezone definitions, modern and historical" category = "main" optional = false python-versions = "*" files = [ - {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, - {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, + {file = "pytz-2025.1-py2.py3-none-any.whl", hash = "sha256:89dd22dca55b46eac6eda23b2d72721bf1bdfef212645d81513ef5d03038de57"}, + {file = "pytz-2025.1.tar.gz", hash = "sha256:c2db42be2a2518b28e65f9207c4d05e6ff547d1efa4086469ef855e4ab70178e"}, ] [[package]] name = "rich" -version = "13.7.1" +version = "13.9.4" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" category = "main" optional = false -python-versions = ">=3.7.0" +python-versions = ">=3.8.0" files = [ - {file = "rich-13.7.1-py3-none-any.whl", hash = "sha256:4edbae314f59eb482f54e9e30bf00d33350aaa94f4bfcd4e9e3110e64d0d7222"}, - {file = "rich-13.7.1.tar.gz", hash = "sha256:9be308cb1fe2f1f57d67ce99e95af38a1e2bc71ad9813b0e247cf7ffbcc3a432"}, + {file = "rich-13.9.4-py3-none-any.whl", hash = "sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90"}, + {file = "rich-13.9.4.tar.gz", hash = "sha256:439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098"}, ] [package.dependencies] markdown-it-py = ">=2.2.0" pygments = ">=2.13.0,<3.0.0" -typing-extensions = {version = ">=4.0.0,<5.0", markers = "python_version < \"3.9\""} +typing-extensions = {version = ">=4.0.0,<5.0", markers = "python_version < \"3.11\""} [package.extras] jupyter = ["ipywidgets (>=7.5.1,<9)"] [[package]] name = "ruamel-yaml" -version = "0.18.6" +version = "0.18.10" description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "ruamel.yaml-0.18.6-py3-none-any.whl", hash = "sha256:57b53ba33def16c4f3d807c0ccbc00f8a6081827e81ba2491691b76882d0c636"}, - {file = "ruamel.yaml-0.18.6.tar.gz", hash = "sha256:8b27e6a217e786c6fbe5634d8f3f11bc63e0f80f6a5890f28863d9c45aac311b"}, + {file = "ruamel.yaml-0.18.10-py3-none-any.whl", hash = "sha256:30f22513ab2301b3d2b577adc121c6471f28734d3d9728581245f1e76468b4f1"}, + {file = "ruamel.yaml-0.18.10.tar.gz", hash = "sha256:20c86ab29ac2153f80a428e1254a8adf686d3383df04490514ca3b79a362db58"}, ] [package.dependencies] @@ -1470,136 +1613,157 @@ dev = ["flake8", "mypy", "pycodestyle", "typing_extensions"] doc = ["matplotlib (>2)", "numpydoc", "pydata-sphinx-theme (==0.9.0)", "sphinx (!=4.1.0)", "sphinx-panels (>=0.5.2)", "sphinx-tabs"] test = ["asv", "gmpy2", "mpmath", "pytest", "pytest-cov", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] +[[package]] +name = "setuptools" +version = "75.3.0" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "setuptools-75.3.0-py3-none-any.whl", hash = "sha256:f2504966861356aa38616760c0f66568e535562374995367b4e69c7143cf6bcd"}, + {file = "setuptools-75.3.0.tar.gz", hash = "sha256:fba5dd4d766e97be1b1681d98712680ae8f2f26d7881245f2ce9e40714f1a686"}, +] + +[package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.5.2)"] +core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.collections", "jaraco.functools", "jaraco.text (>=3.7)", "more-itertools", "more-itertools (>=8.8)", "packaging", "packaging (>=24)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test (>=5.5)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] +type = ["importlib-metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (>=1.12.0,<1.13.0)", "pytest-mypy"] + [[package]] name = "simplejson" -version = "3.19.3" +version = "3.20.1" description = "Simple, fast, extensible JSON encoder/decoder for Python" category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.5" files = [ - {file = "simplejson-3.19.3-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:f39caec26007a2d0efab6b8b1d74873ede9351962707afab622cc2285dd26ed0"}, - {file = "simplejson-3.19.3-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:83c87706265ae3028e8460d08b05f30254c569772e859e5ba61fe8af2c883468"}, - {file = "simplejson-3.19.3-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:0b5ddd2c7d1d3f4d23224bc8a04bbf1430ae9a8149c05b90f8fc610f7f857a23"}, - {file = "simplejson-3.19.3-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:ad0e0b1ce9bd3edb5cf64b5b5b76eacbfdac8c5367153aeeec8a8b1407f68342"}, - {file = "simplejson-3.19.3-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:93be280fc69a952c76e261036312c20b910e7fa9e234f1d89bdfe3fa34f8a023"}, - {file = "simplejson-3.19.3-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:6d43e24b88c80f997081503f693be832fc90854f278df277dd54f8a4c847ab61"}, - {file = "simplejson-3.19.3-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:2876027ebdd599d730d36464debe84619b0368e9a642ca6e7c601be55aed439e"}, - {file = "simplejson-3.19.3-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:0766ca6222b410e08e0053a0dda3606cafb3973d5d00538307f631bb59743396"}, - {file = "simplejson-3.19.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:50d8b742d74c449c4dcac570d08ce0f21f6a149d2d9cf7652dbf2ba9a1bc729a"}, - {file = "simplejson-3.19.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dd011fc3c1d88b779645495fdb8189fb318a26981eebcce14109460e062f209b"}, - {file = "simplejson-3.19.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:637c4d4b81825c1f4d651e56210bd35b5604034b192b02d2d8f17f7ce8c18f42"}, - {file = "simplejson-3.19.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f56eb03bc9e432bb81adc8ecff2486d39feb371abb442964ffb44f6db23b332"}, - {file = "simplejson-3.19.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ef59a53be400c1fad2c914b8d74c9d42384fed5174f9321dd021b7017fd40270"}, - {file = "simplejson-3.19.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:72e8abbc86fcac83629a030888b45fed3a404d54161118be52cb491cd6975d3e"}, - {file = "simplejson-3.19.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8efb03ca77bd7725dfacc9254df00d73e6f43013cf39bd37ef1a8ed0ebb5165"}, - {file = "simplejson-3.19.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:add8850db04b98507a8b62d248a326ecc8561e6d24336d1ca5c605bbfaab4cad"}, - {file = "simplejson-3.19.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fc3dc9fb413fc34c396f52f4c87de18d0bd5023804afa8ab5cc224deeb6a9900"}, - {file = "simplejson-3.19.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:4dfa420bb9225dd33b6efdabde7c6a671b51150b9b1d9c4e5cd74d3b420b3fe1"}, - {file = "simplejson-3.19.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7b5c472099b39b274dcde27f1113db8d818c9aa3ba8f78cbb8ad04a4c1ac2118"}, - {file = "simplejson-3.19.3-cp310-cp310-win32.whl", hash = "sha256:817abad79241ed4a507b3caf4d3f2be5079f39d35d4c550a061988986bffd2ec"}, - {file = "simplejson-3.19.3-cp310-cp310-win_amd64.whl", hash = "sha256:dd5b9b1783e14803e362a558680d88939e830db2466f3fa22df5c9319f8eea94"}, - {file = "simplejson-3.19.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e88abff510dcff903a18d11c2a75f9964e768d99c8d147839913886144b2065e"}, - {file = "simplejson-3.19.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:934a50a614fb831614db5dbfba35127ee277624dda4d15895c957d2f5d48610c"}, - {file = "simplejson-3.19.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:212fce86a22188b0c7f53533b0f693ea9605c1a0f02c84c475a30616f55a744d"}, - {file = "simplejson-3.19.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d9e8f836688a8fabe6a6b41b334aa550a6823f7b4ac3d3712fc0ad8655be9a8"}, - {file = "simplejson-3.19.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:23228037dc5d41c36666384062904d74409a62f52283d9858fa12f4c22cffad1"}, - {file = "simplejson-3.19.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0791f64fed7d4abad639491f8a6b1ba56d3c604eb94b50f8697359b92d983f36"}, - {file = "simplejson-3.19.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4f614581b61a26fbbba232a1391f6cee82bc26f2abbb6a0b44a9bba25c56a1c"}, - {file = "simplejson-3.19.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1df0aaf1cb787fdf34484ed4a1f0c545efd8811f6028623290fef1a53694e597"}, - {file = "simplejson-3.19.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:951095be8d4451a7182403354c22ec2de3e513e0cc40408b689af08d02611588"}, - {file = "simplejson-3.19.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:2a954b30810988feeabde843e3263bf187697e0eb5037396276db3612434049b"}, - {file = "simplejson-3.19.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c40df31a75de98db2cdfead6074d4449cd009e79f54c1ebe5e5f1f153c68ad20"}, - {file = "simplejson-3.19.3-cp311-cp311-win32.whl", hash = "sha256:7e2a098c21ad8924076a12b6c178965d88a0ad75d1de67e1afa0a66878f277a5"}, - {file = "simplejson-3.19.3-cp311-cp311-win_amd64.whl", hash = "sha256:c9bedebdc5fdad48af8783022bae307746d54006b783007d1d3c38e10872a2c6"}, - {file = "simplejson-3.19.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:66a0399e21c2112acacfebf3d832ebe2884f823b1c7e6d1363f2944f1db31a99"}, - {file = "simplejson-3.19.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6ef9383c5e05f445be60f1735c1816163c874c0b1ede8bb4390aff2ced34f333"}, - {file = "simplejson-3.19.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:42e5acf80d4d971238d4df97811286a044d720693092b20a56d5e56b7dcc5d09"}, - {file = "simplejson-3.19.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0b0efc7279d768db7c74d3d07f0b5c81280d16ae3fb14e9081dc903e8360771"}, - {file = "simplejson-3.19.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0552eb06e7234da892e1d02365cd2b7b2b1f8233aa5aabdb2981587b7cc92ea0"}, - {file = "simplejson-3.19.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5bf6a3b9a7d7191471b464fe38f684df10eb491ec9ea454003edb45a011ab187"}, - {file = "simplejson-3.19.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7017329ca8d4dca94ad5e59f496e5fc77630aecfc39df381ffc1d37fb6b25832"}, - {file = "simplejson-3.19.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:67a20641afebf4cfbcff50061f07daad1eace6e7b31d7622b6fa2c40d43900ba"}, - {file = "simplejson-3.19.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:dd6a7dabcc4c32daf601bc45e01b79175dde4b52548becea4f9545b0a4428169"}, - {file = "simplejson-3.19.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:08f9b443a94e72dd02c87098c96886d35790e79e46b24e67accafbf13b73d43b"}, - {file = "simplejson-3.19.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fa97278ae6614346b5ca41a45a911f37a3261b57dbe4a00602048652c862c28b"}, - {file = "simplejson-3.19.3-cp312-cp312-win32.whl", hash = "sha256:ef28c3b328d29b5e2756903aed888960bc5df39b4c2eab157ae212f70ed5bf74"}, - {file = "simplejson-3.19.3-cp312-cp312-win_amd64.whl", hash = "sha256:1e662336db50ad665777e6548b5076329a94a0c3d4a0472971c588b3ef27de3a"}, - {file = "simplejson-3.19.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:0959e6cb62e3994b5a40e31047ff97ef5c4138875fae31659bead691bed55896"}, - {file = "simplejson-3.19.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7a7bfad839c624e139a4863007233a3f194e7c51551081f9789cba52e4da5167"}, - {file = "simplejson-3.19.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:afab2f7f2486a866ff04d6d905e9386ca6a231379181a3838abce1f32fbdcc37"}, - {file = "simplejson-3.19.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d00313681015ac498e1736b304446ee6d1c72c5b287cd196996dad84369998f7"}, - {file = "simplejson-3.19.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d936ae682d5b878af9d9eb4d8bb1fdd5e41275c8eb59ceddb0aeed857bb264a2"}, - {file = "simplejson-3.19.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01c6657485393f2e9b8177c77a7634f13ebe70d5e6de150aae1677d91516ce6b"}, - {file = "simplejson-3.19.3-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a6a750d3c7461b1c47cfc6bba8d9e57a455e7c5f80057d2a82f738040dd1129"}, - {file = "simplejson-3.19.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ea7a4a998c87c5674a27089e022110a1a08a7753f21af3baf09efe9915c23c3c"}, - {file = "simplejson-3.19.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:6300680d83a399be2b8f3b0ef7ef90b35d2a29fe6e9c21438097e0938bbc1564"}, - {file = "simplejson-3.19.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:ab69f811a660c362651ae395eba8ce84f84c944cea0df5718ea0ba9d1e4e7252"}, - {file = "simplejson-3.19.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:256e09d0f94d9c3d177d9e95fd27a68c875a4baa2046633df387b86b652f5747"}, - {file = "simplejson-3.19.3-cp313-cp313-win32.whl", hash = "sha256:2c78293470313aefa9cfc5e3f75ca0635721fb016fb1121c1c5b0cb8cc74712a"}, - {file = "simplejson-3.19.3-cp313-cp313-win_amd64.whl", hash = "sha256:3bbcdc438dc1683b35f7a8dc100960c721f922f9ede8127f63bed7dfded4c64c"}, - {file = "simplejson-3.19.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:89b35433186e977fa86ff1fd179c1fadff39cfa3afa1648dab0b6ca53153acd9"}, - {file = "simplejson-3.19.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d43c2d7504eda566c50203cdc9dc043aff6f55f1b7dae0dcd79dfefef9159d1c"}, - {file = "simplejson-3.19.3-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6890ff9cf0bd2e1d487e2a8869ebd620a44684c0a9667fa5ee751d099d5d84c8"}, - {file = "simplejson-3.19.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1069143a8fb3905e1bc0696c62be7e3adf812e9f1976ac9ae15b05112ff57cc9"}, - {file = "simplejson-3.19.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb324bb903330cbb35d87cce367a12631cd5720afa06e5b9c906483970946da6"}, - {file = "simplejson-3.19.3-cp36-cp36m-musllinux_1_2_aarch64.whl", hash = "sha256:0a32859d45d7b85fb803bb68f6bee14526991a1190269116c33399fa0daf9bbf"}, - {file = "simplejson-3.19.3-cp36-cp36m-musllinux_1_2_i686.whl", hash = "sha256:23833ee7e791ec968b744dfee2a2d39df7152050051096caf4296506d75608d8"}, - {file = "simplejson-3.19.3-cp36-cp36m-musllinux_1_2_ppc64le.whl", hash = "sha256:d73efb03c5b39249c82488a994f0998f9e4399e3d085209d2120503305ba77a8"}, - {file = "simplejson-3.19.3-cp36-cp36m-musllinux_1_2_x86_64.whl", hash = "sha256:7923878b7a0142d39763ec2dbecff3053c1bedd3653585a8474666e420fe83f5"}, - {file = "simplejson-3.19.3-cp36-cp36m-win32.whl", hash = "sha256:7355c7203353c36d46c4e7b6055293b3d2be097bbc5e2874a2b8a7259f0325dd"}, - {file = "simplejson-3.19.3-cp36-cp36m-win_amd64.whl", hash = "sha256:d1b8b4d6379fe55f471914345fe6171d81a18649dacf3248abfc9c349b4442eb"}, - {file = "simplejson-3.19.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d36608557b4dcd7a62c29ad4cd7c5a1720bbf7dc942eff9dc42d2c542a5f042d"}, - {file = "simplejson-3.19.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7137e69c6781ecf23afab064be94a277236c9cba31aa48ff1a0ec3995c69171e"}, - {file = "simplejson-3.19.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:76f8c28fe2d426182405b18ddf3001fce47835a557dc15c3d8bdea01c03361da"}, - {file = "simplejson-3.19.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff7bc1bbdaa3e487c9469128bf39408e91f5573901cb852e03af378d3582c52d"}, - {file = "simplejson-3.19.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0782cb9bf827f0c488b6aa0f2819f618308a3caf2973cfd792e45d631bec4db"}, - {file = "simplejson-3.19.3-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:6fea0716c593dabb4392c4996d4e902a83b2428e6da82938cf28a523a11eb277"}, - {file = "simplejson-3.19.3-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:8f41bb5370b34f63171e65fdb00e12be1d83675cecb23e627df26f4c88dfc021"}, - {file = "simplejson-3.19.3-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:37105d1d708365b91165e1a6e505bdecc88637091348cf4b6adcdcb4f5a5fb8b"}, - {file = "simplejson-3.19.3-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:b9198c1f1f8910a3b86b60f4fe2556d9d28d3fefe35bffe6be509a27402e694d"}, - {file = "simplejson-3.19.3-cp37-cp37m-win32.whl", hash = "sha256:bc164f32dd9691e7082ce5df24b4cf8c6c394bbf9bdeeb5d843127cd07ab8ad2"}, - {file = "simplejson-3.19.3-cp37-cp37m-win_amd64.whl", hash = "sha256:1bd41f2cb1a2c57656ceff67b12d005cb255c728265e222027ad73193a04005a"}, - {file = "simplejson-3.19.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0733ecd95ae03ae718ec74aad818f5af5f3155d596f7b242acbc1621e765e5fb"}, - {file = "simplejson-3.19.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4a0710d1a5e41c4f829caa1572793dd3130c8d65c2b194c24ff29c4c305c26e0"}, - {file = "simplejson-3.19.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1a53a07320c5ff574d8b1a89c937ce33608832f166f39dff0581ac43dc979abd"}, - {file = "simplejson-3.19.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1773cabfba66a6337b547e45dafbd471b09487370bcab75bd28f626520410d29"}, - {file = "simplejson-3.19.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7c0104b4b7d2c75ccedbf1d9d5a3bd2daa75e51053935a44ba012e2fd4c43752"}, - {file = "simplejson-3.19.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c49eeb94b8f09dc8a5843c156a22b8bde6aa1ddc65ca8ddc62dddcc001e6a2d"}, - {file = "simplejson-3.19.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3dc5c1a85ff388e98ea877042daec3d157b6db0d85bac6ba5498034689793e7e"}, - {file = "simplejson-3.19.3-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:49549e3d81ab4a58424405aa545602674d8c35c20e986b42bb8668e782a94bac"}, - {file = "simplejson-3.19.3-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:e1a1452ad5723ff129b081e3c8aa4ba56b8734fee4223355ed7b815a7ece69bc"}, - {file = "simplejson-3.19.3-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:d0d5a63f1768fed7e78cf55712dee81f5a345e34d34224f3507ebf71df2b754d"}, - {file = "simplejson-3.19.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:7e062767ac165df9a46963f5735aa4eee0089ec1e48b3f2ec46182754b96f55e"}, - {file = "simplejson-3.19.3-cp38-cp38-win32.whl", hash = "sha256:56134bbafe458a7b21f6fddbf889d36bec6d903718f4430768e3af822f8e27c2"}, - {file = "simplejson-3.19.3-cp38-cp38-win_amd64.whl", hash = "sha256:bcde83a553a96dc7533736c547bddaa35414a2566ab0ecf7d3964fc4bdb84c11"}, - {file = "simplejson-3.19.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b5587feda2b65a79da985ae6d116daf6428bf7489992badc29fc96d16cd27b05"}, - {file = "simplejson-3.19.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e0d2b00ecbcd1a3c5ea1abc8bb99a26508f758c1759fd01c3be482a3655a176f"}, - {file = "simplejson-3.19.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:32a3ada8f3ea41db35e6d37b86dade03760f804628ec22e4fe775b703d567426"}, - {file = "simplejson-3.19.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f455672f4738b0f47183c5896e3606cd65c9ddee3805a4d18e8c96aa3f47c84"}, - {file = "simplejson-3.19.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2b737a5fefedb8333fa50b8db3dcc9b1d18fd6c598f89fa7debff8b46bf4e511"}, - {file = "simplejson-3.19.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb47ee773ce67476a960e2db4a0a906680c54f662521550828c0cc57d0099426"}, - {file = "simplejson-3.19.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eed8cd98a7b24861da9d3d937f5fbfb6657350c547528a117297fe49e3960667"}, - {file = "simplejson-3.19.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:619756f1dd634b5bdf57d9a3914300526c3b348188a765e45b8b08eabef0c94e"}, - {file = "simplejson-3.19.3-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:dd7230d061e755d60a4d5445bae854afe33444cdb182f3815cff26ac9fb29a15"}, - {file = "simplejson-3.19.3-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:101a3c8392028cd704a93c7cba8926594e775ca3c91e0bee82144e34190903f1"}, - {file = "simplejson-3.19.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1e557712fc79f251673aeb3fad3501d7d4da3a27eff0857af2e1d1afbbcf6685"}, - {file = "simplejson-3.19.3-cp39-cp39-win32.whl", hash = "sha256:0bc5544e3128891bf613b9f71813ee2ec9c11574806f74dd8bb84e5e95bf64a2"}, - {file = "simplejson-3.19.3-cp39-cp39-win_amd64.whl", hash = "sha256:06662392e4913dc8846d6a71a6d5de86db5fba244831abe1dd741d62a4136764"}, - {file = "simplejson-3.19.3-py3-none-any.whl", hash = "sha256:49cc4c7b940d43bd12bf87ec63f28cbc4964fc4e12c031cc8cd01650f43eb94e"}, - {file = "simplejson-3.19.3.tar.gz", hash = "sha256:8e086896c36210ab6050f2f9f095a5f1e03c83fa0e7f296d6cba425411364680"}, + {file = "simplejson-3.20.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:f5272b5866b259fe6c33c4a8c5073bf8b359c3c97b70c298a2f09a69b52c7c41"}, + {file = "simplejson-3.20.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5c0de368f3052a59a1acf21f8b2dd28686a9e4eba2da7efae7ed9554cb31e7bc"}, + {file = "simplejson-3.20.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:0821871404a537fd0e22eba240c74c0467c28af6cc435903eca394cfc74a0497"}, + {file = "simplejson-3.20.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:c939a1e576bded47d7d03aa2afc2ae90b928b2cf1d9dc2070ceec51fd463f430"}, + {file = "simplejson-3.20.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:3c4f0a61cdc05550782ca4a2cdb311ea196c2e6be6b24a09bf71360ca8c3ca9b"}, + {file = "simplejson-3.20.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:6c21f5c026ca633cfffcb6bc1fac2e99f65cb2b24657d3bef21aed9916cc3bbf"}, + {file = "simplejson-3.20.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:8d23b7f8d6b72319d6d55a0261089ff621ce87e54731c2d3de6a9bf7be5c028c"}, + {file = "simplejson-3.20.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:cda5c32a98f392909088111ecec23f2b0d39346ceae1a0fea23ab2d1f84ec21d"}, + {file = "simplejson-3.20.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e580aa65d5f6c3bf41b9b4afe74be5d5ddba9576701c107c772d936ea2b5043a"}, + {file = "simplejson-3.20.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4a586ce4f78cec11f22fe55c5bee0f067e803aab9bad3441afe2181693b5ebb5"}, + {file = "simplejson-3.20.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:74a1608f9e6e8c27a4008d70a54270868306d80ed48c9df7872f9f4b8ac87808"}, + {file = "simplejson-3.20.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03db8cb64154189a92a7786209f24e391644f3a3fa335658be2df2af1960b8d8"}, + {file = "simplejson-3.20.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eea7e2b7d858f6fdfbf0fe3cb846d6bd8a45446865bc09960e51f3d473c2271b"}, + {file = "simplejson-3.20.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e66712b17d8425bb7ff8968d4c7c7fd5a2dd7bd63728b28356223c000dd2f91f"}, + {file = "simplejson-3.20.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2cc4f6486f9f515b62f5831ff1888886619b84fc837de68f26d919ba7bbdcbc"}, + {file = "simplejson-3.20.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a3c2df555ee4016148fa192e2b9cd9e60bc1d40769366134882685e90aee2a1e"}, + {file = "simplejson-3.20.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:78520f04b7548a5e476b5396c0847e066f1e0a4c0c5e920da1ad65e95f410b11"}, + {file = "simplejson-3.20.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:f4bd49ecde87b0fe9f55cc971449a32832bca9910821f7072bbfae1155eaa007"}, + {file = "simplejson-3.20.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7eaae2b88eb5da53caaffdfa50e2e12022553949b88c0df4f9a9663609373f72"}, + {file = "simplejson-3.20.1-cp310-cp310-win32.whl", hash = "sha256:e836fb88902799eac8debc2b642300748f4860a197fa3d9ea502112b6bb8e142"}, + {file = "simplejson-3.20.1-cp310-cp310-win_amd64.whl", hash = "sha256:b122a19b552b212fc3b5b96fc5ce92333d4a9ac0a800803e1f17ebb16dac4be5"}, + {file = "simplejson-3.20.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:325b8c107253d3217e89d7b50c71015b5b31e2433e6c5bf38967b2f80630a8ca"}, + {file = "simplejson-3.20.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:88a7baa8211089b9e58d78fbc1b0b322103f3f3d459ff16f03a36cece0d0fcf0"}, + {file = "simplejson-3.20.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:299b1007b8101d50d95bc0db1bf5c38dc372e85b504cf77f596462083ee77e3f"}, + {file = "simplejson-3.20.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03ec618ed65caab48e81e3ed29586236a8e57daef792f1f3bb59504a7e98cd10"}, + {file = "simplejson-3.20.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cd2cdead1d3197f0ff43373cf4730213420523ba48697743e135e26f3d179f38"}, + {file = "simplejson-3.20.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3466d2839fdc83e1af42e07b90bc8ff361c4e8796cd66722a40ba14e458faddd"}, + {file = "simplejson-3.20.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d492ed8e92f3a9f9be829205f44b1d0a89af6582f0cf43e0d129fa477b93fe0c"}, + {file = "simplejson-3.20.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:f924b485537b640dc69434565463fd6fc0c68c65a8c6e01a823dd26c9983cf79"}, + {file = "simplejson-3.20.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9e8eacf6a3491bf76ea91a8d46726368a6be0eb94993f60b8583550baae9439e"}, + {file = "simplejson-3.20.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:d34d04bf90b4cea7c22d8b19091633908f14a096caa301b24c2f3d85b5068fb8"}, + {file = "simplejson-3.20.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:69dd28d4ce38390ea4aaf212902712c0fd1093dc4c1ff67e09687c3c3e15a749"}, + {file = "simplejson-3.20.1-cp311-cp311-win32.whl", hash = "sha256:dfe7a9da5fd2a3499436cd350f31539e0a6ded5da6b5b3d422df016444d65e43"}, + {file = "simplejson-3.20.1-cp311-cp311-win_amd64.whl", hash = "sha256:896a6c04d7861d507d800da7642479c3547060bf97419d9ef73d98ced8258766"}, + {file = "simplejson-3.20.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f31c4a3a7ab18467ee73a27f3e59158255d1520f3aad74315edde7a940f1be23"}, + {file = "simplejson-3.20.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:884e6183d16b725e113b83a6fc0230152ab6627d4d36cb05c89c2c5bccfa7bc6"}, + {file = "simplejson-3.20.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03d7a426e416fe0d3337115f04164cd9427eb4256e843a6b8751cacf70abc832"}, + {file = "simplejson-3.20.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:000602141d0bddfcff60ea6a6e97d5e10c9db6b17fd2d6c66199fa481b6214bb"}, + {file = "simplejson-3.20.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:af8377a8af78226e82e3a4349efdde59ffa421ae88be67e18cef915e4023a595"}, + {file = "simplejson-3.20.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:15c7de4c88ab2fbcb8781a3b982ef883696736134e20b1210bca43fb42ff1acf"}, + {file = "simplejson-3.20.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:455a882ff3f97d810709f7b620007d4e0aca8da71d06fc5c18ba11daf1c4df49"}, + {file = "simplejson-3.20.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:fc0f523ce923e7f38eb67804bc80e0a028c76d7868500aa3f59225574b5d0453"}, + {file = "simplejson-3.20.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:76461ec929282dde4a08061071a47281ad939d0202dc4e63cdd135844e162fbc"}, + {file = "simplejson-3.20.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:ab19c2da8c043607bde4d4ef3a6b633e668a7d2e3d56f40a476a74c5ea71949f"}, + {file = "simplejson-3.20.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b2578bedaedf6294415197b267d4ef678fea336dd78ee2a6d2f4b028e9d07be3"}, + {file = "simplejson-3.20.1-cp312-cp312-win32.whl", hash = "sha256:339f407373325a36b7fd744b688ba5bae0666b5d340ec6d98aebc3014bf3d8ea"}, + {file = "simplejson-3.20.1-cp312-cp312-win_amd64.whl", hash = "sha256:627d4486a1ea7edf1f66bb044ace1ce6b4c1698acd1b05353c97ba4864ea2e17"}, + {file = "simplejson-3.20.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:71e849e7ceb2178344998cbe5ade101f1b329460243c79c27fbfc51c0447a7c3"}, + {file = "simplejson-3.20.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b63fdbab29dc3868d6f009a59797cefaba315fd43cd32ddd998ee1da28e50e29"}, + {file = "simplejson-3.20.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1190f9a3ce644fd50ec277ac4a98c0517f532cfebdcc4bd975c0979a9f05e1fb"}, + {file = "simplejson-3.20.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1336ba7bcb722ad487cd265701ff0583c0bb6de638364ca947bb84ecc0015d1"}, + {file = "simplejson-3.20.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e975aac6a5acd8b510eba58d5591e10a03e3d16c1cf8a8624ca177491f7230f0"}, + {file = "simplejson-3.20.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6a6dd11ee282937ad749da6f3b8d87952ad585b26e5edfa10da3ae2536c73078"}, + {file = "simplejson-3.20.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab980fcc446ab87ea0879edad41a5c28f2d86020014eb035cf5161e8de4474c6"}, + {file = "simplejson-3.20.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f5aee2a4cb6b146bd17333ac623610f069f34e8f31d2f4f0c1a2186e50c594f0"}, + {file = "simplejson-3.20.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:652d8eecbb9a3b6461b21ec7cf11fd0acbab144e45e600c817ecf18e4580b99e"}, + {file = "simplejson-3.20.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:8c09948f1a486a89251ee3a67c9f8c969b379f6ffff1a6064b41fea3bce0a112"}, + {file = "simplejson-3.20.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:cbbd7b215ad4fc6f058b5dd4c26ee5c59f72e031dfda3ac183d7968a99e4ca3a"}, + {file = "simplejson-3.20.1-cp313-cp313-win32.whl", hash = "sha256:ae81e482476eaa088ef9d0120ae5345de924f23962c0c1e20abbdff597631f87"}, + {file = "simplejson-3.20.1-cp313-cp313-win_amd64.whl", hash = "sha256:1b9fd15853b90aec3b1739f4471efbf1ac05066a2c7041bf8db821bb73cd2ddc"}, + {file = "simplejson-3.20.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:c7edf279c1376f28bf41e916c015a2a08896597869d57d621f55b6a30c7e1e6d"}, + {file = "simplejson-3.20.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9202b9de38f12e99a40addd1a8d508a13c77f46d87ab1f9095f154667f4fe81"}, + {file = "simplejson-3.20.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:391345b4157cc4e120027e013bd35c45e2c191e2bf48b8913af488cdc3b9243c"}, + {file = "simplejson-3.20.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c6fdcc9debb711ddd2ad6d69f9386a3d9e8e253234bbb30513e0a7caa9510c51"}, + {file = "simplejson-3.20.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9daf8cdc7ee8a9e9f7a3b313ba0a003391857e90d0e82fbcd4d614aa05cb7c3b"}, + {file = "simplejson-3.20.1-cp36-cp36m-musllinux_1_2_aarch64.whl", hash = "sha256:c02f4868a3a46ffe284a51a88d134dc96feff6079a7115164885331a1ba8ed9f"}, + {file = "simplejson-3.20.1-cp36-cp36m-musllinux_1_2_i686.whl", hash = "sha256:3d7310172d5340febd258cb147f46aae30ad57c445f4d7e1ae8461c10aaf43b0"}, + {file = "simplejson-3.20.1-cp36-cp36m-musllinux_1_2_ppc64le.whl", hash = "sha256:4762e05577955312a4c6802f58dd02e040cc79ae59cda510aa1564d84449c102"}, + {file = "simplejson-3.20.1-cp36-cp36m-musllinux_1_2_x86_64.whl", hash = "sha256:8bb98fdf318c05aefd08a92583bd6ee148e93c6756fb1befb7b2d5f27824be78"}, + {file = "simplejson-3.20.1-cp36-cp36m-win32.whl", hash = "sha256:9a74e70818818981294b8e6956ce3496c5e1bd4726ac864fae473197671f7b85"}, + {file = "simplejson-3.20.1-cp36-cp36m-win_amd64.whl", hash = "sha256:e041add470e8f8535cc05509485eb7205729a84441f03b25cde80ad48823792e"}, + {file = "simplejson-3.20.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7e9d73f46119240e4f4f07868241749d67d09873f40cb968d639aa9ccc488b86"}, + {file = "simplejson-3.20.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae6e637dc24f8fee332ed23dd070e81394138e42cd4fd9d0923e5045ba122e27"}, + {file = "simplejson-3.20.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:efd3bc6c6b17e3d4620eb6be5196f0d1c08b6ce7c3101fa8e292b79e0908944b"}, + {file = "simplejson-3.20.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:87fc623d457173a0213bc9ca4e346b83c9d443f63ed5cca847fb0cacea3cfc95"}, + {file = "simplejson-3.20.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec6a1e0a7aff76f0e008bebfa950188b9c50b58c1885d898145f48fc8e189a56"}, + {file = "simplejson-3.20.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:9c079606f461a6e950099167e21e13985147c8a24be8eea66c9ad68f73fad744"}, + {file = "simplejson-3.20.1-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:9faceb68fba27ef17eda306e4cd97a7b4b14fdadca5fbb15790ba8b26ebeec0c"}, + {file = "simplejson-3.20.1-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:7ceed598e4bacbf5133fe7a418f7991bb2df0683f3ac11fbf9e36a2bc7aa4b85"}, + {file = "simplejson-3.20.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:ede69c765e9901861ad7c6139023b7b7d5807c48a2539d817b4ab40018002d5f"}, + {file = "simplejson-3.20.1-cp37-cp37m-win32.whl", hash = "sha256:d8853c269a4c5146ddca4aa7c70e631795e9d11239d5fedb1c6bbc91ffdebcac"}, + {file = "simplejson-3.20.1-cp37-cp37m-win_amd64.whl", hash = "sha256:ed6a17fd397f0e2b3ad668fc9e19253ed2e3875ad9086bd7f795c29a3223f4a1"}, + {file = "simplejson-3.20.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:7551682b60bba3a9e2780742e101cf0a64250e76de7d09b1c4b0c8a7c7cc6834"}, + {file = "simplejson-3.20.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bd9577ec1c8c3a43040e3787711e4c257c70035b7551a21854b5dec88dad09e1"}, + {file = "simplejson-3.20.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4a8e197e4cf6d42c2c57e7c52cd7c1e7b3e37c5911df1314fb393320131e2101"}, + {file = "simplejson-3.20.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6bd09c8c75666e7f62a33d2f1fb57f81da1fcbb19a9fe7d7910b5756e1dd6048"}, + {file = "simplejson-3.20.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1bd6bfe5678d73fbd5328eea6a35216503796428fc47f1237432522febaf3a0c"}, + {file = "simplejson-3.20.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:71b75d448fd0ceb2e7c90e72bb82c41f8462550d48529980bc0bab1d2495bfbb"}, + {file = "simplejson-3.20.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a7e15b716d09f318c8cda3e20f82fae81684ce3d3acd1d7770fa3007df1769de"}, + {file = "simplejson-3.20.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:3e7963197d958fcf9e98b212b80977d56c022384621ff463d98afc3b6b1ce7e8"}, + {file = "simplejson-3.20.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:2e671dd62051129185d3a9a92c60101f56cbc174854a1a3dfb69114ebd9e1699"}, + {file = "simplejson-3.20.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:e25b2a0c396f3b84fb89573d07b0e1846ed563eb364f2ea8230ca92b8a8cb786"}, + {file = "simplejson-3.20.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:489c3a43116082bad56795215786313832ba3991cca1f55838e52a553f451ab6"}, + {file = "simplejson-3.20.1-cp38-cp38-win32.whl", hash = "sha256:4a92e948bad8df7fa900ba2ba0667a98303f3db206cbaac574935c332838208e"}, + {file = "simplejson-3.20.1-cp38-cp38-win_amd64.whl", hash = "sha256:49d059b8363327eee3c94799dd96782314b2dbd7bcc293b4ad48db69d6f4d362"}, + {file = "simplejson-3.20.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a8011f1dd1d676befcd4d675ebdbfdbbefd3bf350052b956ba8c699fca7d8cef"}, + {file = "simplejson-3.20.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e91703a4c5fec53e36875ae426ad785f4120bd1d93b65bed4752eeccd1789e0c"}, + {file = "simplejson-3.20.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e39eaa57c7757daa25bcd21f976c46be443b73dd6c3da47fe5ce7b7048ccefe2"}, + {file = "simplejson-3.20.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ceab2ce2acdc7fbaa433a93006758db6ba9a659e80c4faa13b80b9d2318e9b17"}, + {file = "simplejson-3.20.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6d4f320c33277a5b715db5bf5b10dae10c19076bd6d66c2843e04bd12d1f1ea5"}, + {file = "simplejson-3.20.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2b6436c48e64378fa844d8c9e58a5ed0352bbcfd4028369a9b46679b7ab79d2d"}, + {file = "simplejson-3.20.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e18345c8dda5d699be8166b61f9d80aaee4545b709f1363f60813dc032dac53"}, + {file = "simplejson-3.20.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:90b573693d1526bed576f6817e2a492eaaef68f088b57d7a9e83d122bbb49e51"}, + {file = "simplejson-3.20.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:272cc767826e924a6bd369ea3dbf18e166ded29059c7a4d64d21a9a22424b5b5"}, + {file = "simplejson-3.20.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:51b41f284d603c4380732d7d619f8b34bd04bc4aa0ed0ed5f4ffd0539b14da44"}, + {file = "simplejson-3.20.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6e6697a3067d281f01de0fe96fc7cba4ea870d96d7deb7bfcf85186d74456503"}, + {file = "simplejson-3.20.1-cp39-cp39-win32.whl", hash = "sha256:6dd3a1d5aca87bf947f3339b0f8e8e329f1badf548bdbff37fac63c17936da8e"}, + {file = "simplejson-3.20.1-cp39-cp39-win_amd64.whl", hash = "sha256:463f1fca8fbf23d088e5850fdd0dd4d5faea8900a9f9680270bd98fd649814ca"}, + {file = "simplejson-3.20.1-py3-none-any.whl", hash = "sha256:8a6c1bbac39fa4a79f83cbf1df6ccd8ff7069582a9fd8db1e52cea073bc2c697"}, + {file = "simplejson-3.20.1.tar.gz", hash = "sha256:e64139b4ec4f1f24c142ff7dcafe55a22b811a74d86d66560c8815687143037d"}, ] [[package]] name = "six" -version = "1.16.0" +version = "1.17.0" description = "Python 2 and 3 compatibility utilities" category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, + {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, + {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, ] [[package]] @@ -1616,103 +1780,89 @@ files = [ [[package]] name = "sparseqr" -version = "1.2.1" +version = "1.4.1" description = "Python wrapper for SuiteSparseQR" category = "main" optional = false -python-versions = "^3.8" +python-versions = ">=3.8" files = [] develop = false [package.dependencies] -cffi = "^1.0" -numpy = "^1.21" -scipy = "^1.0" +cffi = ">=1.0" +numpy = ">1.2" +scipy = ">=1.0" +setuptools = ">35" [package.source] type = "git" url = "https://github.com/yig/PySPQR.git" reference = "HEAD" -resolved_reference = "42989e98207c10beacaabe616c681cd1bda675d8" +resolved_reference = "535df760f8a13ecc23bf6554d90255dc8bba5039" [[package]] name = "swiglpk" -version = "5.0.10" +version = "5.0.12" description = "swiglpk - Simple swig bindings for the GNU Linear Programming Kit" category = "main" optional = false python-versions = "*" files = [ - {file = "swiglpk-5.0.10-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:841e87ac08dc7497a3cc738fce188d15140fa800d101c64b1bb8e8fd555c32ae"}, - {file = "swiglpk-5.0.10-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6e22baa37630f5cdc0c634d7046eeb4a31b53914611f4a5bdd1bf53f336c21f2"}, - {file = "swiglpk-5.0.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:193bec2c50844024155477bd72a3fd7ef12044578f03b8afd7bbc4c33ca05fd9"}, - {file = "swiglpk-5.0.10-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb54cb336c84cf0d5c32452a59ec404439707aad0cce50a7ae8c3056f8f2185e"}, - {file = "swiglpk-5.0.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16750aed2d9dc76c51aa285648d754bec4fa9b6aec31f1e1313b95172078edfe"}, - {file = "swiglpk-5.0.10-cp310-cp310-win32.whl", hash = "sha256:9741e58948fd82f2a6afe067d490152c4bb06dedf221a737d506064f38379ef6"}, - {file = "swiglpk-5.0.10-cp310-cp310-win_amd64.whl", hash = "sha256:c325dc74d7ae1c15f9e9fbc3eac032ecfecad483591afd4c0046050f51640328"}, - {file = "swiglpk-5.0.10-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b29876e77c9e76a9cea411cb3d34a8b52f1de9cf5909caa88293a2303012eb23"}, - {file = "swiglpk-5.0.10-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:41df9c17cee06ac864acdb0a7f16d848dcc6bcdbb982950893f06cc97b148470"}, - {file = "swiglpk-5.0.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ce82748c96dfced697affbed9c22088306f7608601f12f1593e2792ae3ae244"}, - {file = "swiglpk-5.0.10-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e30d85a194991c58acdc3d0374fb524e139d025e76ba46b734f8119316ab9a8d"}, - {file = "swiglpk-5.0.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b769b09c7af80101095cf1c3f341ac1c7c1f049905ec5da0925c998bbe0cb809"}, - {file = "swiglpk-5.0.10-cp311-cp311-win32.whl", hash = "sha256:53751ffd429d8adf95aa02ed8a52b5da257958d17dc5a0f344f56379888ac956"}, - {file = "swiglpk-5.0.10-cp311-cp311-win_amd64.whl", hash = "sha256:eeb066918316034ec9c8dbed0e1e5e14df22761aab7eeb952868eed3716ae344"}, - {file = "swiglpk-5.0.10-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e7862f2a12f09337ef17f1518532f14d4a77a246437eacb4a431f596a7df608e"}, - {file = "swiglpk-5.0.10-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e0b1fd9a5d0c20020bb4a624f94ca16b659fdda5e0c59686f88e5d683ab4441b"}, - {file = "swiglpk-5.0.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:49b1bf4dff2938bc551a4aadaf86b027d1d503d7ef60f8e01d037d88030831c0"}, - {file = "swiglpk-5.0.10-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:67156fc1224b82735904d2a0b049664976ff8a0708e15d3e8c823249e3803c6c"}, - {file = "swiglpk-5.0.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:110e8ac831e44a4e09bd7ab1f7b88a4b6ae92b923191e206bccd413ff840ec5c"}, - {file = "swiglpk-5.0.10-cp312-cp312-win32.whl", hash = "sha256:6d9a7e63e9a73a44771413c4d8c59d3442bd63e71b6f01710a1a0c6348030621"}, - {file = "swiglpk-5.0.10-cp312-cp312-win_amd64.whl", hash = "sha256:d28aac8db80bafc4a91b2d5b6a96791de96eb2d4fea32b8210b11743a0722d42"}, - {file = "swiglpk-5.0.10-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:78c2a5cad1645a348989b7dc57019313655d9ed060a17451fdb66893fc15b1a8"}, - {file = "swiglpk-5.0.10-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e526b9e7f40b4d3776e917d495070569fac9f225be7009222ab295d50bbef154"}, - {file = "swiglpk-5.0.10-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2587fa19af29a00daa6993c81de9eb4925224dfbed25a76a449caef51d1b023"}, - {file = "swiglpk-5.0.10-cp36-cp36m-win32.whl", hash = "sha256:b81c8e232d70f2f8f297ce4acb3f9abc86a5f8369158e7284c8e5d35c057aba6"}, - {file = "swiglpk-5.0.10-cp36-cp36m-win_amd64.whl", hash = "sha256:921b0e402f22d71f981d79269063e4afb6089c6fbdba82443b7aee216236538d"}, - {file = "swiglpk-5.0.10-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:14a8f3ccf19473be851383e9e01f6e902b925250f664f4872a6660a30590e5ea"}, - {file = "swiglpk-5.0.10-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ebc186a995b70365146fb0598b1e496f981640d9d40fd9abbb63bd73d6f30ae8"}, - {file = "swiglpk-5.0.10-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666407c5cef0fd7aa6941fb6a65b34437242f89dea8076f2bd60fbb3590cf43c"}, - {file = "swiglpk-5.0.10-cp37-cp37m-win32.whl", hash = "sha256:8bd58680d7895e27dbe309534df0657b5226d07256373cc1eb135a5cecb3ba72"}, - {file = "swiglpk-5.0.10-cp37-cp37m-win_amd64.whl", hash = "sha256:11d4b151b8780b81951d3bcdb9a2a746d4371213f27044149b20851cfc60757f"}, - {file = "swiglpk-5.0.10-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b55dea4fd9c30ce6ab5571d0980a01a849c02aca509025cef120afe22e341770"}, - {file = "swiglpk-5.0.10-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3c130b2f24a353dc201dc1df4c802da15334290b92a310754b8859b40121dc40"}, - {file = "swiglpk-5.0.10-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bfdccd027f0ee51618056c5b40be00d6e51020202e706d2aac3d7ac969b1b55a"}, - {file = "swiglpk-5.0.10-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3a67ebaf25f13387a40be7c13d008b515832a44f8e21961d247aec456d94b2a8"}, - {file = "swiglpk-5.0.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad7db9410b670a4618c7d9d026f6b9f6c136136b46f9e12489dd2496a1e21898"}, - {file = "swiglpk-5.0.10-cp38-cp38-win32.whl", hash = "sha256:a3c3854389ba2ddbfd530e0d0b86f3d782b4a566238d3e8099e5786d4ea18d38"}, - {file = "swiglpk-5.0.10-cp38-cp38-win_amd64.whl", hash = "sha256:95078fd733bfe3cbed9827516b3e70dbc88818bd35b6e50fae6aed0cf7159545"}, - {file = "swiglpk-5.0.10-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:88c26db27649011d18a098e2397621e00e9196e0c64458079d1d909a5fbc8798"}, - {file = "swiglpk-5.0.10-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b054eda591c244ad959978516c28f698109bb7c139226ac069361c4a12ce649a"}, - {file = "swiglpk-5.0.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ae2a33071a40b86c5034740a9d90f05321b416230bf459b11c7cf641d8fbb62"}, - {file = "swiglpk-5.0.10-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9ca118d8adba2b3276c8439bf495ba2237d00c17f0df9c1caea841dd4cee8bbc"}, - {file = "swiglpk-5.0.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23dda3fe6cd062d7eca28250dbae3b9e456019c5d979bad501b68f09706dec08"}, - {file = "swiglpk-5.0.10-cp39-cp39-win32.whl", hash = "sha256:f7a27c31f51bd0ff4aa9bb58125d3168ca66119f4d7144cff067081225b77a98"}, - {file = "swiglpk-5.0.10-cp39-cp39-win_amd64.whl", hash = "sha256:979073e206e6bfe443e4fd6fd66b4b42bc202d657a71416b679b24a2ec248466"}, - {file = "swiglpk-5.0.10-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:fb8b722e8dc9e88348ebae54ca19c045dcc6377ce38972d3ae0fbaf9aa4d565f"}, - {file = "swiglpk-5.0.10-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:36b99ef9205aa6bea5d8070ef1e07a6a82ebf7449a008c383b9701f50eb0e835"}, - {file = "swiglpk-5.0.10-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f8491ff795b6a146b3ff429c67f04aed5cdc01dc90a7ece8d1b8e1bf22a2e06"}, - {file = "swiglpk-5.0.10-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c348b1ac6c0bd28853553cf005447b0cc661fd8daccc1ebc9aba5b0b0605c8c9"}, - {file = "swiglpk-5.0.10-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:234a2d7e4186d927488f8a81f1fffe15d6cc79643a4270cded6c39e3c7b0b682"}, - {file = "swiglpk-5.0.10-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5412c9959e7dfafc846bde5aadebbc049acab3e8dbda889ad989fd99d76dad79"}, - {file = "swiglpk-5.0.10-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ecb5b9d7cf41f162438ded7bc5f5f2a756e7ec1062b4de61496094b607c99aa0"}, - {file = "swiglpk-5.0.10-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0206eecb1a47ca91fd4d1339e560167943ec65439f0b3a17eb350d4ff63b4c0c"}, - {file = "swiglpk-5.0.10-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a920fbedec663d0b2e7cef41a35a03057808040ffe0111d26d457142e248cd4"}, - {file = "swiglpk-5.0.10-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:b7d7298b0d97665eb655658fdbfcc0fa9c4d9ee632ec0d4096a9a7280a68b05b"}, - {file = "swiglpk-5.0.10-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4954c1c7ce070afa94dbeb503532c11bdc801585a87188a23594c48a90a89cb1"}, - {file = "swiglpk-5.0.10-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02c58d62a753542f3092674f382d85b9f13f2cdcc0bf89f1adf7db354a839e6f"}, - {file = "swiglpk-5.0.10.tar.gz", hash = "sha256:57ac34ad334da95dd168114bfdb50ae10a2a6a3ddef21e4941f46fe430c5a7e1"}, + {file = "swiglpk-5.0.12-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a0170a0c672d46f426ead8a6606ef9d5fa022ac9cb21bd76cf84e02f789795ef"}, + {file = "swiglpk-5.0.12-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9d7e100fa713dc01509f72ee3ee00c2623a0042dfa7df850df51b8830f1e19ab"}, + {file = "swiglpk-5.0.12-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79a06963d20c414d86cead935e2ece224896635130d4ee2b234278616805ca0e"}, + {file = "swiglpk-5.0.12-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7e0f8326fc992110825caf45f35a896bbcd89db44226969b7f8ff2fa6ac9fb4"}, + {file = "swiglpk-5.0.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c8b60466483d5b533c1f537e67a71555842b9893e2424153903f37f66bfb5ea"}, + {file = "swiglpk-5.0.12-cp310-cp310-win32.whl", hash = "sha256:8db1432f987302fc1a0ec3c28fa65eb1ff885d74cb41e8ecebfe3cd73baae4e7"}, + {file = "swiglpk-5.0.12-cp310-cp310-win_amd64.whl", hash = "sha256:ee9d64337a7ded27e99438bd3f1c254b8632163e00bac8d5e310132c21f741cb"}, + {file = "swiglpk-5.0.12-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:658ed9afda3920f6ed7db7199b3a890617e948d03851db952885a0ca64fd48e9"}, + {file = "swiglpk-5.0.12-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9b7547754ce457baa574a9908adfa22b55eb158451b69bb44c80e3a8032eff56"}, + {file = "swiglpk-5.0.12-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e585632124d3208ba0c5de99449cfa8b9438b342ff20beb7feb5348659b9e5c7"}, + {file = "swiglpk-5.0.12-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5678317e7257f49adfbfa8d0f7797d309ad9b88d2df97e252931b5660be54b87"}, + {file = "swiglpk-5.0.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c8093f72d4314d50f2e3aac54844fffb41c241f33dd5477848aaaefeba1d588"}, + {file = "swiglpk-5.0.12-cp311-cp311-win32.whl", hash = "sha256:28cdc795b93734f450c07223c24628bc5d796072f3dc8c1546f68865dea88d86"}, + {file = "swiglpk-5.0.12-cp311-cp311-win_amd64.whl", hash = "sha256:fc4e7f1ceb7534b380da869f41810507e32b96a0b2b3fd1cfe0b4058eee9e2c3"}, + {file = "swiglpk-5.0.12-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7bd6565a5b75e8648fa232c1ee23f8597da75475691f097d7399ef40de14b482"}, + {file = "swiglpk-5.0.12-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:18773487af5fc92b3063b5c777a3a139518a94201c35572996a6ffef4d710e40"}, + {file = "swiglpk-5.0.12-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da0318776acf3892933dfcf6a75b2fe4b26b0334c5513ed6ca7176c0d1b82420"}, + {file = "swiglpk-5.0.12-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e60202c809104a07263d0b9c734ca37f644430907a66d7f3155024d83de00b78"}, + {file = "swiglpk-5.0.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:436f8cc5f3d638a7304ea8397236465017c7b9c4abf668f7c83286609585baaa"}, + {file = "swiglpk-5.0.12-cp312-cp312-win32.whl", hash = "sha256:c541683a0f12e715affde7b1ef766328f2610ac0523f8fee208bb95cb3e774b5"}, + {file = "swiglpk-5.0.12-cp312-cp312-win_amd64.whl", hash = "sha256:78d0b6e74ad18033c59b3c3e7d6aa058dd28f25e39e71ce54e7a51b04b32e418"}, + {file = "swiglpk-5.0.12-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6afea6436ee663d0e86a393bdf3390107294610a1aff346daa5407a272d39f9f"}, + {file = "swiglpk-5.0.12-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:735a8e8887ae02a1fda34396af6935fd9f4cb76ae5eaeda1cd93a4840bd34402"}, + {file = "swiglpk-5.0.12-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bf8f062ebaf14313080db7dd283c0eb313d6ad299cf356242fc7f62658af3f1"}, + {file = "swiglpk-5.0.12-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9f30911986d5a2e8e556ae75c518578d9bf2b8d0f5c6656398682df682e284ad"}, + {file = "swiglpk-5.0.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:190346671880aad44bcd96d13d2d8b0373b5bbffa20577b85f494935381190c9"}, + {file = "swiglpk-5.0.12-cp313-cp313-win32.whl", hash = "sha256:e73bd3747f4e06d03817630f70e915fa263d1eaddb100e87da68fe0f00352072"}, + {file = "swiglpk-5.0.12-cp313-cp313-win_amd64.whl", hash = "sha256:6c64594860dcf9ee64020e924cf64032ef3d5ac474220e26bc900486ff2f6b58"}, + {file = "swiglpk-5.0.12-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:293b749577586c6981fbe074ffde19d25a4db42611fed43c6824d2f5a5d72d21"}, + {file = "swiglpk-5.0.12-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ae6eea148d0dac9704f4728fb20080a1bac99ba4a2db3ef29c485381fcbd2f53"}, + {file = "swiglpk-5.0.12-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c463c7e44a1d20f6a9f1f9b5768b04550c77fa610af08cc7368db72d783a6855"}, + {file = "swiglpk-5.0.12-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:31fc1df27cddd2909371b65a53a1b1f06d92f970e497a666011b5efa58134295"}, + {file = "swiglpk-5.0.12-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:faf588fc955a2e92c6eaaf91c56682fa1330c89a72116564c2a13945155798f0"}, + {file = "swiglpk-5.0.12-cp38-cp38-win32.whl", hash = "sha256:a1a8e487e125d0270c5630f259f46557a1d2b0d7b509ae74c09254a0ee872cfb"}, + {file = "swiglpk-5.0.12-cp38-cp38-win_amd64.whl", hash = "sha256:743348a017b47aedf4532fd6f38fdf6ffc140d92d3c81bc28ac75de7f901b1e7"}, + {file = "swiglpk-5.0.12-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:78aeac39016e3245f021b88e2e5e969c66d9b2945239f52cb549bd5f71a99aff"}, + {file = "swiglpk-5.0.12-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c0b46f78dc9c4a6081a635097ddc29cfd72e617387c9d1063c063fdb03ef7452"}, + {file = "swiglpk-5.0.12-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bcdd5ac5db4ac41ce4c2e473193595a0f0f25c7427cd6b1d1d54a5aba3411fc0"}, + {file = "swiglpk-5.0.12-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a56b086e7a4f039a8cfc6b5af31a3c217817bf5879cd2384df11488edc171b29"}, + {file = "swiglpk-5.0.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9175819aa2d194e35931d5fffc8fe2b98a7a04b0248054a8851dcc7d4f35c99"}, + {file = "swiglpk-5.0.12-cp39-cp39-win32.whl", hash = "sha256:adcbcb7c83684ae98910b27642ca038751386a8a5b245f2a4be6bfba0dc5df8c"}, + {file = "swiglpk-5.0.12-cp39-cp39-win_amd64.whl", hash = "sha256:2b790910f61818f5c27ca87643ffc5d20ace0ae770e4f4f8f3924c6000e1e619"}, + {file = "swiglpk-5.0.12.tar.gz", hash = "sha256:86d1be00f24ad59b9e179d3d5132f270535d57be7f209f70f8a6a8b001a65c98"}, ] [[package]] name = "sympy" -version = "1.13.2" +version = "1.13.3" description = "Computer algebra system (CAS) in Python" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "sympy-1.13.2-py3-none-any.whl", hash = "sha256:c51d75517712f1aed280d4ce58506a4a88d635d6b5dd48b39102a7ae1f3fcfe9"}, - {file = "sympy-1.13.2.tar.gz", hash = "sha256:401449d84d07be9d0c7a46a64bd54fe097667d5e7181bfe67ec777be9e01cb13"}, + {file = "sympy-1.13.3-py3-none-any.whl", hash = "sha256:54612cf55a62755ee71824ce692986f23c88ffa77207b30c1368eda4a7060f73"}, + {file = "sympy-1.13.3.tar.gz", hash = "sha256:b27fd2c6530e0ab39e275fc9b683895367e51d5da91baa8d3d64db2565fec4d9"}, ] [package.dependencies] @@ -1749,23 +1899,39 @@ files = [ {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, ] +[[package]] +name = "tzdata" +version = "2025.1" +description = "Provider of IANA time zone data" +category = "main" +optional = false +python-versions = ">=2" +files = [ + {file = "tzdata-2025.1-py2.py3-none-any.whl", hash = "sha256:7e127113816800496f027041c570f50bcd464a020098a3b6b199517772303639"}, + {file = "tzdata-2025.1.tar.gz", hash = "sha256:24894909e88cdb28bd1636c6887801df64cb485bd593f2fd83ef29075a81d694"}, +] + [[package]] name = "zipp" -version = "3.20.0" +version = "3.20.2" description = "Backport of pathlib-compatible object wrapper for zip files" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "zipp-3.20.0-py3-none-any.whl", hash = "sha256:58da6168be89f0be59beb194da1250516fdaa062ccebd30127ac65d30045e10d"}, - {file = "zipp-3.20.0.tar.gz", hash = "sha256:0145e43d89664cfe1a2e533adc75adafed82fe2da404b4bbb6b026c0157bdb31"}, + {file = "zipp-3.20.2-py3-none-any.whl", hash = "sha256:a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350"}, + {file = "zipp-3.20.2.tar.gz", hash = "sha256:bc9eb26f4506fda01b81bcde0ca78103b6e62f991b381fec825435c836edbc29"}, ] [package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] +cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"] +type = ["pytest-mypy"] [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "1f3ee3d9ab943dfbe26cc9e3a421396ea1022552386d419e53c55ac614c5f1a5" +content-hash = "d0c92cb23ac9789a8592fa8a0da71829b6e965b9ad3848100ce4bb2e17b0c579" diff --git a/pyproject.toml b/pyproject.toml index d0cdf087..8fa6cc39 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,27 +1,29 @@ [tool.poetry] -name = "dingo" -version = "0.1.0" -description = "A python library for metabolic networks sampling and analysis. dingo is part of GeomScale project" -authors = ["Apostolos Chalkis "] +name = "dingo_walk" +version = "0.1.5" +description = "High dimensional polytope sampling in Python with a set of tools for metabolic network sampling and analysis." +authors = ["Apostolos Chalkis ", "Vissarion Fisikopoulos ", "Elias Tsigaridas ", "Haris Zafeiropoulos "] build = 'build.py' +packages = [{ include = "dingo_walk" }] +readme = "README.md" + [tool.poetry.dependencies] python = "^3.8" -sparseqr = {git = "https://github.com/yig/PySPQR.git"} +sparseqr = "^1.2.1" simplejson = "^3.17.2" Cython = "^0.29.22" -numpy = "^1.20.1" scipy = "^1.6.1" argparse = "^1.4.0" matplotlib = "^3.4.1" -cobra = "^0.26.0" plotly = "^5.11.0" kaleido = "0.2.1" pyoptinterface = {version = "^0.2.7", extras = ["highs"]} networkx = "3.1" +cobra = "^0.29.1" [tool.poetry.dev-dependencies] [build-system] -requires = ["poetry-core>=1.0.0", "cython", "numpy==1.20.1"] +requires = ["poetry-core>=1.0.0", "cython", "numpy==1.23.2"] build-backend = "poetry.core.masonry.api" diff --git a/setup.py b/setup.py index 77ec7ec7..5e7433d0 100755 --- a/setup.py +++ b/setup.py @@ -1,12 +1,12 @@ -# dingo : a python library for metabolic networks sampling and analysis -# dingo is part of GeomScale project +# dingo_walk : a python library for metabolic networks sampling and analysis +# dingo_walk is part of GeomScale project # Copyright (c) 2021 Apostolos Chalkis # Copyright (c) 2024 Vissarion Fisikopoulos # Licensed under GNU LGPL.3, see LICENCE file -# This is the setup Python script for building the dingo library +# This is the setup Python script for building the dingo_walk library from distutils.core import setup from distutils.core import Extension @@ -15,17 +15,22 @@ import numpy import os -# information about the dingo library -version = "0.1.0" +# get ready to read the contents of your README file +from pathlib import Path +this_directory = Path(__file__).parent + +# information about the dingo_walk library +version = "0.1.5" license = ("LGPL3",) -packages = ["dingo"] +packages = ["dingo_walk"] description = "A python library for metabolic networks sampling and analysis" -author = "Apostolos Chalkis" -author_email = "tolis.chal@gmail.com" -name = "dingo" - +author = "Apostolos Chalkis, Vissarion Fisikopoulos, Elias Tsigaridas, Haris Zafeiropoulos" +author_email = "fisikop@gmail.com" +name = "dingo_walk" +long_description = (this_directory / "README.md").read_text() +long_description_content_type='text/markdown' -source_directory_list = ["dingo", join("dingo", "bindings")] +source_directory_list = ["dingo_walk", join("dingo_walk", "bindings")] compiler_args = ["-std=c++17", "-O3", "-DBOOST_NO_AUTO_PTR", "-ldl", "-lm", "-fopenmp"] lp_solve_compiler_args = ["-DYY_NEVER_INTERACTIVE", "-DLoadInverseLib=0", "-DLoadLanguageLib=0", @@ -35,7 +40,7 @@ extra_volesti_include_dirs = [ # include binding files - join("dingo", "bindings"), + join("dingo_walk", "bindings"), # the volesti code uses some external classes. # external directories we need to add join("eigen"), @@ -82,8 +87,8 @@ , "lp_solve_5.5/lp_SOS.c" , "lp_solve_5.5/lp_utils.c" , "lp_solve_5.5/lp_wlp.c" - , "dingo/volestipy.pyx" - , "dingo/bindings/bindings.cpp"] + , "dingo_walk/volestipy.pyx" + , "dingo_walk/bindings/bindings.cpp"] # Return the directory that contains the NumPy *.h header files. # Extension modules that need to compile against NumPy should use this @@ -112,4 +117,4 @@ ext_modules=ext_modules, ) -print("Installation of dingo completed.") +print("Installation of dingo_walk completed.") diff --git a/tests/correlation.py b/tests/correlation.py index fdb21b75..a5974087 100644 --- a/tests/correlation.py +++ b/tests/correlation.py @@ -1,19 +1,19 @@ -from dingo.utils import correlated_reactions -from dingo import MetabolicNetwork, PolytopeSampler +from dingo_walk.utils import correlated_reactions +from dingo_walk import MetabolicNetwork, PolytopeSampler import numpy as np import unittest class TestCorrelation(unittest.TestCase): def test_correlation(self): - - dingo_model = MetabolicNetwork.from_json('ext_data/e_coli_core.json') - reactions = dingo_model.reactions - sampler = PolytopeSampler(dingo_model) + dingo_walk_model = MetabolicNetwork.from_json('ext_data/e_coli_core.json') + reactions = dingo_walk_model.reactions + + sampler = PolytopeSampler(dingo_walk_model) steady_states = sampler.generate_steady_states() - + # calculate correlation matrix with filtering from copula indicator corr_matrix, indicator_dict = correlated_reactions(steady_states, reactions = reactions, @@ -27,16 +27,16 @@ def test_correlation(self): # rows and columns must be equal to model reactions self.assertTrue(corr_matrix.shape[0] == len(reactions)) self.assertTrue(corr_matrix.shape[1] == len(reactions)) - - - dingo_model = MetabolicNetwork.from_json('ext_data/e_coli_core.json') - reactions = dingo_model.reactions - sampler = PolytopeSampler(dingo_model) + + dingo_walk_model = MetabolicNetwork.from_json('ext_data/e_coli_core.json') + reactions = dingo_walk_model.reactions + + sampler = PolytopeSampler(dingo_walk_model) steady_states = sampler.generate_steady_states() - + # calculate correlation matrix without filtering from copula indicator - corr_matrix = correlated_reactions(steady_states, + corr_matrix = correlated_reactions(steady_states, indicator_cutoff = 0, pearson_cutoff = 0, lower_triangle = True, @@ -47,7 +47,7 @@ def test_correlation(self): # rows and columns must be equal to model reactions self.assertTrue(corr_matrix.shape[0] == len(reactions)) self.assertTrue(corr_matrix.shape[1] == len(reactions)) - + if __name__ == "__main__": unittest.main() diff --git a/tests/fba.py b/tests/fba.py index f5716435..3aa2e8fb 100644 --- a/tests/fba.py +++ b/tests/fba.py @@ -1,5 +1,5 @@ -# dingo : a python library for metabolic networks sampling and analysis -# dingo is part of GeomScale project +# dingo_walk : a python library for metabolic networks sampling and analysis +# dingo_walk is part of GeomScale project # Copyright (c) 2021 Apostolos Chalkis # Copyright (c) 2024 Ke Shi @@ -9,8 +9,8 @@ import unittest import os import sys -from dingo import MetabolicNetwork -from dingo.pyoptinterface_based_impl import set_default_solver +from dingo_walk import MetabolicNetwork +from dingo_walk.pyoptinterface_based_impl import set_default_solver class TestFba(unittest.TestCase): diff --git a/tests/full_dimensional.py b/tests/full_dimensional.py index 4af2f12a..a95ce884 100644 --- a/tests/full_dimensional.py +++ b/tests/full_dimensional.py @@ -1,5 +1,5 @@ -# dingo : a python library for metabolic networks sampling and analysis -# dingo is part of GeomScale project +# dingo_walk : a python library for metabolic networks sampling and analysis +# dingo_walk is part of GeomScale project # Copyright (c) 2021 Apostolos Chalkis # Copyright (c) 2021 Vissarion Fisikopoulos @@ -10,8 +10,8 @@ import unittest import os import sys -from dingo import MetabolicNetwork, PolytopeSampler -from dingo.pyoptinterface_based_impl import set_default_solver +from dingo_walk import MetabolicNetwork, PolytopeSampler +from dingo_walk.pyoptinterface_based_impl import set_default_solver class TestFullDim(unittest.TestCase): @@ -24,7 +24,7 @@ def test_get_full_dim_json(self): self.assertEqual(sampler.A.shape[0], 175) self.assertEqual(sampler.A.shape[1], 24) - + sampler = self.get_polytope_from_model_with_redundancy_removal(model) self.assertEqual(sampler.A.shape[0], 26) @@ -52,7 +52,7 @@ def test_get_full_dim_mat(self): self.assertEqual(sampler.A.shape[0], 175) self.assertEqual(sampler.A.shape[1], 24) - + sampler = self.get_polytope_from_model_with_redundancy_removal(model) self.assertEqual(sampler.A.shape[0], 26) @@ -66,7 +66,7 @@ def get_polytope_from_model_without_redundancy_removal (met_model): sampler.get_polytope() return sampler - + @staticmethod def get_polytope_from_model_with_redundancy_removal (met_model): diff --git a/tests/max_ball.py b/tests/max_ball.py index 8189f664..79d5bcd3 100644 --- a/tests/max_ball.py +++ b/tests/max_ball.py @@ -1,5 +1,5 @@ -# dingo : a python library for metabolic networks sampling and analysis -# dingo is part of GeomScale project +# dingo_walk : a python library for metabolic networks sampling and analysis +# dingo_walk is part of GeomScale project # Copyright (c) 2021 Apostolos Chalkis # Copyright (c) 2021 Vissarion Fisikopoulos @@ -12,13 +12,13 @@ import sys import scipy import numpy as np -from dingo import MetabolicNetwork, PolytopeSampler -from dingo.pyoptinterface_based_impl import inner_ball, set_default_solver -from dingo.scaling import gmscale +from dingo_walk import MetabolicNetwork, PolytopeSampler +from dingo_walk.pyoptinterface_based_impl import inner_ball, set_default_solver +from dingo_walk.scaling import gmscale class TestMaxBall(unittest.TestCase): - + def test_simple(self): m = 2 n = 5 diff --git a/tests/preprocess.py b/tests/preprocess.py index 64edce9c..92082633 100644 --- a/tests/preprocess.py +++ b/tests/preprocess.py @@ -1,7 +1,7 @@ from cobra.io import load_json_model -from dingo import MetabolicNetwork -from dingo.preprocess import PreProcess +from dingo_walk import MetabolicNetwork +from dingo_walk.preprocess import PreProcess import unittest import numpy as np @@ -11,59 +11,58 @@ def test_preprocess(self): # load cobra model cobra_model = load_json_model("ext_data/e_coli_core.json") - - # convert cobra to dingo model - initial_dingo_model = MetabolicNetwork.from_cobra_model(cobra_model) - + + # convert cobra to dingo_walk model + initial_dingo_walk_model = MetabolicNetwork.from_cobra_model(cobra_model) + # perform an FBA to find the initial FBA solution - initial_fba_solution = initial_dingo_model.fba()[1] + initial_fba_solution = initial_dingo_walk_model.fba()[1] - # call the reduce function from the PreProcess class - # with extend=False to remove reactions from the model - obj = PreProcess(cobra_model, tol=1e-5, open_exchanges=False, verbose=False) - removed_reactions, final_dingo_model = obj.reduce(extend=False) - - # calculate the count of removed reactions with extend set to False + # call the reduce function from the PreProcess class + # with extend=False to remove reactions from the model + obj = PreProcess(cobra_model, tol=1e-5, open_exchanges=False, verbose=False) + removed_reactions, final_dingo_walk_model = obj.reduce(extend=False) + + # calculate the count of removed reactions with extend set to False removed_reactions_count = len(removed_reactions) self.assertTrue( 46 - removed_reactions_count == 0 ) - # calculate the count of reactions with bounds equal to 0 - # with extend set to False from the dingo model - dingo_removed_reactions = np.sum((final_dingo_model.lb == 0) & (final_dingo_model.ub == 0)) - self.assertTrue( 46 - dingo_removed_reactions == 0 ) - + # calculate the count of reactions with bounds equal to 0 + # with extend set to False from the dingo_walk model + dingo_walk_removed_reactions = np.sum((final_dingo_walk_model.lb == 0) & (final_dingo_walk_model.ub == 0)) + self.assertTrue( 46 - dingo_walk_removed_reactions == 0 ) + # perform an FBA to check the solution after reactions removal - final_fba_solution = final_dingo_model.fba()[1] - self.assertTrue(abs(final_fba_solution - initial_fba_solution) < 1e-03) + final_fba_solution = final_dingo_walk_model.fba()[1] + self.assertTrue(abs(final_fba_solution - initial_fba_solution) < 1e-03) - # load models in cobra and dingo format again to restore bounds + # load models in cobra and dingo_walk format again to restore bounds cobra_model = load_json_model("ext_data/e_coli_core.json") - - # convert cobra to dingo model - initial_dingo_model = MetabolicNetwork.from_cobra_model(cobra_model) - - # call the reduce function from the PreProcess class - # with extend=True to remove additional reactions from the model - obj = PreProcess(cobra_model, tol=1e-6, open_exchanges=False, verbose=False) - removed_reactions, final_dingo_model = obj.reduce(extend=True) - - # calculate the count of removed reactions with extend set to True + + # convert cobra to dingo_walk model + initial_dingo_walk_model = MetabolicNetwork.from_cobra_model(cobra_model) + + # call the reduce function from the PreProcess class + # with extend=True to remove additional reactions from the model + obj = PreProcess(cobra_model, tol=1e-6, open_exchanges=False, verbose=False) + removed_reactions, final_dingo_walk_model = obj.reduce(extend=True) + + # calculate the count of removed reactions with extend set to True removed_reactions_count = len(removed_reactions) self.assertTrue( 46 - removed_reactions_count <= 0 ) - # calculate the count of reactions with bounds equal to 0 - # with extend set to True from the dingo model - dingo_removed_reactions = np.sum((final_dingo_model.lb == 0) & (final_dingo_model.ub == 0)) - self.assertTrue( 46 - dingo_removed_reactions <= 0 ) - + # calculate the count of reactions with bounds equal to 0 + # with extend set to True from the dingo_walk model + dingo_walk_removed_reactions = np.sum((final_dingo_walk_model.lb == 0) & (final_dingo_walk_model.ub == 0)) + self.assertTrue( 46 - dingo_walk_removed_reactions <= 0 ) + # perform an FBA to check the result after reactions removal - final_fba_solution = final_dingo_model.fba()[1] - self.assertTrue(abs(final_fba_solution - initial_fba_solution) < 1e-03) + final_fba_solution = final_dingo_walk_model.fba()[1] + self.assertTrue(abs(final_fba_solution - initial_fba_solution) < 1e-03) if __name__ == "__main__": unittest.main() - \ No newline at end of file diff --git a/tests/rounding.py b/tests/rounding.py index e3d97c62..a329372a 100644 --- a/tests/rounding.py +++ b/tests/rounding.py @@ -1,5 +1,5 @@ -# dingo : a python library for metabolic networks sampling and analysis -# dingo is part of GeomScale project +# dingo_walk : a python library for metabolic networks sampling and analysis +# dingo_walk is part of GeomScale project # Copyright (c) 2022 Apostolos Chalkis # Copyright (c) 2022-2024 Vissarion Fisikopoulos @@ -12,8 +12,8 @@ import os import sys import numpy as np -from dingo import MetabolicNetwork, PolytopeSampler -from dingo.pyoptinterface_based_impl import set_default_solver +from dingo_walk import MetabolicNetwork, PolytopeSampler +from dingo_walk.pyoptinterface_based_impl import set_default_solver def test_rounding(self, method_str): @@ -68,4 +68,4 @@ def test_rounding_john_position(self): if len(sys.argv) > 1: set_default_solver(sys.argv[1]) sys.argv.pop(1) - unittest.main() \ No newline at end of file + unittest.main() diff --git a/tests/sampling.py b/tests/sampling.py index a0827d68..6bb2b4a0 100644 --- a/tests/sampling.py +++ b/tests/sampling.py @@ -1,5 +1,5 @@ -# dingo : a python library for metabolic networks sampling and analysis -# dingo is part of GeomScale project +# dingo_walk : a python library for metabolic networks sampling and analysis +# dingo_walk is part of GeomScale project # Copyright (c) 2022 Apostolos Chalkis # Copyright (c) 2022 Vissarion Fisikopoulos @@ -11,8 +11,8 @@ import unittest import os import sys -from dingo import MetabolicNetwork, PolytopeSampler -from dingo.pyoptinterface_based_impl import set_default_solver +from dingo_walk import MetabolicNetwork, PolytopeSampler +from dingo_walk.pyoptinterface_based_impl import set_default_solver class TestSampling(unittest.TestCase): @@ -35,7 +35,7 @@ def test_sample_mat(self): model = MetabolicNetwork.from_mat(input_file_mat) sampler = PolytopeSampler(model) - steady_states = sampler.generate_steady_states(ess = 20000, psrf = True) + steady_states = sampler.generate_steady_states(ess = 20000, psrf = True) self.assertTrue( steady_states.shape[0] == 95 ) self.assertTrue( abs( steady_states[12].mean() - 2.504 ) < 1e-02 ) diff --git a/tests/sampling_no_multiphase.py b/tests/sampling_no_multiphase.py index 86e304f3..84e7f336 100644 --- a/tests/sampling_no_multiphase.py +++ b/tests/sampling_no_multiphase.py @@ -1,5 +1,5 @@ -# dingo : a python library for metabolic networks sampling and analysis -# dingo is part of GeomScale project +# dingo_walk : a python library for metabolic networks sampling and analysis +# dingo_walk is part of GeomScale project # Copyright (c) 2022 Apostolos Chalkis # Copyright (c) 2022 Vissarion Fisikopoulos @@ -11,8 +11,8 @@ import unittest import os import sys -from dingo import MetabolicNetwork, PolytopeSampler -from dingo.pyoptinterface_based_impl import set_default_solver +from dingo_walk import MetabolicNetwork, PolytopeSampler +from dingo_walk.pyoptinterface_based_impl import set_default_solver def sampling(model, testing_class): sampler = PolytopeSampler(model) diff --git a/tests/scaling.py b/tests/scaling.py index 525a9498..ad4455cc 100644 --- a/tests/scaling.py +++ b/tests/scaling.py @@ -1,5 +1,5 @@ -# dingo : a python library for metabolic networks sampling and analysis -# dingo is part of GeomScale project +# dingo_walk : a python library for metabolic networks sampling and analysis +# dingo_walk is part of GeomScale project # Copyright (c) 2021 Apostolos Chalkis # Copyright (c) 2021 Vissarion Fisikopoulos @@ -11,13 +11,13 @@ import sys import scipy import numpy as np -from dingo import MetabolicNetwork -from dingo.scaling import gmscale -from dingo.pyoptinterface_based_impl import set_default_solver +from dingo_walk import MetabolicNetwork +from dingo_walk.scaling import gmscale +from dingo_walk.pyoptinterface_based_impl import set_default_solver class TestScaling(unittest.TestCase): - + def test_scale_json(self): input_file_json = os.getcwd() + "/ext_data/e_coli_core.json" diff --git a/tutorials/CONTRIBUTING.md b/tutorials/CONTRIBUTING.md index d28a7946..6d9ea573 100644 --- a/tutorials/CONTRIBUTING.md +++ b/tutorials/CONTRIBUTING.md @@ -1,19 +1,19 @@ -# Contributing to `dingo` +# Contributing to `dingo_walk` :+1::tada: First off, thanks for taking the time to contribute! :tada::+1: -The following is a set of guidelines for contributing to dingo, -which are hosted in the [GeomScale Organization](https://github.com/GeomScale) on GitHub. -These are mostly guidelines, not rules. +The following is a set of guidelines for contributing to dingo_walk, +which are hosted in the [GeomScale Organization](https://github.com/GeomScale) on GitHub. +These are mostly guidelines, not rules. Use your best judgment, and feel free to propose changes to this document in a pull request. ## Table of Contents * [Prerequisites (how to start)](#prerequisites-how-to-start) - * [Testing the development branch of `dingo` (get the tools ready)](#testing-the-development-branch-of-dingo-get-the-tools-ready) - * [Fork `dingo` repository (this is your repo now!)](#fork-dingo-repository-this-is-your-repo-now) + * [Testing the development branch of `dingo_walk` (get the tools ready)](#testing-the-development-branch-of-dingo_walk-get-the-tools-ready) + * [Fork `dingo_walk` repository (this is your repo now!)](#fork-dingo_walk-repository-this-is-your-repo-now) + [Verify if your fork works (optional)](#verify-if-your-fork-works-optional) - * [Working with `dingo` (get ready to contribute)](#working-with-dingo-get-ready-to-contribute) + * [Working with `dingo_walk` (get ready to contribute)](#working-with-dingo_walk-get-ready-to-contribute) + [GitFlow workflow](#gitflow-workflow) + [Create new branch for your work](#create-new-branch-for-your-work) + [Verify your new branch (optional)](#verify-your-new-branch-optional) @@ -22,32 +22,32 @@ Use your best judgment, and feel free to propose changes to this document in a p + [Push](#push) * [Pull request (the joy of sharing)](#pull-request-the-joy-of-sharing) * [Review (ok this is not an exam)](#review-ok-this-is-not-an-exam) - + ## Prerequisites (how to start) * git (see [Getting Started with Git](https://help.github.com/en/github/using-git/getting-started-with-git-and-github)) * a compiler to run tests - gcc, clang, etc. * configured GitHub account - + Other helpful links: * http://git-scm.com/documentation * https://help.github.com/articles/set-up-git * https://opensource.com/article/18/1/step-step-guide-git -## Testing the development branch of dingo (get the tools ready) +## Testing the development branch of dingo_walk (get the tools ready) -Clone the repository, +Clone the repository, - git clone git@github.com:geomscale/dingo.git dingo - cd dingo + git clone git@github.com:geomscale/dingo_walk.git dingo_walk + cd dingo_walk git branch -vv the last command should tell you that you are in `develop` branch. -Now you need to get the `volesti` sumbodule that `dingo` makes use of. +Now you need to get the `volesti` sumbodule that `dingo_walk` makes use of. -To do so, you need to run +To do so, you need to run git submodule update --init @@ -57,11 +57,11 @@ Now get the `boost` library: tar xjf boost_1_76_0.tar.bz2 rm boost_1_76_0.tar.bz2 -And now you are ready to compile `dingo` +And now you are ready to compile `dingo_walk` - python setup.py install --user + python setup.py install --user -Once the last command is completed, you may check if everythings is fine by running some `dingo` tests +Once the last command is completed, you may check if everythings is fine by running some `dingo_walk` tests python tests/unit_tests.py @@ -70,16 +70,16 @@ If everything is ok, you will see something like this: [![asciicast](https://asciinema.org/a/3IwNykajlDGEndX2rUtc0D2Ag.svg)](https://asciinema.org/a/3IwNykajlDGEndX2rUtc0D2Ag) -## Fork `dingo` repository (this is your repo now!) +## Fork `dingo_walk` repository (this is your repo now!) -You can't work directly in the original `dingo` repository, therefore you should create your fork of this library. -This way you can modify the code and when the job is done send a pull request to merge your changes with the original +You can't work directly in the original `dingo_walk` repository, therefore you should create your fork of this library. +This way you can modify the code and when the job is done send a pull request to merge your changes with the original repository. -![fork](https://raw.githubusercontent.com/hariszaf/dingo/dingo_tutorial/tutorials/figs/fork.png) +![fork](https://raw.githubusercontent.com/hariszaf/dingo_walk/dingo_walk_tutorial/tutorials/figs/fork.png) 1. login on `GitHub` -2. go to [dingo repository](https://github.com/GeomScale/dingo) +2. go to [dingo_walk repository](https://github.com/GeomScale/dingo_walk) 3. click the 'Fork' button 4. choose your profile 5. wait @@ -89,42 +89,42 @@ More info: [Forking Projects](https://guides.github.com/activities/forking/) ### Verify if your fork works (optional) -Go out of `dingo` directory +Go out of `dingo_walk` directory cd .. clone your repository and checkout develop branch - git clone git@github.com:hariszaf/dingo.git dingo_fork - cd dingo_fork + git clone git@github.com:hariszaf/dingo_walk.git dingo_walk_fork + cd dingo_walk_fork git checkout develop git branch -vv git pull -In this case `hariszaf` was the user's name who had forked `dingo`. Make sure you replace this with your own. +In this case `hariszaf` was the user's name who had forked `dingo_walk`. Make sure you replace this with your own. To see the so far commits, simply run: git log gitk -For now you should see exactly the same commits as in `dingo` repository. +For now you should see exactly the same commits as in `dingo_walk` repository. -## Working with `dingo` (get ready to contribute) +## Working with `dingo_walk` (get ready to contribute) ### GitFlow workflow -`dingo` is using the [GitFlow](http://nvie.com/posts/a-successful-git-branching-model/) workflow. -It's because it is very well suited to collaboration and scaling the development team. +`dingo_walk` is using the [GitFlow](http://nvie.com/posts/a-successful-git-branching-model/) workflow. +It's because it is very well suited to collaboration and scaling the development team. Each repository using this model should contain two main branches: * master - release-ready version of the library * develop - development version of the library - -and could contain various supporting branches for new features and hotfixes. -As a contributor you'll most likely be adding new features or fixing bugs in the development version of the library. -This means that for each contribution you should create a new branch originating from the develop branch, +and could contain various supporting branches for new features and hotfixes. + +As a contributor you'll most likely be adding new features or fixing bugs in the development version of the library. +This means that for each contribution you should create a new branch originating from the develop branch, modify it and send a pull request in order to merge it, again with the develop branch. ### Create new branch for your work @@ -133,18 +133,18 @@ Make sure you're in develop branch running git branch -vv -you should see something like this: +you should see something like this: * develop a76b4be [origin/develop] Update issue templates -Now you should pick **a name for your new branch that doesn't already exist**. +Now you should pick **a name for your new branch that doesn't already exist**. The following returns a list of all the existing remote branches git branch -a Alternatively, you can check them on `GitHub`. -Assume you want to add some new functionality. +Assume you want to add some new functionality. Then you have to create a new branch e.g. `feature/my_cool_new_feature` Create new local branch @@ -156,7 +156,7 @@ push it to your fork git push -u my_fork feature/my_cool_new_feature -Note that the `-u` switch also sets up the tracking of the remote branch. +Note that the `-u` switch also sets up the tracking of the remote branch. Your new branch now is created! ### Verify your new branch (optional) @@ -165,9 +165,9 @@ Now if you check the branches present on your repository you'll see the `develop` and `master` branches as well as the one you just created ```bash - user@mypc:~/dingo$git branch -vv + user@mypc:~/dingo_walk$git branch -vv develop f82fcce [origin/develop] Revert "Revert "Update issue templates"" - * dingo_tutorial 1806b75 [origin/dingo_tutorial] notebook moved under /tutorials + * dingo_walk_tutorial 1806b75 [origin/dingo_walk_tutorial] notebook moved under /tutorials pairs 17d6d0b [origin/pairs] ignore notebook checkpoints ``` @@ -176,18 +176,18 @@ Note that without the `-u` switch you wouldn't see the tracking information for Your newly created remote branch is also available on GitHub on your fork repository! -![branch_on_github](https://raw.githubusercontent.com/hariszaf/dingo/dingo_tutorial/tutorials/figs/branches_github.png) +![branch_on_github](https://raw.githubusercontent.com/hariszaf/dingo_walk/dingo_walk_tutorial/tutorials/figs/branches_github.png) -Notice, we are **not** on the `dingo` repository under the `GeomScale` organization, but on the user's personal account. +Notice, we are **not** on the `dingo_walk` repository under the `GeomScale` organization, but on the user's personal account. ## Modify the branch (implement, implement, implement) -Before contributiong to a library by adding a new feature, or a bugfix, or improving documentation, +Before contributiong to a library by adding a new feature, or a bugfix, or improving documentation, it is always wise to interact with the community of developers, for example by opening an issue. ### Tests -Tests are placed in the `test` directory and use the [doctest](https://github.com/onqtam/doctest) library. +Tests are placed in the `test` directory and use the [doctest](https://github.com/onqtam/doctest) library. It is recommended to add new test whenever you contribute a new functionality/feature. Also if your contribution is a bugfix then consider adding this case to the test-suite. @@ -210,22 +210,22 @@ Click "Compare and pull request" button or the "New pull request" button. Add title and description -![RP](https://raw.githubusercontent.com/hariszaf/dingo/dingo_tutorial/tutorials/figs/pr.png) +![RP](https://raw.githubusercontent.com/hariszaf/dingo_walk/dingo_walk_tutorial/tutorials/figs/pr.png) and click the "Create pull request" button. ## Review (ok this is not an exam) -After creating a pull request your code will be reviewed. You can propose one or more reviewers +After creating a pull request your code will be reviewed. You can propose one or more reviewers by clicking on the "Reviewers" button ![reviewer](https://user-images.githubusercontent.com/3660366/72349476-44ecc600-36e5-11ea-81cd-d0938d923529.png) -If there are no objections your changes will be merged. +If there are no objections your changes will be merged. Otherwise you'll see some comments under the pull request and/or under specific lines of your code. -Then you have to make the required changes, commit them and push to your branch. -Those changes will automatically be a part of the same pull request. This procedure will be repeated until the code +Then you have to make the required changes, commit them and push to your branch. +Those changes will automatically be a part of the same pull request. This procedure will be repeated until the code is ready for merging. -If you're curious how it looks like you may see one of the open or closed -[pull requests](https://github.com/GeomScale/dingo/pulls). \ No newline at end of file +If you're curious how it looks like you may see one of the open or closed +[pull requests](https://github.com/GeomScale/dingo_walk/pulls). diff --git a/tutorials/README.md b/tutorials/README.md index bf282714..c4917608 100644 --- a/tutorials/README.md +++ b/tutorials/README.md @@ -1,4 +1,4 @@ -# `dingo` tutorials +# `dingo_walk` tutorials -In this directory, you will find material about how to use `dingo` but also on how you could contribute to this open source project. +In this directory, you will find material about how to use `dingo_walk` but also on how you could contribute to this open source project. diff --git a/tutorials/dingo_tutorial.ipynb b/tutorials/dingo_tutorial.ipynb index c95aa8f8..4e912345 100644 --- a/tutorials/dingo_tutorial.ipynb +++ b/tutorials/dingo_tutorial.ipynb @@ -6,7 +6,7 @@ "id": "XsGorJWn4Q6U" }, "source": [ - "# `dingo` : A python library for metabolic networks sampling and analysis" + "# `dingo_walk` : A python library for metabolic networks sampling and analysis" ] }, { @@ -25,7 +25,7 @@ "id": "-IBI5DoLMDCn" }, "source": [ - "The aim of this notebook is to highlight the importance of metabolic networks analysis and the insight it may provide, as well as to demonstrate how to use the `dingo` Python library for the analysis of metabolic networks. \n" + "The aim of this notebook is to highlight the importance of metabolic networks analysis and the insight it may provide, as well as to demonstrate how to use the `dingo_walk` Python library for the analysis of metabolic networks. \n" ] }, { @@ -321,7 +321,7 @@ "source": [ "However, sampling can be a rather challenging task both from the computational and the geometical point of view. \n", "\n", - "💪 To this end, `dingo` makes use of the [Multiphase Monte Carlo Sampling algorithm (MMCS)](https://drops.dagstuhl.de/opus/volltexte/2021/13798/pdf/lipics-vol189-socg2021-complete.pdf) developed by the [GeomScale Org.](https://geomscale.github.io/) too. \n", + "💪 To this end, `dingo_walk` makes use of the [Multiphase Monte Carlo Sampling algorithm (MMCS)](https://drops.dagstuhl.de/opus/volltexte/2021/13798/pdf/lipics-vol189-socg2021-complete.pdf) developed by the [GeomScale Org.](https://geomscale.github.io/) too. \n", "\n", "💪 Our method splits sampling in phases and makes use of **rounding** steps; this way it is both efficient and returns high quality samples. \n", "\n", @@ -379,7 +379,7 @@ "id": "PqWGwdr9Cs-H" }, "source": [ - "## Get and install *dingo*" + "## Get and install *dingo_walk*" ] }, { @@ -400,10 +400,10 @@ "source": [ "Mandatory:\n", "* a Unix-like environment, e.g Linux, MacOS etc.\n", - "* a computer machine with at least 4GB of RAM; `dingo` requires about 4GB to compile \n", + "* a computer machine with at least 4GB of RAM; `dingo_walk` requires about 4GB to compile \n", "\n", "Optional:\n", - "* for better performance, you may use `dingo` with the [`gurobi`](https://www.gurobi.com) solver. To do so, a license is required (free for academic purposes)." + "* for better performance, you may use `dingo_walk` with the [`gurobi`](https://www.gurobi.com) solver. To do so, a license is required (free for academic purposes)." ] }, { @@ -473,7 +473,7 @@ "id": "yYqOnx7_4ZRN" }, "source": [ - "Get the `dingo` repo." + "Get the `dingo_walk` repo." ] }, { @@ -488,7 +488,7 @@ }, "outputs": [], "source": [ - "!git clone https://github.com/GeomScale/dingo.git" + "!git clone https://github.com/GeomScale/dingo_walk.git" ] }, { @@ -497,7 +497,7 @@ "id": "qePKvNyVFrHG" }, "source": [ - "To load the submodules that `dingo` uses, run:" + "To load the submodules that `dingo_walk` uses, run:" ] }, { @@ -512,7 +512,7 @@ }, "outputs": [], "source": [ - "%cd dingo/\n", + "%cd dingo_walk/\n", "!git submodule update --init" ] }, @@ -544,7 +544,7 @@ "id": "RK_xgnsYAfOr" }, "source": [ - "Install `dingo`" + "Install `dingo_walk`" ] }, { @@ -553,7 +553,7 @@ "id": "Gu9E7fidgjnW" }, "source": [ - "The following command will install `dingo` and it will take a while to compile. \n", + "The following command will install `dingo_walk` and it will take a while to compile. \n", "\n", "Remember that about 4GB of RAM are required to do so. " ] @@ -571,7 +571,7 @@ "outputs": [], "source": [ "!python setup.py install --user &> /dev/null\n", - "print('dingo is ready to go!')" + "print('dingo_walk is ready to go!')" ] }, { @@ -589,9 +589,9 @@ "id": "PLCBCsYiGEXz" }, "source": [ - "We have made some tests for you so you can make sure `dingo` has been installed properly.\n", + "We have made some tests for you so you can make sure `dingo_walk` has been installed properly.\n", "\n", - "You may have a look at these [test files](https://github.com/GeomScale/dingo/tree/develop/tests) so you can run `dingo` from your terminal." + "You may have a look at these [test files](https://github.com/GeomScale/dingo_walk/tree/develop/tests) so you can run `dingo_walk` from your terminal." ] }, { @@ -630,14 +630,14 @@ "id": "rLfOQgaQuULC" }, "source": [ - "The following command is to make Colab have access to the `dingo` library that was just compiled. \n", + "The following command is to make Colab have access to the `dingo_walk` library that was just compiled. \n", "There will probably be **no need for you to do this**. \n", - "In case Python does not find `dingo`, just check the \n", + "In case Python does not find `dingo_walk`, just check the \n", "semifinal line of the compilation step, in this case:\n", "\n", - "`Writing /root/.local/lib/python3.7/site-packages/dingo-0.1.0.egg-info`\n", + "`Writing /root/.local/lib/python3.7/site-packages/dingo_walk-0.1.0.egg-info`\n", "\n", - "This is the path where `dingo` was compiled. " + "This is the path where `dingo_walk` was compiled. " ] }, { @@ -667,7 +667,7 @@ "id": "2dtcobmYQOWp" }, "source": [ - "## Run `dingo`.." + "## Run `dingo_walk`.." ] }, { @@ -685,7 +685,7 @@ "id": "ljInPZvPMcSp" }, "source": [ - "Get the path to the `dingo` directory. " + "Get the path to the `dingo_walk` directory. " ] }, { @@ -710,7 +710,7 @@ "id": "AiFwL4lRugVC" }, "source": [ - "And import the `MetabolicNetwork` class of `dingo`! " + "And import the `MetabolicNetwork` class of `dingo_walk`! " ] }, { @@ -721,7 +721,7 @@ }, "outputs": [], "source": [ - "from dingo import MetabolicNetwork" + "from dingo_walk import MetabolicNetwork" ] }, { @@ -731,7 +731,7 @@ }, "source": [ "Now, you can load a metabolic model. \n", - "Currently, `dingo` may get either a `.json` or a '.mat` model format." + "Currently, `dingo_walk` may get either a `.json` or a '.mat` model format." ] }, { @@ -1004,7 +1004,7 @@ "id": "NmVjo47VP8xj" }, "source": [ - "You can also have a look at the `dingo` related parameters of the model you just built." + "You can also have a look at the `dingo_walk` related parameters of the model you just built." ] }, { @@ -1037,7 +1037,7 @@ "id": "uccGKr_hSJCM" }, "source": [ - "To perform FBA with `dingo`, you just need to call the according method ([`fba`](https://github.com/GeomScale/dingo/blob/a76b4be22f33feac86dff38746c7f2706afb2b67/dingo/MetabolicNetwork.py#L107)) of the `model` you built using the [`MetabolicNetwork`](https://github.com/GeomScale/dingo/blob/a76b4be22f33feac86dff38746c7f2706afb2b67/dingo/MetabolicNetwork.py#L21) class. \n", + "To perform FBA with `dingo_walk`, you just need to call the according method ([`fba`](https://github.com/GeomScale/dingo_walk/blob/a76b4be22f33feac86dff38746c7f2706afb2b67/dingo_walk/MetabolicNetwork.py#L107)) of the `model` you built using the [`MetabolicNetwork`](https://github.com/GeomScale/dingo_walk/blob/a76b4be22f33feac86dff38746c7f2706afb2b67/dingo_walk/MetabolicNetwork.py#L21) class. \n", "\n", "FBA is a lot easier both from the computational and the geometical point of view and it takes much less time. " ] @@ -1363,7 +1363,7 @@ "id": "gH3q_ImwT8H_" }, "source": [ - "Finally, one may sample the model's flux space using the [`PolytopeSampler`](https://github.com/GeomScale/dingo/blob/a76b4be22f33feac86dff38746c7f2706afb2b67/dingo/PolytopeSampler.py#L28) class of `dingo`. \n", + "Finally, one may sample the model's flux space using the [`PolytopeSampler`](https://github.com/GeomScale/dingo_walk/blob/a76b4be22f33feac86dff38746c7f2706afb2b67/dingo_walk/PolytopeSampler.py#L28) class of `dingo_walk`. \n", "\n", "To do so, you first build an instance of this class based on your `model`:" ] @@ -1376,7 +1376,7 @@ }, "outputs": [], "source": [ - "from dingo import PolytopeSampler\n", + "from dingo_walk import PolytopeSampler\n", "sampler = PolytopeSampler(model)" ] }, @@ -1386,7 +1386,7 @@ "id": "TqJZftR1kMgC" }, "source": [ - "Then, the [`generate_steady_states()`](https://github.com/GeomScale/dingo/blob/a76b4be22f33feac86dff38746c7f2706afb2b67/dingo/PolytopeSampler.py#L119) method can be used for flux sampling. \n", + "Then, the [`generate_steady_states()`](https://github.com/GeomScale/dingo_walk/blob/a76b4be22f33feac86dff38746c7f2706afb2b67/dingo_walk/PolytopeSampler.py#L119) method can be used for flux sampling. \n", "\n", "This method optionally gets as arguments the following: \n", "\n", @@ -1458,7 +1458,7 @@ "id": "MOG6YGueZzpO" }, "source": [ - "And each flux distribution has as many flux values as `dingo` required to reach the ESS asked. " + "And each flux distribution has as many flux values as `dingo_walk` required to reach the ESS asked. " ] }, { @@ -1508,7 +1508,7 @@ "id": "k6uheDpHfiHq" }, "source": [ - "Now that we know the index of the reaction of our interest, we can use the [`plot_histogram`](https://github.com/GeomScale/dingo/blob/a76b4be22f33feac86dff38746c7f2706afb2b67/dingo/utils.py#L177) function of `dingo` to plot its corresponding flux distribution. " + "Now that we know the index of the reaction of our interest, we can use the [`plot_histogram`](https://github.com/GeomScale/dingo_walk/blob/a76b4be22f33feac86dff38746c7f2706afb2b67/dingo_walk/utils.py#L177) function of `dingo_walk` to plot its corresponding flux distribution. " ] }, { @@ -1524,7 +1524,7 @@ }, "outputs": [], "source": [ - "from dingo import plot_histogram\n", + "from dingo_walk import plot_histogram\n", "\n", "reactions = model.reactions\n", "plot_histogram(\n", @@ -1556,7 +1556,7 @@ }, "outputs": [], "source": [ - "from dingo.illustrations import plot_copula\n", + "from dingo_walk.illustrations import plot_copula\n", "\n", "reaction_1 = [steady_states[23], reactions[23]]\n", "reaction_2 = [steady_states[21], reactions[21]]\n", @@ -1581,7 +1581,7 @@ "id": "EgImVdw8sFk_" }, "source": [ - "In line with the findings of Renz et al. (2020), flux sampling in the metabolic model built from the macrophage model and the VBOF using `dingo` indicates **guanylate kinase (GK1)** as a potential antiviral target. \n", + "In line with the findings of Renz et al. (2020), flux sampling in the metabolic model built from the macrophage model and the VBOF using `dingo_walk` indicates **guanylate kinase (GK1)** as a potential antiviral target. \n", "Flux sampling was perfored first with no objective function for the virus and then after maximizing the VBOF built by Renz et al. (2020). \n", "\n", "\n", @@ -1597,7 +1597,7 @@ "\n", "------\n", "\n", - "We hope you will find dingo useful and easy-to-use!\n", + "We hope you will find dingo_walk useful and easy-to-use!\n", "\n", "For anything which might be needed, don't hesitate to open an issue on the project's GitHub repo!\n", "\n", @@ -1647,7 +1647,7 @@ "[Geomscale](https://geomscale.github.io/) is a research and development \n", "project that delivers open source code for state-of-the-art algorithms at the intersection of data science, optimization, geometric, and statistical computing. \n", "\n", - "`dingo` is based on the [`volesti` package](https://github.com/GeomScale/volesti), an open source C++ library for volume approximation and sampling of convex bodies.\n", + "`dingo_walk` is based on the [`volesti` package](https://github.com/GeomScale/volesti), an open source C++ library for volume approximation and sampling of convex bodies.\n", "\n", "GeomScale is part of [NumFOCUS](https://numfocus.org/) and is a Google Summer of Code [(GSoC) organization](https://summerofcode.withgoogle.com/organizations/5553085268623360/). \n", "\n",