From c69f117c7149af305541ea61a4c6119e5d3049f1 Mon Sep 17 00:00:00 2001 From: taolin Date: Tue, 31 Jan 2023 21:40:12 +0800 Subject: [PATCH 01/92] feat: add transverse Ising model --- tnpy/model/__init__.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tnpy/model/__init__.py b/tnpy/model/__init__.py index ffba442f..8adba3d2 100644 --- a/tnpy/model/__init__.py +++ b/tnpy/model/__init__.py @@ -4,5 +4,14 @@ from tnpy.model.thirring import Thirring from tnpy.model.random_heisenberg import RandomHeisenberg from tnpy.model.dimer_xxz import DimerXXZ +from tnpy.model.transverse_ising import TransverseIsing -__all__ = ["Model1D", "TotalSz", "XXZ", "Thirring", "RandomHeisenberg", "DimerXXZ"] +__all__ = [ + "Model1D", + "TotalSz", + "XXZ", + "Thirring", + "RandomHeisenberg", + "DimerXXZ", + "TransverseIsing", +] From 87c3cd3a9fdf5c290588fd414559f825c1e4f763 Mon Sep 17 00:00:00 2001 From: taolin Date: Tue, 31 Jan 2023 21:43:45 +0800 Subject: [PATCH 02/92] refactor: use docker label --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 2805d76b..10f9fefb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ FROM python:3.10 -MAINTAINER "TaoLin" +LABEL maintainer="TaoLin tanlin2013@gmail.com" ARG WORKDIR=/home/tnpy ENV PYTHONPATH="${PYTHONPATH}:$WORKDIR" \ @@ -19,4 +19,4 @@ RUN curl -sSL https://install.python-poetry.org | python3 - && \ poetry config virtualenvs.create false --local && \ poetry install --no-dev -ENTRYPOINT /bin/bash \ No newline at end of file +ENTRYPOINT /bin/bash From f7a3910facaa1d7128c6c529fc2a0459b6578c7e Mon Sep 17 00:00:00 2001 From: taolin Date: Tue, 31 Jan 2023 21:44:05 +0800 Subject: [PATCH 03/92] refactor: use poetry new styling flags --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 10f9fefb..71cb98bf 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,6 +17,6 @@ RUN apt-get -y clean && \ # Install required python packages and tnpy RUN curl -sSL https://install.python-poetry.org | python3 - && \ poetry config virtualenvs.create false --local && \ - poetry install --no-dev + poetry install --without dev ENTRYPOINT /bin/bash From 71578cc400c9218e9ccfff3115d68278a7859608 Mon Sep 17 00:00:00 2001 From: taolin Date: Tue, 31 Jan 2023 21:45:58 +0800 Subject: [PATCH 04/92] docs: raw string for math, examples --- tnpy/exact_diagonalization.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tnpy/exact_diagonalization.py b/tnpy/exact_diagonalization.py index 91fce713..71b82a7b 100644 --- a/tnpy/exact_diagonalization.py +++ b/tnpy/exact_diagonalization.py @@ -9,7 +9,7 @@ class ExactDiagonalization(FullHamiltonian): def __init__(self, mpo: MatrixProductOperator, proj: np.ndarray = None): - """ + r""" Perform the numerically exact diagonalization on the matrix, which is constructed through the given Matrix Product Operator (MPO). Calculations are taken in prompt on the initialization of this class. From 442eda1491aab87e2de09e10f05a6257fa6b4f09 Mon Sep 17 00:00:00 2001 From: taolin Date: Tue, 31 Jan 2023 21:46:45 +0800 Subject: [PATCH 05/92] fix: arg rename according to quimb --- tnpy/matrix_product_state.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tnpy/matrix_product_state.py b/tnpy/matrix_product_state.py index 8ff38c12..326deb09 100644 --- a/tnpy/matrix_product_state.py +++ b/tnpy/matrix_product_state.py @@ -188,7 +188,7 @@ def random( Returns: """ - rand_mps = qtn.MPS_rand_state(n=n, bond_dim=bond_dim, phys_dim=phys_dim) + rand_mps = qtn.MPS_rand_state(L=n, bond_dim=bond_dim, phys_dim=phys_dim) rand_mps.compress() return cls([tensor.data for tensor in rand_mps], **kwargs) From d66320e77dc87fb441581455a06ba0ab832d7c5d Mon Sep 17 00:00:00 2001 From: taolin Date: Tue, 31 Jan 2023 21:47:36 +0800 Subject: [PATCH 06/92] build: use group and update dependencies --- pyproject.toml | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index b7e02e70..10ef881b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,14 +12,14 @@ keywords = ["tensornetwork", "quantum-mechanics", "quantum-algorithms"] python = ">=3.9, <3.11" toml = "^0.10.2" tqdm = "^4.63.0" -numpy = ">=1.18, <1.23" +numpy = ">=1.18, <1.24" scipy = ">=1.1, <2.0" primme = "3.2.1" h5py = ">=3.6, <4.0" -graphviz = "0.20" +graphviz = "0.20.1" tensornetwork = "0.4.6" autoray = ">=0.2, <0.4" -quimb = "1.3.0" +quimb = "1.4.0" mkl-devel = { version = "2022.0.3", optional = true } matplotlib = { version ="^3.5.2", optional = true } networkx = { version ="^2.8.4", optional = true } @@ -28,19 +28,26 @@ networkx = { version ="^2.8.4", optional = true } mkl = ["mkl-devel"] # (https://github.com/tanlin2013/tnpy/issues/5) drawing = ["matplotlib", "networkx"] -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] pytest = "^7.1.1" pytest-cov = "^3.0.0" pytest-mock = "^3.6.1" pylint = "^2.13.7" flake8 = "^4.0.1" mypy = "^0.942" +jupyter = "^1.0.0" +pre-commit = "^2.19.0" +cruft = ">=2.2" + +[tool.poetry.group.docs] +optional = true + +[tool.poetry.group.docs.dependencies] sphinx = "^4.5.0" sphinx-book-theme = "^0.3.2" m2r2 = "^0.3.2" -pandoc = "^2.1" +#pandoc = "2.1" nbsphinx = "^0.8.8" -pre-commit = "^2.19.0" [build-system] requires = ["poetry-core>=1.0.0"] From 60f54003d669ea025acc270e7bffa4ba188382e7 Mon Sep 17 00:00:00 2001 From: taolin Date: Tue, 31 Jan 2023 21:48:31 +0800 Subject: [PATCH 07/92] test: change fixture params --- tests/test_finite_dmrg.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_finite_dmrg.py b/tests/test_finite_dmrg.py index 67440102..23e89257 100644 --- a/tests/test_finite_dmrg.py +++ b/tests/test_finite_dmrg.py @@ -24,13 +24,13 @@ def test_run(self, ed, fdmrg): class TestShiftInvertDMRG: - @pytest.fixture(scope="class", params=[0.1, 0.2]) + @pytest.fixture(scope="class", params=[-0.1, 0.1, 0.2]) def offset(self, request) -> float: return request.param @pytest.fixture(scope="class") def model(self): - return RandomHeisenberg(n=8, h=0.5, seed=2021) + return RandomHeisenberg(n=10, h=10.5, seed=2022) @pytest.fixture(scope="class") def ed(self, model): From 9a9c0a69af9a8ddce80f9680cad4b2088a749845 Mon Sep 17 00:00:00 2001 From: taolin Date: Tue, 31 Jan 2023 21:49:16 +0800 Subject: [PATCH 08/92] test: add test for shift-invert tsdrg --- tests/test_tsdrg.py | 56 +++++++++++++++++++++++++++++++++++++++++++-- tnpy/tsdrg.py | 37 +++++++++++++----------------- 2 files changed, 70 insertions(+), 23 deletions(-) diff --git a/tests/test_tsdrg.py b/tests/test_tsdrg.py index 27bf2a1e..3dcdd1e0 100644 --- a/tests/test_tsdrg.py +++ b/tests/test_tsdrg.py @@ -8,6 +8,7 @@ TensorTree, TreeTensorNetworkSDRG as tSDRG, HighEnergyTreeTensorNetworkSDRG, + ShiftInvertTreeTensorNetworkSDRG, ) @@ -103,11 +104,11 @@ def test_plot(self, tree): class TestTreeTensorNetworkSDRG: @pytest.fixture(scope="class") def model(self): - return RandomHeisenberg(n=8, h=10.0, penalty=0, s_target=0) + return RandomHeisenberg(n=4, h=0.1, penalty=0, s_target=0) @pytest.fixture(scope="function") def tsdrg(self, model): - return tSDRG(model.mpo, chi=2**6) + return tSDRG(model.mpo, chi=2**2) @pytest.fixture(scope="class") def ed(self, model): @@ -145,6 +146,9 @@ def test_spectrum_projector(self, static_tsdrg): np.testing.assert_array_equal(evecs.reshape((2, 2, 4)), projector) def test_run(self, ed, tsdrg): + import sys + + np.set_printoptions(threshold=sys.maxsize, linewidth=sys.maxsize) tsdrg.run() np.testing.assert_allclose( ed.evals[: tsdrg.chi], np.sort(tsdrg.evals), atol=1e-8 @@ -302,3 +306,51 @@ def ed(self, model): def test_run(self, ed, tsdrg): tsdrg.run() np.testing.assert_allclose(ed.evals[-1], tsdrg.evals[-1], atol=1e-4) + + +class TestShiftInvertTreeTensorNetworkSDRG: + @pytest.fixture(scope="class", params=[0.0, 1.0, 2.0]) + def offset(self, request) -> float: + return request.param + + @pytest.fixture(scope="class") + def model(self): + return RandomHeisenberg(n=10, h=10.0, penalty=0, s_target=0, seed=2020) + + @pytest.fixture(scope="function") + def sitsdrg(self, model, offset): + shifted_model = RandomHeisenberg( + n=model.n, h=model.h, seed=model.seed, offset=offset + ) + return ShiftInvertTreeTensorNetworkSDRG( + shifted_model.mpo, chi=2**5, offset=offset + ) + + @pytest.fixture(scope="class") + def ed(self, model): + return ExactDiagonalization(model.mpo) + + @pytest.fixture(scope="class") + def nearest_idx(self, ed, offset): + return ed.evals[np.where(ed.evals < offset)].argmax() + + @pytest.fixture(scope="class") + def nearest_eval(self, ed, nearest_idx): + return ed.evals[nearest_idx] + + @pytest.fixture(scope="class") + def nearest_evec(self, ed, nearest_idx): + return ed.evecs[:, nearest_idx] + + def test_run(self, ed, sitsdrg, nearest_eval, model, offset): + import sys + + np.set_printoptions(threshold=sys.maxsize) + n_nearest_eval = ed.evals[np.argsort(np.abs(ed.evals - offset))] + print(np.sort(n_nearest_eval[:20])) + sitsdrg.run() + np.testing.assert_allclose(nearest_eval, sitsdrg.evals[-1], atol=1e-4) + + # def test_variance(self, model, sitsdrg): + # sitsdrg.run() + # print(sitsdrg.measurements.variance(model.mpo)[-1]) diff --git a/tnpy/tsdrg.py b/tnpy/tsdrg.py index 8b1b0886..c04bd2e5 100644 --- a/tnpy/tsdrg.py +++ b/tnpy/tsdrg.py @@ -590,6 +590,10 @@ def block_eigen_solver(self, locus: int) -> Tuple[np.ndarray, np.ndarray]: """ matrix = self.block_hamiltonian(locus) evals, evecs = np.linalg.eigh(matrix) + print(locus) + print(matrix) + print(evals) + print(evecs) if matrix.shape[0] > self.chi: evals = evals[: self.chi] evecs = evecs[:, : self.chi] @@ -1087,31 +1091,22 @@ def truncation_gap(self, evals: np.ndarray) -> float: class ShiftInvertTreeTensorNetworkSDRG(TreeTensorNetworkSDRG): - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) + def __init__(self, mpo: MatrixProductOperator, chi: int, offset: float): + self._offset = offset + super().__init__(mpo, chi=chi) + + @property + def offset(self) -> float: + return self._offset def block_eigen_solver(self, locus: int) -> Tuple[np.ndarray, np.ndarray]: matrix = self.block_hamiltonian(locus) evals, evecs = spl.eigh(matrix, b=matrix @ matrix) if matrix.shape[0] > self.chi: - logger.info( - f"Truncating evecs with shape {evecs.shape} to " - f"({evecs.shape[0]}, {self.chi})." - ) - d = self.chi // 2 - evals = np.hstack((evals[:d], evals[-d:])) - evecs = np.hstack((evecs[:, :d], evecs[:, -d:])) - idx = np.argsort(np.reciprocal(evals)) - evals = np.reciprocal(evals)[idx] + evals = evals[: self.chi] + evecs = evecs[:, : self.chi] + evals = np.reciprocal(evals) + self.offset + idx = np.argsort(evals) + evals = evals[idx] evecs = matrix @ evecs[:, idx] - # res = np.array([ - # np.linalg.norm(matrix @ evecs[:, i] - evals[i] * evecs[:, i]) - # for i in range(len(evals)) - # ]) - # logger.info(f"evals {evals}") - # rho = np.array( - # [evecs.T[i, :] @ matrix @ evecs[:, i] for i in range(len(evals))] - # ) - # logger.info(f"rho {rho}") - # logger.info(f"residual {res}") return evals, evecs From 14d53d46f32e01744a7a168ee627c25d62c5cc20 Mon Sep 17 00:00:00 2001 From: taolin Date: Tue, 31 Jan 2023 21:50:14 +0800 Subject: [PATCH 09/92] docs: simple krylov for time evolution --- docs/source/notebooks/krylov.ipynb | 281 +++++++++++++++++++++++++++++ 1 file changed, 281 insertions(+) create mode 100644 docs/source/notebooks/krylov.ipynb diff --git a/docs/source/notebooks/krylov.ipynb b/docs/source/notebooks/krylov.ipynb new file mode 100644 index 00000000..5487a753 --- /dev/null +++ b/docs/source/notebooks/krylov.ipynb @@ -0,0 +1,281 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 116, + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "data": { + "text/plain": "" + }, + "execution_count": 116, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "text/plain": "
", + "image/png": "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\n" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "mat_size = 20\n", + "# elems drawn from normal dist\n", + "rand_mat = np.random.randn(mat_size, mat_size)\n", + "# symmetrize the matrix\n", + "ham = (rand_mat + rand_mat.T) / np.sqrt(2)\n", + "plt.matshow(ham)\n", + "plt.colorbar()" + ] + }, + { + "cell_type": "code", + "execution_count": 105, + "outputs": [], + "source": [ + "class Krylov:\n", + " def __init__(self, subspace_size: int, ham: np.ndarray, psi: np.ndarray):\n", + " self._subspace_size = subspace_size\n", + " self._ham = ham\n", + " self._psi = psi\n", + "\n", + " @property\n", + " def subspace_size(self) -> int:\n", + " return self._subspace_size\n", + "\n", + " @property\n", + " def ham(self) -> np.ndarray:\n", + " return self._ham\n", + "\n", + " @property\n", + " def psi(self) -> np.ndarray:\n", + " return self._psi\n", + "\n", + " def gen_krylov_subspace(self) -> np.ndarray:\n", + " return np.array(\n", + " [\n", + " np.linalg.matrix_power(self.ham, n) @ self.psi\n", + " for n in range(self.subspace_size)\n", + " ]\n", + " ).T\n", + "\n", + " def subspace_projector(self) -> np.ndarray:\n", + " q, _ = np.linalg.qr(self.gen_krylov_subspace())\n", + " return q" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": 117, + "outputs": [], + "source": [ + "psi = np.random.randn(mat_size)\n", + "psi /= np.linalg.norm(psi)" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": 118, + "outputs": [ + { + "data": { + "text/plain": "" + }, + "execution_count": 118, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "text/plain": "
", + "image/png": "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ouzs7JBdB3MSABACN998s44cOaLCwkK53W6NGjVKpaWl/snsgwcPKiYm8Hv6nj179M477+iNN95oU19sbKw++OADrVu3TnV1dUpLS9OkSZO0fPnykO6VcBhGlN7/FoDteDweJSUl6ePdfdWrl7UDISdO+HTF0FrV19cHTFx3dQw3AQBMMdwEwHa8xleH1W1GIzIJAIApMgkAthPsktTOajMakUkAAEwRJAAAphhuAmA7PjnklcPyNqMRmQQAwBSZBADb8RlfHVa3GY3IJAAApggSAABTtg8SxcXFGjBggBISEpSRkaEdO3aEu0tBKSoq0re+9S316tVLffv21bRp07Rnz55wd+u8PPTQQ3I4HFqwYEG4uxK0L774Qrfeequ+8Y1vKDExUcOHD9f7778f7m4Fxev1avHixRo4cKASExM1ePBgLV++XF3pNm3ev05cW31EI1sHieeff14FBQVasmSJdu3apZEjRyo7O1u1tbXh7lq7bdu2TfPnz9d7772nLVu2qLW1VZMmTVJjY2O4u9YhO3fu1K9+9SuNGDEi3F0J2l/+8hddc8016t69u/7nf/5Hf/rTn/TLX/5SF154Ybi7FpQVK1bo8ccf12OPPabdu3drxYoVWrlypR599NFwdw02ZOu7wGZkZOhb3/qWHnvsMUlfPdQjPT1dP/nJT7Rw4cIw965jjhw5or59+2rbtm36zne+E+7uBKWhoUFXXXWV/uM//kP333+/Ro0apdWrV4e7W+22cOFC/f73v9f//u//hrsr5+Uf/uEflJqaqqeeesp/bvr06UpMTNSzzz4bxp6dv9N3gX334366wOK7wDac8Gn8FYe5C6xdtLS0qLKyUllZWf5zMTExysrKUnl5eRh7dn7q6+slSb179w5zT4I3f/58TZkyJeD/iZ28/PLLGjt2rG688Ub17dtXo0eP1pNPPhnubgVt/PjxKisr05///GdJ0h//+Ee98847mjx5cph7Bjuy7RLYo0ePyuv1+h/gcVpqaqo++eSTMPXq/Ph8Pi1YsEDXXHONrrzyynB3JyibNm3Srl27tHPnznB3pcP+7//+T48//rgKCgr085//XDt37tQdd9yhuLg4zZ49O9zda7eFCxfK4/Ho8ssvV2xsrLxerx544AHNnDkz3F2DDdk2SHRF8+fP10cffaR33nkn3F0JSnV1tX76059qy5Yt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ycn+ACFJWVlZiomJUUVFxVk/u2HDBvXp00dXXnmlFi1apJMnTwbUO3z4cKWmpvrPZWdny+Px6OOPP253/8gkANhOODfTpaenB5xfsmSJli5d2uF63W63+vbtG3CuW7du6t27t9xut+nn/umf/kn9+/dXWlqaPvjgA917773as2ePXnzxRX+9fx8gJPlfn63eryNIAEAQqqur5XQ6/a/j4+PPWG7hwoVasWLFWevavXt3h/sxb948/7+HDx+ufv36aeLEifr00081ePDgDtf7dQQJAAiC0+kMCBJm7rzzTs2ZM+esZQYNGiSXy6Xa2tqA86dOndLx48dN5xvOJCMjQ5K0b98+DR48WC6XSzt27AgoU1NTI0lB1UuQAGA/Npi4TklJUUpKyjnLZWZmqq6uTpWVlRozZowk6a233pLP5/P/4W+PqqoqSVK/fv389T7wwAOqra31D2dt2bJFTqdTw4YNa3e9QU9cb9++XTfccIPS0tLkcDi0efPmgPfnzJnTZu1uTk5OsM0AQFQYOnSocnJylJeXpx07duj3v/+98vPzNWPGDP/Kpi+++EKXX365PzP49NNPtXz5clVWVurAgQN6+eWXNWvWLH3nO9/RiBEjJEmTJk3SsGHD9M///M/64x//qNdff1333Xef5s+fbzpEdiZBB4nGxkaNHDlSxcXFpmVycnJ0+PBh//Hcc88F2wwAnFVX2UgnfbVK6fLLL9fEiRN1/fXX69prr9UTTzzhf7+1tVV79uzxr16Ki4vTm2++qUmTJunyyy/XnXfeqenTp+uVV17xfyY2Nla/+93vFBsbq8zMTN16662aNWtWwL6K9gh6uGny5MmaPHnyWcvEx8cHNeYFANGsd+/eZ904N2DAABl/94zt9PR0bdu27Zz19u/fX6+99tp59S0k+yS2bt2qvn376rLLLtNtt92mY8eOmZZtbm5us+4YABAZOj1I5OTkaP369SorK9OKFSu0bds2TZ48WV6v94zli4qKlJSU5D++vgYZANowjPAcUajTVzfNmDHD/+/hw4drxIgRGjx4sLZu3aqJEye2Kb9o0SIVFBT4X3s8HgIFAESIkN+WY9CgQerTp4/27dt3xvfj4+P9647bu/4YQHTraneBjWQhDxKff/65jh075l+7CwCwj6CHmxoaGgKygv3796uqqkq9e/dW79699Ytf/ELTp0+X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\n" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "krylov = Krylov(subspace_size=10, ham=ham, psi=np.random.randn(mat_size))\n", + "span = krylov.gen_krylov_subspace()\n", + "plt.matshow(span)\n", + "plt.colorbar()" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": 119, + "outputs": [ + { + "data": { + "text/plain": "" + }, + "execution_count": 119, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "text/plain": "
", + "image/png": "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\n" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "q = krylov.subspace_projector()\n", + "plt.matshow(q)\n", + "plt.colorbar()" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": 120, + "outputs": [ + { + "data": { + "text/plain": "" + }, + "execution_count": 120, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "text/plain": "
", + "image/png": "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\n" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.matshow(q.T @ ham @ q)\n", + "plt.colorbar()" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": 113, + "outputs": [ + { + "data": { + "text/plain": "" + }, + "execution_count": 113, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "text/plain": "
", + "image/png": "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\n" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from tnpy.model.transverse_ising import TransverseIsing\n", + "from tnpy.operators import FullHamiltonian\n", + "\n", + "model = TransverseIsing(n=5, j=1, h=0.1)\n", + "ham = FullHamiltonian(model.mpo).matrix\n", + "\n", + "plt.matshow(ham)\n", + "plt.colorbar()" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": 115, + "outputs": [ + { + "data": { + "text/plain": "" + }, + "execution_count": 115, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "text/plain": "
", + "image/png": "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\n" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "psi = np.random.randn(len(ham))\n", + "psi /= np.linalg.norm(psi)\n", + "\n", + "krylov = Krylov(subspace_size=10, ham=ham, psi=psi)\n", + "q = krylov.subspace_projector()\n", + "plt.matshow(q.T @ ham @ q)\n", + "plt.colorbar()" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [], + "metadata": { + "collapsed": false + } + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} From 93d29d614472235560eb2205faf9925734b65143 Mon Sep 17 00:00:00 2001 From: taolin Date: Tue, 31 Jan 2023 21:50:44 +0800 Subject: [PATCH 10/92] build: evolve cruft template --- .cruft.json | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 .cruft.json diff --git a/.cruft.json b/.cruft.json new file mode 100644 index 00000000..63edccdc --- /dev/null +++ b/.cruft.json @@ -0,0 +1,17 @@ +{ + "template": "https://github.com/tanlin2013/cookiecutter-python/", + "commit": "4823cc3ebc96109726f46955bcf30035617a8679", + "checkout": null, + "context": { + "cookiecutter": { + "full_name": "Tan Tao-Lin", + "email": "tanlin2013@gmail.com", + "github_username": "tanlin2013", + "project_name": "tnpy", + "description": "Tensor Network algorithms implemented in python.", + "version": "0.1.1a3", + "_template": "https://github.com/tanlin2013/cookiecutter-python/" + } + }, + "directory": null +} From 19d4cd1a1b657cd0ea6e9dcbb8686ed658cc5a8f Mon Sep 17 00:00:00 2001 From: taolin Date: Tue, 31 Jan 2023 22:05:33 +0800 Subject: [PATCH 11/92] build: update hooks from template --- .pre-commit-config.yaml | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index be8ffb44..bdc980da 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,18 +1,38 @@ repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v3.2.0 + rev: v4.4.0 hooks: - id: check-yaml - id: end-of-file-fixer - id: trailing-whitespace - id: check-added-large-files + args: ['--maxkb=50000'] + +- repo: https://github.com/pycqa/isort + rev: 5.12.0 + hooks: + - id: isort + - repo: https://github.com/psf/black - rev: 22.3.0 + rev: 22.12.0 hooks: - id: black - language_version: python3.9 + language_version: python3.11 + - repo: https://github.com/PyCQA/flake8 - rev: 4.0.1 + rev: 6.0.0 hooks: - id: flake8 - args: ['--max-line-length=88', '--ignore=E203,W503'] + +- repo: https://github.com/python-poetry/poetry + rev: 1.3.2 + hooks: + - id: poetry-check + - id: poetry-lock + +- repo: https://github.com/commitizen-tools/commitizen + rev: v2.40.0 + hooks: + - id: commitizen + - id: commitizen-branch + stages: [push] From 031588910c4f329df00fa780e32130686d6c4ad1 Mon Sep 17 00:00:00 2001 From: taolin Date: Tue, 31 Jan 2023 22:09:39 +0800 Subject: [PATCH 12/92] ci: update docker build pipeline from template --- .github/workflows/build.yml | 43 ++++++++++++++++++++++--------------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a797907a..327996a6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,39 +1,48 @@ -name: docker-build +name: Docker build on: push: branches: - 'main' + tags: + - 'v*' jobs: - docker: + build: runs-on: ubuntu-latest steps: - - name: Get current date - id: date - run: echo "::set-output name=date::$(date +'%Y-%m-%d.%H.%M')" - - - name: Checkout - uses: actions/checkout@v3 - - name: Set up QEMU - uses: docker/setup-qemu-action@v1 + uses: docker/setup-qemu-action@v2 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 + uses: docker/setup-buildx-action@v2 + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v4 + with: + images: ${{ github.repository }} + tags: | + type=schedule + type=ref,event=branch + type=ref,event=tag + type=ref,event=pr + type=sha,format=long + type=raw,value={{date 'YYYYMMDD-hhmmss' tz='Asia/Taipei'}} + type=raw,value=latest - name: Login to DockerHub - uses: docker/login-action@v1 + uses: docker/login-action@v2 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build and push id: docker_build - uses: docker/build-push-action@v2 + uses: docker/build-push-action@v3 with: - context: . + cache-from: type=gha + cache-to: type=gha,mode=max push: true - tags: | - ${{ secrets.DOCKERHUB_USERNAME }}/tnpy:${{ steps.date.outputs.date }} - ${{ secrets.DOCKERHUB_USERNAME }}/tnpy:latest + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} From 5994a59d37a11a974e58c969cb7b7143c0c62a31 Mon Sep 17 00:00:00 2001 From: taolin Date: Tue, 31 Jan 2023 23:21:32 +0800 Subject: [PATCH 13/92] chore: update ignore contents --- .dockerignore | 202 +++++++++++++++++++++++++++++++++++++------------- .gitignore | 146 +++++++++++++++++++++++++++++------- 2 files changed, 270 insertions(+), 78 deletions(-) diff --git a/.dockerignore b/.dockerignore index e71c9ead..f3defd06 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,12 +1,140 @@ +### Custom field +.github/ +docs/ +.coveragerc +.dockerignore +.gitignore +.pre-commit-config.yml +CHANGELOG.md +Dockerfile +LICENSE +README.md +setup.cfg + +### VisualStudioCode template +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +!.vscode/*.code-snippets + +# Local History for Visual Studio Code +.history/ + +# Built Visual Studio Code Extensions +*.vsix + ### JetBrains template # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 -.idea/ +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# AWS User-specific +.idea/**/aws.xml + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/artifacts +# .idea/compiler.xml +# .idea/jarRepositories.xml +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# SonarLint plugin +.idea/sonarlint/ + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + +### macOS template +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk ### Python template # Byte-compiled / optimized / DLL files -**/__pycache__/ +__pycache__/ *.py[cod] *$py.class @@ -101,7 +229,22 @@ ipython_config.py # install all needed dependencies. #Pipfile.lock -# PEP 582; used by e.g. github.com/David-OConnor/pyflow +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm __pypackages__/ # Celery stuff @@ -144,50 +287,9 @@ dmypy.json # Cython debug symbols cython_debug/ -### macOS template -# General -.DS_Store -.AppleDouble -.LSOverride - -# Icon must end with two \r -Icon - -# Thumbnails -._* - -# Files that might appear in the root of a volume -.DocumentRevisions-V100 -.fseventsd -.Spotlight-V100 -.TemporaryItems -.Trashes -.VolumeIcon.icns -.com.apple.timemachine.donotpresent - -# Directories potentially created on remote AFP share -.AppleDB -.AppleDesktop -Network Trash Folder -Temporary Items -.apdisk - -### Tnpy specific -# Github -.git/ -.github/ -.gitignore - -# Other stuff -docs/ -tests/ -LICENSE -makefile -.pre-commit-config.yml - -# Poetry -poetry.lock - -# Docker itself -Dockerfile -.dockerignore +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ diff --git a/.gitignore b/.gitignore index b2fbed75..48311c14 100644 --- a/.gitignore +++ b/.gitignore @@ -1,22 +1,104 @@ -### JetBrains template -# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider -# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 +### Custom field +# File extension used to store arrays in binary +*.npz +*.hdf5 -.idea/ +# File extenson used by graphviz +*.gv +*.gv.png -### JupyterNotebooks template -# gitignore template for Jupyter Notebooks -# website: http://jupyter.org/ +### VisualStudioCode template +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +!.vscode/*.code-snippets -.ipynb_checkpoints -*/.ipynb_checkpoints/* +# Local History for Visual Studio Code +.history/ -# IPython -profile_default/ -ipython_config.py +# Built Visual Studio Code Extensions +*.vsix -# Remove previous ipynb_checkpoints -# git rm -r .ipynb_checkpoints/ +### JetBrains template +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# AWS User-specific +.idea/**/aws.xml + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/artifacts +# .idea/compiler.xml +# .idea/jarRepositories.xml +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# SonarLint plugin +.idea/sonarlint/ + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser ### macOS template # General @@ -119,7 +201,6 @@ instance/ # Sphinx documentation docs/_build/ -_autosummary/ # PyBuilder .pybuilder/ @@ -144,7 +225,22 @@ ipython_config.py # install all needed dependencies. #Pipfile.lock -# PEP 582; used by e.g. github.com/David-OConnor/pyflow +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm __pypackages__/ # Celery stuff @@ -187,15 +283,9 @@ dmypy.json # Cython debug symbols cython_debug/ -### Tnpy specific - -# File extension used to store arrays in binary -*.npz -*.hdf5 - -# File extenson used by graphviz -*.gv -*.gv.png - -# Poetry -poetry.lock +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +.idea/ From 2cf86550c69995f0d8b4ebecc8ee88c18677e488 Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Feb 2023 00:56:36 +0800 Subject: [PATCH 14/92] chore: change to MIT license --- LICENSE | 222 ++++++-------------------------------------------------- 1 file changed, 21 insertions(+), 201 deletions(-) diff --git a/LICENSE b/LICENSE index 261eeb9e..94faacb5 100644 --- a/LICENSE +++ b/LICENSE @@ -1,201 +1,21 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +MIT License + +Copyright (c) 2023 Tan Tao-Lin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. From 5eb3f971e15fa88fa0dc8603d324baf37a10d4bd Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Feb 2023 01:01:58 +0800 Subject: [PATCH 15/92] docs: update badges --- README.md | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 553f28e0..99ea86a6 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,20 @@ # tnpy - -[![PyPI version](https://badge.fury.io/py/tnpy.svg)](https://badge.fury.io/py/tnpy) -![license](https://img.shields.io/github/license/tanlin2013/tnpy?style=plastic) - -![build](https://github.com/tanlin2013/tnpy/actions/workflows/build.yml/badge.svg) -![tests](https://github.com/tanlin2013/tnpy/actions/workflows/tests.yml/badge.svg) -![docs](https://github.com/tanlin2013/tnpy/actions/workflows/docs.yml/badge.svg) +_________________ + +[![PyPI version](https://badge.fury.io/py/tnpy.svg)](http://badge.fury.io/py/tnpy) +[![Docker build](https://github.com/tanlin2013/tnpy/actions/workflows/build.yml/badge.svg)](https://github.com/tanlin2013/tnpy/actions/workflows/build.yml) +[![Test Status](https://github.com/tanlin2013/tnpy/actions/workflows/test.yml/badge.svg)](https://github.com/tanlin2013/tnpy/actions/workflows/test.yml) +[![Lint Status](https://github.com/tanlin2013/tnpy/actions/workflows/lint.yml/badge.svg)](https://github.com/tanlin2013/tnpy/actions/workflows/lint.yml) +[![codecov](https://codecov.io/gh/tanlin2013/tnpy/branch/main/graph/badge.svg)](https://codecov.io/gh/tanlin2013/tnpy) +[![Join the chat at https://gitter.im/tanlin2013/tnpy](https://badges.gitter.im/tanlin2013/tnpy.svg)](https://gitter.im/tanlin2013/tnpy?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) +[![License](https://img.shields.io/github/license/mashape/apistatus.svg)](https://pypi.python.org/pypi/tnpy/) +[![Downloads](https://pepy.tech/badge/tnpy)](https://pepy.tech/project/tnpy) +[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) +[![Imports: isort](https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336)](https://timothycrosley.github.io/isort/) +_________________ [Documentation](https://tanlin2013.github.io/tnpy/) | +_________________ This project is a python implementation of Tensor Network, a numerical approach to quantum many-body systems. From 4cdd357f5225590dd2c1e5535b6f66be04de6fb3 Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Feb 2023 14:12:16 +0800 Subject: [PATCH 16/92] docs: add contribute guideline --- CHANGELOG.md | 20 +++++ docs/contributing/1.-contributing-guide.md | 48 ++++++++++++ docs/contributing/2.-coding-standard.md | 57 ++++++++++++++ docs/contributing/3.-code-of-conduct.md | 88 ++++++++++++++++++++++ docs/contributing/4.-acknowledgements.md | 21 ++++++ 5 files changed, 234 insertions(+) create mode 100644 CHANGELOG.md create mode 100644 docs/contributing/1.-contributing-guide.md create mode 100644 docs/contributing/2.-coding-standard.md create mode 100644 docs/contributing/3.-code-of-conduct.md create mode 100644 docs/contributing/4.-acknowledgements.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..5748f2ec --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,20 @@ +Install the latest +=================== + +To install the latest version of tnpy simply run: + +`pip3 install tnpy` + +OR + +`poetry add tnpy` + +OR + +`pipenv install tnpy` + + +Changelog +========= +## 1.0.0 - TBD +- Initial API stable release. diff --git a/docs/contributing/1.-contributing-guide.md b/docs/contributing/1.-contributing-guide.md new file mode 100644 index 00000000..def34412 --- /dev/null +++ b/docs/contributing/1.-contributing-guide.md @@ -0,0 +1,48 @@ +Contributing to tnpy +======== + +Looking for a useful open source project to contribute to? +Want your contributions to be warmly welcomed and acknowledged? +Welcome! You have found the right place. + +## Getting tnpy set up for local development +The first step when contributing to any project is getting it set up on your local machine. tnpy aims to make this as simple as possible. + +Account Requirements: + +- [A valid GitHub account](https://github.com/join) + +Base System Requirements: + +- Python3.6+ +- poetry +- bash or a bash compatible shell (should be auto-installed on Linux / Mac) + +Once you have verified that you system matches the base requirements you can start to get the project working by following these steps: + +1. [Fork the project on GitHub](https://github.com/tanlin2013/tnpy/fork). +2. Clone your fork to your local file system: + `git clone https://github.com/$GITHUB_ACCOUNT/tnpy.git` +3. `cd tnpy +4. `poetry install` + +## Making a contribution +Congrats! You're now ready to make a contribution! Use the following as a guide to help you reach a successful pull-request: + +1. Check the [issues page](https://github.com/tanlin2013/tnpy/issues) on GitHub to see if the task you want to complete is listed there. + - If it's listed there, write a comment letting others know you are working on it. + - If it's not listed in GitHub issues, go ahead and log a new issue. Then add a comment letting everyone know you have it under control. + - If you're not sure if it's something that is good for the main tnpy project and want immediate feedback, you can discuss it [here](https://gitter.im/tanlin2013/tnpy). +2. Create an issue branch for your local work `git checkout -b issue/$ISSUE-NUMBER`. +3. Do your magic here. +4. Ensure your code matches the [HOPE-8 Coding Standard](https://github.com/hugapi/HOPE/blob/master/all/HOPE-8--Style-Guide-for-Hug-Code.md#hope-8----style-guide-for-hug-code) used by the project. +5. Submit a pull request to the main project repository via GitHub. + +Thanks for the contribution! It will quickly get reviewed, and, once accepted, will result in your name being added to the acknowledgments list :). + +## Thank you! +I can not tell you how thankful I am for the hard work done by tnpy contributors like *you*. + +Thank you! + +~Timothy Crosley diff --git a/docs/contributing/2.-coding-standard.md b/docs/contributing/2.-coding-standard.md new file mode 100644 index 00000000..85445e87 --- /dev/null +++ b/docs/contributing/2.-coding-standard.md @@ -0,0 +1,57 @@ +# HOPE 8 -- Style Guide for Hug Code + +| | | +| ------------| ------------------------------------------- | +| HOPE: | 8 | +| Title: | Style Guide for Hug Code | +| Author(s): | Timothy Crosley | +| Status: | Active | +| Type: | Process | +| Created: | 19-May-2019 | +| Updated: | 17-August-2019 | + +## Introduction + +This document gives coding conventions for the Hug code comprising the Hug core as well as all official interfaces, extensions, and plugins for the framework. +Optionally, projects that use Hug are encouraged to follow this HOPE and link to it as a reference. + +## PEP 8 Foundation + +All guidelines in this document are in addition to those defined in Python's [PEP 8](https://www.python.org/dev/peps/pep-0008/) and [PEP 257](https://www.python.org/dev/peps/pep-0257/) guidelines. + +## Line Length + +Too short of lines discourage descriptive variable names where they otherwise make sense. +Too long of lines reduce overall readability and make it hard to compare 2 files side by side. +There is no perfect number: but for Hug, we've decided to cap the lines at 100 characters. + +## Descriptive Variable names + +Naming things is hard. Hug has a few strict guidelines on the usage of variable names, which hopefully will reduce some of the guesswork: +- No one character variable names. + - Except for x, y, and z as coordinates. +- It's not okay to override built-in functions. + - Except for `id`. Guido himself thought that shouldn't have been moved to the system module. It's too commonly used, and alternatives feel very artificial. +- Avoid Acronyms, Abbreviations, or any other short forms - unless they are almost universally understand. + +## Adding new modules + +New modules added to the a project that follows the HOPE-8 standard should all live directly within the base `PROJECT_NAME/` directory without nesting. If the modules are meant only for internal use within the project, they should be prefixed with a leading underscore. For example, def _internal_function. Modules should contain a docstring at the top that gives a general explanation of the purpose and then restates the project's use of the MIT license. +There should be a `tests/test_$MODULE_NAME.py` file created to correspond to every new module that contains test coverage for the module. Ideally, tests should be 1:1 (one test object per code object, one test method per code method) to the extent cleanly possible. + +## Automated Code Cleaners + +All code submitted to Hug should be formatted using Black and isort. +Black should be run with the line length set to 100, and isort with Black compatible settings in place. + +## Automated Code Linting + +All code submitted to hug should run through the following tools: + +- Black and isort verification. +- Flake8 + - flake8-bugbear +- Bandit +- pep8-naming +- vulture +- safety diff --git a/docs/contributing/3.-code-of-conduct.md b/docs/contributing/3.-code-of-conduct.md new file mode 100644 index 00000000..a70f348f --- /dev/null +++ b/docs/contributing/3.-code-of-conduct.md @@ -0,0 +1,88 @@ +# HOPE 11 -- Code of Conduct + +| | | +| ------------| ------------------------------------------- | +| HOPE: | 11 | +| Title: | Code of Conduct | +| Author(s): | Timothy Crosley | +| Status: | Active | +| Type: | Process | +| Created: | 17-August-2019 | +| Updated: | 17-August-2019 | + +## Abstract + +Defines the Code of Conduct for Hug and all related projects. + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, sex characteristics, gender identity and expression, +level of experience, education, socio-economic status, nationality, personal +appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or + advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting [timothy.crosley@gmail.com](mailto:timothy.crosley@gmail.com). All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. Confidentiality will be maintained +with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][https://www.contributor-covenant.org], version 1.4, +available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + +For answers to common questions about this code of conduct, see +https://www.contributor-covenant.org/faq diff --git a/docs/contributing/4.-acknowledgements.md b/docs/contributing/4.-acknowledgements.md new file mode 100644 index 00000000..e1bc7f25 --- /dev/null +++ b/docs/contributing/4.-acknowledgements.md @@ -0,0 +1,21 @@ +Contributors +=================== + +## Core Developers +- Tan Tao-Lin (@tanlin2013) + +## Notable Bug Reporters +- + +## Code Contributors +- + +## Documenters +- + + +-------------------------------------------- + +A sincere thanks to everyone who helps make tnpy into a great Python3 project! + +~Tan Tao-Lin From c88754e7e36bd07888cab9eaa57c11c0cef02321 Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Feb 2023 14:13:24 +0800 Subject: [PATCH 17/92] build: use docker multi-stage builds --- Dockerfile | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/Dockerfile b/Dockerfile index 71cb98bf..431ea7a2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,22 +1,28 @@ -FROM python:3.10 -LABEL maintainer="TaoLin tanlin2013@gmail.com" +FROM python:3.11-slim as python +ENV PYTHONUNBUFFERED=true +WORKDIR /app -ARG WORKDIR=/home/tnpy -ENV PYTHONPATH="${PYTHONPATH}:$WORKDIR" \ - PATH="/root/.local/bin:$PATH" -WORKDIR $WORKDIR -COPY . $WORKDIR -# Install fortran, blas, lapack +FROM python as lapack RUN apt update && \ - apt-get install -y --no-install-recommends \ - gfortran libblas-dev liblapack-dev graphviz -RUN apt-get -y clean && \ - rm -rf /var/lib/apt/lists/* + apt-get install -y --no-install-recommends \ + gfortran libblas-dev liblapack-dev graphviz -# Install required python packages and tnpy -RUN curl -sSL https://install.python-poetry.org | python3 - && \ - poetry config virtualenvs.create false --local && \ - poetry install --without dev +FROM python as poetry +ENV POETRY_HOME=/opt/poetry +ENV PATH="$POETRY_HOME/bin:$PATH" +COPY . ./ +RUN apt update && \ + apt-get install -y curl +RUN curl -sSL https://install.python-poetry.org | python3 - --version 1.3.2 && \ + poetry config virtualenvs.in-project true && \ + poetry install --no-interaction --no-ansi -vvv --without dev + + +FROM python as runtime +ENV PATH="/app/.venv/bin:$PATH" +COPY --from=poetry /app /app +RUN apt-get -y clean && \ + rm -rf /var/lib/apt/lists/* ENTRYPOINT /bin/bash From 35d1f5cf259d872709305228ca1a5347bbe389a1 Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Feb 2023 14:15:37 +0800 Subject: [PATCH 18/92] build: update dev dependencies --- pyproject.toml | 37 +++++++++++++++++++++++++++++-------- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 10ef881b..ba7c7ff5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -2,9 +2,10 @@ name = "tnpy" version = "0.1.1a3" description = "Tensor Network algorithms implemented in python." -authors = ["taolin "] +authors = ["Tan Tao-Lin "] homepage = "https://github.com/tanlin2013/tnpy" documentation = "https://tanlin2013.github.io/tnpy/" +license = "MIT" readme = "README.md" keywords = ["tensornetwork", "quantum-mechanics", "quantum-algorithms"] @@ -29,14 +30,20 @@ mkl = ["mkl-devel"] # (https://github.com/tanlin2013/tnpy/issues/5) drawing = ["matplotlib", "networkx"] [tool.poetry.group.dev.dependencies] -pytest = "^7.1.1" -pytest-cov = "^3.0.0" -pytest-mock = "^3.6.1" -pylint = "^2.13.7" -flake8 = "^4.0.1" -mypy = "^0.942" -jupyter = "^1.0.0" pre-commit = "^2.19.0" +commitizen = "^2.40.0" +vulture = ">=1.0" +bandit = ">=1.6" +safety = ">=1.8" +isort = ">=5.3" +flake8-bugbear = ">=19.8" +black = ">=18.3" +mypy = ">=0.730.0" +ipython = ">=7.7" +pytest = ">=5.0" +pytest-cov = ">=2.7" +pytest-mock = ">=1.10" +pep8-naming = ">=0.8.2" cruft = ">=2.2" [tool.poetry.group.docs] @@ -48,7 +55,21 @@ sphinx-book-theme = "^0.3.2" m2r2 = "^0.3.2" #pandoc = "2.1" nbsphinx = "^0.8.8" +portray = ">=1.3.0" [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" + +[tool.black] +line-length = 100 + +[tool.isort] +profile = "black" + +[tool.mypy] +ignore_missing_imports = true +strict_optional = false + +[tool.cruft] +skip = [] From a76d4bf61ff6227bc00dc3d9c3b2ea591ea87b10 Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Feb 2023 14:43:13 +0800 Subject: [PATCH 19/92] ci: refactor from cruft template --- .github/workflows/doc.yml | 34 ++++++++ .github/workflows/docs.yml | 35 -------- .github/workflows/lint.yml | 35 ++++++++ .../workflows/{publish.yml => release.yml} | 49 ++++++----- .github/workflows/test.yml | 82 +++++++++++++++++++ .github/workflows/tests.yml | 63 -------------- 6 files changed, 180 insertions(+), 118 deletions(-) create mode 100644 .github/workflows/doc.yml delete mode 100644 .github/workflows/docs.yml create mode 100644 .github/workflows/lint.yml rename .github/workflows/{publish.yml => release.yml} (58%) create mode 100644 .github/workflows/test.yml delete mode 100644 .github/workflows/tests.yml diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml new file mode 100644 index 00000000..2c4b2a93 --- /dev/null +++ b/.github/workflows/doc.yml @@ -0,0 +1,34 @@ +name: Doc + +on: [push, pull_request] + +jobs: + build: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: [3.11] + + steps: + - uses: actions/checkout@v3 + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install --upgrade poetry>=1.2.0 + poetry install --with docs + + - name: Build Sphinx doc + run: | + make -C docs html + + - name: Deploy + uses: peaceiris/actions-gh-pages@v3 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ./docs/build/html diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml deleted file mode 100644 index 2fcc730a..00000000 --- a/.github/workflows/docs.yml +++ /dev/null @@ -1,35 +0,0 @@ -# Reference -# How to use make with flags -# make html SPHINXOPTS+='-W --keep-going -n' -# See this Github issue: Action fails with due to missing log file -# https://github.com/ammaraskar/sphinx-action/issues/5 - -name: docs - -on: - workflow_run: - workflows: [ "docker-build" ] - types: - - completed - -jobs: - build: - runs-on: ubuntu-latest - container: - image: docker://tanlin2013/tnpy:latest - steps: - - uses: actions/checkout@v2 - - - name: Build Sphinx doc - run: | - apt update - apt install -y pandoc - poetry config virtualenvs.create false --local - poetry install - make -C docs html - - - name: Deploy - uses: peaceiris/actions-gh-pages@v3 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: ./docs/build/html diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 00000000..74c06ae6 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,35 @@ +name: Lint + +on: [push, pull_request] + +jobs: + build: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: [3.11] + + steps: + - uses: actions/checkout@v3 + + - name: pip cache + uses: actions/cache@v3 + with: + path: ~/.cache/pip + key: lint-pip-${{ hashFiles('**/pyproject.toml') }} + restore-keys: | + lint-pip- + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install --upgrade poetry>=1.2.0 + poetry install + + - name: Lint + run: ./scripts/lint.sh diff --git a/.github/workflows/publish.yml b/.github/workflows/release.yml similarity index 58% rename from .github/workflows/publish.yml rename to .github/workflows/release.yml index 4e3fe0dc..30ea5bf4 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/release.yml @@ -1,46 +1,56 @@ -# https://github.com/marketplace/actions/pypi-publish - -name: publish +name: Release on: push: + branches: + - 'releases/**' tags: - - 'v*.*.*' + - 'v*' jobs: - build-image-package: + build: runs-on: ubuntu-latest permissions: contents: read packages: write steps: - - name: Checkout repository - uses: actions/checkout@v3 + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 - - name: Log in to the Container registry - uses: docker/login-action@v1 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 - name: Extract metadata (tags, labels) for Docker id: meta - uses: docker/metadata-action@v3 + uses: docker/metadata-action@v4 with: images: ghcr.io/${{ github.repository }} + tags: | + type=schedule + type=ref,event=branch + type=ref,event=tag + type=ref,event=pr + type=sha,format=long + type=raw,value={{date 'YYYYMMDD-hhmmss' tz='Asia/Taipei'}} + type=raw,value=latest + + - name: Log in to the Container registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push Docker image - uses: docker/build-push-action@v2 + uses: docker/build-push-action@v3 with: - context: . push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} - publish: - needs: build-image-package + release: + needs: build runs-on: ubuntu-latest container: image: ghcr.io/${{ github.repository }}:latest @@ -48,10 +58,9 @@ jobs: - uses: actions/checkout@v3 - name: Build package - run: poetry build -f wheel + run: poetry build --format wheel - name: Publish a Python distribution to PyPI uses: pypa/gh-action-pypi-publish@release/v1 with: - user: __token__ password: ${{ secrets.PYPI_API_TOKEN }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 00000000..274ac241 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,82 @@ +name: Test + +on: + workflow_run: + workflows: [ "Docker build" ] + types: + - completed + +jobs: + docker: + runs-on: ubuntu-latest + container: + image: docker://${{ github.repository }}:sha-${{ github.sha }} + steps: + - name: Install dev dependencies + run: | + poetry install + + - name: Test + run: pytest tests/ + + build: + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + python-version: [3.7, 3.11] + os: [ubuntu-latest] + + steps: + - uses: actions/checkout@v3 + + - name: Ubuntu cache + uses: actions/cache@v3 + if: startsWith(matrix.os, 'ubuntu') + with: + path: ~/.cache/pip + key: + ${{ matrix.os }}-${{ matrix.python-version }}-${{ hashFiles('**/pyproject.toml') }} + restore-keys: | + ${{ matrix.os }}-${{ matrix.python-version }}- + + - name: macOS cache + uses: actions/cache@v3 + if: startsWith(matrix.os, 'macOS') + with: + path: ~/Library/Caches/pip + key: + ${{ matrix.os }}-${{ matrix.python-version }}-${{ hashFiles('**/pyproject.toml') }} + restore-keys: | + ${{ matrix.os }}-${{ matrix.python-version }}- + + - name: Windows cache + uses: actions/cache@v3 + if: startsWith(matrix.os, 'windows') + with: + path: c:\users\runneradmin\appdata\local\pip\cache + key: + ${{ matrix.os }}-${{ matrix.python-version }}-${{ hashFiles('**/pyproject.toml') }} + restore-keys: | + ${{ matrix.os }}-${{ matrix.python-version }}- + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + + - name: Install dev dependencies + run: | + python -m pip install --upgrade pip + python -m pip install --upgrade poetry==1.3.2 + poetry install + + - name: Test + shell: bash + run: | + poetry run pytest tests/ -s --cov=${{ github.event.repository.name }}/ --cov-report=term-missing ${@-} + poetry run coverage xml + + - name: Report Coverage + if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.11' + uses: codecov/codecov-action@v3 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml deleted file mode 100644 index 4a94953d..00000000 --- a/.github/workflows/tests.yml +++ /dev/null @@ -1,63 +0,0 @@ -name: tests - -on: - workflow_run: - workflows: [ "docker-build" ] - types: - - completed - -jobs: - test: - runs-on: ubuntu-latest - container: - image: docker://tanlin2013/tnpy:latest - steps: - - uses: actions/checkout@v3 - - - name: Install pytest - run: | - poetry config virtualenvs.create false --local - poetry install - - - name: Unit Test - run: pytest --cov=tnpy tests - - lint: - runs-on: ubuntu-latest - container: - image: docker://tanlin2013/tnpy:latest - steps: - - uses: actions/checkout@v3 - - - name: Install linter - run: | - poetry config virtualenvs.create false --local - poetry install - - - name: Run linter - run: | - flake8 \ - --max-line-length=88 \ - --ignore=E203,W503 \ - tnpy - - static-type: - runs-on: ubuntu-latest - container: - image: docker://tanlin2013/tnpy:latest - steps: - - uses: actions/checkout@v3 - - - name: Install linter - run: | - poetry config virtualenvs.create false --local - poetry install - - - name: Static type check - run: | - mypy \ - --install-types \ - --non-interactive \ - --ignore-missing-imports \ - --no-strict-optional \ - tnpy From 0e00dc00a9b7471f14d6654bec0d92d5b67156f9 Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Feb 2023 14:44:33 +0800 Subject: [PATCH 20/92] ci: add dev scripts --- scripts/clean.sh | 5 +++++ scripts/done.sh | 5 +++++ scripts/lint.sh | 14 ++++++++++++++ scripts/test.sh | 5 +++++ 4 files changed, 29 insertions(+) create mode 100755 scripts/clean.sh create mode 100755 scripts/done.sh create mode 100755 scripts/lint.sh create mode 100755 scripts/test.sh diff --git a/scripts/clean.sh b/scripts/clean.sh new file mode 100755 index 00000000..f3183516 --- /dev/null +++ b/scripts/clean.sh @@ -0,0 +1,5 @@ +#!/bin/bash +set -euxo pipefail + +poetry run isort tnpy/ tests/ +poetry run black tnpy/ tests/ diff --git a/scripts/done.sh b/scripts/done.sh new file mode 100755 index 00000000..7a1becca --- /dev/null +++ b/scripts/done.sh @@ -0,0 +1,5 @@ +#!/bin/bash +set -euxo pipefail + +./scripts/clean.sh +./scripts/test.sh diff --git a/scripts/lint.sh b/scripts/lint.sh new file mode 100755 index 00000000..d8eedddf --- /dev/null +++ b/scripts/lint.sh @@ -0,0 +1,14 @@ +#!/bin/bash +set -euxo pipefail + +poetry run cruft check +poetry run safety check -i 39462 -i 40291 +poetry run bandit -r tnpy/ +poetry run isort --check --diff tnpy/ tests/ +poetry run black --check tnpy/ tests/ +poetry run flake8 tnpy/ tests/ +poetry run mypy \ + --install-types \ + --non-interactive \ + tnpy/ +# https://mypy.readthedocs.io/en/stable/running_mypy.html#library-stubs-not-installed diff --git a/scripts/test.sh b/scripts/test.sh new file mode 100755 index 00000000..b76fa767 --- /dev/null +++ b/scripts/test.sh @@ -0,0 +1,5 @@ +#!/bin/bash +set -euxo pipefail + +./scripts/lint.sh +poetry run pytest -s --cov=tnpy/ --cov=tests --cov-report=term-missing ${@-} --cov-report html From a9d6c5e1c6a62568a7853ce459acf587964ecc65 Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Feb 2023 14:45:00 +0800 Subject: [PATCH 21/92] build: add flake8 config --- setup.cfg | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 setup.cfg diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 00000000..ebeeaf02 --- /dev/null +++ b/setup.cfg @@ -0,0 +1,5 @@ +[flake8] +max-line-length = 100 +extend-ignore = + E203, + W503 From dc5df03e9843dac81d253695ba236ba512e75c4f Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Feb 2023 14:45:46 +0800 Subject: [PATCH 22/92] build: add coverage config --- .coveragerc | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .coveragerc diff --git a/.coveragerc b/.coveragerc new file mode 100644 index 00000000..ae17d653 --- /dev/null +++ b/.coveragerc @@ -0,0 +1,5 @@ +[report] +exclude_lines = + pragma: no cover +omit = + *tests* From f76e830ff041938c05e231cbce4530148c57627b Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Feb 2023 14:46:08 +0800 Subject: [PATCH 23/92] docs: add funding info --- .github/FUNDING.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 00000000..24eda7d1 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1 @@ +github: "tanlin2013" From 51bf7acaf90436a1d289177ea803879c4138713a Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Feb 2023 14:46:41 +0800 Subject: [PATCH 24/92] build: update poetry.lock --- poetry.lock | 3884 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 3884 insertions(+) create mode 100644 poetry.lock diff --git a/poetry.lock b/poetry.lock new file mode 100644 index 00000000..8a4f1079 --- /dev/null +++ b/poetry.lock @@ -0,0 +1,3884 @@ +# This file is automatically @generated by Poetry and should not be changed by hand. + +[[package]] +name = "alabaster" +version = "0.7.13" +description = "A configurable sidebar-enabled Sphinx theme" +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "alabaster-0.7.13-py3-none-any.whl", hash = "sha256:1ee19aca801bbabb5ba3f5f258e4422dfa86f82f3e9cefb0859b283cdd7f62a3"}, + {file = "alabaster-0.7.13.tar.gz", hash = "sha256:a27a4a084d5e690e16e01e03ad2b2e552c61a65469419b907243193de1a84ae2"}, +] + +[[package]] +name = "appnope" +version = "0.1.3" +description = "Disable App Nap on macOS >= 10.9" +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "appnope-0.1.3-py2.py3-none-any.whl", hash = "sha256:265a455292d0bd8a72453494fa24df5a11eb18373a60c7c0430889f22548605e"}, + {file = "appnope-0.1.3.tar.gz", hash = "sha256:02bd91c4de869fbb1e1c50aafc4098827a7a54ab2f39d9dcba6c9547ed920e24"}, +] + +[[package]] +name = "argcomplete" +version = "2.0.0" +description = "Bash tab completion for argparse" +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "argcomplete-2.0.0-py2.py3-none-any.whl", hash = "sha256:cffa11ea77999bb0dd27bb25ff6dc142a6796142f68d45b1a26b11f58724561e"}, + {file = "argcomplete-2.0.0.tar.gz", hash = "sha256:6372ad78c89d662035101418ae253668445b391755cfe94ea52f1b9d22425b20"}, +] + +[package.extras] +test = ["coverage", "flake8", "pexpect", "wheel"] + +[[package]] +name = "arrow" +version = "1.2.3" +description = "Better dates & times for Python" +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "arrow-1.2.3-py3-none-any.whl", hash = "sha256:5a49ab92e3b7b71d96cd6bfcc4df14efefc9dfa96ea19045815914a6ab6b1fe2"}, + {file = "arrow-1.2.3.tar.gz", hash = "sha256:3934b30ca1b9f292376d9db15b19446088d12ec58629bc3f0da28fd55fb633a1"}, +] + +[package.dependencies] +python-dateutil = ">=2.7.0" + +[[package]] +name = "asttokens" +version = "2.2.1" +description = "Annotate AST trees with source code positions" +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "asttokens-2.2.1-py2.py3-none-any.whl", hash = "sha256:6b0ac9e93fb0335014d382b8fa9b3afa7df546984258005da0b9e7095b3deb1c"}, + {file = "asttokens-2.2.1.tar.gz", hash = "sha256:4622110b2a6f30b77e1473affaa97e711bc2f07d3f10848420ff1898edbe94f3"}, +] + +[package.dependencies] +six = "*" + +[package.extras] +test = ["astroid", "pytest"] + +[[package]] +name = "attrs" +version = "22.2.0" +description = "Classes Without Boilerplate" +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "attrs-22.2.0-py3-none-any.whl", hash = "sha256:29e95c7f6778868dbd49170f98f8818f78f3dc5e0e37c0b1f474e3561b240836"}, + {file = "attrs-22.2.0.tar.gz", hash = "sha256:c9227bfc2f01993c03f68db37d1d15c9690188323c067c641f1a35ca58185f99"}, +] + +[package.extras] +cov = ["attrs[tests]", "coverage-enable-subprocess", "coverage[toml] (>=5.3)"] +dev = ["attrs[docs,tests]"] +docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope.interface"] +tests = ["attrs[tests-no-zope]", "zope.interface"] +tests-no-zope = ["cloudpickle", "cloudpickle", "hypothesis", "hypothesis", "mypy (>=0.971,<0.990)", "mypy (>=0.971,<0.990)", "pympler", "pympler", "pytest (>=4.3.0)", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-mypy-plugins", "pytest-xdist[psutil]", "pytest-xdist[psutil]"] + +[[package]] +name = "autoray" +version = "0.3.2" +description = "Write backend agnostic numeric code compatible with any numpy-ish array library." +category = "main" +optional = false +python-versions = ">=3.6" +files = [ + {file = "autoray-0.3.2-py3-none-any.whl", hash = "sha256:a50b4174ae87e8f354feb1a793f6bb6d634404289a404f28497269f42616de44"}, + {file = "autoray-0.3.2.tar.gz", hash = "sha256:4ed0f4443fa832cd08fea274be022b045e835305832e19b1391309709f6198c7"}, +] + +[package.dependencies] +numpy = "*" + +[package.extras] +tests = ["coverage", "pytest", "pytest-cov"] + +[[package]] +name = "babel" +version = "2.11.0" +description = "Internationalization utilities" +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "Babel-2.11.0-py3-none-any.whl", hash = "sha256:1ad3eca1c885218f6dce2ab67291178944f810a10a9b5f3cb8382a5a232b64fe"}, + {file = "Babel-2.11.0.tar.gz", hash = "sha256:5ef4b3226b0180dedded4229651c8b0e1a3a6a2837d45a073272f313e4cf97f6"}, +] + +[package.dependencies] +pytz = ">=2015.7" + +[[package]] +name = "backcall" +version = "0.2.0" +description = "Specifications for callback functions passed in to an API" +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "backcall-0.2.0-py2.py3-none-any.whl", hash = "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255"}, + {file = "backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e"}, +] + +[[package]] +name = "bandit" +version = "1.7.4" +description = "Security oriented static analyser for python code." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "bandit-1.7.4-py3-none-any.whl", hash = "sha256:412d3f259dab4077d0e7f0c11f50f650cc7d10db905d98f6520a95a18049658a"}, + {file = "bandit-1.7.4.tar.gz", hash = "sha256:2d63a8c573417bae338962d4b9b06fbc6080f74ecd955a092849e1e65c717bd2"}, +] + +[package.dependencies] +colorama = {version = ">=0.3.9", markers = "platform_system == \"Windows\""} +GitPython = ">=1.0.1" +PyYAML = ">=5.3.1" +stevedore = ">=1.20.0" + +[package.extras] +test = ["beautifulsoup4 (>=4.8.0)", "coverage (>=4.5.4)", "fixtures (>=3.0.0)", "flake8 (>=4.0.0)", "pylint (==1.9.4)", "stestr (>=2.5.0)", "testscenarios (>=0.5.0)", "testtools (>=2.3.0)", "toml"] +toml = ["toml"] +yaml = ["PyYAML"] + +[[package]] +name = "beautifulsoup4" +version = "4.11.2" +description = "Screen-scraping library" +category = "dev" +optional = false +python-versions = ">=3.6.0" +files = [ + {file = "beautifulsoup4-4.11.2-py3-none-any.whl", hash = "sha256:0e79446b10b3ecb499c1556f7e228a53e64a2bfcebd455f370d8927cb5b59e39"}, + {file = "beautifulsoup4-4.11.2.tar.gz", hash = "sha256:bc4bdda6717de5a2987436fb8d72f45dc90dd856bdfd512a1314ce90349a0106"}, +] + +[package.dependencies] +soupsieve = ">1.2" + +[package.extras] +html5lib = ["html5lib"] +lxml = ["lxml"] + +[[package]] +name = "binaryornot" +version = "0.4.4" +description = "Ultra-lightweight pure Python package to check if a file is binary or text." +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "binaryornot-0.4.4-py2.py3-none-any.whl", hash = "sha256:b8b71173c917bddcd2c16070412e369c3ed7f0528926f70cac18a6c97fd563e4"}, + {file = "binaryornot-0.4.4.tar.gz", hash = "sha256:359501dfc9d40632edc9fac890e19542db1a287bbcfa58175b66658392018061"}, +] + +[package.dependencies] +chardet = ">=3.0.2" + +[[package]] +name = "black" +version = "23.1.0" +description = "The uncompromising code formatter." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "black-23.1.0-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:b6a92a41ee34b883b359998f0c8e6eb8e99803aa8bf3123bf2b2e6fec505a221"}, + {file = "black-23.1.0-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:57c18c5165c1dbe291d5306e53fb3988122890e57bd9b3dcb75f967f13411a26"}, + {file = "black-23.1.0-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:9880d7d419bb7e709b37e28deb5e68a49227713b623c72b2b931028ea65f619b"}, + {file = "black-23.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e6663f91b6feca5d06f2ccd49a10f254f9298cc1f7f49c46e498a0771b507104"}, + {file = "black-23.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:9afd3f493666a0cd8f8df9a0200c6359ac53940cbde049dcb1a7eb6ee2dd7074"}, + {file = "black-23.1.0-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:bfffba28dc52a58f04492181392ee380e95262af14ee01d4bc7bb1b1c6ca8d27"}, + {file = "black-23.1.0-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:c1c476bc7b7d021321e7d93dc2cbd78ce103b84d5a4cf97ed535fbc0d6660648"}, + {file = "black-23.1.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:382998821f58e5c8238d3166c492139573325287820963d2f7de4d518bd76958"}, + {file = "black-23.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bf649fda611c8550ca9d7592b69f0637218c2369b7744694c5e4902873b2f3a"}, + {file = "black-23.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:121ca7f10b4a01fd99951234abdbd97728e1240be89fde18480ffac16503d481"}, + {file = "black-23.1.0-cp37-cp37m-macosx_10_16_x86_64.whl", hash = "sha256:a8471939da5e824b891b25751955be52ee7f8a30a916d570a5ba8e0f2eb2ecad"}, + {file = "black-23.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8178318cb74f98bc571eef19068f6ab5613b3e59d4f47771582f04e175570ed8"}, + {file = "black-23.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:a436e7881d33acaf2536c46a454bb964a50eff59b21b51c6ccf5a40601fbef24"}, + {file = "black-23.1.0-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:a59db0a2094d2259c554676403fa2fac3473ccf1354c1c63eccf7ae65aac8ab6"}, + {file = "black-23.1.0-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:0052dba51dec07ed029ed61b18183942043e00008ec65d5028814afaab9a22fd"}, + {file = "black-23.1.0-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:49f7b39e30f326a34b5c9a4213213a6b221d7ae9d58ec70df1c4a307cf2a1580"}, + {file = "black-23.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:162e37d49e93bd6eb6f1afc3e17a3d23a823042530c37c3c42eeeaf026f38468"}, + {file = "black-23.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:8b70eb40a78dfac24842458476135f9b99ab952dd3f2dab738c1881a9b38b753"}, + {file = "black-23.1.0-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:a29650759a6a0944e7cca036674655c2f0f63806ddecc45ed40b7b8aa314b651"}, + {file = "black-23.1.0-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:bb460c8561c8c1bec7824ecbc3ce085eb50005883a6203dcfb0122e95797ee06"}, + {file = "black-23.1.0-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:c91dfc2c2a4e50df0026f88d2215e166616e0c80e86004d0003ece0488db2739"}, + {file = "black-23.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a951cc83ab535d248c89f300eccbd625e80ab880fbcfb5ac8afb5f01a258ac9"}, + {file = "black-23.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:0680d4380db3719ebcfb2613f34e86c8e6d15ffeabcf8ec59355c5e7b85bb555"}, + {file = "black-23.1.0-py3-none-any.whl", hash = "sha256:7a0f701d314cfa0896b9001df70a530eb2472babb76086344e688829efd97d32"}, + {file = "black-23.1.0.tar.gz", hash = "sha256:b0bd97bea8903f5a2ba7219257a44e3f1f9d00073d6cc1add68f0beec69692ac"}, +] + +[package.dependencies] +click = ">=8.0.0" +mypy-extensions = ">=0.4.3" +packaging = ">=22.0" +pathspec = ">=0.9.0" +platformdirs = ">=2" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""} + +[package.extras] +colorama = ["colorama (>=0.4.3)"] +d = ["aiohttp (>=3.7.4)"] +jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] +uvloop = ["uvloop (>=0.15.2)"] + +[[package]] +name = "bleach" +version = "6.0.0" +description = "An easy safelist-based HTML-sanitizing tool." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "bleach-6.0.0-py3-none-any.whl", hash = "sha256:33c16e3353dbd13028ab4799a0f89a83f113405c766e9c122df8a06f5b85b3f4"}, + {file = "bleach-6.0.0.tar.gz", hash = "sha256:1a1a85c1595e07d8db14c5f09f09e6433502c51c595970edc090551f0db99414"}, +] + +[package.dependencies] +six = ">=1.9.0" +webencodings = "*" + +[package.extras] +css = ["tinycss2 (>=1.1.0,<1.2)"] + +[[package]] +name = "certifi" +version = "2022.12.7" +description = "Python package for providing Mozilla's CA Bundle." +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "certifi-2022.12.7-py3-none-any.whl", hash = "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"}, + {file = "certifi-2022.12.7.tar.gz", hash = "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3"}, +] + +[[package]] +name = "cffi" +version = "1.15.1" +description = "Foreign Function Interface for Python calling C code." +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "cffi-1.15.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2"}, + {file = "cffi-1.15.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2"}, + {file = "cffi-1.15.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914"}, + {file = "cffi-1.15.1-cp27-cp27m-win32.whl", hash = "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3"}, + {file = "cffi-1.15.1-cp27-cp27m-win_amd64.whl", hash = "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e"}, + {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162"}, + {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b"}, + {file = "cffi-1.15.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21"}, + {file = "cffi-1.15.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185"}, + {file = "cffi-1.15.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd"}, + {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc"}, + {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f"}, + {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e"}, + {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4"}, + {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01"}, + {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e"}, + {file = "cffi-1.15.1-cp310-cp310-win32.whl", hash = "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2"}, + {file = "cffi-1.15.1-cp310-cp310-win_amd64.whl", hash = "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d"}, + {file = "cffi-1.15.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac"}, + {file = "cffi-1.15.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83"}, + {file = "cffi-1.15.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9"}, + {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c"}, + {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325"}, + {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c"}, + {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef"}, + {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8"}, + {file = "cffi-1.15.1-cp311-cp311-win32.whl", hash = "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d"}, + {file = "cffi-1.15.1-cp311-cp311-win_amd64.whl", hash = "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104"}, + {file = "cffi-1.15.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7"}, + {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6"}, + {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d"}, + {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a"}, + {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405"}, + {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e"}, + {file = "cffi-1.15.1-cp36-cp36m-win32.whl", hash = "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf"}, + {file = "cffi-1.15.1-cp36-cp36m-win_amd64.whl", hash = "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497"}, + {file = "cffi-1.15.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375"}, + {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e"}, + {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82"}, + {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b"}, + {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c"}, + {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426"}, + {file = "cffi-1.15.1-cp37-cp37m-win32.whl", hash = "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9"}, + {file = "cffi-1.15.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045"}, + {file = "cffi-1.15.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3"}, + {file = "cffi-1.15.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a"}, + {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5"}, + {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca"}, + {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02"}, + {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192"}, + {file = "cffi-1.15.1-cp38-cp38-win32.whl", hash = "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314"}, + {file = "cffi-1.15.1-cp38-cp38-win_amd64.whl", hash = "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5"}, + {file = "cffi-1.15.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585"}, + {file = "cffi-1.15.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0"}, + {file = "cffi-1.15.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415"}, + {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d"}, + {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984"}, + {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35"}, + {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27"}, + {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76"}, + {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3"}, + {file = "cffi-1.15.1-cp39-cp39-win32.whl", hash = "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee"}, + {file = "cffi-1.15.1-cp39-cp39-win_amd64.whl", hash = "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c"}, + {file = "cffi-1.15.1.tar.gz", hash = "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9"}, +] + +[package.dependencies] +pycparser = "*" + +[[package]] +name = "cfgv" +version = "3.3.1" +description = "Validate configuration and produce human readable error messages." +category = "dev" +optional = false +python-versions = ">=3.6.1" +files = [ + {file = "cfgv-3.3.1-py2.py3-none-any.whl", hash = "sha256:c6a0883f3917a037485059700b9e75da2464e6c27051014ad85ba6aaa5884426"}, + {file = "cfgv-3.3.1.tar.gz", hash = "sha256:f5a830efb9ce7a445376bb66ec94c638a9787422f96264c98edc6bdeed8ab736"}, +] + +[[package]] +name = "chardet" +version = "5.1.0" +description = "Universal encoding detector for Python 3" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "chardet-5.1.0-py3-none-any.whl", hash = "sha256:362777fb014af596ad31334fde1e8c327dfdb076e1960d1694662d46a6917ab9"}, + {file = "chardet-5.1.0.tar.gz", hash = "sha256:0d62712b956bc154f85fb0a266e2a3c5913c2967e00348701b32411d6def31e5"}, +] + +[[package]] +name = "charset-normalizer" +version = "2.1.1" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +category = "dev" +optional = false +python-versions = ">=3.6.0" +files = [ + {file = "charset-normalizer-2.1.1.tar.gz", hash = "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845"}, + {file = "charset_normalizer-2.1.1-py3-none-any.whl", hash = "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f"}, +] + +[package.extras] +unicode-backport = ["unicodedata2"] + +[[package]] +name = "click" +version = "8.1.3" +description = "Composable command line interface toolkit" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, + {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] + +[[package]] +name = "commitizen" +version = "2.40.0" +description = "Python commitizen client tool" +category = "dev" +optional = false +python-versions = ">=3.6.2,<4.0.0" +files = [ + {file = "commitizen-2.40.0-py3-none-any.whl", hash = "sha256:44b589869529c297d4ef594bb7560388d3367b3ae8af36b0664d2f51a28e8f87"}, + {file = "commitizen-2.40.0.tar.gz", hash = "sha256:8f1a09589ffb87bb17df17261423e88299bd63432dbfc4e6fc6657fea23dddc0"}, +] + +[package.dependencies] +argcomplete = ">=1.12.1,<2.1" +charset-normalizer = ">=2.1.0,<3.0.0" +colorama = ">=0.4.1,<0.5.0" +decli = ">=0.5.2,<0.6.0" +jinja2 = ">=2.10.3" +packaging = ">=19" +pyyaml = ">=3.08" +questionary = ">=1.4.0,<2.0.0" +termcolor = {version = ">=1.1,<3", markers = "python_version >= \"3.7\""} +tomlkit = ">=0.5.3,<1.0.0" +typing-extensions = ">=4.0.1,<5.0.0" + +[[package]] +name = "contourpy" +version = "1.0.7" +description = "Python library for calculating contours of 2D quadrilateral grids" +category = "main" +optional = true +python-versions = ">=3.8" +files = [ + {file = "contourpy-1.0.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:95c3acddf921944f241b6773b767f1cbce71d03307270e2d769fd584d5d1092d"}, + {file = "contourpy-1.0.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:fc1464c97579da9f3ab16763c32e5c5d5bb5fa1ec7ce509a4ca6108b61b84fab"}, + {file = "contourpy-1.0.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8acf74b5d383414401926c1598ed77825cd530ac7b463ebc2e4f46638f56cce6"}, + {file = "contourpy-1.0.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c71fdd8f1c0f84ffd58fca37d00ca4ebaa9e502fb49825484da075ac0b0b803"}, + {file = "contourpy-1.0.7-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f99e9486bf1bb979d95d5cffed40689cb595abb2b841f2991fc894b3452290e8"}, + {file = "contourpy-1.0.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87f4d8941a9564cda3f7fa6a6cd9b32ec575830780677932abdec7bcb61717b0"}, + {file = "contourpy-1.0.7-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9e20e5a1908e18aaa60d9077a6d8753090e3f85ca25da6e25d30dc0a9e84c2c6"}, + {file = "contourpy-1.0.7-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a877ada905f7d69b2a31796c4b66e31a8068b37aa9b78832d41c82fc3e056ddd"}, + {file = "contourpy-1.0.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6381fa66866b0ea35e15d197fc06ac3840a9b2643a6475c8fff267db8b9f1e69"}, + {file = "contourpy-1.0.7-cp310-cp310-win32.whl", hash = "sha256:3c184ad2433635f216645fdf0493011a4667e8d46b34082f5a3de702b6ec42e3"}, + {file = "contourpy-1.0.7-cp310-cp310-win_amd64.whl", hash = "sha256:3caea6365b13119626ee996711ab63e0c9d7496f65641f4459c60a009a1f3e80"}, + {file = "contourpy-1.0.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ed33433fc3820263a6368e532f19ddb4c5990855e4886088ad84fd7c4e561c71"}, + {file = "contourpy-1.0.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:38e2e577f0f092b8e6774459317c05a69935a1755ecfb621c0a98f0e3c09c9a5"}, + {file = "contourpy-1.0.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ae90d5a8590e5310c32a7630b4b8618cef7563cebf649011da80874d0aa8f414"}, + {file = "contourpy-1.0.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:130230b7e49825c98edf0b428b7aa1125503d91732735ef897786fe5452b1ec2"}, + {file = "contourpy-1.0.7-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58569c491e7f7e874f11519ef46737cea1d6eda1b514e4eb5ac7dab6aa864d02"}, + {file = "contourpy-1.0.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54d43960d809c4c12508a60b66cb936e7ed57d51fb5e30b513934a4a23874fae"}, + {file = "contourpy-1.0.7-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:152fd8f730c31fd67fe0ffebe1df38ab6a669403da93df218801a893645c6ccc"}, + {file = "contourpy-1.0.7-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:9056c5310eb1daa33fc234ef39ebfb8c8e2533f088bbf0bc7350f70a29bde1ac"}, + {file = "contourpy-1.0.7-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a9d7587d2fdc820cc9177139b56795c39fb8560f540bba9ceea215f1f66e1566"}, + {file = "contourpy-1.0.7-cp311-cp311-win32.whl", hash = "sha256:4ee3ee247f795a69e53cd91d927146fb16c4e803c7ac86c84104940c7d2cabf0"}, + {file = "contourpy-1.0.7-cp311-cp311-win_amd64.whl", hash = "sha256:5caeacc68642e5f19d707471890f037a13007feba8427eb7f2a60811a1fc1350"}, + {file = "contourpy-1.0.7-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:fd7dc0e6812b799a34f6d12fcb1000539098c249c8da54f3566c6a6461d0dbad"}, + {file = "contourpy-1.0.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0f9d350b639db6c2c233d92c7f213d94d2e444d8e8fc5ca44c9706cf72193772"}, + {file = "contourpy-1.0.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e96a08b62bb8de960d3a6afbc5ed8421bf1a2d9c85cc4ea73f4bc81b4910500f"}, + {file = "contourpy-1.0.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:031154ed61f7328ad7f97662e48660a150ef84ee1bc8876b6472af88bf5a9b98"}, + {file = "contourpy-1.0.7-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e9ebb4425fc1b658e13bace354c48a933b842d53c458f02c86f371cecbedecc"}, + {file = "contourpy-1.0.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efb8f6d08ca7998cf59eaf50c9d60717f29a1a0a09caa46460d33b2924839dbd"}, + {file = "contourpy-1.0.7-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6c180d89a28787e4b73b07e9b0e2dac7741261dbdca95f2b489c4f8f887dd810"}, + {file = "contourpy-1.0.7-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b8d587cc39057d0afd4166083d289bdeff221ac6d3ee5046aef2d480dc4b503c"}, + {file = "contourpy-1.0.7-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:769eef00437edf115e24d87f8926955f00f7704bede656ce605097584f9966dc"}, + {file = "contourpy-1.0.7-cp38-cp38-win32.whl", hash = "sha256:62398c80ef57589bdbe1eb8537127321c1abcfdf8c5f14f479dbbe27d0322e66"}, + {file = "contourpy-1.0.7-cp38-cp38-win_amd64.whl", hash = "sha256:57119b0116e3f408acbdccf9eb6ef19d7fe7baf0d1e9aaa5381489bc1aa56556"}, + {file = "contourpy-1.0.7-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:30676ca45084ee61e9c3da589042c24a57592e375d4b138bd84d8709893a1ba4"}, + {file = "contourpy-1.0.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3e927b3868bd1e12acee7cc8f3747d815b4ab3e445a28d2e5373a7f4a6e76ba1"}, + {file = "contourpy-1.0.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:366a0cf0fc079af5204801786ad7a1c007714ee3909e364dbac1729f5b0849e5"}, + {file = "contourpy-1.0.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89ba9bb365446a22411f0673abf6ee1fea3b2cf47b37533b970904880ceb72f3"}, + {file = "contourpy-1.0.7-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:71b0bf0c30d432278793d2141362ac853859e87de0a7dee24a1cea35231f0d50"}, + {file = "contourpy-1.0.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7281244c99fd7c6f27c1c6bfafba878517b0b62925a09b586d88ce750a016d2"}, + {file = "contourpy-1.0.7-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b6d0f9e1d39dbfb3977f9dd79f156c86eb03e57a7face96f199e02b18e58d32a"}, + {file = "contourpy-1.0.7-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7f6979d20ee5693a1057ab53e043adffa1e7418d734c1532e2d9e915b08d8ec2"}, + {file = "contourpy-1.0.7-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5dd34c1ae752515318224cba7fc62b53130c45ac6a1040c8b7c1a223c46e8967"}, + {file = "contourpy-1.0.7-cp39-cp39-win32.whl", hash = "sha256:c5210e5d5117e9aec8c47d9156d1d3835570dd909a899171b9535cb4a3f32693"}, + {file = "contourpy-1.0.7-cp39-cp39-win_amd64.whl", hash = "sha256:60835badb5ed5f4e194a6f21c09283dd6e007664a86101431bf870d9e86266c4"}, + {file = "contourpy-1.0.7-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ce41676b3d0dd16dbcfabcc1dc46090aaf4688fd6e819ef343dbda5a57ef0161"}, + {file = "contourpy-1.0.7-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a011cf354107b47c58ea932d13b04d93c6d1d69b8b6dce885e642531f847566"}, + {file = "contourpy-1.0.7-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:31a55dccc8426e71817e3fe09b37d6d48ae40aae4ecbc8c7ad59d6893569c436"}, + {file = "contourpy-1.0.7-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69f8ff4db108815addd900a74df665e135dbbd6547a8a69333a68e1f6e368ac2"}, + {file = "contourpy-1.0.7-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:efe99298ba37e37787f6a2ea868265465410822f7bea163edcc1bd3903354ea9"}, + {file = "contourpy-1.0.7-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a1e97b86f73715e8670ef45292d7cc033548266f07d54e2183ecb3c87598888f"}, + {file = "contourpy-1.0.7-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc331c13902d0f50845099434cd936d49d7a2ca76cb654b39691974cb1e4812d"}, + {file = "contourpy-1.0.7-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:24847601071f740837aefb730e01bd169fbcaa610209779a78db7ebb6e6a7051"}, + {file = "contourpy-1.0.7-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abf298af1e7ad44eeb93501e40eb5a67abbf93b5d90e468d01fc0c4451971afa"}, + {file = "contourpy-1.0.7-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:64757f6460fc55d7e16ed4f1de193f362104285c667c112b50a804d482777edd"}, + {file = "contourpy-1.0.7.tar.gz", hash = "sha256:d8165a088d31798b59e91117d1f5fc3df8168d8b48c4acc10fc0df0d0bdbcc5e"}, +] + +[package.dependencies] +numpy = ">=1.16" + +[package.extras] +bokeh = ["bokeh", "chromedriver", "selenium"] +docs = ["furo", "sphinx-copybutton"] +mypy = ["contourpy[bokeh]", "docutils-stubs", "mypy (==0.991)", "types-Pillow"] +test = ["Pillow", "matplotlib", "pytest"] +test-no-images = ["pytest"] + +[[package]] +name = "cookiecutter" +version = "2.1.1" +description = "A command-line utility that creates projects from project templates, e.g. creating a Python package project from a Python package project template." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "cookiecutter-2.1.1-py2.py3-none-any.whl", hash = "sha256:9f3ab027cec4f70916e28f03470bdb41e637a3ad354b4d65c765d93aad160022"}, + {file = "cookiecutter-2.1.1.tar.gz", hash = "sha256:f3982be8d9c53dac1261864013fdec7f83afd2e42ede6f6dd069c5e149c540d5"}, +] + +[package.dependencies] +binaryornot = ">=0.4.4" +click = ">=7.0,<9.0.0" +Jinja2 = ">=2.7,<4.0.0" +jinja2-time = ">=0.2.0" +python-slugify = ">=4.0.0" +pyyaml = ">=5.3.1" +requests = ">=2.23.0" + +[[package]] +name = "coverage" +version = "7.1.0" +description = "Code coverage measurement for Python" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "coverage-7.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3b946bbcd5a8231383450b195cfb58cb01cbe7f8949f5758566b881df4b33baf"}, + {file = "coverage-7.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ec8e767f13be637d056f7e07e61d089e555f719b387a7070154ad80a0ff31801"}, + {file = "coverage-7.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4a5a5879a939cb84959d86869132b00176197ca561c664fc21478c1eee60d75"}, + {file = "coverage-7.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b643cb30821e7570c0aaf54feaf0bfb630b79059f85741843e9dc23f33aaca2c"}, + {file = "coverage-7.1.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32df215215f3af2c1617a55dbdfb403b772d463d54d219985ac7cd3bf124cada"}, + {file = "coverage-7.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:33d1ae9d4079e05ac4cc1ef9e20c648f5afabf1a92adfaf2ccf509c50b85717f"}, + {file = "coverage-7.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:29571503c37f2ef2138a306d23e7270687c0efb9cab4bd8038d609b5c2393a3a"}, + {file = "coverage-7.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:63ffd21aa133ff48c4dff7adcc46b7ec8b565491bfc371212122dd999812ea1c"}, + {file = "coverage-7.1.0-cp310-cp310-win32.whl", hash = "sha256:4b14d5e09c656de5038a3f9bfe5228f53439282abcab87317c9f7f1acb280352"}, + {file = "coverage-7.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:8361be1c2c073919500b6601220a6f2f98ea0b6d2fec5014c1d9cfa23dd07038"}, + {file = "coverage-7.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:da9b41d4539eefd408c46725fb76ecba3a50a3367cafb7dea5f250d0653c1040"}, + {file = "coverage-7.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c5b15ed7644ae4bee0ecf74fee95808dcc34ba6ace87e8dfbf5cb0dc20eab45a"}, + {file = "coverage-7.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d12d076582507ea460ea2a89a8c85cb558f83406c8a41dd641d7be9a32e1274f"}, + {file = "coverage-7.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e2617759031dae1bf183c16cef8fcfb3de7617f394c813fa5e8e46e9b82d4222"}, + {file = "coverage-7.1.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4e4881fa9e9667afcc742f0c244d9364d197490fbc91d12ac3b5de0bf2df146"}, + {file = "coverage-7.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9d58885215094ab4a86a6aef044e42994a2bd76a446dc59b352622655ba6621b"}, + {file = "coverage-7.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:ffeeb38ee4a80a30a6877c5c4c359e5498eec095878f1581453202bfacc8fbc2"}, + {file = "coverage-7.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3baf5f126f30781b5e93dbefcc8271cb2491647f8283f20ac54d12161dff080e"}, + {file = "coverage-7.1.0-cp311-cp311-win32.whl", hash = "sha256:ded59300d6330be27bc6cf0b74b89ada58069ced87c48eaf9344e5e84b0072f7"}, + {file = "coverage-7.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:6a43c7823cd7427b4ed763aa7fb63901ca8288591323b58c9cd6ec31ad910f3c"}, + {file = "coverage-7.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7a726d742816cb3a8973c8c9a97539c734b3a309345236cd533c4883dda05b8d"}, + {file = "coverage-7.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc7c85a150501286f8b56bd8ed3aa4093f4b88fb68c0843d21ff9656f0009d6a"}, + {file = "coverage-7.1.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f5b4198d85a3755d27e64c52f8c95d6333119e49fd001ae5798dac872c95e0f8"}, + {file = "coverage-7.1.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ddb726cb861c3117a553f940372a495fe1078249ff5f8a5478c0576c7be12050"}, + {file = "coverage-7.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:51b236e764840a6df0661b67e50697aaa0e7d4124ca95e5058fa3d7cbc240b7c"}, + {file = "coverage-7.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:7ee5c9bb51695f80878faaa5598040dd6c9e172ddcf490382e8aedb8ec3fec8d"}, + {file = "coverage-7.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:c31b75ae466c053a98bf26843563b3b3517b8f37da4d47b1c582fdc703112bc3"}, + {file = "coverage-7.1.0-cp37-cp37m-win32.whl", hash = "sha256:3b155caf3760408d1cb903b21e6a97ad4e2bdad43cbc265e3ce0afb8e0057e73"}, + {file = "coverage-7.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:2a60d6513781e87047c3e630b33b4d1e89f39836dac6e069ffee28c4786715f5"}, + {file = "coverage-7.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f2cba5c6db29ce991029b5e4ac51eb36774458f0a3b8d3137241b32d1bb91f06"}, + {file = "coverage-7.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:beeb129cacea34490ffd4d6153af70509aa3cda20fdda2ea1a2be870dfec8d52"}, + {file = "coverage-7.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0c45948f613d5d18c9ec5eaa203ce06a653334cf1bd47c783a12d0dd4fd9c851"}, + {file = "coverage-7.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef382417db92ba23dfb5864a3fc9be27ea4894e86620d342a116b243ade5d35d"}, + {file = "coverage-7.1.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c7c0d0827e853315c9bbd43c1162c006dd808dbbe297db7ae66cd17b07830f0"}, + {file = "coverage-7.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e5cdbb5cafcedea04924568d990e20ce7f1945a1dd54b560f879ee2d57226912"}, + {file = "coverage-7.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:9817733f0d3ea91bea80de0f79ef971ae94f81ca52f9b66500c6a2fea8e4b4f8"}, + {file = "coverage-7.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:218fe982371ac7387304153ecd51205f14e9d731b34fb0568181abaf7b443ba0"}, + {file = "coverage-7.1.0-cp38-cp38-win32.whl", hash = "sha256:04481245ef966fbd24ae9b9e537ce899ae584d521dfbe78f89cad003c38ca2ab"}, + {file = "coverage-7.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:8ae125d1134bf236acba8b83e74c603d1b30e207266121e76484562bc816344c"}, + {file = "coverage-7.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2bf1d5f2084c3932b56b962a683074a3692bce7cabd3aa023c987a2a8e7612f6"}, + {file = "coverage-7.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:98b85dd86514d889a2e3dd22ab3c18c9d0019e696478391d86708b805f4ea0fa"}, + {file = "coverage-7.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38da2db80cc505a611938d8624801158e409928b136c8916cd2e203970dde4dc"}, + {file = "coverage-7.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3164d31078fa9efe406e198aecd2a02d32a62fecbdef74f76dad6a46c7e48311"}, + {file = "coverage-7.1.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db61a79c07331e88b9a9974815c075fbd812bc9dbc4dc44b366b5368a2936063"}, + {file = "coverage-7.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9ccb092c9ede70b2517a57382a601619d20981f56f440eae7e4d7eaafd1d1d09"}, + {file = "coverage-7.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:33ff26d0f6cc3ca8de13d14fde1ff8efe1456b53e3f0273e63cc8b3c84a063d8"}, + {file = "coverage-7.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d47dd659a4ee952e90dc56c97d78132573dc5c7b09d61b416a9deef4ebe01a0c"}, + {file = "coverage-7.1.0-cp39-cp39-win32.whl", hash = "sha256:d248cd4a92065a4d4543b8331660121b31c4148dd00a691bfb7a5cdc7483cfa4"}, + {file = "coverage-7.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:7ed681b0f8e8bcbbffa58ba26fcf5dbc8f79e7997595bf071ed5430d8c08d6f3"}, + {file = "coverage-7.1.0-pp37.pp38.pp39-none-any.whl", hash = "sha256:755e89e32376c850f826c425ece2c35a4fc266c081490eb0a841e7c1cb0d3bda"}, + {file = "coverage-7.1.0.tar.gz", hash = "sha256:10188fe543560ec4874f974b5305cd1a8bdcfa885ee00ea3a03733464c4ca265"}, +] + +[package.dependencies] +tomli = {version = "*", optional = true, markers = "python_full_version <= \"3.11.0a6\" and extra == \"toml\""} + +[package.extras] +toml = ["tomli"] + +[[package]] +name = "cruft" +version = "2.12.0" +description = "Allows you to maintain all the necessary cruft for packaging and building projects separate from the code you intentionally write. Built on-top of CookieCutter." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "cruft-2.12.0-py3-none-any.whl", hash = "sha256:29c46b34e518412c905bc41eb9812d122e7f2ca0173b584df85b05929adfc1be"}, + {file = "cruft-2.12.0.tar.gz", hash = "sha256:57455d33a60684c945d501dcea2b1c57dc0fb200a0090f07c83da1603382cbb1"}, +] + +[package.dependencies] +click = ">=7.1.2" +cookiecutter = ">=1.7" +gitpython = ">=3.0" +typer = ">=0.4.0" + +[package.extras] +pyproject = ["toml (>=0.10)"] + +[[package]] +name = "cycler" +version = "0.11.0" +description = "Composable style cycles" +category = "main" +optional = true +python-versions = ">=3.6" +files = [ + {file = "cycler-0.11.0-py3-none-any.whl", hash = "sha256:3a27e95f763a428a739d2add979fa7494c912a32c17c4c38c4d5f082cad165a3"}, + {file = "cycler-0.11.0.tar.gz", hash = "sha256:9c87405839a19696e837b3b818fed3f5f69f16f1eec1a1ad77e043dcea9c772f"}, +] + +[[package]] +name = "cytoolz" +version = "0.12.1" +description = "Cython implementation of Toolz: High performance functional utilities" +category = "main" +optional = false +python-versions = ">=3.6" +files = [ + {file = "cytoolz-0.12.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5c59bb4ca88e1c69931468bf21f91c8f64d8bf1999eb163b7a2df336f60c304a"}, + {file = "cytoolz-0.12.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4d700e011156ff112966c6d77faaae125fcaf538f4cec2b9ce8957de82858f0f"}, + {file = "cytoolz-0.12.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23c3f57c48eb939d2986eba4aeaeedf930ebf94d58c91a42d4e0fc45ed5427dc"}, + {file = "cytoolz-0.12.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:25ff13c468c06da9ef26651dc389e7e8bb7af548f8c1dfb96305f57f18d398a8"}, + {file = "cytoolz-0.12.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a734511144309ea6e105406633affb74e303a3df07d8a3954f9b01946e27ecb1"}, + {file = "cytoolz-0.12.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48bc2f30d1b2646d675bb8e7778ab59379bf9edc59fe06fb0e7f85ba1271bf44"}, + {file = "cytoolz-0.12.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30936ae8fa68b6a1ac8ad6c4bacb5a8a00d51bc6c89f9614a1557b0105d09f8a"}, + {file = "cytoolz-0.12.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:efd1b2da3ee577fcfa723a214f73186aef9674dd5b28242d90443c7a82722b0f"}, + {file = "cytoolz-0.12.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6805b007af3557ee6c20dab491b6e55a8177f5b6845d9e6c653374d540366ba7"}, + {file = "cytoolz-0.12.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:a6e63fc67b23830947b51e0a488992e3c904fce825ead565f3904dcf621d05f7"}, + {file = "cytoolz-0.12.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:9e324a94856d88ecf10f34c102d0ded67d7c3cf644153d77e34a29720ce6aa47"}, + {file = "cytoolz-0.12.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:02975e2b1e61e47e9afa311f4c1783d155136fad37c54a1cebfe991c5a0798a1"}, + {file = "cytoolz-0.12.1-cp310-cp310-win32.whl", hash = "sha256:b6569f6038133909cd658dbdcc6fc955f791dc47a7f5b55d2066f742253dcbfe"}, + {file = "cytoolz-0.12.1-cp310-cp310-win_amd64.whl", hash = "sha256:1be368623e46ad3c1ce807e7a436acb119c26001507b31f92ceb21b86e08c386"}, + {file = "cytoolz-0.12.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:849f461bffa1e7700ccfcb5186df29cd4cdcc9efdb7199cb8b5681dc37045d72"}, + {file = "cytoolz-0.12.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4284120c978fb7039901bf6e66832cb3e82ac1b2a107512e735bdb04fd5533ed"}, + {file = "cytoolz-0.12.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2ec296f01c29c809698eaf677211b6255691295c2b35caab2131e1e7eaadfbac"}, + {file = "cytoolz-0.12.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:37c53f456a1c84566a7d911eec57c4c6280b915ab0600e7671582793cc2769fe"}, + {file = "cytoolz-0.12.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1b6761791973b1e839b8309d5853b40eeb413368e31beaf5f2b6ed44c6fc7cf0"}, + {file = "cytoolz-0.12.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff478682e8ee6dbaa37201bb71bf4a6eee744006ab000e8f5cea05066fc7c845"}, + {file = "cytoolz-0.12.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:867bebe6be30ee36a836f9b835790762a74f46be8cc339ea57b68dcecdbc1133"}, + {file = "cytoolz-0.12.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7e903df991f0957e2b271a37bb25d28e0d260c52825ae67507d15ca55a935961"}, + {file = "cytoolz-0.12.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e797c4afb1b7962d3205b1959e1051f7e6bfbba29da44042a9efc2391f1feb38"}, + {file = "cytoolz-0.12.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:b8eceaa12b7f152b046b67cb053ec2b5b00f73593983de69bc5e63a8aca4a7a8"}, + {file = "cytoolz-0.12.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:b575393dd431b8e211de35bd593d831dac870172b16e2b7934f3566b8fc89377"}, + {file = "cytoolz-0.12.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3032c0ba42dee5836d6b57a72a569b65df2c29e8ed266cb900d569003cf933a9"}, + {file = "cytoolz-0.12.1-cp311-cp311-win32.whl", hash = "sha256:c576bd63495150385b8d05eaae775387f378be2fd9805d3ffb4d17c87271fbad"}, + {file = "cytoolz-0.12.1-cp311-cp311-win_amd64.whl", hash = "sha256:421b224dc4157a0d66625acb5798cf50858cfa06a5232d39a8bd6cf1fa88aca3"}, + {file = "cytoolz-0.12.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:be5a454a95797343d0fb1ed02caecae73a023b1393c112951c84f17ec9f4076c"}, + {file = "cytoolz-0.12.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:061387aa39b9c1576c25d0c59142513c09e77a2a07bd5d6211a43c7a758b6f45"}, + {file = "cytoolz-0.12.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:14f4dbc3f0ec8f6fc68865489af21dcf042ff007d2737c27bfd73296f15db544"}, + {file = "cytoolz-0.12.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a816bff6bf424753e1ac2441902ceaf37ae6718b745a53f6aa1a60c617fb4f5f"}, + {file = "cytoolz-0.12.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:633f19d1990b1cf9c67dce9c28bf8b5a18e42785d15548607a100e1236384d5d"}, + {file = "cytoolz-0.12.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fa7009c843667868aa8bdb3d68e5ef3d6356dd418b17ed5ca4e1340e82483a5"}, + {file = "cytoolz-0.12.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:1c29dd04e282ddfd45b457e3551075beec9128aa9271245e58ce924bf6e055f8"}, + {file = "cytoolz-0.12.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:cd35c0be4c46274129dd1678bb911dd4e93d23968b26f4e39cd55bc7cb3b1bac"}, + {file = "cytoolz-0.12.1-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:5158ae6d8dd112d003f677039a3613ca7d2592bfe35d7accf23684edb961fc26"}, + {file = "cytoolz-0.12.1-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:7eb9e6fa8a82c3d2f519f7d3942898a97792e3895569e9501b9431048289b82f"}, + {file = "cytoolz-0.12.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:ac6784cc43aec51a86cf9058a2a343084f8cf46a9281bea5762bfa608127c53b"}, + {file = "cytoolz-0.12.1-cp36-cp36m-win32.whl", hash = "sha256:794cce219bbcb2f36ca220f27d5afd64eaa854e04901bd6f240be156a578b607"}, + {file = "cytoolz-0.12.1-cp36-cp36m-win_amd64.whl", hash = "sha256:695dd8231e4f1bfb9a2363775a6e4e56ad9d2058058f817203a49614f4bfe33b"}, + {file = "cytoolz-0.12.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1bd8017ef0da935a20106272c5f5ff6b1114add1ccb09cfed1ff7ec5cc01c6d"}, + {file = "cytoolz-0.12.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56e1ebf6eb4438b8c45cbe7e7b22fc65df0c9efa97a70d3bf2f51e08b19756a5"}, + {file = "cytoolz-0.12.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:816c2038008ebf50d81171ddfae377f1af9e71d504ec609469dcb0906bfcf2ae"}, + {file = "cytoolz-0.12.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9bebe58f7a160db7838eb70990c704db4bdc2d58bd364290fd69be0587be8bac"}, + {file = "cytoolz-0.12.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a72440305f634604827f96810e4469877b89f5c060d6852267650a49b0e3768c"}, + {file = "cytoolz-0.12.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b46ebc463bb45f278a2b94e630061c26e10077cb68d4c93583d8f4199699a5ef"}, + {file = "cytoolz-0.12.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:e75e287787e6adafed9d8c3d3e7647c0b5eb460221f9f92d7dfe48b45ba77c0d"}, + {file = "cytoolz-0.12.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:03ab22c9aeb1535f8647d23b6520b0c3d41aaa18d04ef42b352dde1931f2e2b1"}, + {file = "cytoolz-0.12.1-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:b2ac288f27a2689d9e39f4cf4df5437a8eb038eaae515169586c77f9f8fb343a"}, + {file = "cytoolz-0.12.1-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:97a24c0d0806fcf9a6e75fc18aeb95adc37eb0baf6451f10a2de23ffd815329d"}, + {file = "cytoolz-0.12.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:42c9e5cd2a48a257b1f2402334b48122501f249b8dcf77082f569f2680f185eb"}, + {file = "cytoolz-0.12.1-cp37-cp37m-win32.whl", hash = "sha256:35fae4eaa0eaf9072a5fe2d244a79e65baae4e5ddbe9cc629c5037af800213a2"}, + {file = "cytoolz-0.12.1-cp37-cp37m-win_amd64.whl", hash = "sha256:5af43ca7026ead3dd08b261e4f7163cd2cf3ceaa74fa5a81f7b7ea5d445e41d6"}, + {file = "cytoolz-0.12.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:fcc378fa97f02fbcef090b3611305425d72bd1c0afdd13ef4a82dc67d40638b6"}, + {file = "cytoolz-0.12.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cc3645cf6b9246cb8e179db2803e4f0d148211d2a2cf22d5c9b5219111cd91a0"}, + {file = "cytoolz-0.12.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2b245b824f4705aef0e4a03fafef3ad6cb59ef43cc564cdbf683ee28dfc11ad5"}, + {file = "cytoolz-0.12.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c1964dcb5f250fd13fac210944b20810d61ef4094a17fbbe502ab7a7eaeeace7"}, + {file = "cytoolz-0.12.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f7194a22a4a24f3561cb6ad1cca9c9b2f2cf34cc8d4bce6d6a24c80960323fa8"}, + {file = "cytoolz-0.12.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1c5434db53f3a94a37ad8aedb231901e001995d899af6ed1165f3d27fa04a6a"}, + {file = "cytoolz-0.12.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b30cd083ef8af4ba66d9fe5cc75c653ede3f2655f97a032db1a14cc8a006719c"}, + {file = "cytoolz-0.12.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:bef934bd3e024d512c6c0ad1c66eb173f61d9ccb4dbca8d75f727a5604f7c2f6"}, + {file = "cytoolz-0.12.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:37320669c364f7d370392af33cc1034b4563da66c22cd3261e3530f4d30dbe4b"}, + {file = "cytoolz-0.12.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:3cb95d23defb2322cddf70efb4af6dac191d95edaa343e8c1f58f1afa4f92ecd"}, + {file = "cytoolz-0.12.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:ac5895d5f78dbd8646fe37266655ba4995f9cfec38a86595282fee69e41787da"}, + {file = "cytoolz-0.12.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:499af2aff04f65b4c23de1df08e1d1484a93b23ddaaa0163e44b5070b68356eb"}, + {file = "cytoolz-0.12.1-cp38-cp38-win32.whl", hash = "sha256:aa61e3da751a2dfe95aeca603f3ef510071a136ba9905f61ae6cb5d0696271ad"}, + {file = "cytoolz-0.12.1-cp38-cp38-win_amd64.whl", hash = "sha256:f5b43ce952a5a31441556c55f5f5f5a8e62c28581a0ff2a2c31c04ef992d73bd"}, + {file = "cytoolz-0.12.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b8b8f88251b84b3877254cdd59c86a1dc6b2b39a03c6c9c067d344ef879562e0"}, + {file = "cytoolz-0.12.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d72415b0110f7958dd3a5ee98a70166f47bd42ede85e3535669c794d06f57406"}, + {file = "cytoolz-0.12.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8101ab6de5aa0b26a2b5032bc488d430010c91863e701812d65836b03a12f61"}, + {file = "cytoolz-0.12.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2eed428b5e68c28abf2c71195e799850e040d67a27c05f7785319c611665b86a"}, + {file = "cytoolz-0.12.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:59641eb1f41cb688b3cb2f98c9003c493a5024325f76b5c02333d08dd972127c"}, + {file = "cytoolz-0.12.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a48940ff0449ffcf690310bf9228bb57885f7571406ed2fe05c98e299987195"}, + {file = "cytoolz-0.12.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bae431a5985cdb2014be09d37206c288e0d063940cf9539e9769bd2ec26b220"}, + {file = "cytoolz-0.12.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:cb8b10405960a8e6801a4702af98ea640130ec6ecfc1208195762de3f5503ba9"}, + {file = "cytoolz-0.12.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:3c9a16a5b4f54d5c0a131f56b0ca65998a9a74958b5b36840c280edba4f8b907"}, + {file = "cytoolz-0.12.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:49911cb533c96d275e31e7eaeb0742ac3f7afe386a1d8c40937814d75039a0f7"}, + {file = "cytoolz-0.12.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:dbae37d48ef5a0ab90cfaf2b9312d96f034b1c828208a9cbe25377a1b19ba129"}, + {file = "cytoolz-0.12.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c34e69be4429633fc614febe3127fa03aa418a1abb9252f29d9ba5b3394573a5"}, + {file = "cytoolz-0.12.1-cp39-cp39-win32.whl", hash = "sha256:0d474dacbafbdbb44c7de986bbf71ff56ae62df0d52ab3b6fa966784dc88737a"}, + {file = "cytoolz-0.12.1-cp39-cp39-win_amd64.whl", hash = "sha256:3d6d0b0075731832343eb88229cea4bf39e96f3fc7acbc449aadbdfec2842703"}, + {file = "cytoolz-0.12.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:8506d1863f30d26f577c4ed59d2cfd03d2f39569f9cbaa02a764a9de73d312d5"}, + {file = "cytoolz-0.12.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a1eae39656a1685e8b3f433eecfd72015ce5c1d7519e9c8f9402153c68331bb"}, + {file = "cytoolz-0.12.1-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a0055943074c6c85b77fcc3f42f7c54010a3478daa2ed9d6243d0411c84a4d3"}, + {file = "cytoolz-0.12.1-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8a7a325b8fe885a6dd91093616c703134f2dacbd869bc519970df3849c2a15b"}, + {file = "cytoolz-0.12.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:7b60caf0fa5f1b49f1062f7dc0f66c7b23e2736bad50fa8296bfb845995e3051"}, + {file = "cytoolz-0.12.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:980e7eb7205e01816a92f3290cfc80507957e64656b9271a0dfebb85fe3718c0"}, + {file = "cytoolz-0.12.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06d38a40fe153f23cda0e823413fe9d9ebee89dd461827285316eff929fb121e"}, + {file = "cytoolz-0.12.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d540e9c34a61b53b6a374ea108794a48388178f7889d772e364cdbd6df37774c"}, + {file = "cytoolz-0.12.1-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:117871f036926e42d3abcee587eafa9dc7383f1064ac53a806d33e76604de311"}, + {file = "cytoolz-0.12.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:31131b54a0c72efc0eb432dc66df546c6a54f2a7d396c9a34cf65ac1c26b1df8"}, + {file = "cytoolz-0.12.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:4534cbfad73cdb1a6dad495530d4186d57d73089c01e9cb0558caab50e46cb3b"}, + {file = "cytoolz-0.12.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50db41e875e36aec11881b8b12bc69c6f4836b7dd9e88a9e5bbf26c2cb3ba6cd"}, + {file = "cytoolz-0.12.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6716855f9c669c9e25a185d88e0f169839bf8553d16496796325acd114607c11"}, + {file = "cytoolz-0.12.1-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f32452e833f0605b871626e6c61b71b0cba24233aad0e04accc3240497d4995"}, + {file = "cytoolz-0.12.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:ba74c239fc6cb6e962eabc420967c7565f3f363b776c89b3df5234caecf1f463"}, + {file = "cytoolz-0.12.1.tar.gz", hash = "sha256:fc33909397481c90de3cec831bfb88d97e220dc91939d996920202f184b4648e"}, +] + +[package.dependencies] +toolz = ">=0.8.0" + +[package.extras] +cython = ["cython"] + +[[package]] +name = "decli" +version = "0.5.2" +description = "Minimal, easy-to-use, declarative cli tool" +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "decli-0.5.2-py3-none-any.whl", hash = "sha256:d3207bc02d0169bf6ed74ccca09ce62edca0eb25b0ebf8bf4ae3fb8333e15ca0"}, + {file = "decli-0.5.2.tar.gz", hash = "sha256:f2cde55034a75c819c630c7655a844c612f2598c42c21299160465df6ad463ad"}, +] + +[[package]] +name = "decorator" +version = "5.1.1" +description = "Decorators for Humans" +category = "dev" +optional = false +python-versions = ">=3.5" +files = [ + {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, + {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, +] + +[[package]] +name = "defusedxml" +version = "0.7.1" +description = "XML bomb protection for Python stdlib modules" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, + {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, +] + +[[package]] +name = "distlib" +version = "0.3.6" +description = "Distribution utilities" +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "distlib-0.3.6-py2.py3-none-any.whl", hash = "sha256:f35c4b692542ca110de7ef0bea44d73981caeb34ca0b9b6b2e6d7790dda8f80e"}, + {file = "distlib-0.3.6.tar.gz", hash = "sha256:14bad2d9b04d3a36127ac97f30b12a19268f211063d8f8ee4f47108896e11b46"}, +] + +[[package]] +name = "docstring-parser" +version = "0.15" +description = "Parse Python docstrings in reST, Google and Numpydoc format" +category = "dev" +optional = false +python-versions = ">=3.6,<4.0" +files = [ + {file = "docstring_parser-0.15-py3-none-any.whl", hash = "sha256:d1679b86250d269d06a99670924d6bce45adc00b08069dae8c47d98e89b667a9"}, + {file = "docstring_parser-0.15.tar.gz", hash = "sha256:48ddc093e8b1865899956fcc03b03e66bb7240c310fac5af81814580c55bf682"}, +] + +[[package]] +name = "docutils" +version = "0.17.1" +description = "Docutils -- Python Documentation Utilities" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "docutils-0.17.1-py2.py3-none-any.whl", hash = "sha256:cf316c8370a737a022b72b56874f6602acf974a37a9fba42ec2876387549fc61"}, + {file = "docutils-0.17.1.tar.gz", hash = "sha256:686577d2e4c32380bb50cbb22f575ed742d58168cee37e99117a854bcd88f125"}, +] + +[[package]] +name = "dparse" +version = "0.6.2" +description = "A parser for Python dependency files" +category = "dev" +optional = false +python-versions = ">=3.5" +files = [ + {file = "dparse-0.6.2-py3-none-any.whl", hash = "sha256:8097076f1dd26c377f30d4745e6ec18fef42f3bf493933b842ac5bafad8c345f"}, + {file = "dparse-0.6.2.tar.gz", hash = "sha256:d45255bda21f998bc7ddf2afd5e62505ba6134756ba2d42a84c56b0826614dfe"}, +] + +[package.dependencies] +packaging = "*" +toml = "*" + +[package.extras] +conda = ["pyyaml"] +pipenv = ["pipenv"] + +[[package]] +name = "entrypoints" +version = "0.4" +description = "Discover and load entry points from installed packages." +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "entrypoints-0.4-py3-none-any.whl", hash = "sha256:f174b5ff827504fd3cd97cc3f8649f3693f51538c7e4bdf3ef002c8429d42f9f"}, + {file = "entrypoints-0.4.tar.gz", hash = "sha256:b706eddaa9218a19ebcd67b56818f05bb27589b1ca9e8d797b74affad4ccacd4"}, +] + +[[package]] +name = "exceptiongroup" +version = "1.1.0" +description = "Backport of PEP 654 (exception groups)" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "exceptiongroup-1.1.0-py3-none-any.whl", hash = "sha256:327cbda3da756e2de031a3107b81ab7b3770a602c4d16ca618298c526f4bec1e"}, + {file = "exceptiongroup-1.1.0.tar.gz", hash = "sha256:bcb67d800a4497e1b404c2dd44fca47d3b7a5e5433dbab67f96c1a685cdfdf23"}, +] + +[package.extras] +test = ["pytest (>=6)"] + +[[package]] +name = "executing" +version = "1.2.0" +description = "Get the currently executing AST node of a frame, and other information" +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "executing-1.2.0-py2.py3-none-any.whl", hash = "sha256:0314a69e37426e3608aada02473b4161d4caf5a4b244d1d0c48072b8fee7bacc"}, + {file = "executing-1.2.0.tar.gz", hash = "sha256:19da64c18d2d851112f09c287f8d3dbbdf725ab0e569077efb6cdcbd3497c107"}, +] + +[package.extras] +tests = ["asttokens", "littleutils", "pytest", "rich"] + +[[package]] +name = "falcon" +version = "2.0.0" +description = "An unladen web framework for building APIs and app backends." +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "falcon-2.0.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:733033ec80c896e30a43ab3e776856096836787197a44eb21022320a61311983"}, + {file = "falcon-2.0.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:f93351459f110b4c1ee28556aef9a791832df6f910bea7b3f616109d534df06b"}, + {file = "falcon-2.0.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:e9efa0791b5d9f9dd9689015ea6bce0a27fcd5ecbcd30e6d940bffa4f7f03389"}, + {file = "falcon-2.0.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:59d1e8c993b9a37ea06df9d72cf907a46cc8063b30717cdac2f34d1658b6f936"}, + {file = "falcon-2.0.0-cp34-cp34m-manylinux1_i686.whl", hash = "sha256:a5ebb22a04c9cc65081938ee7651b4e3b4d2a28522ea8ec04c7bdd2b3e9e8cd8"}, + {file = "falcon-2.0.0-cp34-cp34m-manylinux1_x86_64.whl", hash = "sha256:95bf6ce986c1119aef12c9b348f4dee9c6dcc58391bdd0bc2b0bf353c2b15986"}, + {file = "falcon-2.0.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:aa184895d1ad4573fbfaaf803563d02f019ebdf4790e41cc568a330607eae439"}, + {file = "falcon-2.0.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:74cf1d18207381c665b9e6292d65100ce146d958707793174b03869dc6e614f4"}, + {file = "falcon-2.0.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:24adcd2b29a8ffa9d552dc79638cd21736a3fb04eda7d102c6cebafdaadb88ad"}, + {file = "falcon-2.0.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:18157af2a4fc3feedf2b5dcc6196f448639acf01c68bc33d4d5a04c3ef87f494"}, + {file = "falcon-2.0.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:e3782b7b92fefd46a6ad1fd8fe63fe6c6f1b7740a95ca56957f48d1aee34b357"}, + {file = "falcon-2.0.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:9712975adcf8c6e12876239085ad757b8fdeba223d46d23daef82b47658f83a9"}, + {file = "falcon-2.0.0-py2.py3-none-any.whl", hash = "sha256:54f2cb4b687035b2a03206dbfc538055cc48b59a953187b0458aa1b574d47b53"}, + {file = "falcon-2.0.0.tar.gz", hash = "sha256:eea593cf466b9c126ce667f6d30503624ef24459f118c75594a69353b6c3d5fc"}, +] + +[[package]] +name = "fastjsonschema" +version = "2.16.2" +description = "Fastest Python implementation of JSON schema" +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "fastjsonschema-2.16.2-py3-none-any.whl", hash = "sha256:21f918e8d9a1a4ba9c22e09574ba72267a6762d47822db9add95f6454e51cc1c"}, + {file = "fastjsonschema-2.16.2.tar.gz", hash = "sha256:01e366f25d9047816fe3d288cbfc3e10541daf0af2044763f3d0ade42476da18"}, +] + +[package.extras] +devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benchmark", "pytest-cache", "validictory"] + +[[package]] +name = "filelock" +version = "3.9.0" +description = "A platform independent file lock." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "filelock-3.9.0-py3-none-any.whl", hash = "sha256:f58d535af89bb9ad5cd4df046f741f8553a418c01a7856bf0d173bbc9f6bd16d"}, + {file = "filelock-3.9.0.tar.gz", hash = "sha256:7b319f24340b51f55a2bf7a12ac0755a9b03e718311dac567a0f4f7fabd2f5de"}, +] + +[package.extras] +docs = ["furo (>=2022.12.7)", "sphinx (>=5.3)", "sphinx-autodoc-typehints (>=1.19.5)"] +testing = ["covdefaults (>=2.2.2)", "coverage (>=7.0.1)", "pytest (>=7.2)", "pytest-cov (>=4)", "pytest-timeout (>=2.1)"] + +[[package]] +name = "flake8" +version = "6.0.0" +description = "the modular source code checker: pep8 pyflakes and co" +category = "dev" +optional = false +python-versions = ">=3.8.1" +files = [ + {file = "flake8-6.0.0-py2.py3-none-any.whl", hash = "sha256:3833794e27ff64ea4e9cf5d410082a8b97ff1a06c16aa3d2027339cd0f1195c7"}, + {file = "flake8-6.0.0.tar.gz", hash = "sha256:c61007e76655af75e6785a931f452915b371dc48f56efd765247c8fe68f2b181"}, +] + +[package.dependencies] +mccabe = ">=0.7.0,<0.8.0" +pycodestyle = ">=2.10.0,<2.11.0" +pyflakes = ">=3.0.0,<3.1.0" + +[[package]] +name = "flake8-bugbear" +version = "23.1.20" +description = "A plugin for flake8 finding likely bugs and design problems in your program. Contains warnings that don't belong in pyflakes and pycodestyle." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "flake8-bugbear-23.1.20.tar.gz", hash = "sha256:55902ab5a48c5ea53d8689ecd146eda548e72f2724192b9c1d68f6d975d13c06"}, + {file = "flake8_bugbear-23.1.20-py3-none-any.whl", hash = "sha256:04a115e5f9c8e87c38bdbbcdf9f58223ffe05469c07c9a7bd8633330bc4d078b"}, +] + +[package.dependencies] +attrs = ">=19.2.0" +flake8 = ">=3.0.0" + +[package.extras] +dev = ["coverage", "hypothesis", "hypothesmith (>=0.2)", "pre-commit", "pytest", "tox"] + +[[package]] +name = "fonttools" +version = "4.38.0" +description = "Tools to manipulate font files" +category = "main" +optional = true +python-versions = ">=3.7" +files = [ + {file = "fonttools-4.38.0-py3-none-any.whl", hash = "sha256:820466f43c8be8c3009aef8b87e785014133508f0de64ec469e4efb643ae54fb"}, + {file = "fonttools-4.38.0.zip", hash = "sha256:2bb244009f9bf3fa100fc3ead6aeb99febe5985fa20afbfbaa2f8946c2fbdaf1"}, +] + +[package.extras] +all = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "fs (>=2.2.0,<3)", "lxml (>=4.0,<5)", "lz4 (>=1.7.4.2)", "matplotlib", "munkres", "scipy", "skia-pathops (>=0.5.0)", "sympy", "uharfbuzz (>=0.23.0)", "unicodedata2 (>=14.0.0)", "xattr", "zopfli (>=0.1.4)"] +graphite = ["lz4 (>=1.7.4.2)"] +interpolatable = ["munkres", "scipy"] +lxml = ["lxml (>=4.0,<5)"] +pathops = ["skia-pathops (>=0.5.0)"] +plot = ["matplotlib"] +repacker = ["uharfbuzz (>=0.23.0)"] +symfont = ["sympy"] +type1 = ["xattr"] +ufo = ["fs (>=2.2.0,<3)"] +unicode = ["unicodedata2 (>=14.0.0)"] +woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"] + +[[package]] +name = "future" +version = "0.18.3" +description = "Clean single-source support for Python 3 and 2" +category = "main" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "future-0.18.3.tar.gz", hash = "sha256:34a17436ed1e96697a86f9de3d15a3b0be01d8bc8de9c1dffd59fb8234ed5307"}, +] + +[[package]] +name = "ghp-import" +version = "2.1.0" +description = "Copy your docs directly to the gh-pages branch." +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"}, + {file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619"}, +] + +[package.dependencies] +python-dateutil = ">=2.8.1" + +[package.extras] +dev = ["flake8", "markdown", "twine", "wheel"] + +[[package]] +name = "gitdb" +version = "4.0.10" +description = "Git Object Database" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "gitdb-4.0.10-py3-none-any.whl", hash = "sha256:c286cf298426064079ed96a9e4a9d39e7f3e9bf15ba60701e95f5492f28415c7"}, + {file = "gitdb-4.0.10.tar.gz", hash = "sha256:6eb990b69df4e15bad899ea868dc46572c3f75339735663b81de79b06f17eb9a"}, +] + +[package.dependencies] +smmap = ">=3.0.1,<6" + +[[package]] +name = "gitpython" +version = "3.1.30" +description = "GitPython is a python library used to interact with Git repositories" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "GitPython-3.1.30-py3-none-any.whl", hash = "sha256:cd455b0000615c60e286208ba540271af9fe531fa6a87cc590a7298785ab2882"}, + {file = "GitPython-3.1.30.tar.gz", hash = "sha256:769c2d83e13f5d938b7688479da374c4e3d49f71549aaf462b646db9602ea6f8"}, +] + +[package.dependencies] +gitdb = ">=4.0.1,<5" + +[[package]] +name = "graphviz" +version = "0.20.1" +description = "Simple Python interface for Graphviz" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "graphviz-0.20.1-py3-none-any.whl", hash = "sha256:587c58a223b51611c0cf461132da386edd896a029524ca61a1462b880bf97977"}, + {file = "graphviz-0.20.1.zip", hash = "sha256:8c58f14adaa3b947daf26c19bc1e98c4e0702cdc31cf99153e6f06904d492bf8"}, +] + +[package.extras] +dev = ["flake8", "pep8-naming", "tox (>=3)", "twine", "wheel"] +docs = ["sphinx (>=5)", "sphinx-autodoc-typehints", "sphinx-rtd-theme"] +test = ["coverage", "mock (>=4)", "pytest (>=7)", "pytest-cov", "pytest-mock (>=3)"] + +[[package]] +name = "h5py" +version = "3.8.0" +description = "Read and write HDF5 files from Python" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "h5py-3.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:533d7dad466ddb7e3b30af274b630eb7c1a6e4ddf01d1c373a0334dc2152110a"}, + {file = "h5py-3.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c873ba9fd4fa875ad62ce0e4891725e257a8fe7f5abdbc17e51a5d54819be55c"}, + {file = "h5py-3.8.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:98a240cd4c1bfd568aaa52ec42d263131a2582dab82d74d3d42a0d954cac12be"}, + {file = "h5py-3.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3389b63222b1c7a158bb7fe69d11ca00066740ec5574596d47a2fe5317f563a"}, + {file = "h5py-3.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:7f3350fc0a8407d668b13247861c2acd23f7f5fe7d060a3ad9b0820f5fcbcae0"}, + {file = "h5py-3.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:db03e3f2c716205fbdabb34d0848459840585225eb97b4f08998c743821ca323"}, + {file = "h5py-3.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:36761693efbe53df179627a775476dcbc37727d6e920958277a7efbc18f1fb73"}, + {file = "h5py-3.8.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a506fc223def428f4329e7e1f9fe1c8c593eab226e7c0942c8d75308ad49950"}, + {file = "h5py-3.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33b15aae79e9147aebe1d0e54099cbcde8d65e3e227cd5b59e49b1272aa0e09d"}, + {file = "h5py-3.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:9f6f6ffadd6bfa9b2c5b334805eb4b19ca0a5620433659d8f7fb86692c40a359"}, + {file = "h5py-3.8.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8f55d9c6c84d7d09c79fb85979e97b81ec6071cc776a97eb6b96f8f6ec767323"}, + {file = "h5py-3.8.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b685453e538b2b5934c58a644ac3f3b3d0cec1a01b6fb26d57388e9f9b674ad0"}, + {file = "h5py-3.8.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:377865821fe80ad984d003723d6f8890bd54ceeb5981b43c0313b9df95411b30"}, + {file = "h5py-3.8.0-cp37-cp37m-win_amd64.whl", hash = "sha256:0fef76e10b9216657fa37e7edff6d8be0709b25bd5066474c229b56cf0098df9"}, + {file = "h5py-3.8.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:26ffc344ec9984d2cd3ca0265007299a8bac8d85c1ad48f4639d8d3aed2af171"}, + {file = "h5py-3.8.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bacaa1c16810dd2b3e4417f8e730971b7c4d53d234de61fe4a918db78e80e1e4"}, + {file = "h5py-3.8.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bae730580ae928de409d63cbe4fdca4c82c3ad2bed30511d19d34e995d63c77e"}, + {file = "h5py-3.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f47f757d1b76f0ecb8aa0508ec8d1b390df67a8b67ee2515dc1b046f3a1596ea"}, + {file = "h5py-3.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:f891b17e3a3e974e93f9e34e7cca9f530806543571ce078998676a555837d91d"}, + {file = "h5py-3.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:290e00fa2de74a10688d1bac98d5a9cdd43f14f58e562c580b5b3dfbd358ecae"}, + {file = "h5py-3.8.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:03890b1c123d024fb0239a3279737d5432498c1901c354f8b10d8221d1d16235"}, + {file = "h5py-3.8.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7865de06779b14d98068da387333ad9bf2756b5b579cc887fac169bc08f87c3"}, + {file = "h5py-3.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49bc857635f935fa30e92e61ac1e87496df8f260a6945a3235e43a9890426866"}, + {file = "h5py-3.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:5fd2252d1fc364ba0e93dd0b7089f4906b66805cb4e6aca7fa8874ac08649647"}, + {file = "h5py-3.8.0.tar.gz", hash = "sha256:6fead82f0c4000cf38d53f9c030780d81bfa0220218aee13b90b7701c937d95f"}, +] + +[package.dependencies] +numpy = ">=1.14.5" + +[[package]] +name = "hug" +version = "2.6.1" +description = "A Python framework that makes developing APIs as simple as possible, but no simpler." +category = "dev" +optional = false +python-versions = ">=3.5" +files = [ + {file = "hug-2.6.1-py2.py3-none-any.whl", hash = "sha256:31c8fc284f81377278629a4b94cbb619ae9ce829cdc2da9564ccc66a121046b4"}, + {file = "hug-2.6.1.tar.gz", hash = "sha256:b0edace2acb618873779c9ce6ecf9165db54fef95c22262f5700fcdd9febaec9"}, +] + +[package.dependencies] +falcon = "2.0.0" +requests = "*" + +[[package]] +name = "identify" +version = "2.5.17" +description = "File identification library for Python" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "identify-2.5.17-py2.py3-none-any.whl", hash = "sha256:7d526dd1283555aafcc91539acc061d8f6f59adb0a7bba462735b0a318bff7ed"}, + {file = "identify-2.5.17.tar.gz", hash = "sha256:93cc61a861052de9d4c541a7acb7e3dcc9c11b398a2144f6e52ae5285f5f4f06"}, +] + +[package.extras] +license = ["ukkonen"] + +[[package]] +name = "idna" +version = "3.4" +description = "Internationalized Domain Names in Applications (IDNA)" +category = "dev" +optional = false +python-versions = ">=3.5" +files = [ + {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, + {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, +] + +[[package]] +name = "imagesize" +version = "1.4.1" +description = "Getting image size from png/jpeg/jpeg2000/gif file" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b"}, + {file = "imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"}, +] + +[[package]] +name = "importlib-metadata" +version = "6.0.0" +description = "Read metadata from Python packages" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "importlib_metadata-6.0.0-py3-none-any.whl", hash = "sha256:7efb448ec9a5e313a57655d35aa54cd3e01b7e1fbcf72dce1bf06119420f5bad"}, + {file = "importlib_metadata-6.0.0.tar.gz", hash = "sha256:e354bedeb60efa6affdcc8ae121b73544a7aa74156d047311948f6d711cd378d"}, +] + +[package.dependencies] +zipp = ">=0.5" + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +perf = ["ipython"] +testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)"] + +[[package]] +name = "iniconfig" +version = "2.0.0" +description = "brain-dead simple config-ini parsing" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, + {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, +] + +[[package]] +name = "intel-openmp" +version = "2022.2.1" +description = "Intel® OpenMP* Runtime Library" +category = "main" +optional = true +python-versions = "*" +files = [ + {file = "intel_openmp-2022.2.1-py2.py3-none-macosx_10_15_x86_64.macosx_11_0_x86_64.whl", hash = "sha256:6ae4a878135ec08aa16dd97b6d72ac16bb92fad4c6ba40f28b3558d70b1f447a"}, + {file = "intel_openmp-2022.2.1-py2.py3-none-manylinux1_i686.whl", hash = "sha256:c8b95fc493e2945b259153f7b0dd34a3d849e8e1e43b6c14ac04f613b3b45433"}, + {file = "intel_openmp-2022.2.1-py2.py3-none-manylinux1_x86_64.whl", hash = "sha256:342c9e2b6e1500a9fb8d39828293ab5f9bb310b81fad7eba5c9d865001b95a7e"}, + {file = "intel_openmp-2022.2.1-py2.py3-none-win32.whl", hash = "sha256:22e09934d9f8f8b864ae68cab95bf43667f00d24e4675eb6d2a4ee089754c439"}, + {file = "intel_openmp-2022.2.1-py2.py3-none-win_amd64.whl", hash = "sha256:77414289c14cb48d7f99926da69c9ced9e70c27feb825b0608f304f9d49844ae"}, +] + +[[package]] +name = "ipython" +version = "8.9.0" +description = "IPython: Productive Interactive Computing" +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "ipython-8.9.0-py3-none-any.whl", hash = "sha256:9c207b0ef2d276d1bfcfeb9a62804336abbe4b170574ea061500952319b1d78c"}, + {file = "ipython-8.9.0.tar.gz", hash = "sha256:71618e82e6d59487bea059626e7c79fb4a5b760d1510d02fab1160db6fdfa1f7"}, +] + +[package.dependencies] +appnope = {version = "*", markers = "sys_platform == \"darwin\""} +backcall = "*" +colorama = {version = "*", markers = "sys_platform == \"win32\""} +decorator = "*" +jedi = ">=0.16" +matplotlib-inline = "*" +pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""} +pickleshare = "*" +prompt-toolkit = ">=3.0.30,<3.1.0" +pygments = ">=2.4.0" +stack-data = "*" +traitlets = ">=5" + +[package.extras] +all = ["black", "curio", "docrepr", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib", "matplotlib (!=3.2.0)", "nbconvert", "nbformat", "notebook", "numpy (>=1.20)", "pandas", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "qtconsole", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "trio", "typing-extensions"] +black = ["black"] +doc = ["docrepr", "ipykernel", "matplotlib", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "typing-extensions"] +kernel = ["ipykernel"] +nbconvert = ["nbconvert"] +nbformat = ["nbformat"] +notebook = ["ipywidgets", "notebook"] +parallel = ["ipyparallel"] +qtconsole = ["qtconsole"] +test = ["pytest (<7.1)", "pytest-asyncio", "testpath"] +test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.20)", "pandas", "pytest (<7.1)", "pytest-asyncio", "testpath", "trio"] + +[[package]] +name = "isort" +version = "5.12.0" +description = "A Python utility / library to sort Python imports." +category = "dev" +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "isort-5.12.0-py3-none-any.whl", hash = "sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6"}, + {file = "isort-5.12.0.tar.gz", hash = "sha256:8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504"}, +] + +[package.extras] +colors = ["colorama (>=0.4.3)"] +pipfile-deprecated-finder = ["pip-shims (>=0.5.2)", "pipreqs", "requirementslib"] +plugins = ["setuptools"] +requirements-deprecated-finder = ["pip-api", "pipreqs"] + +[[package]] +name = "jedi" +version = "0.18.2" +description = "An autocompletion tool for Python that can be used for text editors." +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "jedi-0.18.2-py2.py3-none-any.whl", hash = "sha256:203c1fd9d969ab8f2119ec0a3342e0b49910045abe6af0a3ae83a5764d54639e"}, + {file = "jedi-0.18.2.tar.gz", hash = "sha256:bae794c30d07f6d910d32a7048af09b5a39ed740918da923c6b780790ebac612"}, +] + +[package.dependencies] +parso = ">=0.8.0,<0.9.0" + +[package.extras] +docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx (==1.8.5)", "sphinx-rtd-theme (==0.4.3)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"] +qa = ["flake8 (==3.8.3)", "mypy (==0.782)"] +testing = ["Django (<3.1)", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] + +[[package]] +name = "jinja2" +version = "3.1.2" +description = "A very fast and expressive template engine." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, + {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, +] + +[package.dependencies] +MarkupSafe = ">=2.0" + +[package.extras] +i18n = ["Babel (>=2.7)"] + +[[package]] +name = "jinja2-time" +version = "0.2.0" +description = "Jinja2 Extension for Dates and Times" +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "jinja2-time-0.2.0.tar.gz", hash = "sha256:d14eaa4d315e7688daa4969f616f226614350c48730bfa1692d2caebd8c90d40"}, + {file = "jinja2_time-0.2.0-py2.py3-none-any.whl", hash = "sha256:d3eab6605e3ec8b7a0863df09cc1d23714908fa61aa6986a845c20ba488b4efa"}, +] + +[package.dependencies] +arrow = "*" +jinja2 = "*" + +[[package]] +name = "jsonschema" +version = "4.17.3" +description = "An implementation of JSON Schema validation for Python" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "jsonschema-4.17.3-py3-none-any.whl", hash = "sha256:a870ad254da1a8ca84b6a2905cac29d265f805acc57af304784962a2aa6508f6"}, + {file = "jsonschema-4.17.3.tar.gz", hash = "sha256:0f864437ab8b6076ba6707453ef8f98a6a0d512a80e93f8abdb676f737ecb60d"}, +] + +[package.dependencies] +attrs = ">=17.4.0" +pyrsistent = ">=0.14.0,<0.17.0 || >0.17.0,<0.17.1 || >0.17.1,<0.17.2 || >0.17.2" + +[package.extras] +format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] +format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"] + +[[package]] +name = "jupyter-client" +version = "8.0.2" +description = "Jupyter protocol implementation and client libraries" +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyter_client-8.0.2-py3-none-any.whl", hash = "sha256:c53731eb590b68839b0ce04bf46ff8c4f03278f5d9fe5c3b0f268a57cc2bd97e"}, + {file = "jupyter_client-8.0.2.tar.gz", hash = "sha256:47ac9f586dbcff4d79387ec264faf0fdeb5f14845fa7345fd7d1e378f8096011"}, +] + +[package.dependencies] +importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""} +jupyter-core = ">=4.12,<5.0.0 || >=5.1.0" +python-dateutil = ">=2.8.2" +pyzmq = ">=23.0" +tornado = ">=6.2" +traitlets = ">=5.3" + +[package.extras] +docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] +test = ["codecov", "coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] + +[[package]] +name = "jupyter-core" +version = "5.2.0" +description = "Jupyter core package. A base package on which Jupyter projects rely." +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyter_core-5.2.0-py3-none-any.whl", hash = "sha256:4bdc2928c37f6917130c667d8b8708f20aee539d8283c6be72aabd2a4b4c83b0"}, + {file = "jupyter_core-5.2.0.tar.gz", hash = "sha256:1407cdb4c79ee467696c04b76633fc1884015fa109323365a6372c8e890cc83f"}, +] + +[package.dependencies] +platformdirs = ">=2.5" +pywin32 = {version = ">=1.0", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""} +traitlets = ">=5.3" + +[package.extras] +docs = ["myst-parser", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "traitlets"] +test = ["ipykernel", "pre-commit", "pytest", "pytest-cov", "pytest-timeout"] + +[[package]] +name = "jupyterlab-pygments" +version = "0.2.2" +description = "Pygments theme using JupyterLab CSS variables" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "jupyterlab_pygments-0.2.2-py2.py3-none-any.whl", hash = "sha256:2405800db07c9f770863bcf8049a529c3dd4d3e28536638bd7c1c01d2748309f"}, + {file = "jupyterlab_pygments-0.2.2.tar.gz", hash = "sha256:7405d7fde60819d905a9fa8ce89e4cd830e318cdad22a0030f7a901da705585d"}, +] + +[[package]] +name = "kiwisolver" +version = "1.4.4" +description = "A fast implementation of the Cassowary constraint solver" +category = "main" +optional = true +python-versions = ">=3.7" +files = [ + {file = "kiwisolver-1.4.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2f5e60fabb7343a836360c4f0919b8cd0d6dbf08ad2ca6b9cf90bf0c76a3c4f6"}, + {file = "kiwisolver-1.4.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:10ee06759482c78bdb864f4109886dff7b8a56529bc1609d4f1112b93fe6423c"}, + {file = "kiwisolver-1.4.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c79ebe8f3676a4c6630fd3f777f3cfecf9289666c84e775a67d1d358578dc2e3"}, + {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:abbe9fa13da955feb8202e215c4018f4bb57469b1b78c7a4c5c7b93001699938"}, + {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7577c1987baa3adc4b3c62c33bd1118c3ef5c8ddef36f0f2c950ae0b199e100d"}, + {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8ad8285b01b0d4695102546b342b493b3ccc6781fc28c8c6a1bb63e95d22f09"}, + {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ed58b8acf29798b036d347791141767ccf65eee7f26bde03a71c944449e53de"}, + {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a68b62a02953b9841730db7797422f983935aeefceb1679f0fc85cbfbd311c32"}, + {file = "kiwisolver-1.4.4-cp310-cp310-win32.whl", hash = "sha256:e92a513161077b53447160b9bd8f522edfbed4bd9759e4c18ab05d7ef7e49408"}, + {file = "kiwisolver-1.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:3fe20f63c9ecee44560d0e7f116b3a747a5d7203376abeea292ab3152334d004"}, + {file = "kiwisolver-1.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e0ea21f66820452a3f5d1655f8704a60d66ba1191359b96541eaf457710a5fc6"}, + {file = "kiwisolver-1.4.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bc9db8a3efb3e403e4ecc6cd9489ea2bac94244f80c78e27c31dcc00d2790ac2"}, + {file = "kiwisolver-1.4.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d5b61785a9ce44e5a4b880272baa7cf6c8f48a5180c3e81c59553ba0cb0821ca"}, + {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c2dbb44c3f7e6c4d3487b31037b1bdbf424d97687c1747ce4ff2895795c9bf69"}, + {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6295ecd49304dcf3bfbfa45d9a081c96509e95f4b9d0eb7ee4ec0530c4a96514"}, + {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4bd472dbe5e136f96a4b18f295d159d7f26fd399136f5b17b08c4e5f498cd494"}, + {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf7d9fce9bcc4752ca4a1b80aabd38f6d19009ea5cbda0e0856983cf6d0023f5"}, + {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78d6601aed50c74e0ef02f4204da1816147a6d3fbdc8b3872d263338a9052c51"}, + {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:877272cf6b4b7e94c9614f9b10140e198d2186363728ed0f701c6eee1baec1da"}, + {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:db608a6757adabb32f1cfe6066e39b3706d8c3aa69bbc353a5b61edad36a5cb4"}, + {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:5853eb494c71e267912275e5586fe281444eb5e722de4e131cddf9d442615626"}, + {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:f0a1dbdb5ecbef0d34eb77e56fcb3e95bbd7e50835d9782a45df81cc46949750"}, + {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:283dffbf061a4ec60391d51e6155e372a1f7a4f5b15d59c8505339454f8989e4"}, + {file = "kiwisolver-1.4.4-cp311-cp311-win32.whl", hash = "sha256:d06adcfa62a4431d404c31216f0f8ac97397d799cd53800e9d3efc2fbb3cf14e"}, + {file = "kiwisolver-1.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:e7da3fec7408813a7cebc9e4ec55afed2d0fd65c4754bc376bf03498d4e92686"}, + {file = "kiwisolver-1.4.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:62ac9cc684da4cf1778d07a89bf5f81b35834cb96ca523d3a7fb32509380cbf6"}, + {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41dae968a94b1ef1897cb322b39360a0812661dba7c682aa45098eb8e193dbdf"}, + {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02f79693ec433cb4b5f51694e8477ae83b3205768a6fb48ffba60549080e295b"}, + {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d0611a0a2a518464c05ddd5a3a1a0e856ccc10e67079bb17f265ad19ab3c7597"}, + {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:db5283d90da4174865d520e7366801a93777201e91e79bacbac6e6927cbceede"}, + {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1041feb4cda8708ce73bb4dcb9ce1ccf49d553bf87c3954bdfa46f0c3f77252c"}, + {file = "kiwisolver-1.4.4-cp37-cp37m-win32.whl", hash = "sha256:a553dadda40fef6bfa1456dc4be49b113aa92c2a9a9e8711e955618cd69622e3"}, + {file = "kiwisolver-1.4.4-cp37-cp37m-win_amd64.whl", hash = "sha256:03baab2d6b4a54ddbb43bba1a3a2d1627e82d205c5cf8f4c924dc49284b87166"}, + {file = "kiwisolver-1.4.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:841293b17ad704d70c578f1f0013c890e219952169ce8a24ebc063eecf775454"}, + {file = "kiwisolver-1.4.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f4f270de01dd3e129a72efad823da90cc4d6aafb64c410c9033aba70db9f1ff0"}, + {file = "kiwisolver-1.4.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f9f39e2f049db33a908319cf46624a569b36983c7c78318e9726a4cb8923b26c"}, + {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c97528e64cb9ebeff9701e7938653a9951922f2a38bd847787d4a8e498cc83ae"}, + {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d1573129aa0fd901076e2bfb4275a35f5b7aa60fbfb984499d661ec950320b0"}, + {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ad881edc7ccb9d65b0224f4e4d05a1e85cf62d73aab798943df6d48ab0cd79a1"}, + {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b428ef021242344340460fa4c9185d0b1f66fbdbfecc6c63eff4b7c29fad429d"}, + {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:2e407cb4bd5a13984a6c2c0fe1845e4e41e96f183e5e5cd4d77a857d9693494c"}, + {file = "kiwisolver-1.4.4-cp38-cp38-win32.whl", hash = "sha256:75facbe9606748f43428fc91a43edb46c7ff68889b91fa31f53b58894503a191"}, + {file = "kiwisolver-1.4.4-cp38-cp38-win_amd64.whl", hash = "sha256:5bce61af018b0cb2055e0e72e7d65290d822d3feee430b7b8203d8a855e78766"}, + {file = "kiwisolver-1.4.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8c808594c88a025d4e322d5bb549282c93c8e1ba71b790f539567932722d7bd8"}, + {file = "kiwisolver-1.4.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f0a71d85ecdd570ded8ac3d1c0f480842f49a40beb423bb8014539a9f32a5897"}, + {file = "kiwisolver-1.4.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b533558eae785e33e8c148a8d9921692a9fe5aa516efbdff8606e7d87b9d5824"}, + {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:efda5fc8cc1c61e4f639b8067d118e742b812c930f708e6667a5ce0d13499e29"}, + {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7c43e1e1206cd421cd92e6b3280d4385d41d7166b3ed577ac20444b6995a445f"}, + {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc8d3bd6c72b2dd9decf16ce70e20abcb3274ba01b4e1c96031e0c4067d1e7cd"}, + {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4ea39b0ccc4f5d803e3337dd46bcce60b702be4d86fd0b3d7531ef10fd99a1ac"}, + {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:968f44fdbf6dd757d12920d63b566eeb4d5b395fd2d00d29d7ef00a00582aac9"}, + {file = "kiwisolver-1.4.4-cp39-cp39-win32.whl", hash = "sha256:da7e547706e69e45d95e116e6939488d62174e033b763ab1496b4c29b76fabea"}, + {file = "kiwisolver-1.4.4-cp39-cp39-win_amd64.whl", hash = "sha256:ba59c92039ec0a66103b1d5fe588fa546373587a7d68f5c96f743c3396afc04b"}, + {file = "kiwisolver-1.4.4-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:91672bacaa030f92fc2f43b620d7b337fd9a5af28b0d6ed3f77afc43c4a64b5a"}, + {file = "kiwisolver-1.4.4-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:787518a6789009c159453da4d6b683f468ef7a65bbde796bcea803ccf191058d"}, + {file = "kiwisolver-1.4.4-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da152d8cdcab0e56e4f45eb08b9aea6455845ec83172092f09b0e077ece2cf7a"}, + {file = "kiwisolver-1.4.4-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ecb1fa0db7bf4cff9dac752abb19505a233c7f16684c5826d1f11ebd9472b871"}, + {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:28bc5b299f48150b5f822ce68624e445040595a4ac3d59251703779836eceff9"}, + {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:81e38381b782cc7e1e46c4e14cd997ee6040768101aefc8fa3c24a4cc58e98f8"}, + {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2a66fdfb34e05b705620dd567f5a03f239a088d5a3f321e7b6ac3239d22aa286"}, + {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:872b8ca05c40d309ed13eb2e582cab0c5a05e81e987ab9c521bf05ad1d5cf5cb"}, + {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:70e7c2e7b750585569564e2e5ca9845acfaa5da56ac46df68414f29fea97be9f"}, + {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9f85003f5dfa867e86d53fac6f7e6f30c045673fa27b603c397753bebadc3008"}, + {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e307eb9bd99801f82789b44bb45e9f541961831c7311521b13a6c85afc09767"}, + {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1792d939ec70abe76f5054d3f36ed5656021dcad1322d1cc996d4e54165cef9"}, + {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6cb459eea32a4e2cf18ba5fcece2dbdf496384413bc1bae15583f19e567f3b2"}, + {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:36dafec3d6d6088d34e2de6b85f9d8e2324eb734162fba59d2ba9ed7a2043d5b"}, + {file = "kiwisolver-1.4.4.tar.gz", hash = "sha256:d41997519fcba4a1e46eb4a2fe31bc12f0ff957b2b81bac28db24744f333e955"}, +] + +[[package]] +name = "livereload" +version = "2.6.3" +description = "Python LiveReload is an awesome tool for web developers" +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "livereload-2.6.3-py2.py3-none-any.whl", hash = "sha256:ad4ac6f53b2d62bb6ce1a5e6e96f1f00976a32348afedcb4b6d68df2a1d346e4"}, + {file = "livereload-2.6.3.tar.gz", hash = "sha256:776f2f865e59fde56490a56bcc6773b6917366bce0c267c60ee8aaf1a0959869"}, +] + +[package.dependencies] +six = "*" +tornado = {version = "*", markers = "python_version > \"2.7\""} + +[[package]] +name = "llvmlite" +version = "0.39.1" +description = "lightweight wrapper around basic LLVM functionality" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "llvmlite-0.39.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6717c7a6e93c9d2c3d07c07113ec80ae24af45cde536b34363d4bcd9188091d9"}, + {file = "llvmlite-0.39.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ddab526c5a2c4ccb8c9ec4821fcea7606933dc53f510e2a6eebb45a418d3488a"}, + {file = "llvmlite-0.39.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3f331a323d0f0ada6b10d60182ef06c20a2f01be21699999d204c5750ffd0b4"}, + {file = "llvmlite-0.39.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e2c00ff204afa721b0bb9835b5bf1ba7fba210eefcec5552a9e05a63219ba0dc"}, + {file = "llvmlite-0.39.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16f56eb1eec3cda3a5c526bc3f63594fc24e0c8d219375afeb336f289764c6c7"}, + {file = "llvmlite-0.39.1-cp310-cp310-win32.whl", hash = "sha256:d0bfd18c324549c0fec2c5dc610fd024689de6f27c6cc67e4e24a07541d6e49b"}, + {file = "llvmlite-0.39.1-cp310-cp310-win_amd64.whl", hash = "sha256:7ebf1eb9badc2a397d4f6a6c8717447c81ac011db00064a00408bc83c923c0e4"}, + {file = "llvmlite-0.39.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6546bed4e02a1c3d53a22a0bced254b3b6894693318b16c16c8e43e29d6befb6"}, + {file = "llvmlite-0.39.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1578f5000fdce513712e99543c50e93758a954297575610f48cb1fd71b27c08a"}, + {file = "llvmlite-0.39.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3803f11ad5f6f6c3d2b545a303d68d9fabb1d50e06a8d6418e6fcd2d0df00959"}, + {file = "llvmlite-0.39.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50aea09a2b933dab7c9df92361b1844ad3145bfb8dd2deb9cd8b8917d59306fb"}, + {file = "llvmlite-0.39.1-cp37-cp37m-win32.whl", hash = "sha256:b1a0bbdb274fb683f993198775b957d29a6f07b45d184c571ef2a721ce4388cf"}, + {file = "llvmlite-0.39.1-cp37-cp37m-win_amd64.whl", hash = "sha256:e172c73fccf7d6db4bd6f7de963dedded900d1a5c6778733241d878ba613980e"}, + {file = "llvmlite-0.39.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e31f4b799d530255aaf0566e3da2df5bfc35d3cd9d6d5a3dcc251663656c27b1"}, + {file = "llvmlite-0.39.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:62c0ea22e0b9dffb020601bb65cb11dd967a095a488be73f07d8867f4e327ca5"}, + {file = "llvmlite-0.39.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9ffc84ade195abd4abcf0bd3b827b9140ae9ef90999429b9ea84d5df69c9058c"}, + {file = "llvmlite-0.39.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c0f158e4708dda6367d21cf15afc58de4ebce979c7a1aa2f6b977aae737e2a54"}, + {file = "llvmlite-0.39.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22d36591cd5d02038912321d9ab8e4668e53ae2211da5523f454e992b5e13c36"}, + {file = "llvmlite-0.39.1-cp38-cp38-win32.whl", hash = "sha256:4c6ebace910410daf0bebda09c1859504fc2f33d122e9a971c4c349c89cca630"}, + {file = "llvmlite-0.39.1-cp38-cp38-win_amd64.whl", hash = "sha256:fb62fc7016b592435d3e3a8f680e3ea8897c3c9e62e6e6cc58011e7a4801439e"}, + {file = "llvmlite-0.39.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fa9b26939ae553bf30a9f5c4c754db0fb2d2677327f2511e674aa2f5df941789"}, + {file = "llvmlite-0.39.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e4f212c018db951da3e1dc25c2651abc688221934739721f2dad5ff1dd5f90e7"}, + {file = "llvmlite-0.39.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39dc2160aed36e989610fc403487f11b8764b6650017ff367e45384dff88ffbf"}, + {file = "llvmlite-0.39.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1ec3d70b3e507515936e475d9811305f52d049281eaa6c8273448a61c9b5b7e2"}, + {file = "llvmlite-0.39.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60f8dd1e76f47b3dbdee4b38d9189f3e020d22a173c00f930b52131001d801f9"}, + {file = "llvmlite-0.39.1-cp39-cp39-win32.whl", hash = "sha256:03aee0ccd81735696474dc4f8b6be60774892a2929d6c05d093d17392c237f32"}, + {file = "llvmlite-0.39.1-cp39-cp39-win_amd64.whl", hash = "sha256:3fc14e757bc07a919221f0cbaacb512704ce5774d7fcada793f1996d6bc75f2a"}, + {file = "llvmlite-0.39.1.tar.gz", hash = "sha256:b43abd7c82e805261c425d50335be9a6c4f84264e34d6d6e475207300005d572"}, +] + +[[package]] +name = "lxml" +version = "4.9.2" +description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API." +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4.*" +files = [ + {file = "lxml-4.9.2-cp27-cp27m-macosx_10_15_x86_64.whl", hash = "sha256:76cf573e5a365e790396a5cc2b909812633409306c6531a6877c59061e42c4f2"}, + {file = "lxml-4.9.2-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b1f42b6921d0e81b1bcb5e395bc091a70f41c4d4e55ba99c6da2b31626c44892"}, + {file = "lxml-4.9.2-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:9f102706d0ca011de571de32c3247c6476b55bb6bc65a20f682f000b07a4852a"}, + {file = "lxml-4.9.2-cp27-cp27m-win32.whl", hash = "sha256:8d0b4612b66ff5d62d03bcaa043bb018f74dfea51184e53f067e6fdcba4bd8de"}, + {file = "lxml-4.9.2-cp27-cp27m-win_amd64.whl", hash = "sha256:4c8f293f14abc8fd3e8e01c5bd86e6ed0b6ef71936ded5bf10fe7a5efefbaca3"}, + {file = "lxml-4.9.2-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2899456259589aa38bfb018c364d6ae7b53c5c22d8e27d0ec7609c2a1ff78b50"}, + {file = "lxml-4.9.2-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6749649eecd6a9871cae297bffa4ee76f90b4504a2a2ab528d9ebe912b101975"}, + {file = "lxml-4.9.2-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:a08cff61517ee26cb56f1e949cca38caabe9ea9fbb4b1e10a805dc39844b7d5c"}, + {file = "lxml-4.9.2-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:85cabf64adec449132e55616e7ca3e1000ab449d1d0f9d7f83146ed5bdcb6d8a"}, + {file = "lxml-4.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:8340225bd5e7a701c0fa98284c849c9b9fc9238abf53a0ebd90900f25d39a4e4"}, + {file = "lxml-4.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:1ab8f1f932e8f82355e75dda5413a57612c6ea448069d4fb2e217e9a4bed13d4"}, + {file = "lxml-4.9.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:699a9af7dffaf67deeae27b2112aa06b41c370d5e7633e0ee0aea2e0b6c211f7"}, + {file = "lxml-4.9.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b9cc34af337a97d470040f99ba4282f6e6bac88407d021688a5d585e44a23184"}, + {file = "lxml-4.9.2-cp310-cp310-win32.whl", hash = "sha256:d02a5399126a53492415d4906ab0ad0375a5456cc05c3fc0fc4ca11771745cda"}, + {file = "lxml-4.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:a38486985ca49cfa574a507e7a2215c0c780fd1778bb6290c21193b7211702ab"}, + {file = "lxml-4.9.2-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:c83203addf554215463b59f6399835201999b5e48019dc17f182ed5ad87205c9"}, + {file = "lxml-4.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:2a87fa548561d2f4643c99cd13131acb607ddabb70682dcf1dff5f71f781a4bf"}, + {file = "lxml-4.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:d6b430a9938a5a5d85fc107d852262ddcd48602c120e3dbb02137c83d212b380"}, + {file = "lxml-4.9.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3efea981d956a6f7173b4659849f55081867cf897e719f57383698af6f618a92"}, + {file = "lxml-4.9.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:df0623dcf9668ad0445e0558a21211d4e9a149ea8f5666917c8eeec515f0a6d1"}, + {file = "lxml-4.9.2-cp311-cp311-win32.whl", hash = "sha256:da248f93f0418a9e9d94b0080d7ebc407a9a5e6d0b57bb30db9b5cc28de1ad33"}, + {file = "lxml-4.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:3818b8e2c4b5148567e1b09ce739006acfaa44ce3156f8cbbc11062994b8e8dd"}, + {file = "lxml-4.9.2-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ca989b91cf3a3ba28930a9fc1e9aeafc2a395448641df1f387a2d394638943b0"}, + {file = "lxml-4.9.2-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:822068f85e12a6e292803e112ab876bc03ed1f03dddb80154c395f891ca6b31e"}, + {file = "lxml-4.9.2-cp35-cp35m-win32.whl", hash = "sha256:be7292c55101e22f2a3d4d8913944cbea71eea90792bf914add27454a13905df"}, + {file = "lxml-4.9.2-cp36-cp36m-macosx_10_15_x86_64.whl", hash = "sha256:b26a29f0b7fc6f0897f043ca366142d2b609dc60756ee6e4e90b5f762c6adc53"}, + {file = "lxml-4.9.2-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:ab323679b8b3030000f2be63e22cdeea5b47ee0abd2d6a1dc0c8103ddaa56cd7"}, + {file = "lxml-4.9.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:689bb688a1db722485e4610a503e3e9210dcc20c520b45ac8f7533c837be76fe"}, + {file = "lxml-4.9.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:f49e52d174375a7def9915c9f06ec4e569d235ad428f70751765f48d5926678c"}, + {file = "lxml-4.9.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:36c3c175d34652a35475a73762b545f4527aec044910a651d2bf50de9c3352b1"}, + {file = "lxml-4.9.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a35f8b7fa99f90dd2f5dc5a9fa12332642f087a7641289ca6c40d6e1a2637d8e"}, + {file = "lxml-4.9.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:58bfa3aa19ca4c0f28c5dde0ff56c520fbac6f0daf4fac66ed4c8d2fb7f22e74"}, + {file = "lxml-4.9.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc718cd47b765e790eecb74d044cc8d37d58562f6c314ee9484df26276d36a38"}, + {file = "lxml-4.9.2-cp36-cp36m-win32.whl", hash = "sha256:d5bf6545cd27aaa8a13033ce56354ed9e25ab0e4ac3b5392b763d8d04b08e0c5"}, + {file = "lxml-4.9.2-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:05ca3f6abf5cf78fe053da9b1166e062ade3fa5d4f92b4ed688127ea7d7b1d03"}, + {file = "lxml-4.9.2-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:a5da296eb617d18e497bcf0a5c528f5d3b18dadb3619fbdadf4ed2356ef8d941"}, + {file = "lxml-4.9.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:04876580c050a8c5341d706dd464ff04fd597095cc8c023252566a8826505726"}, + {file = "lxml-4.9.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:c9ec3eaf616d67db0764b3bb983962b4f385a1f08304fd30c7283954e6a7869b"}, + {file = "lxml-4.9.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2a29ba94d065945944016b6b74e538bdb1751a1db6ffb80c9d3c2e40d6fa9894"}, + {file = "lxml-4.9.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a82d05da00a58b8e4c0008edbc8a4b6ec5a4bc1e2ee0fb6ed157cf634ed7fa45"}, + {file = "lxml-4.9.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:223f4232855ade399bd409331e6ca70fb5578efef22cf4069a6090acc0f53c0e"}, + {file = "lxml-4.9.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d17bc7c2ccf49c478c5bdd447594e82692c74222698cfc9b5daae7ae7e90743b"}, + {file = "lxml-4.9.2-cp37-cp37m-win32.whl", hash = "sha256:b64d891da92e232c36976c80ed7ebb383e3f148489796d8d31a5b6a677825efe"}, + {file = "lxml-4.9.2-cp37-cp37m-win_amd64.whl", hash = "sha256:a0a336d6d3e8b234a3aae3c674873d8f0e720b76bc1d9416866c41cd9500ffb9"}, + {file = "lxml-4.9.2-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:da4dd7c9c50c059aba52b3524f84d7de956f7fef88f0bafcf4ad7dde94a064e8"}, + {file = "lxml-4.9.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:821b7f59b99551c69c85a6039c65b75f5683bdc63270fec660f75da67469ca24"}, + {file = "lxml-4.9.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:e5168986b90a8d1f2f9dc1b841467c74221bd752537b99761a93d2d981e04889"}, + {file = "lxml-4.9.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:8e20cb5a47247e383cf4ff523205060991021233ebd6f924bca927fcf25cf86f"}, + {file = "lxml-4.9.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:13598ecfbd2e86ea7ae45ec28a2a54fb87ee9b9fdb0f6d343297d8e548392c03"}, + {file = "lxml-4.9.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:880bbbcbe2fca64e2f4d8e04db47bcdf504936fa2b33933efd945e1b429bea8c"}, + {file = "lxml-4.9.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7d2278d59425777cfcb19735018d897ca8303abe67cc735f9f97177ceff8027f"}, + {file = "lxml-4.9.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5344a43228767f53a9df6e5b253f8cdca7dfc7b7aeae52551958192f56d98457"}, + {file = "lxml-4.9.2-cp38-cp38-win32.whl", hash = "sha256:925073b2fe14ab9b87e73f9a5fde6ce6392da430f3004d8b72cc86f746f5163b"}, + {file = "lxml-4.9.2-cp38-cp38-win_amd64.whl", hash = "sha256:9b22c5c66f67ae00c0199f6055705bc3eb3fcb08d03d2ec4059a2b1b25ed48d7"}, + {file = "lxml-4.9.2-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:5f50a1c177e2fa3ee0667a5ab79fdc6b23086bc8b589d90b93b4bd17eb0e64d1"}, + {file = "lxml-4.9.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:090c6543d3696cbe15b4ac6e175e576bcc3f1ccfbba970061b7300b0c15a2140"}, + {file = "lxml-4.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:63da2ccc0857c311d764e7d3d90f429c252e83b52d1f8f1d1fe55be26827d1f4"}, + {file = "lxml-4.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:5b4545b8a40478183ac06c073e81a5ce4cf01bf1734962577cf2bb569a5b3bbf"}, + {file = "lxml-4.9.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2e430cd2824f05f2d4f687701144556646bae8f249fd60aa1e4c768ba7018947"}, + {file = "lxml-4.9.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6804daeb7ef69e7b36f76caddb85cccd63d0c56dedb47555d2fc969e2af6a1a5"}, + {file = "lxml-4.9.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a6e441a86553c310258aca15d1c05903aaf4965b23f3bc2d55f200804e005ee5"}, + {file = "lxml-4.9.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ca34efc80a29351897e18888c71c6aca4a359247c87e0b1c7ada14f0ab0c0fb2"}, + {file = "lxml-4.9.2-cp39-cp39-win32.whl", hash = "sha256:6b418afe5df18233fc6b6093deb82a32895b6bb0b1155c2cdb05203f583053f1"}, + {file = "lxml-4.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:f1496ea22ca2c830cbcbd473de8f114a320da308438ae65abad6bab7867fe38f"}, + {file = "lxml-4.9.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:b264171e3143d842ded311b7dccd46ff9ef34247129ff5bf5066123c55c2431c"}, + {file = "lxml-4.9.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:0dc313ef231edf866912e9d8f5a042ddab56c752619e92dfd3a2c277e6a7299a"}, + {file = "lxml-4.9.2-pp38-pypy38_pp73-macosx_10_15_x86_64.whl", hash = "sha256:16efd54337136e8cd72fb9485c368d91d77a47ee2d42b057564aae201257d419"}, + {file = "lxml-4.9.2-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:0f2b1e0d79180f344ff9f321327b005ca043a50ece8713de61d1cb383fb8ac05"}, + {file = "lxml-4.9.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:7b770ed79542ed52c519119473898198761d78beb24b107acf3ad65deae61f1f"}, + {file = "lxml-4.9.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:efa29c2fe6b4fdd32e8ef81c1528506895eca86e1d8c4657fda04c9b3786ddf9"}, + {file = "lxml-4.9.2-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7e91ee82f4199af8c43d8158024cbdff3d931df350252288f0d4ce656df7f3b5"}, + {file = "lxml-4.9.2-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:b23e19989c355ca854276178a0463951a653309fb8e57ce674497f2d9f208746"}, + {file = "lxml-4.9.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:01d36c05f4afb8f7c20fd9ed5badca32a2029b93b1750f571ccc0b142531caf7"}, + {file = "lxml-4.9.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7b515674acfdcadb0eb5d00d8a709868173acece5cb0be3dd165950cbfdf5409"}, + {file = "lxml-4.9.2.tar.gz", hash = "sha256:2455cfaeb7ac70338b3257f41e21f0724f4b5b0c0e7702da67ee6c3640835b67"}, +] + +[package.extras] +cssselect = ["cssselect (>=0.7)"] +html5 = ["html5lib"] +htmlsoup = ["BeautifulSoup4"] +source = ["Cython (>=0.29.7)"] + +[[package]] +name = "m2r2" +version = "0.3.2" +description = "Markdown and reStructuredText in a single file." +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "m2r2-0.3.2-py3-none-any.whl", hash = "sha256:d3684086b61b4bebe2307f15189495360f05a123c9bda2a66462649b7ca236aa"}, + {file = "m2r2-0.3.2.tar.gz", hash = "sha256:ccd95b052dcd1ac7442ecb3111262b2001c10e4119b459c34c93ac7a5c2c7868"}, +] + +[package.dependencies] +docutils = "*" +mistune = "0.8.4" + +[[package]] +name = "mako" +version = "1.2.4" +description = "A super-fast templating language that borrows the best ideas from the existing templating languages." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "Mako-1.2.4-py3-none-any.whl", hash = "sha256:c97c79c018b9165ac9922ae4f32da095ffd3c4e6872b45eded42926deea46818"}, + {file = "Mako-1.2.4.tar.gz", hash = "sha256:d60a3903dc3bb01a18ad6a89cdbe2e4eadc69c0bc8ef1e3773ba53d44c3f7a34"}, +] + +[package.dependencies] +MarkupSafe = ">=0.9.2" + +[package.extras] +babel = ["Babel"] +lingua = ["lingua"] +testing = ["pytest"] + +[[package]] +name = "markdown" +version = "3.3.7" +description = "Python implementation of Markdown." +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "Markdown-3.3.7-py3-none-any.whl", hash = "sha256:f5da449a6e1c989a4cea2631aa8ee67caa5a2ef855d551c88f9e309f4634c621"}, + {file = "Markdown-3.3.7.tar.gz", hash = "sha256:cbb516f16218e643d8e0a95b309f77eb118cb138d39a4f27851e6a63581db874"}, +] + +[package.dependencies] +importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} + +[package.extras] +testing = ["coverage", "pyyaml"] + +[[package]] +name = "markupsafe" +version = "2.1.2" +description = "Safely add untrusted strings to HTML/XML markup." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:665a36ae6f8f20a4676b53224e33d456a6f5a72657d9c83c2aa00765072f31f7"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:340bea174e9761308703ae988e982005aedf427de816d1afe98147668cc03036"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22152d00bf4a9c7c83960521fc558f55a1adbc0631fbb00a9471e097b19d72e1"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28057e985dace2f478e042eaa15606c7efccb700797660629da387eb289b9323"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca244fa73f50a800cf8c3ebf7fd93149ec37f5cb9596aa8873ae2c1d23498601"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d9d971ec1e79906046aa3ca266de79eac42f1dbf3612a05dc9368125952bd1a1"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7e007132af78ea9df29495dbf7b5824cb71648d7133cf7848a2a5dd00d36f9ff"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7313ce6a199651c4ed9d7e4cfb4aa56fe923b1adf9af3b420ee14e6d9a73df65"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-win32.whl", hash = "sha256:c4a549890a45f57f1ebf99c067a4ad0cb423a05544accaf2b065246827ed9603"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:835fb5e38fd89328e9c81067fd642b3593c33e1e17e2fdbf77f5676abb14a156"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2ec4f2d48ae59bbb9d1f9d7efb9236ab81429a764dedca114f5fdabbc3788013"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:608e7073dfa9e38a85d38474c082d4281f4ce276ac0010224eaba11e929dd53a"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65608c35bfb8a76763f37036547f7adfd09270fbdbf96608be2bead319728fcd"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2bfb563d0211ce16b63c7cb9395d2c682a23187f54c3d79bfec33e6705473c6"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da25303d91526aac3672ee6d49a2f3db2d9502a4a60b55519feb1a4c7714e07d"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9cad97ab29dfc3f0249b483412c85c8ef4766d96cdf9dcf5a1e3caa3f3661cf1"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:085fd3201e7b12809f9e6e9bc1e5c96a368c8523fad5afb02afe3c051ae4afcc"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1bea30e9bf331f3fef67e0a3877b2288593c98a21ccb2cf29b74c581a4eb3af0"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-win32.whl", hash = "sha256:7df70907e00c970c60b9ef2938d894a9381f38e6b9db73c5be35e59d92e06625"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:e55e40ff0cc8cc5c07996915ad367fa47da6b3fc091fdadca7f5403239c5fec3"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a6e40afa7f45939ca356f348c8e23048e02cb109ced1eb8420961b2f40fb373a"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf877ab4ed6e302ec1d04952ca358b381a882fbd9d1b07cccbfd61783561f98a"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63ba06c9941e46fa389d389644e2d8225e0e3e5ebcc4ff1ea8506dce646f8c8a"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f1cd098434e83e656abf198f103a8207a8187c0fc110306691a2e94a78d0abb2"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:55f44b440d491028addb3b88f72207d71eeebfb7b5dbf0643f7c023ae1fba619"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:a6f2fcca746e8d5910e18782f976489939d54a91f9411c32051b4aab2bd7c513"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0b462104ba25f1ac006fdab8b6a01ebbfbce9ed37fd37fd4acd70c67c973e460"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-win32.whl", hash = "sha256:7668b52e102d0ed87cb082380a7e2e1e78737ddecdde129acadb0eccc5423859"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6d6607f98fcf17e534162f0709aaad3ab7a96032723d8ac8750ffe17ae5a0666"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a806db027852538d2ad7555b203300173dd1b77ba116de92da9afbc3a3be3eed"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a4abaec6ca3ad8660690236d11bfe28dfd707778e2442b45addd2f086d6ef094"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f03a532d7dee1bed20bc4884194a16160a2de9ffc6354b3878ec9682bb623c54"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cf06cdc1dda95223e9d2d3c58d3b178aa5dacb35ee7e3bbac10e4e1faacb419"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22731d79ed2eb25059ae3df1dfc9cb1546691cc41f4e3130fe6bfbc3ecbbecfa"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f8ffb705ffcf5ddd0e80b65ddf7bed7ee4f5a441ea7d3419e861a12eaf41af58"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8db032bf0ce9022a8e41a22598eefc802314e81b879ae093f36ce9ddf39ab1ba"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2298c859cfc5463f1b64bd55cb3e602528db6fa0f3cfd568d3605c50678f8f03"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-win32.whl", hash = "sha256:50c42830a633fa0cf9e7d27664637532791bfc31c731a87b202d2d8ac40c3ea2"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:bb06feb762bade6bf3c8b844462274db0c76acc95c52abe8dbed28ae3d44a147"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:99625a92da8229df6d44335e6fcc558a5037dd0a760e11d84be2260e6f37002f"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8bca7e26c1dd751236cfb0c6c72d4ad61d986e9a41bbf76cb445f69488b2a2bd"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40627dcf047dadb22cd25ea7ecfe9cbf3bbbad0482ee5920b582f3809c97654f"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40dfd3fefbef579ee058f139733ac336312663c6706d1163b82b3003fb1925c4"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:090376d812fb6ac5f171e5938e82e7f2d7adc2b629101cec0db8b267815c85e2"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2e7821bffe00aa6bd07a23913b7f4e01328c3d5cc0b40b36c0bd81d362faeb65"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c0a33bc9f02c2b17c3ea382f91b4db0e6cde90b63b296422a939886a7a80de1c"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b8526c6d437855442cdd3d87eede9c425c4445ea011ca38d937db299382e6fa3"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-win32.whl", hash = "sha256:137678c63c977754abe9086a3ec011e8fd985ab90631145dfb9294ad09c102a7"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:0576fe974b40a400449768941d5d0858cc624e3249dfd1e0c33674e5c7ca7aed"}, + {file = "MarkupSafe-2.1.2.tar.gz", hash = "sha256:abcabc8c2b26036d62d4c746381a6f7cf60aafcc653198ad678306986b09450d"}, +] + +[[package]] +name = "matplotlib" +version = "3.6.3" +description = "Python plotting package" +category = "main" +optional = true +python-versions = ">=3.8" +files = [ + {file = "matplotlib-3.6.3-cp310-cp310-macosx_10_12_universal2.whl", hash = "sha256:80c166a0e28512e26755f69040e6bf2f946a02ffdb7c00bf6158cca3d2b146e6"}, + {file = "matplotlib-3.6.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:eb9421c403ffd387fbe729de6d9a03005bf42faba5e8432f4e51e703215b49fc"}, + {file = "matplotlib-3.6.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5223affa21050fb6118353c1380c15e23aedfb436bf3e162c26dc950617a7519"}, + {file = "matplotlib-3.6.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d00c248ab6b92bea3f8148714837937053a083ff03b4c5e30ed37e28fc0e7e56"}, + {file = "matplotlib-3.6.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca94f0362f6b6f424b555b956971dcb94b12d0368a6c3e07dc7a40d32d6d873d"}, + {file = "matplotlib-3.6.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59400cc9451094b7f08cc3f321972e6e1db4cd37a978d4e8a12824bf7fd2f03b"}, + {file = "matplotlib-3.6.3-cp310-cp310-win32.whl", hash = "sha256:57ad1aee29043163374bfa8990e1a2a10ff72c9a1bfaa92e9c46f6ea59269121"}, + {file = "matplotlib-3.6.3-cp310-cp310-win_amd64.whl", hash = "sha256:1fcc4cad498533d3c393a160975acc9b36ffa224d15a6b90ae579eacee5d8579"}, + {file = "matplotlib-3.6.3-cp311-cp311-macosx_10_12_universal2.whl", hash = "sha256:d2cfaa7fd62294d945b8843ea24228a27c8e7c5b48fa634f3c168153b825a21b"}, + {file = "matplotlib-3.6.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:c3f08df2ac4636249b8bc7a85b8b82c983bef1441595936f62c2918370ca7e1d"}, + {file = "matplotlib-3.6.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ff2aa84e74f80891e6bcf292ebb1dd57714ffbe13177642d65fee25384a30894"}, + {file = "matplotlib-3.6.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:11011c97d62c1db7bc20509572557842dbb8c2a2ddd3dd7f20501aa1cde3e54e"}, + {file = "matplotlib-3.6.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c235bf9be052347373f589e018988cad177abb3f997ab1a2e2210c41562cc0c"}, + {file = "matplotlib-3.6.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bebcff4c3ed02c6399d47329f3554193abd824d3d53b5ca02cf583bcd94470e2"}, + {file = "matplotlib-3.6.3-cp311-cp311-win32.whl", hash = "sha256:d5f18430f5cfa5571ab8f4c72c89af52aa0618e864c60028f11a857d62200cba"}, + {file = "matplotlib-3.6.3-cp311-cp311-win_amd64.whl", hash = "sha256:dfba7057609ca9567b9704626756f0142e97ec8c5ba2c70c6e7bd1c25ef99f06"}, + {file = "matplotlib-3.6.3-cp38-cp38-macosx_10_12_universal2.whl", hash = "sha256:9fb8fb19d03abf3c5dab89a8677e62c4023632f919a62b6dd1d6d2dbf42cd9f5"}, + {file = "matplotlib-3.6.3-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:bbf269e1d24bc25247095d71c7a969813f7080e2a7c6fa28931a603f747ab012"}, + {file = "matplotlib-3.6.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:994637e2995b0342699b396a320698b07cd148bbcf2dd2fa2daba73f34dd19f2"}, + {file = "matplotlib-3.6.3-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:77b384cee7ab8cf75ffccbfea351a09b97564fc62d149827a5e864bec81526e5"}, + {file = "matplotlib-3.6.3-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:73b93af33634ed919e72811c9703e1105185cd3fb46d76f30b7f4cfbbd063f89"}, + {file = "matplotlib-3.6.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:debeab8e2ab07e5e3dac33e12456da79c7e104270d2b2d1df92b9e40347cca75"}, + {file = "matplotlib-3.6.3-cp38-cp38-win32.whl", hash = "sha256:acc3b1a4bddbf56fe461e36fb9ef94c2cb607fc90d24ccc650040bfcc7610de4"}, + {file = "matplotlib-3.6.3-cp38-cp38-win_amd64.whl", hash = "sha256:1183877d008c752d7d535396096c910f4663e4b74a18313adee1213328388e1e"}, + {file = "matplotlib-3.6.3-cp39-cp39-macosx_10_12_universal2.whl", hash = "sha256:6adc441b5b2098a4b904bbf9d9e92fb816fef50c55aa2ea6a823fc89b94bb838"}, + {file = "matplotlib-3.6.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:6d81b11ede69e3a751424b98dc869c96c10256b2206bfdf41f9c720eee86844c"}, + {file = "matplotlib-3.6.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:29f17b7f2e068dc346687cbdf80b430580bab42346625821c2d3abf3a1ec5417"}, + {file = "matplotlib-3.6.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f56a7252eee8f3438447f75f5e1148a1896a2756a92285fe5d73bed6deebff4"}, + {file = "matplotlib-3.6.3-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bbddfeb1495484351fb5b30cf5bdf06b3de0bc4626a707d29e43dfd61af2a780"}, + {file = "matplotlib-3.6.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:809119d1cba3ece3c9742eb01827fe7a0e781ea3c5d89534655a75e07979344f"}, + {file = "matplotlib-3.6.3-cp39-cp39-win32.whl", hash = "sha256:e0a64d7cc336b52e90f59e6d638ae847b966f68582a7af041e063d568e814740"}, + {file = "matplotlib-3.6.3-cp39-cp39-win_amd64.whl", hash = "sha256:79e501eb847f4a489eb7065bb8d3187117f65a4c02d12ea3a19d6c5bef173bcc"}, + {file = "matplotlib-3.6.3-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2787a16df07370dcba385fe20cdd0cc3cfaabd3c873ddabca78c10514c799721"}, + {file = "matplotlib-3.6.3-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:68d94a436f62b8a861bf3ace82067a71bafb724b4e4f9133521e4d8012420dd7"}, + {file = "matplotlib-3.6.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81b409b2790cf8d7c1ef35920f01676d2ae7afa8241844e7aa5484fdf493a9a0"}, + {file = "matplotlib-3.6.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:faff486b36530a836a6b4395850322e74211cd81fc17f28b4904e1bd53668e3e"}, + {file = "matplotlib-3.6.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:38d38cb1ea1d80ee0f6351b65c6f76cad6060bbbead015720ba001348ae90f0c"}, + {file = "matplotlib-3.6.3-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12f999661589981e74d793ee2f41b924b3b87d65fd929f6153bf0f30675c59b1"}, + {file = "matplotlib-3.6.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01b7f521a9a73c383825813af255f8c4485d1706e4f3e2ed5ae771e4403a40ab"}, + {file = "matplotlib-3.6.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:9ceebaf73f1a3444fa11014f38b9da37ff7ea328d6efa1652241fe3777bfdab9"}, + {file = "matplotlib-3.6.3.tar.gz", hash = "sha256:1f4d69707b1677560cd952544ee4962f68ff07952fb9069ff8c12b56353cb8c9"}, +] + +[package.dependencies] +contourpy = ">=1.0.1" +cycler = ">=0.10" +fonttools = ">=4.22.0" +kiwisolver = ">=1.0.1" +numpy = ">=1.19" +packaging = ">=20.0" +pillow = ">=6.2.0" +pyparsing = ">=2.2.1" +python-dateutil = ">=2.7" + +[[package]] +name = "matplotlib-inline" +version = "0.1.6" +description = "Inline Matplotlib backend for Jupyter" +category = "dev" +optional = false +python-versions = ">=3.5" +files = [ + {file = "matplotlib-inline-0.1.6.tar.gz", hash = "sha256:f887e5f10ba98e8d2b150ddcf4702c1e5f8b3a20005eb0f74bfdbd360ee6f304"}, + {file = "matplotlib_inline-0.1.6-py3-none-any.whl", hash = "sha256:f1f41aab5328aa5aaea9b16d083b128102f8712542f819fe7e6a420ff581b311"}, +] + +[package.dependencies] +traitlets = "*" + +[[package]] +name = "mccabe" +version = "0.7.0" +description = "McCabe checker, plugin for flake8" +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, + {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, +] + +[[package]] +name = "mergedeep" +version = "1.3.4" +description = "A deep merge function for 🐍." +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, + {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, +] + +[[package]] +name = "mistune" +version = "0.8.4" +description = "The fastest markdown parser in pure Python" +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "mistune-0.8.4-py2.py3-none-any.whl", hash = "sha256:88a1051873018da288eee8538d476dffe1262495144b33ecb586c4ab266bb8d4"}, + {file = "mistune-0.8.4.tar.gz", hash = "sha256:59a3429db53c50b5c6bcc8a07f8848cb00d7dc8bdb431a4ab41920d201d4756e"}, +] + +[[package]] +name = "mkdocs" +version = "1.3.1" +description = "Project documentation with Markdown." +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "mkdocs-1.3.1-py3-none-any.whl", hash = "sha256:fda92466393127d2da830bc6edc3a625a14b436316d1caf347690648e774c4f0"}, + {file = "mkdocs-1.3.1.tar.gz", hash = "sha256:a41a2ff25ce3bbacc953f9844ba07d106233cd76c88bac1f59cb1564ac0d87ed"}, +] + +[package.dependencies] +click = ">=3.3" +ghp-import = ">=1.0" +importlib-metadata = ">=4.3" +Jinja2 = ">=2.10.2" +Markdown = ">=3.2.1,<3.4" +mergedeep = ">=1.3.4" +packaging = ">=20.5" +PyYAML = ">=3.10" +pyyaml-env-tag = ">=0.1" +watchdog = ">=2.0" + +[package.extras] +i18n = ["babel (>=2.9.0)"] + +[[package]] +name = "mkdocs-material" +version = "8.5.4" +description = "Documentation that simply works" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "mkdocs_material-8.5.4-py3-none-any.whl", hash = "sha256:aec2f0f2143109f8388aadf76e6fff749a2b74ebe730d0f674c65b53da89d19d"}, + {file = "mkdocs_material-8.5.4.tar.gz", hash = "sha256:70dc47820d4765b77968b9119f2957d09b4d8d328d950bee4544ff224d5c7b36"}, +] + +[package.dependencies] +jinja2 = ">=3.0.2" +markdown = ">=3.2" +mkdocs = ">=1.3.0" +mkdocs-material-extensions = ">=1.0.3" +pygments = ">=2.12" +pymdown-extensions = ">=9.4" +requests = ">=2.26" + +[[package]] +name = "mkdocs-material-extensions" +version = "1.1.1" +description = "Extension pack for Python Markdown and MkDocs Material." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "mkdocs_material_extensions-1.1.1-py3-none-any.whl", hash = "sha256:e41d9f38e4798b6617ad98ca8f7f1157b1e4385ac1459ca1e4ea219b556df945"}, + {file = "mkdocs_material_extensions-1.1.1.tar.gz", hash = "sha256:9c003da71e2cc2493d910237448c672e00cefc800d3d6ae93d2fc69979e3bd93"}, +] + +[[package]] +name = "mkl" +version = "2022.0.3" +description = "Intel® oneAPI Math Kernel Library" +category = "main" +optional = true +python-versions = "*" +files = [ + {file = "mkl-2022.0.3-py2.py3-none-win32.whl", hash = "sha256:24d5c35ff42199d318c6fd24ad4b58f9d00eb91bb18dbf8acf11ba435cf57e75"}, + {file = "mkl-2022.0.3-py2.py3-none-win_amd64.whl", hash = "sha256:706f74f142f7f7f7ed184eadb1472b95bce6f61bfd1a35e41daa362d089cec93"}, +] + +[package.dependencies] +intel-openmp = ">=2022.0.0,<2023.0.0" +tbb = ">=2021.0.0,<2022.0.0" + +[[package]] +name = "mkl-devel" +version = "2022.0.3" +description = "Intel® oneAPI Math Kernel Library" +category = "main" +optional = true +python-versions = "*" +files = [ + {file = "mkl_devel-2022.0.3-py2.py3-none-win32.whl", hash = "sha256:434097fec438441157f99bb2edd28e52cc44a8ab642f933451f0a84a0d82e922"}, + {file = "mkl_devel-2022.0.3-py2.py3-none-win_amd64.whl", hash = "sha256:5a0a355a48e2bda43d7b4543b4732bfde0c7c727435d0f3ce8b90660ab9388a4"}, +] + +[package.dependencies] +mkl = "2022.0.3" +mkl-include = "2022.0.3" + +[[package]] +name = "mkl-include" +version = "2022.0.3" +description = "Intel® oneAPI Math Kernel Library" +category = "main" +optional = true +python-versions = "*" +files = [ + {file = "mkl_include-2022.0.3-py2.py3-none-win32.whl", hash = "sha256:24b133cd16fcfa6b6bc6ee2399b1036bfba9883a9dc10633bee6a6cfef8f1aa9"}, + {file = "mkl_include-2022.0.3-py2.py3-none-win_amd64.whl", hash = "sha256:04cfa83ad8f0f35cf1a86e1a401b71c6795fcf372ab23a50706cbd1560e4e68c"}, +] + +[[package]] +name = "mypy" +version = "0.991" +description = "Optional static typing for Python" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "mypy-0.991-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7d17e0a9707d0772f4a7b878f04b4fd11f6f5bcb9b3813975a9b13c9332153ab"}, + {file = "mypy-0.991-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0714258640194d75677e86c786e80ccf294972cc76885d3ebbb560f11db0003d"}, + {file = "mypy-0.991-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0c8f3be99e8a8bd403caa8c03be619544bc2c77a7093685dcf308c6b109426c6"}, + {file = "mypy-0.991-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc9ec663ed6c8f15f4ae9d3c04c989b744436c16d26580eaa760ae9dd5d662eb"}, + {file = "mypy-0.991-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4307270436fd7694b41f913eb09210faff27ea4979ecbcd849e57d2da2f65305"}, + {file = "mypy-0.991-cp310-cp310-win_amd64.whl", hash = "sha256:901c2c269c616e6cb0998b33d4adbb4a6af0ac4ce5cd078afd7bc95830e62c1c"}, + {file = "mypy-0.991-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d13674f3fb73805ba0c45eb6c0c3053d218aa1f7abead6e446d474529aafc372"}, + {file = "mypy-0.991-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1c8cd4fb70e8584ca1ed5805cbc7c017a3d1a29fb450621089ffed3e99d1857f"}, + {file = "mypy-0.991-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:209ee89fbb0deed518605edddd234af80506aec932ad28d73c08f1400ef80a33"}, + {file = "mypy-0.991-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37bd02ebf9d10e05b00d71302d2c2e6ca333e6c2a8584a98c00e038db8121f05"}, + {file = "mypy-0.991-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:26efb2fcc6b67e4d5a55561f39176821d2adf88f2745ddc72751b7890f3194ad"}, + {file = "mypy-0.991-cp311-cp311-win_amd64.whl", hash = "sha256:3a700330b567114b673cf8ee7388e949f843b356a73b5ab22dd7cff4742a5297"}, + {file = "mypy-0.991-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:1f7d1a520373e2272b10796c3ff721ea1a0712288cafaa95931e66aa15798813"}, + {file = "mypy-0.991-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:641411733b127c3e0dab94c45af15fea99e4468f99ac88b39efb1ad677da5711"}, + {file = "mypy-0.991-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3d80e36b7d7a9259b740be6d8d906221789b0d836201af4234093cae89ced0cd"}, + {file = "mypy-0.991-cp37-cp37m-win_amd64.whl", hash = "sha256:e62ebaad93be3ad1a828a11e90f0e76f15449371ffeecca4a0a0b9adc99abcef"}, + {file = "mypy-0.991-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b86ce2c1866a748c0f6faca5232059f881cda6dda2a893b9a8373353cfe3715a"}, + {file = "mypy-0.991-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac6e503823143464538efda0e8e356d871557ef60ccd38f8824a4257acc18d93"}, + {file = "mypy-0.991-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0cca5adf694af539aeaa6ac633a7afe9bbd760df9d31be55ab780b77ab5ae8bf"}, + {file = "mypy-0.991-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a12c56bf73cdab116df96e4ff39610b92a348cc99a1307e1da3c3768bbb5b135"}, + {file = "mypy-0.991-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:652b651d42f155033a1967739788c436491b577b6a44e4c39fb340d0ee7f0d70"}, + {file = "mypy-0.991-cp38-cp38-win_amd64.whl", hash = "sha256:4175593dc25d9da12f7de8de873a33f9b2b8bdb4e827a7cae952e5b1a342e243"}, + {file = "mypy-0.991-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:98e781cd35c0acf33eb0295e8b9c55cdbef64fcb35f6d3aa2186f289bed6e80d"}, + {file = "mypy-0.991-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6d7464bac72a85cb3491c7e92b5b62f3dcccb8af26826257760a552a5e244aa5"}, + {file = "mypy-0.991-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c9166b3f81a10cdf9b49f2d594b21b31adadb3d5e9db9b834866c3258b695be3"}, + {file = "mypy-0.991-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8472f736a5bfb159a5e36740847808f6f5b659960115ff29c7cecec1741c648"}, + {file = "mypy-0.991-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e80e758243b97b618cdf22004beb09e8a2de1af481382e4d84bc52152d1c476"}, + {file = "mypy-0.991-cp39-cp39-win_amd64.whl", hash = "sha256:74e259b5c19f70d35fcc1ad3d56499065c601dfe94ff67ae48b85596b9ec1461"}, + {file = "mypy-0.991-py3-none-any.whl", hash = "sha256:de32edc9b0a7e67c2775e574cb061a537660e51210fbf6006b0b36ea695ae9bb"}, + {file = "mypy-0.991.tar.gz", hash = "sha256:3c0165ba8f354a6d9881809ef29f1a9318a236a6d81c690094c5df32107bde06"}, +] + +[package.dependencies] +mypy-extensions = ">=0.4.3" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +typing-extensions = ">=3.10" + +[package.extras] +dmypy = ["psutil (>=4.0)"] +install-types = ["pip"] +python2 = ["typed-ast (>=1.4.0,<2)"] +reports = ["lxml"] + +[[package]] +name = "mypy-extensions" +version = "0.4.3" +description = "Experimental type system extensions for programs checked with the mypy typechecker." +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, + {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, +] + +[[package]] +name = "nbclient" +version = "0.7.2" +description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." +category = "dev" +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "nbclient-0.7.2-py3-none-any.whl", hash = "sha256:d97ac6257de2794f5397609df754fcbca1a603e94e924eb9b99787c031ae2e7c"}, + {file = "nbclient-0.7.2.tar.gz", hash = "sha256:884a3f4a8c4fc24bb9302f263e0af47d97f0d01fe11ba714171b320c8ac09547"}, +] + +[package.dependencies] +jupyter-client = ">=6.1.12" +jupyter-core = ">=4.12,<5.0.0 || >=5.1.0" +nbformat = ">=5.1" +traitlets = ">=5.3" + +[package.extras] +dev = ["pre-commit"] +docs = ["autodoc-traits", "mock", "moto", "myst-parser", "nbclient[test]", "sphinx (>=1.7)", "sphinx-book-theme"] +test = ["ipykernel", "ipython", "ipywidgets", "nbconvert (>=7.0.0)", "pytest (>=7.0)", "pytest-asyncio", "pytest-cov (>=4.0)", "testpath", "xmltodict"] + +[[package]] +name = "nbconvert" +version = "6.5.4" +description = "Converting Jupyter Notebooks" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "nbconvert-6.5.4-py3-none-any.whl", hash = "sha256:d679a947f849a966cbbd0bf6e7fedcfdb64be3b20ce7cef11ad55c13f5820e19"}, + {file = "nbconvert-6.5.4.tar.gz", hash = "sha256:9e3c7c6d491374cbdd5f35d268c05809357716d346f4573186bbeab32ee50bc1"}, +] + +[package.dependencies] +beautifulsoup4 = "*" +bleach = "*" +defusedxml = "*" +entrypoints = ">=0.2.2" +jinja2 = ">=3.0" +jupyter-core = ">=4.7" +jupyterlab-pygments = "*" +lxml = "*" +MarkupSafe = ">=2.0" +mistune = ">=0.8.1,<2" +nbclient = ">=0.5.0" +nbformat = ">=5.1" +packaging = "*" +pandocfilters = ">=1.4.1" +pygments = ">=2.4.1" +tinycss2 = "*" +traitlets = ">=5.0" + +[package.extras] +all = ["ipykernel", "ipython", "ipywidgets (>=7)", "nbsphinx (>=0.2.12)", "pre-commit", "pyppeteer (>=1,<1.1)", "pytest", "pytest-cov", "pytest-dependency", "sphinx (>=1.5.1)", "sphinx-rtd-theme", "tornado (>=6.1)"] +docs = ["ipython", "nbsphinx (>=0.2.12)", "sphinx (>=1.5.1)", "sphinx-rtd-theme"] +serve = ["tornado (>=6.1)"] +test = ["ipykernel", "ipywidgets (>=7)", "pre-commit", "pyppeteer (>=1,<1.1)", "pytest", "pytest-cov", "pytest-dependency"] +webpdf = ["pyppeteer (>=1,<1.1)"] + +[[package]] +name = "nbformat" +version = "5.7.3" +description = "The Jupyter Notebook format" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "nbformat-5.7.3-py3-none-any.whl", hash = "sha256:22a98a6516ca216002b0a34591af5bcb8072ca6c63910baffc901cfa07fefbf0"}, + {file = "nbformat-5.7.3.tar.gz", hash = "sha256:4b021fca24d3a747bf4e626694033d792d594705829e5e35b14ee3369f9f6477"}, +] + +[package.dependencies] +fastjsonschema = "*" +jsonschema = ">=2.6" +jupyter-core = "*" +traitlets = ">=5.1" + +[package.extras] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] +test = ["pep440", "pre-commit", "pytest", "testpath"] + +[[package]] +name = "nbsphinx" +version = "0.8.12" +description = "Jupyter Notebook Tools for Sphinx" +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "nbsphinx-0.8.12-py3-none-any.whl", hash = "sha256:c15b681c7fce287000856f91fe1edac50d29f7b0c15bbc746fbe55c8eb84750b"}, + {file = "nbsphinx-0.8.12.tar.gz", hash = "sha256:76570416cdecbeb21dbf5c3d6aa204ced6c1dd7ebef4077b5c21b8c6ece9533f"}, +] + +[package.dependencies] +docutils = "*" +jinja2 = "*" +nbconvert = "!=5.4" +nbformat = "*" +sphinx = ">=1.8" +traitlets = ">=5" + +[[package]] +name = "networkx" +version = "2.8.8" +description = "Python package for creating and manipulating graphs and networks" +category = "main" +optional = true +python-versions = ">=3.8" +files = [ + {file = "networkx-2.8.8-py3-none-any.whl", hash = "sha256:e435dfa75b1d7195c7b8378c3859f0445cd88c6b0375c181ed66823a9ceb7524"}, + {file = "networkx-2.8.8.tar.gz", hash = "sha256:230d388117af870fce5647a3c52401fcf753e94720e6ea6b4197a5355648885e"}, +] + +[package.extras] +default = ["matplotlib (>=3.4)", "numpy (>=1.19)", "pandas (>=1.3)", "scipy (>=1.8)"] +developer = ["mypy (>=0.982)", "pre-commit (>=2.20)"] +doc = ["nb2plots (>=0.6)", "numpydoc (>=1.5)", "pillow (>=9.2)", "pydata-sphinx-theme (>=0.11)", "sphinx (>=5.2)", "sphinx-gallery (>=0.11)", "texext (>=0.6.6)"] +extra = ["lxml (>=4.6)", "pydot (>=1.4.2)", "pygraphviz (>=1.9)", "sympy (>=1.10)"] +test = ["codecov (>=2.1)", "pytest (>=7.2)", "pytest-cov (>=4.0)"] + +[[package]] +name = "nodeenv" +version = "1.7.0" +description = "Node.js virtual environment builder" +category = "dev" +optional = false +python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*" +files = [ + {file = "nodeenv-1.7.0-py2.py3-none-any.whl", hash = "sha256:27083a7b96a25f2f5e1d8cb4b6317ee8aeda3bdd121394e5ac54e498028a042e"}, + {file = "nodeenv-1.7.0.tar.gz", hash = "sha256:e0e7f7dfb85fc5394c6fe1e8fa98131a2473e04311a45afb6508f7cf1836fa2b"}, +] + +[package.dependencies] +setuptools = "*" + +[[package]] +name = "numba" +version = "0.56.4" +description = "compiling Python code using LLVM" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "numba-0.56.4-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:9f62672145f8669ec08762895fe85f4cf0ead08ce3164667f2b94b2f62ab23c3"}, + {file = "numba-0.56.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c602d015478b7958408d788ba00a50272649c5186ea8baa6cf71d4a1c761bba1"}, + {file = "numba-0.56.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:85dbaed7a05ff96492b69a8900c5ba605551afb9b27774f7f10511095451137c"}, + {file = "numba-0.56.4-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:f4cfc3a19d1e26448032049c79fc60331b104f694cf570a9e94f4e2c9d0932bb"}, + {file = "numba-0.56.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4e08e203b163ace08bad500b0c16f6092b1eb34fd1fce4feaf31a67a3a5ecf3b"}, + {file = "numba-0.56.4-cp310-cp310-win32.whl", hash = "sha256:0611e6d3eebe4cb903f1a836ffdb2bda8d18482bcd0a0dcc56e79e2aa3fefef5"}, + {file = "numba-0.56.4-cp310-cp310-win_amd64.whl", hash = "sha256:fbfb45e7b297749029cb28694abf437a78695a100e7c2033983d69f0ba2698d4"}, + {file = "numba-0.56.4-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:3cb1a07a082a61df80a468f232e452d818f5ae254b40c26390054e4e868556e0"}, + {file = "numba-0.56.4-cp37-cp37m-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d69ad934e13c15684e7887100a8f5f0f61d7a8e57e0fd29d9993210089a5b531"}, + {file = "numba-0.56.4-cp37-cp37m-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:dbcc847bac2d225265d054993a7f910fda66e73d6662fe7156452cac0325b073"}, + {file = "numba-0.56.4-cp37-cp37m-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8a95ca9cc77ea4571081f6594e08bd272b66060634b8324e99cd1843020364f9"}, + {file = "numba-0.56.4-cp37-cp37m-win32.whl", hash = "sha256:fcdf84ba3ed8124eb7234adfbb8792f311991cbf8aed1cad4b1b1a7ee08380c1"}, + {file = "numba-0.56.4-cp37-cp37m-win_amd64.whl", hash = "sha256:42f9e1be942b215df7e6cc9948cf9c15bb8170acc8286c063a9e57994ef82fd1"}, + {file = "numba-0.56.4-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:553da2ce74e8862e18a72a209ed3b6d2924403bdd0fb341fa891c6455545ba7c"}, + {file = "numba-0.56.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4373da9757049db7c90591e9ec55a2e97b2b36ba7ae3bf9c956a513374077470"}, + {file = "numba-0.56.4-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3a993349b90569518739009d8f4b523dfedd7e0049e6838c0e17435c3e70dcc4"}, + {file = "numba-0.56.4-cp38-cp38-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:720886b852a2d62619ae3900fe71f1852c62db4f287d0c275a60219e1643fc04"}, + {file = "numba-0.56.4-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e64d338b504c9394a4a34942df4627e1e6cb07396ee3b49fe7b8d6420aa5104f"}, + {file = "numba-0.56.4-cp38-cp38-win32.whl", hash = "sha256:03fe94cd31e96185cce2fae005334a8cc712fc2ba7756e52dff8c9400718173f"}, + {file = "numba-0.56.4-cp38-cp38-win_amd64.whl", hash = "sha256:91f021145a8081f881996818474ef737800bcc613ffb1e618a655725a0f9e246"}, + {file = "numba-0.56.4-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:d0ae9270a7a5cc0ede63cd234b4ff1ce166c7a749b91dbbf45e0000c56d3eade"}, + {file = "numba-0.56.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c75e8a5f810ce80a0cfad6e74ee94f9fde9b40c81312949bf356b7304ef20740"}, + {file = "numba-0.56.4-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a12ef323c0f2101529d455cfde7f4135eaa147bad17afe10b48634f796d96abd"}, + {file = "numba-0.56.4-cp39-cp39-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:03634579d10a6129181129de293dd6b5eaabee86881369d24d63f8fe352dd6cb"}, + {file = "numba-0.56.4-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0240f9026b015e336069329839208ebd70ec34ae5bfbf402e4fcc8e06197528e"}, + {file = "numba-0.56.4-cp39-cp39-win32.whl", hash = "sha256:14dbbabf6ffcd96ee2ac827389afa59a70ffa9f089576500434c34abf9b054a4"}, + {file = "numba-0.56.4-cp39-cp39-win_amd64.whl", hash = "sha256:0da583c532cd72feefd8e551435747e0e0fbb3c0530357e6845fcc11e38d6aea"}, + {file = "numba-0.56.4.tar.gz", hash = "sha256:32d9fef412c81483d7efe0ceb6cf4d3310fde8b624a9cecca00f790573ac96ee"}, +] + +[package.dependencies] +llvmlite = ">=0.39.0dev0,<0.40" +numpy = ">=1.18,<1.24" +setuptools = "*" + +[[package]] +name = "numpy" +version = "1.23.5" +description = "NumPy is the fundamental package for array computing with 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"}, +] + +[[package]] +name = "opt-einsum" +version = "3.3.0" +description = "Optimizing numpys einsum function" +category = "main" +optional = false +python-versions = ">=3.5" +files = [ + {file = "opt_einsum-3.3.0-py3-none-any.whl", hash = "sha256:2455e59e3947d3c275477df7f5205b30635e266fe6dc300e3d9f9646bfcea147"}, + {file = "opt_einsum-3.3.0.tar.gz", hash = "sha256:59f6475f77bbc37dcf7cd748519c0ec60722e91e63ca114e68821c0c54a46549"}, +] + +[package.dependencies] +numpy = ">=1.7" + +[package.extras] +docs = ["numpydoc", "sphinx (==1.2.3)", "sphinx-rtd-theme", "sphinxcontrib-napoleon"] +tests = ["pytest", "pytest-cov", "pytest-pep8"] + +[[package]] +name = "packaging" +version = "23.0" +description = "Core utilities for Python packages" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "packaging-23.0-py3-none-any.whl", hash = "sha256:714ac14496c3e68c99c29b00845f7a2b85f3bb6f1078fd9f72fd20f0570002b2"}, + {file = "packaging-23.0.tar.gz", hash = "sha256:b6ad297f8907de0fa2fe1ccbd26fdaf387f5f47c7275fedf8cce89f99446cf97"}, +] + +[[package]] +name = "pandocfilters" +version = "1.5.0" +description = "Utilities for writing pandoc filters in python" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "pandocfilters-1.5.0-py2.py3-none-any.whl", hash = "sha256:33aae3f25fd1a026079f5d27bdd52496f0e0803b3469282162bafdcbdf6ef14f"}, + {file = "pandocfilters-1.5.0.tar.gz", hash = "sha256:0b679503337d233b4339a817bfc8c50064e2eff681314376a47cb582305a7a38"}, +] + +[[package]] +name = "parso" +version = "0.8.3" +description = "A Python Parser" +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "parso-0.8.3-py2.py3-none-any.whl", hash = "sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75"}, + {file = "parso-0.8.3.tar.gz", hash = "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0"}, +] + +[package.extras] +qa = ["flake8 (==3.8.3)", "mypy (==0.782)"] +testing = ["docopt", "pytest (<6.0.0)"] + +[[package]] +name = "pathspec" +version = "0.11.0" +description = "Utility library for gitignore style pattern matching of file paths." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pathspec-0.11.0-py3-none-any.whl", hash = "sha256:3a66eb970cbac598f9e5ccb5b2cf58930cd8e3ed86d393d541eaf2d8b1705229"}, + {file = "pathspec-0.11.0.tar.gz", hash = "sha256:64d338d4e0914e91c1792321e6907b5a593f1ab1851de7fc269557a21b30ebbc"}, +] + +[[package]] +name = "pbr" +version = "5.11.1" +description = "Python Build Reasonableness" +category = "dev" +optional = false +python-versions = ">=2.6" +files = [ + {file = "pbr-5.11.1-py2.py3-none-any.whl", hash = "sha256:567f09558bae2b3ab53cb3c1e2e33e726ff3338e7bae3db5dc954b3a44eef12b"}, + {file = "pbr-5.11.1.tar.gz", hash = "sha256:aefc51675b0b533d56bb5fd1c8c6c0522fe31896679882e1c4c63d5e4a0fccb3"}, +] + +[[package]] +name = "pdocs" +version = "1.2.0" +description = "A simple program and library to auto generate API documentation for Python modules." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pdocs-1.2.0-py3-none-any.whl", hash = "sha256:caca2829415e62d31eaab46c53cd77a2a14f132c73e48e25187331c3a9fc2459"}, + {file = "pdocs-1.2.0.tar.gz", hash = "sha256:996ad4d5039b59a9a112d29abfb3995ec4ed8d8415ddce6947c3a5248adb428b"}, +] + +[package.dependencies] +docstring_parser = ">=0.7.2" +hug = ">=2.6" +Mako = ">1.2.2" +Markdown = ">=3.0.0" + +[[package]] +name = "pep8-naming" +version = "0.13.3" +description = "Check PEP-8 naming conventions, plugin for flake8" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pep8-naming-0.13.3.tar.gz", hash = "sha256:1705f046dfcd851378aac3be1cd1551c7c1e5ff363bacad707d43007877fa971"}, + {file = "pep8_naming-0.13.3-py3-none-any.whl", hash = "sha256:1a86b8c71a03337c97181917e2b472f0f5e4ccb06844a0d6f0a33522549e7a80"}, +] + +[package.dependencies] +flake8 = ">=5.0.0" + +[[package]] +name = "pexpect" +version = "4.8.0" +description = "Pexpect allows easy control of interactive console applications." +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "pexpect-4.8.0-py2.py3-none-any.whl", hash = "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937"}, + {file = "pexpect-4.8.0.tar.gz", hash = "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c"}, +] + +[package.dependencies] +ptyprocess = ">=0.5" + +[[package]] +name = "pickleshare" +version = "0.7.5" +description = "Tiny 'shelve'-like database with concurrency support" +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"}, + {file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"}, +] + +[[package]] +name = "pillow" +version = "9.4.0" +description = "Python Imaging Library (Fork)" +category = "main" +optional = true +python-versions = ">=3.7" +files = [ + {file = "Pillow-9.4.0-1-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:1b4b4e9dda4f4e4c4e6896f93e84a8f0bcca3b059de9ddf67dac3c334b1195e1"}, + {file = "Pillow-9.4.0-1-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:fb5c1ad6bad98c57482236a21bf985ab0ef42bd51f7ad4e4538e89a997624e12"}, + {file = "Pillow-9.4.0-1-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:f0caf4a5dcf610d96c3bd32932bfac8aee61c96e60481c2a0ea58da435e25acd"}, + {file = "Pillow-9.4.0-1-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:3f4cc516e0b264c8d4ccd6b6cbc69a07c6d582d8337df79be1e15a5056b258c9"}, + {file = "Pillow-9.4.0-1-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:b8c2f6eb0df979ee99433d8b3f6d193d9590f735cf12274c108bd954e30ca858"}, + {file = "Pillow-9.4.0-1-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b70756ec9417c34e097f987b4d8c510975216ad26ba6e57ccb53bc758f490dab"}, + {file = "Pillow-9.4.0-1-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:43521ce2c4b865d385e78579a082b6ad1166ebed2b1a2293c3be1d68dd7ca3b9"}, + {file = "Pillow-9.4.0-2-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:9d9a62576b68cd90f7075876f4e8444487db5eeea0e4df3ba298ee38a8d067b0"}, + {file = "Pillow-9.4.0-2-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:87708d78a14d56a990fbf4f9cb350b7d89ee8988705e58e39bdf4d82c149210f"}, + {file = "Pillow-9.4.0-2-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:8a2b5874d17e72dfb80d917213abd55d7e1ed2479f38f001f264f7ce7bae757c"}, + {file = "Pillow-9.4.0-2-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:83125753a60cfc8c412de5896d10a0a405e0bd88d0470ad82e0869ddf0cb3848"}, + {file = "Pillow-9.4.0-2-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:9e5f94742033898bfe84c93c831a6f552bb629448d4072dd312306bab3bd96f1"}, + {file = "Pillow-9.4.0-2-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:013016af6b3a12a2f40b704677f8b51f72cb007dac785a9933d5c86a72a7fe33"}, + {file = "Pillow-9.4.0-2-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:99d92d148dd03fd19d16175b6d355cc1b01faf80dae93c6c3eb4163709edc0a9"}, + {file = "Pillow-9.4.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:2968c58feca624bb6c8502f9564dd187d0e1389964898f5e9e1fbc8533169157"}, + {file = "Pillow-9.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c5c1362c14aee73f50143d74389b2c158707b4abce2cb055b7ad37ce60738d47"}, + {file = "Pillow-9.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd752c5ff1b4a870b7661234694f24b1d2b9076b8bf337321a814c612665f343"}, + {file = "Pillow-9.4.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9a3049a10261d7f2b6514d35bbb7a4dfc3ece4c4de14ef5876c4b7a23a0e566d"}, + {file = "Pillow-9.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16a8df99701f9095bea8a6c4b3197da105df6f74e6176c5b410bc2df2fd29a57"}, + {file = "Pillow-9.4.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:94cdff45173b1919350601f82d61365e792895e3c3a3443cf99819e6fbf717a5"}, + {file = "Pillow-9.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:ed3e4b4e1e6de75fdc16d3259098de7c6571b1a6cc863b1a49e7d3d53e036070"}, + {file = "Pillow-9.4.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d5b2f8a31bd43e0f18172d8ac82347c8f37ef3e0b414431157718aa234991b28"}, + {file = "Pillow-9.4.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:09b89ddc95c248ee788328528e6a2996e09eaccddeeb82a5356e92645733be35"}, + {file = "Pillow-9.4.0-cp310-cp310-win32.whl", hash = "sha256:f09598b416ba39a8f489c124447b007fe865f786a89dbfa48bb5cf395693132a"}, + {file = "Pillow-9.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:f6e78171be3fb7941f9910ea15b4b14ec27725865a73c15277bc39f5ca4f8391"}, + {file = "Pillow-9.4.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:3fa1284762aacca6dc97474ee9c16f83990b8eeb6697f2ba17140d54b453e133"}, + {file = "Pillow-9.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:eaef5d2de3c7e9b21f1e762f289d17b726c2239a42b11e25446abf82b26ac132"}, + {file = "Pillow-9.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4dfdae195335abb4e89cc9762b2edc524f3c6e80d647a9a81bf81e17e3fb6f0"}, + {file = "Pillow-9.4.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6abfb51a82e919e3933eb137e17c4ae9c0475a25508ea88993bb59faf82f3b35"}, + {file = "Pillow-9.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:451f10ef963918e65b8869e17d67db5e2f4ab40e716ee6ce7129b0cde2876eab"}, + {file = "Pillow-9.4.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:6663977496d616b618b6cfa43ec86e479ee62b942e1da76a2c3daa1c75933ef4"}, + {file = "Pillow-9.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:60e7da3a3ad1812c128750fc1bc14a7ceeb8d29f77e0a2356a8fb2aa8925287d"}, + {file = "Pillow-9.4.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:19005a8e58b7c1796bc0167862b1f54a64d3b44ee5d48152b06bb861458bc0f8"}, + {file = "Pillow-9.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f715c32e774a60a337b2bb8ad9839b4abf75b267a0f18806f6f4f5f1688c4b5a"}, + {file = "Pillow-9.4.0-cp311-cp311-win32.whl", hash = "sha256:b222090c455d6d1a64e6b7bb5f4035c4dff479e22455c9eaa1bdd4c75b52c80c"}, + {file = "Pillow-9.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:ba6612b6548220ff5e9df85261bddc811a057b0b465a1226b39bfb8550616aee"}, + {file = "Pillow-9.4.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:5f532a2ad4d174eb73494e7397988e22bf427f91acc8e6ebf5bb10597b49c493"}, + {file = "Pillow-9.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dd5a9c3091a0f414a963d427f920368e2b6a4c2f7527fdd82cde8ef0bc7a327"}, + {file = "Pillow-9.4.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef21af928e807f10bf4141cad4746eee692a0dd3ff56cfb25fce076ec3cc8abe"}, + {file = "Pillow-9.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:847b114580c5cc9ebaf216dd8c8dbc6b00a3b7ab0131e173d7120e6deade1f57"}, + {file = "Pillow-9.4.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:653d7fb2df65efefbcbf81ef5fe5e5be931f1ee4332c2893ca638c9b11a409c4"}, + {file = "Pillow-9.4.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:46f39cab8bbf4a384ba7cb0bc8bae7b7062b6a11cfac1ca4bc144dea90d4a9f5"}, + {file = "Pillow-9.4.0-cp37-cp37m-win32.whl", hash = "sha256:7ac7594397698f77bce84382929747130765f66406dc2cd8b4ab4da68ade4c6e"}, + {file = "Pillow-9.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:46c259e87199041583658457372a183636ae8cd56dbf3f0755e0f376a7f9d0e6"}, + {file = "Pillow-9.4.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:0e51f608da093e5d9038c592b5b575cadc12fd748af1479b5e858045fff955a9"}, + {file = "Pillow-9.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:765cb54c0b8724a7c12c55146ae4647e0274a839fb6de7bcba841e04298e1011"}, + {file = "Pillow-9.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:519e14e2c49fcf7616d6d2cfc5c70adae95682ae20f0395e9280db85e8d6c4df"}, + {file = "Pillow-9.4.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d197df5489004db87d90b918033edbeee0bd6df3848a204bca3ff0a903bef837"}, + {file = "Pillow-9.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0845adc64fe9886db00f5ab68c4a8cd933ab749a87747555cec1c95acea64b0b"}, + {file = "Pillow-9.4.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:e1339790c083c5a4de48f688b4841f18df839eb3c9584a770cbd818b33e26d5d"}, + {file = "Pillow-9.4.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:a96e6e23f2b79433390273eaf8cc94fec9c6370842e577ab10dabdcc7ea0a66b"}, + {file = "Pillow-9.4.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7cfc287da09f9d2a7ec146ee4d72d6ea1342e770d975e49a8621bf54eaa8f30f"}, + {file = "Pillow-9.4.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d7081c084ceb58278dd3cf81f836bc818978c0ccc770cbbb202125ddabec6628"}, + {file = "Pillow-9.4.0-cp38-cp38-win32.whl", hash = "sha256:df41112ccce5d47770a0c13651479fbcd8793f34232a2dd9faeccb75eb5d0d0d"}, + {file = "Pillow-9.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:7a21222644ab69ddd9967cfe6f2bb420b460dae4289c9d40ff9a4896e7c35c9a"}, + {file = "Pillow-9.4.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0f3269304c1a7ce82f1759c12ce731ef9b6e95b6df829dccd9fe42912cc48569"}, + {file = "Pillow-9.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cb362e3b0976dc994857391b776ddaa8c13c28a16f80ac6522c23d5257156bed"}, + {file = "Pillow-9.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a2e0f87144fcbbe54297cae708c5e7f9da21a4646523456b00cc956bd4c65815"}, + {file = "Pillow-9.4.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:28676836c7796805914b76b1837a40f76827ee0d5398f72f7dcc634bae7c6264"}, + {file = "Pillow-9.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0884ba7b515163a1a05440a138adeb722b8a6ae2c2b33aea93ea3118dd3a899e"}, + {file = "Pillow-9.4.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:53dcb50fbdc3fb2c55431a9b30caeb2f7027fcd2aeb501459464f0214200a503"}, + {file = "Pillow-9.4.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:e8c5cf126889a4de385c02a2c3d3aba4b00f70234bfddae82a5eaa3ee6d5e3e6"}, + {file = "Pillow-9.4.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6c6b1389ed66cdd174d040105123a5a1bc91d0aa7059c7261d20e583b6d8cbd2"}, + {file = "Pillow-9.4.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0dd4c681b82214b36273c18ca7ee87065a50e013112eea7d78c7a1b89a739153"}, + {file = "Pillow-9.4.0-cp39-cp39-win32.whl", hash = "sha256:6d9dfb9959a3b0039ee06c1a1a90dc23bac3b430842dcb97908ddde05870601c"}, + {file = "Pillow-9.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:54614444887e0d3043557d9dbc697dbb16cfb5a35d672b7a0fcc1ed0cf1c600b"}, + {file = "Pillow-9.4.0-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b9b752ab91e78234941e44abdecc07f1f0d8f51fb62941d32995b8161f68cfe5"}, + {file = "Pillow-9.4.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d3b56206244dc8711f7e8b7d6cad4663917cd5b2d950799425076681e8766286"}, + {file = "Pillow-9.4.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aabdab8ec1e7ca7f1434d042bf8b1e92056245fb179790dc97ed040361f16bfd"}, + {file = "Pillow-9.4.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:db74f5562c09953b2c5f8ec4b7dfd3f5421f31811e97d1dbc0a7c93d6e3a24df"}, + {file = "Pillow-9.4.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e9d7747847c53a16a729b6ee5e737cf170f7a16611c143d95aa60a109a59c336"}, + {file = "Pillow-9.4.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b52ff4f4e002f828ea6483faf4c4e8deea8d743cf801b74910243c58acc6eda3"}, + {file = "Pillow-9.4.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:575d8912dca808edd9acd6f7795199332696d3469665ef26163cd090fa1f8bfa"}, + {file = "Pillow-9.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3c4ed2ff6760e98d262e0cc9c9a7f7b8a9f61aa4d47c58835cdaf7b0b8811bb"}, + {file = "Pillow-9.4.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e621b0246192d3b9cb1dc62c78cfa4c6f6d2ddc0ec207d43c0dedecb914f152a"}, + {file = "Pillow-9.4.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:8f127e7b028900421cad64f51f75c051b628db17fb00e099eb148761eed598c9"}, + {file = "Pillow-9.4.0.tar.gz", hash = "sha256:a1c2d7780448eb93fbcc3789bf3916aa5720d942e37945f4056680317f1cd23e"}, +] + +[package.extras] +docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-issues (>=3.0.1)", "sphinx-removed-in", "sphinxext-opengraph"] +tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] + +[[package]] +name = "platformdirs" +version = "2.6.2" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "platformdirs-2.6.2-py3-none-any.whl", hash = "sha256:83c8f6d04389165de7c9b6f0c682439697887bca0aa2f1c87ef1826be3584490"}, + {file = "platformdirs-2.6.2.tar.gz", hash = "sha256:e1fea1fe471b9ff8332e229df3cb7de4f53eeea4998d3b6bfff542115e998bd2"}, +] + +[package.extras] +docs = ["furo (>=2022.12.7)", "proselint (>=0.13)", "sphinx (>=5.3)", "sphinx-autodoc-typehints (>=1.19.5)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.2.2)", "pytest (>=7.2)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"] + +[[package]] +name = "pluggy" +version = "1.0.0" +description = "plugin and hook calling mechanisms for python" +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, + {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, +] + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] + +[[package]] +name = "portray" +version = "1.8.0" +description = "Your Project with Great Documentation" +category = "dev" +optional = false +python-versions = ">3.7" +files = [ + {file = "portray-1.8.0-py3-none-any.whl", hash = "sha256:c7ee981b51f9b41b60b04c1351e1b61edd291049d10c45f7c8f05897caa6a931"}, + {file = "portray-1.8.0.tar.gz", hash = "sha256:a9dd2973a0235051c5b68a29390c3eeee192dc248cc2d944452ee9c02423b47d"}, +] + +[package.dependencies] +GitPython = ">=3.0" +hug = ">=2.6" +livereload = ">=2.6.3" +mkdocs = ">=1.3.0,<1.4.0" +mkdocs-material = ">=7.0" +pdocs = ">=1.2.0" +pymdown-extensions = ">=7.0" +toml = ">=0.10.0" +yaspin = ">=0.15.0,<3" + +[[package]] +name = "pre-commit" +version = "2.21.0" +description = "A framework for managing and maintaining multi-language pre-commit hooks." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pre_commit-2.21.0-py2.py3-none-any.whl", hash = "sha256:e2f91727039fc39a92f58a588a25b87f936de6567eed4f0e673e0507edc75bad"}, + {file = "pre_commit-2.21.0.tar.gz", hash = "sha256:31ef31af7e474a8d8995027fefdfcf509b5c913ff31f2015b4ec4beb26a6f658"}, +] + +[package.dependencies] +cfgv = ">=2.0.0" +identify = ">=1.0.0" +nodeenv = ">=0.11.1" +pyyaml = ">=5.1" +virtualenv = ">=20.10.0" + +[[package]] +name = "primme" +version = "3.2.1" +description = "PRIMME wrapper for Python" +category = "main" +optional = false +python-versions = "*" +files = [ + {file = "primme-3.2.1.tar.gz", hash = "sha256:0d10daa32899eca8aaf9a3e1dcf7ce088acb17e04668b7317087d279e48db256"}, +] + +[package.dependencies] +future = "*" +numpy = "*" +scipy = "*" + +[[package]] +name = "prompt-toolkit" +version = "3.0.36" +description = "Library for building powerful interactive command lines in Python" +category = "dev" +optional = false +python-versions = ">=3.6.2" +files = [ + {file = "prompt_toolkit-3.0.36-py3-none-any.whl", hash = "sha256:aa64ad242a462c5ff0363a7b9cfe696c20d55d9fc60c11fd8e632d064804d305"}, + {file = "prompt_toolkit-3.0.36.tar.gz", hash = "sha256:3e163f254bef5a03b146397d7c1963bd3e2812f0964bb9a24e6ec761fd28db63"}, +] + +[package.dependencies] +wcwidth = "*" + +[[package]] +name = "psutil" +version = "5.9.4" +description = "Cross-platform lib for process and system monitoring in Python." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "psutil-5.9.4-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:c1ca331af862803a42677c120aff8a814a804e09832f166f226bfd22b56feee8"}, + {file = "psutil-5.9.4-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:68908971daf802203f3d37e78d3f8831b6d1014864d7a85937941bb35f09aefe"}, + {file = "psutil-5.9.4-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:3ff89f9b835100a825b14c2808a106b6fdcc4b15483141482a12c725e7f78549"}, + {file = "psutil-5.9.4-cp27-cp27m-win32.whl", hash = "sha256:852dd5d9f8a47169fe62fd4a971aa07859476c2ba22c2254d4a1baa4e10b95ad"}, + {file = "psutil-5.9.4-cp27-cp27m-win_amd64.whl", hash = "sha256:9120cd39dca5c5e1c54b59a41d205023d436799b1c8c4d3ff71af18535728e94"}, + {file = "psutil-5.9.4-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:6b92c532979bafc2df23ddc785ed116fced1f492ad90a6830cf24f4d1ea27d24"}, + {file = "psutil-5.9.4-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:efeae04f9516907be44904cc7ce08defb6b665128992a56957abc9b61dca94b7"}, + {file = "psutil-5.9.4-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:54d5b184728298f2ca8567bf83c422b706200bcbbfafdc06718264f9393cfeb7"}, + {file = "psutil-5.9.4-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:16653106f3b59386ffe10e0bad3bb6299e169d5327d3f187614b1cb8f24cf2e1"}, + {file = "psutil-5.9.4-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54c0d3d8e0078b7666984e11b12b88af2db11d11249a8ac8920dd5ef68a66e08"}, + {file = "psutil-5.9.4-cp36-abi3-win32.whl", hash = "sha256:149555f59a69b33f056ba1c4eb22bb7bf24332ce631c44a319cec09f876aaeff"}, + {file = "psutil-5.9.4-cp36-abi3-win_amd64.whl", hash = "sha256:fd8522436a6ada7b4aad6638662966de0d61d241cb821239b2ae7013d41a43d4"}, + {file = "psutil-5.9.4-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:6001c809253a29599bc0dfd5179d9f8a5779f9dffea1da0f13c53ee568115e1e"}, + {file = "psutil-5.9.4.tar.gz", hash = "sha256:3d7f9739eb435d4b1338944abe23f49584bde5395f27487d2ee25ad9a8774a62"}, +] + +[package.extras] +test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"] + +[[package]] +name = "ptyprocess" +version = "0.7.0" +description = "Run a subprocess in a pseudo terminal" +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, + {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, +] + +[[package]] +name = "pure-eval" +version = "0.2.2" +description = "Safely evaluate AST nodes without side effects" +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "pure_eval-0.2.2-py3-none-any.whl", hash = "sha256:01eaab343580944bc56080ebe0a674b39ec44a945e6d09ba7db3cb8cec289350"}, + {file = "pure_eval-0.2.2.tar.gz", hash = "sha256:2b45320af6dfaa1750f543d714b6d1c520a1688dec6fd24d339063ce0aaa9ac3"}, +] + +[package.extras] +tests = ["pytest"] + +[[package]] +name = "pycodestyle" +version = "2.10.0" +description = "Python style guide checker" +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "pycodestyle-2.10.0-py2.py3-none-any.whl", hash = "sha256:8a4eaf0d0495c7395bdab3589ac2db602797d76207242c17d470186815706610"}, + {file = "pycodestyle-2.10.0.tar.gz", hash = "sha256:347187bdb476329d98f695c213d7295a846d1152ff4fe9bacb8a9590b8ee7053"}, +] + +[[package]] +name = "pycparser" +version = "2.21" +description = "C parser in Python" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, + {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, +] + +[[package]] +name = "pydata-sphinx-theme" +version = "0.8.1" +description = "Bootstrap-based Sphinx theme from the PyData community" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pydata_sphinx_theme-0.8.1-py3-none-any.whl", hash = "sha256:af2c99cb0b43d95247b1563860942ba75d7f1596360594fce510caaf8c4fcc16"}, + {file = "pydata_sphinx_theme-0.8.1.tar.gz", hash = "sha256:96165702253917ece13dd895e23b96ee6dce422dcc144d560806067852fe1fed"}, +] + +[package.dependencies] +beautifulsoup4 = "*" +docutils = "!=0.17.0" +packaging = "*" +sphinx = ">=3.5.4,<5" + +[package.extras] +coverage = ["codecov", "pydata-sphinx-theme[test]", "pytest-cov"] +dev = ["nox", "pre-commit", "pydata-sphinx-theme[coverage]", "pyyaml"] +doc = ["jupyter_sphinx", "myst-parser", "numpy", "numpydoc", "pandas", "plotly", "pytest", "pytest-regressions", "sphinx-sitemap", "sphinxext-rediraffe", "xarray"] +test = ["pydata-sphinx-theme[doc]", "pytest"] + +[[package]] +name = "pyflakes" +version = "3.0.1" +description = "passive checker of Python programs" +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "pyflakes-3.0.1-py2.py3-none-any.whl", hash = "sha256:ec55bf7fe21fff7f1ad2f7da62363d749e2a470500eab1b555334b67aa1ef8cf"}, + {file = "pyflakes-3.0.1.tar.gz", hash = "sha256:ec8b276a6b60bd80defed25add7e439881c19e64850afd9b346283d4165fd0fd"}, +] + +[[package]] +name = "pygments" +version = "2.14.0" +description = "Pygments is a syntax highlighting package written in Python." +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "Pygments-2.14.0-py3-none-any.whl", hash = "sha256:fa7bd7bd2771287c0de303af8bfdfc731f51bd2c6a47ab69d117138893b82717"}, + {file = "Pygments-2.14.0.tar.gz", hash = "sha256:b3ed06a9e8ac9a9aae5a6f5dbe78a8a58655d17b43b93c078f094ddc476ae297"}, +] + +[package.extras] +plugins = ["importlib-metadata"] + +[[package]] +name = "pymdown-extensions" +version = "9.9.2" +description = "Extension pack for Python Markdown." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pymdown_extensions-9.9.2-py3-none-any.whl", hash = "sha256:c3d804eb4a42b85bafb5f36436342a5ad38df03878bb24db8855a4aa8b08b765"}, + {file = "pymdown_extensions-9.9.2.tar.gz", hash = "sha256:ebb33069bafcb64d5f5988043331d4ea4929325dc678a6bcf247ddfcf96499f8"}, +] + +[package.dependencies] +markdown = ">=3.2" + +[[package]] +name = "pyparsing" +version = "3.0.9" +description = "pyparsing module - Classes and methods to define and execute parsing grammars" +category = "main" +optional = true +python-versions = ">=3.6.8" +files = [ + {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, + {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, +] + +[package.extras] +diagrams = ["jinja2", "railroad-diagrams"] + +[[package]] +name = "pyrsistent" +version = "0.19.3" +description = "Persistent/Functional/Immutable data structures" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pyrsistent-0.19.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:20460ac0ea439a3e79caa1dbd560344b64ed75e85d8703943e0b66c2a6150e4a"}, + {file = "pyrsistent-0.19.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4c18264cb84b5e68e7085a43723f9e4c1fd1d935ab240ce02c0324a8e01ccb64"}, + {file = "pyrsistent-0.19.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b774f9288dda8d425adb6544e5903f1fb6c273ab3128a355c6b972b7df39dcf"}, + {file = "pyrsistent-0.19.3-cp310-cp310-win32.whl", hash = "sha256:5a474fb80f5e0d6c9394d8db0fc19e90fa540b82ee52dba7d246a7791712f74a"}, + {file = "pyrsistent-0.19.3-cp310-cp310-win_amd64.whl", hash = "sha256:49c32f216c17148695ca0e02a5c521e28a4ee6c5089f97e34fe24163113722da"}, + {file = "pyrsistent-0.19.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f0774bf48631f3a20471dd7c5989657b639fd2d285b861237ea9e82c36a415a9"}, + {file = "pyrsistent-0.19.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ab2204234c0ecd8b9368dbd6a53e83c3d4f3cab10ecaf6d0e772f456c442393"}, + {file = "pyrsistent-0.19.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e42296a09e83028b3476f7073fcb69ffebac0e66dbbfd1bd847d61f74db30f19"}, + {file = "pyrsistent-0.19.3-cp311-cp311-win32.whl", hash = "sha256:64220c429e42a7150f4bfd280f6f4bb2850f95956bde93c6fda1b70507af6ef3"}, + {file = "pyrsistent-0.19.3-cp311-cp311-win_amd64.whl", hash = "sha256:016ad1afadf318eb7911baa24b049909f7f3bb2c5b1ed7b6a8f21db21ea3faa8"}, + {file = "pyrsistent-0.19.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c4db1bd596fefd66b296a3d5d943c94f4fac5bcd13e99bffe2ba6a759d959a28"}, + {file = "pyrsistent-0.19.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aeda827381f5e5d65cced3024126529ddc4289d944f75e090572c77ceb19adbf"}, + {file = "pyrsistent-0.19.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:42ac0b2f44607eb92ae88609eda931a4f0dfa03038c44c772e07f43e738bcac9"}, + {file = "pyrsistent-0.19.3-cp37-cp37m-win32.whl", hash = "sha256:e8f2b814a3dc6225964fa03d8582c6e0b6650d68a232df41e3cc1b66a5d2f8d1"}, + {file = "pyrsistent-0.19.3-cp37-cp37m-win_amd64.whl", hash = "sha256:c9bb60a40a0ab9aba40a59f68214eed5a29c6274c83b2cc206a359c4a89fa41b"}, + {file = "pyrsistent-0.19.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a2471f3f8693101975b1ff85ffd19bb7ca7dd7c38f8a81701f67d6b4f97b87d8"}, + {file = "pyrsistent-0.19.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc5d149f31706762c1f8bda2e8c4f8fead6e80312e3692619a75301d3dbb819a"}, + {file = "pyrsistent-0.19.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3311cb4237a341aa52ab8448c27e3a9931e2ee09561ad150ba94e4cfd3fc888c"}, + {file = "pyrsistent-0.19.3-cp38-cp38-win32.whl", hash = "sha256:f0e7c4b2f77593871e918be000b96c8107da48444d57005b6a6bc61fb4331b2c"}, + {file = "pyrsistent-0.19.3-cp38-cp38-win_amd64.whl", hash = "sha256:c147257a92374fde8498491f53ffa8f4822cd70c0d85037e09028e478cababb7"}, + {file = "pyrsistent-0.19.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b735e538f74ec31378f5a1e3886a26d2ca6351106b4dfde376a26fc32a044edc"}, + {file = "pyrsistent-0.19.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99abb85579e2165bd8522f0c0138864da97847875ecbd45f3e7e2af569bfc6f2"}, + {file = "pyrsistent-0.19.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3a8cb235fa6d3fd7aae6a4f1429bbb1fec1577d978098da1252f0489937786f3"}, + {file = "pyrsistent-0.19.3-cp39-cp39-win32.whl", hash = "sha256:c74bed51f9b41c48366a286395c67f4e894374306b197e62810e0fdaf2364da2"}, + {file = "pyrsistent-0.19.3-cp39-cp39-win_amd64.whl", hash = "sha256:878433581fc23e906d947a6814336eee031a00e6defba224234169ae3d3d6a98"}, + {file = "pyrsistent-0.19.3-py3-none-any.whl", hash = "sha256:ccf0d6bd208f8111179f0c26fdf84ed7c3891982f2edaeae7422575f47e66b64"}, + {file = "pyrsistent-0.19.3.tar.gz", hash = "sha256:1a2994773706bbb4995c31a97bc94f1418314923bd1048c6d964837040376440"}, +] + +[[package]] +name = "pytest" +version = "7.2.1" +description = "pytest: simple powerful testing with Python" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pytest-7.2.1-py3-none-any.whl", hash = "sha256:c7c6ca206e93355074ae32f7403e8ea12163b1163c976fee7d4d84027c162be5"}, + {file = "pytest-7.2.1.tar.gz", hash = "sha256:d45e0952f3727241918b8fd0f376f5ff6b301cc0777c6f9a556935c92d8a7d42"}, +] + +[package.dependencies] +attrs = ">=19.2.0" +colorama = {version = "*", markers = "sys_platform == \"win32\""} +exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=0.12,<2.0" +tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} + +[package.extras] +testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"] + +[[package]] +name = "pytest-cov" +version = "4.0.0" +description = "Pytest plugin for measuring coverage." +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "pytest-cov-4.0.0.tar.gz", hash = "sha256:996b79efde6433cdbd0088872dbc5fb3ed7fe1578b68cdbba634f14bb8dd0470"}, + {file = "pytest_cov-4.0.0-py3-none-any.whl", hash = "sha256:2feb1b751d66a8bd934e5edfa2e961d11309dc37b73b0eabe73b5945fee20f6b"}, +] + +[package.dependencies] +coverage = {version = ">=5.2.1", extras = ["toml"]} +pytest = ">=4.6" + +[package.extras] +testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtualenv"] + +[[package]] +name = "pytest-mock" +version = "3.10.0" +description = "Thin-wrapper around the mock package for easier use with pytest" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pytest-mock-3.10.0.tar.gz", hash = "sha256:fbbdb085ef7c252a326fd8cdcac0aa3b1333d8811f131bdcc701002e1be7ed4f"}, + {file = "pytest_mock-3.10.0-py3-none-any.whl", hash = "sha256:f4c973eeae0282963eb293eb173ce91b091a79c1334455acfac9ddee8a1c784b"}, +] + +[package.dependencies] +pytest = ">=5.0" + +[package.extras] +dev = ["pre-commit", "pytest-asyncio", "tox"] + +[[package]] +name = "python-dateutil" +version = "2.8.2" +description = "Extensions to the standard Python datetime module" +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +files = [ + {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, + {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, +] + +[package.dependencies] +six = ">=1.5" + +[[package]] +name = "python-slugify" +version = "8.0.0" +description = "A Python slugify application that also handles Unicode" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "python-slugify-8.0.0.tar.gz", hash = "sha256:f1da83f3c7ab839b3f84543470cd95bdb5a81f1a0b80fed502f78b7dca256062"}, + {file = "python_slugify-8.0.0-py2.py3-none-any.whl", hash = "sha256:51f217508df20a6c166c7821683384b998560adcf8f19a6c2ca8b460528ccd9c"}, +] + +[package.dependencies] +text-unidecode = ">=1.3" + +[package.extras] +unidecode = ["Unidecode (>=1.1.1)"] + +[[package]] +name = "pytz" +version = "2022.7.1" +description = "World timezone definitions, modern and historical" +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "pytz-2022.7.1-py2.py3-none-any.whl", hash = "sha256:78f4f37d8198e0627c5f1143240bb0206b8691d8d7ac6d78fee88b78733f8c4a"}, + {file = "pytz-2022.7.1.tar.gz", hash = "sha256:01a0681c4b9684a28304615eba55d1ab31ae00bf68ec157ec3708a8182dbbcd0"}, +] + +[[package]] +name = "pywin32" +version = "305" +description = "Python for Window Extensions" +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "pywin32-305-cp310-cp310-win32.whl", hash = "sha256:421f6cd86e84bbb696d54563c48014b12a23ef95a14e0bdba526be756d89f116"}, + {file = "pywin32-305-cp310-cp310-win_amd64.whl", hash = "sha256:73e819c6bed89f44ff1d690498c0a811948f73777e5f97c494c152b850fad478"}, + {file = "pywin32-305-cp310-cp310-win_arm64.whl", hash = "sha256:742eb905ce2187133a29365b428e6c3b9001d79accdc30aa8969afba1d8470f4"}, + {file = "pywin32-305-cp311-cp311-win32.whl", hash = "sha256:19ca459cd2e66c0e2cc9a09d589f71d827f26d47fe4a9d09175f6aa0256b51c2"}, + {file = "pywin32-305-cp311-cp311-win_amd64.whl", hash = "sha256:326f42ab4cfff56e77e3e595aeaf6c216712bbdd91e464d167c6434b28d65990"}, + {file = "pywin32-305-cp311-cp311-win_arm64.whl", hash = "sha256:4ecd404b2c6eceaca52f8b2e3e91b2187850a1ad3f8b746d0796a98b4cea04db"}, + {file = "pywin32-305-cp36-cp36m-win32.whl", hash = "sha256:48d8b1659284f3c17b68587af047d110d8c44837736b8932c034091683e05863"}, + {file = "pywin32-305-cp36-cp36m-win_amd64.whl", hash = "sha256:13362cc5aa93c2beaf489c9c9017c793722aeb56d3e5166dadd5ef82da021fe1"}, + {file = "pywin32-305-cp37-cp37m-win32.whl", hash = "sha256:a55db448124d1c1484df22fa8bbcbc45c64da5e6eae74ab095b9ea62e6d00496"}, + {file = "pywin32-305-cp37-cp37m-win_amd64.whl", hash = "sha256:109f98980bfb27e78f4df8a51a8198e10b0f347257d1e265bb1a32993d0c973d"}, + {file = "pywin32-305-cp38-cp38-win32.whl", hash = "sha256:9dd98384da775afa009bc04863426cb30596fd78c6f8e4e2e5bbf4edf8029504"}, + {file = "pywin32-305-cp38-cp38-win_amd64.whl", hash = "sha256:56d7a9c6e1a6835f521788f53b5af7912090674bb84ef5611663ee1595860fc7"}, + {file = "pywin32-305-cp39-cp39-win32.whl", hash = "sha256:9d968c677ac4d5cbdaa62fd3014ab241718e619d8e36ef8e11fb930515a1e918"}, + {file = "pywin32-305-cp39-cp39-win_amd64.whl", hash = "sha256:50768c6b7c3f0b38b7fb14dd4104da93ebced5f1a50dc0e834594bff6fbe1271"}, +] + +[[package]] +name = "pyyaml" +version = "6.0" +description = "YAML parser and emitter for Python" +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, + {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"}, + {file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"}, + {file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"}, + {file = "PyYAML-6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358"}, + {file = "PyYAML-6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1"}, + {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d"}, + {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f"}, + {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782"}, + {file = "PyYAML-6.0-cp311-cp311-win32.whl", hash = "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7"}, + {file = "PyYAML-6.0-cp311-cp311-win_amd64.whl", hash = "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf"}, + {file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"}, + {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"}, + {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"}, + {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"}, + {file = "PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"}, + {file = "PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"}, + {file = "PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"}, + {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"}, + {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"}, + {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"}, + {file = "PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"}, + {file = "PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"}, + {file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"}, + {file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"}, + {file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"}, + {file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"}, + {file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"}, + {file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"}, + {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"}, + {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, +] + +[[package]] +name = "pyyaml-env-tag" +version = "0.1" +description = "A custom YAML tag for referencing environment variables in YAML files. " +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069"}, + {file = "pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb"}, +] + +[package.dependencies] +pyyaml = "*" + +[[package]] +name = "pyzmq" +version = "25.0.0" +description = "Python bindings for 0MQ" +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "pyzmq-25.0.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:2d05d904f03ddf1e0d83d97341354dfe52244a619b5a1440a5f47a5b3451e84e"}, + {file = "pyzmq-25.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a154ef810d44f9d28868be04641f837374a64e7449df98d9208e76c260c7ef1"}, + {file = "pyzmq-25.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:487305c2a011fdcf3db1f24e8814bb76d23bc4d2f46e145bc80316a59a9aa07d"}, + {file = "pyzmq-25.0.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e7b87638ee30ab13230e37ce5331b3e730b1e0dda30120b9eeec3540ed292c8"}, + {file = "pyzmq-25.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75243e422e85a62f0ab7953dc315452a56b2c6a7e7d1a3c3109ac3cc57ed6b47"}, + {file = "pyzmq-25.0.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:31e523d067ce44a04e876bed3ff9ea1ff8d1b6636d16e5fcace9d22f8c564369"}, + {file = "pyzmq-25.0.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8539216173135e9e89f6b1cc392e74e6b935b91e8c76106cf50e7a02ab02efe5"}, + {file = "pyzmq-25.0.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:2754fa68da08a854f4816e05160137fa938a2347276471103d31e04bcee5365c"}, + {file = "pyzmq-25.0.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4a1bc30f0c18444d51e9b0d0dd39e3a4e7c53ee74190bebef238cd58de577ea9"}, + {file = "pyzmq-25.0.0-cp310-cp310-win32.whl", hash = "sha256:01d53958c787cfea34091fcb8ef36003dbb7913b8e9f8f62a0715234ebc98b70"}, + {file = "pyzmq-25.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:58fc3ad5e1cfd2e6d24741fbb1e216b388115d31b0ca6670f894187f280b6ba6"}, + {file = "pyzmq-25.0.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:e4bba04ea779a3d7ef25a821bb63fd0939142c88e7813e5bd9c6265a20c523a2"}, + {file = "pyzmq-25.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:af1fbfb7ad6ac0009ccee33c90a1d303431c7fb594335eb97760988727a37577"}, + {file = "pyzmq-25.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85456f0d8f3268eecd63dede3b99d5bd8d3b306310c37d4c15141111d22baeaf"}, + {file = "pyzmq-25.0.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0645b5a2d2a06fd8eb738018490c514907f7488bf9359c6ee9d92f62e844b76f"}, + {file = "pyzmq-25.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f72ea279b2941a5203e935a4588b9ba8a48aeb9a926d9dfa1986278bd362cb8"}, + {file = "pyzmq-25.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:4e295f7928a31ae0f657e848c5045ba6d693fe8921205f408ca3804b1b236968"}, + {file = "pyzmq-25.0.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ac97e7d647d5519bcef48dd8d3d331f72975afa5c4496c95f6e854686f45e2d9"}, + {file = "pyzmq-25.0.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:656281d496aaf9ca4fd4cea84e6d893e3361057c4707bd38618f7e811759103c"}, + {file = "pyzmq-25.0.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1f6116991568aac48b94d6d8aaed6157d407942ea385335a6ed313692777fb9d"}, + {file = "pyzmq-25.0.0-cp311-cp311-win32.whl", hash = "sha256:0282bba9aee6e0346aa27d6c69b5f7df72b5a964c91958fc9e0c62dcae5fdcdc"}, + {file = "pyzmq-25.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:526f884a27e8bba62fe1f4e07c62be2cfe492b6d432a8fdc4210397f8cf15331"}, + {file = "pyzmq-25.0.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:ccb3e1a863222afdbda42b7ca8ac8569959593d7abd44f5a709177d6fa27d266"}, + {file = "pyzmq-25.0.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4046d03100aca266e70d54a35694cb35d6654cfbef633e848b3c4a8d64b9d187"}, + {file = "pyzmq-25.0.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3100dddcada66ec5940ed6391ebf9d003cc3ede3d320748b2737553019f58230"}, + {file = "pyzmq-25.0.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7877264aa851c19404b1bb9dbe6eed21ea0c13698be1eda3784aab3036d1c861"}, + {file = "pyzmq-25.0.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:5049e75cc99db65754a3da5f079230fb8889230cf09462ec972d884d1704a3ed"}, + {file = "pyzmq-25.0.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:81f99fb1224d36eb91557afec8cdc2264e856f3464500b55749020ce4c848ef2"}, + {file = "pyzmq-25.0.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:a1cd4a95f176cdc0ee0a82d49d5830f13ae6015d89decbf834c273bc33eeb3d3"}, + {file = "pyzmq-25.0.0-cp36-cp36m-win32.whl", hash = "sha256:926236ca003aec70574754f39703528947211a406f5c6c8b3e50eca04a9e87fc"}, + {file = "pyzmq-25.0.0-cp36-cp36m-win_amd64.whl", hash = "sha256:94f0a7289d0f5c80807c37ebb404205e7deb737e8763eb176f4770839ee2a287"}, + {file = "pyzmq-25.0.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:f3f96d452e9580cb961ece2e5a788e64abaecb1232a80e61deffb28e105ff84a"}, + {file = "pyzmq-25.0.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:930e6ad4f2eaac31a3d0c2130619d25db754b267487ebc186c6ad18af2a74018"}, + {file = "pyzmq-25.0.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e1081d7030a1229c8ff90120346fb7599b54f552e98fcea5170544e7c6725aab"}, + {file = "pyzmq-25.0.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:531866c491aee5a1e967c286cfa470dffac1e2a203b1afda52d62b58782651e9"}, + {file = "pyzmq-25.0.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:fc7c1421c5b1c916acf3128bf3cc7ea7f5018b58c69a6866d70c14190e600ce9"}, + {file = "pyzmq-25.0.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:9a2d5e419bd39a1edb6cdd326d831f0120ddb9b1ff397e7d73541bf393294973"}, + {file = "pyzmq-25.0.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:183e18742be3621acf8908903f689ec520aee3f08449bfd29f583010ca33022b"}, + {file = "pyzmq-25.0.0-cp37-cp37m-win32.whl", hash = "sha256:02f5cb60a7da1edd5591a15efa654ffe2303297a41e1b40c3c8942f8f11fc17c"}, + {file = "pyzmq-25.0.0-cp37-cp37m-win_amd64.whl", hash = "sha256:cac602e02341eaaf4edfd3e29bd3fdef672e61d4e6dfe5c1d065172aee00acee"}, + {file = "pyzmq-25.0.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:e14df47c1265356715d3d66e90282a645ebc077b70b3806cf47efcb7d1d630cb"}, + {file = "pyzmq-25.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:293a7c2128690f496057f1f1eb6074f8746058d13588389981089ec45d8fdc77"}, + {file = "pyzmq-25.0.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:731b208bc9412deeb553c9519dca47136b5a01ca66667cafd8733211941b17e4"}, + {file = "pyzmq-25.0.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b055a1cddf8035966ad13aa51edae5dc8f1bba0b5d5e06f7a843d8b83dc9b66b"}, + {file = "pyzmq-25.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:17e1cb97d573ea84d7cd97188b42ca6f611ab3ee600f6a75041294ede58e3d20"}, + {file = "pyzmq-25.0.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:60ecbfe7669d3808ffa8a7dd1487d6eb8a4015b07235e3b723d4b2a2d4de7203"}, + {file = "pyzmq-25.0.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4c25c95416133942280faaf068d0fddfd642b927fb28aaf4ab201a738e597c1e"}, + {file = "pyzmq-25.0.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:be05504af0619d1cffa500af1e0ede69fb683f301003851f5993b5247cc2c576"}, + {file = "pyzmq-25.0.0-cp38-cp38-win32.whl", hash = "sha256:6bf3842af37af43fa953e96074ebbb5315f6a297198f805d019d788a1021dbc8"}, + {file = "pyzmq-25.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:b90bb8dfbbd138558f1f284fecfe328f7653616ff9a972433a00711d9475d1a9"}, + {file = "pyzmq-25.0.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:62b9e80890c0d2408eb42d5d7e1fc62a5ce71be3288684788f74cf3e59ffd6e2"}, + {file = "pyzmq-25.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:484c2c4ee02c1edc07039f42130bd16e804b1fe81c4f428e0042e03967f40c20"}, + {file = "pyzmq-25.0.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9ca6db34b26c4d3e9b0728841ec9aa39484eee272caa97972ec8c8e231b20c7e"}, + {file = "pyzmq-25.0.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:610d2d112acd4e5501fac31010064a6c6efd716ceb968e443cae0059eb7b86de"}, + {file = "pyzmq-25.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3594c0ff604e685d7e907860b61d0e10e46c74a9ffca168f6e9e50ea934ee440"}, + {file = "pyzmq-25.0.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c21a5f4e54a807df5afdef52b6d24ec1580153a6bcf0607f70a6e1d9fa74c5c3"}, + {file = "pyzmq-25.0.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:4725412e27612f0d7d7c2f794d89807ad0227c2fc01dd6146b39ada49c748ef9"}, + {file = "pyzmq-25.0.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4d3d604fe0a67afd1aff906e54da557a5203368a99dcc50a70eef374f1d2abef"}, + {file = "pyzmq-25.0.0-cp39-cp39-win32.whl", hash = "sha256:3670e8c5644768f214a3b598fe46378a4a6f096d5fb82a67dfd3440028460565"}, + {file = "pyzmq-25.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:e99629a976809fe102ef73e856cf4b2660acd82a412a51e80ba2215e523dfd0a"}, + {file = "pyzmq-25.0.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:66509c48f7446b640eeae24b60c9c1461799a27b1b0754e438582e36b5af3315"}, + {file = "pyzmq-25.0.0-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:a9c464cc508177c09a5a6122b67f978f20e2954a21362bf095a0da4647e3e908"}, + {file = "pyzmq-25.0.0-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:28bcb2e66224a7ac2843eb632e4109d6b161479e7a2baf24e37210461485b4f1"}, + {file = "pyzmq-25.0.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0e7ef9ac807db50b4eb6f534c5dcc22f998f5dae920cc28873d2c1d080a4fc9"}, + {file = "pyzmq-25.0.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:5050f5c50b58a6e38ccaf9263a356f74ef1040f5ca4030225d1cb1a858c5b7b6"}, + {file = "pyzmq-25.0.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2a73af6504e0d2805e926abf136ebf536735a13c22f709be7113c2ec65b4bec3"}, + {file = "pyzmq-25.0.0-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0e8d00228db627ddd1b418c7afd81820b38575f237128c9650365f2dd6ac3443"}, + {file = "pyzmq-25.0.0-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5605621f2181f20b71f13f698944deb26a0a71af4aaf435b34dd90146092d530"}, + {file = "pyzmq-25.0.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6136bfb0e5a9cf8c60c6ac763eb21f82940a77e6758ea53516c8c7074f4ff948"}, + {file = "pyzmq-25.0.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:0a90b2480a26aef7c13cff18703ba8d68e181facb40f78873df79e6d42c1facc"}, + {file = "pyzmq-25.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:00c94fd4c9dd3c95aace0c629a7fa713627a5c80c1819326b642adf6c4b8e2a2"}, + {file = "pyzmq-25.0.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20638121b0bdc80777ce0ec8c1f14f1ffec0697a1f88f0b564fa4a23078791c4"}, + {file = "pyzmq-25.0.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b6f75b4b8574f3a8a0d6b4b52606fc75b82cb4391471be48ab0b8677c82f9ed4"}, + {file = "pyzmq-25.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cbb885f347eba7ab7681c450dee5b14aed9f153eec224ec0c3f299273d9241f"}, + {file = "pyzmq-25.0.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c48f257da280b3be6c94e05bd575eddb1373419dbb1a72c3ce64e88f29d1cd6d"}, + {file = "pyzmq-25.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:866eabf7c1315ef2e93e34230db7cbf672e0d7c626b37c11f7e870c8612c3dcc"}, + {file = "pyzmq-25.0.0.tar.gz", hash = "sha256:f330a1a2c7f89fd4b0aa4dcb7bf50243bf1c8da9a2f1efc31daf57a2046b31f2"}, +] + +[package.dependencies] +cffi = {version = "*", markers = "implementation_name == \"pypy\""} + +[[package]] +name = "questionary" +version = "1.10.0" +description = "Python library to build pretty command line user prompts ⭐️" +category = "dev" +optional = false +python-versions = ">=3.6,<4.0" +files = [ + {file = "questionary-1.10.0-py3-none-any.whl", hash = "sha256:fecfcc8cca110fda9d561cb83f1e97ecbb93c613ff857f655818839dac74ce90"}, + {file = "questionary-1.10.0.tar.gz", hash = "sha256:600d3aefecce26d48d97eee936fdb66e4bc27f934c3ab6dd1e292c4f43946d90"}, +] + +[package.dependencies] +prompt_toolkit = ">=2.0,<4.0" + +[package.extras] +docs = ["Sphinx (>=3.3,<4.0)", "sphinx-autobuild (>=2020.9.1,<2021.0.0)", "sphinx-autodoc-typehints (>=1.11.1,<2.0.0)", "sphinx-copybutton (>=0.3.1,<0.4.0)", "sphinx-rtd-theme (>=0.5.0,<0.6.0)"] + +[[package]] +name = "quimb" +version = "1.4.0" +description = "Quantum information and many-body library." +category = "main" +optional = false +python-versions = ">=3.6" +files = [ + {file = "quimb-1.4.0-py3-none-any.whl", hash = "sha256:7e474a95d29f6e2aea9390b07561a848bef4a14171deb3f4f4229b1ce46d13b5"}, + {file = "quimb-1.4.0.tar.gz", hash = "sha256:bd5fef7c698bdfe0761c4c7a557ee241e1421d54d882565e04f26aaf63866248"}, +] + +[package.dependencies] +cytoolz = ">=0.8.0" +numba = ">=0.39" +numpy = ">=1.17" +psutil = ">=4.3.1" +scipy = ">=1.0.0" +tqdm = ">=4" + +[package.extras] +advanced-solvers = ["mpi4py", "petsc4py", "slepc4py"] +docs = ["autoray (>=0.2.0)", "doc2dash (>=2.4.1)", "ipython (>=7.0)", "nbsphinx (>=0.4)", "opt-einsum (>=3.2)", "sphinx (>=2.0)", "sphinx-book-theme (>=0.1)"] +random = ["randomgen (>=1.18)"] +tensor = ["autoray (>=0.2.0)", "diskcache (>=3.0)", "matplotlib (>=2.0)", "networkx (>=2.3)", "opt-einsum (>=3.2)"] +tests = ["coverage", "pytest", "pytest-cov"] + +[[package]] +name = "requests" +version = "2.28.2" +description = "Python HTTP for Humans." +category = "dev" +optional = false +python-versions = ">=3.7, <4" +files = [ + {file = "requests-2.28.2-py3-none-any.whl", hash = "sha256:64299f4909223da747622c030b781c0d7811e359c37124b4bd368fb8c6518baa"}, + {file = "requests-2.28.2.tar.gz", hash = "sha256:98b1b2782e3c6c4904938b84c0eb932721069dfdb9134313beff7c83c2df24bf"}, +] + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = ">=2,<4" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<1.27" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] + +[[package]] +name = "ruamel-yaml" +version = "0.17.21" +description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order" +category = "dev" +optional = false +python-versions = ">=3" +files = [ + {file = "ruamel.yaml-0.17.21-py3-none-any.whl", hash = "sha256:742b35d3d665023981bd6d16b3d24248ce5df75fdb4e2924e93a05c1f8b61ca7"}, + {file = "ruamel.yaml-0.17.21.tar.gz", hash = "sha256:8b7ce697a2f212752a35c1ac414471dc16c424c9573be4926b56ff3f5d23b7af"}, +] + +[package.dependencies] +"ruamel.yaml.clib" = {version = ">=0.2.6", markers = "platform_python_implementation == \"CPython\" and python_version < \"3.11\""} + +[package.extras] +docs = ["ryd"] +jinja2 = ["ruamel.yaml.jinja2 (>=0.2)"] + +[[package]] +name = "ruamel-yaml-clib" +version = "0.2.7" +description = "C version of reader, parser and emitter for ruamel.yaml derived from libyaml" +category = "dev" +optional = false +python-versions = ">=3.5" +files = [ + {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d5859983f26d8cd7bb5c287ef452e8aacc86501487634573d260968f753e1d71"}, + {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:debc87a9516b237d0466a711b18b6ebeb17ba9f391eb7f91c649c5c4ec5006c7"}, + {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:df5828871e6648db72d1c19b4bd24819b80a755c4541d3409f0f7acd0f335c80"}, + {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:efa08d63ef03d079dcae1dfe334f6c8847ba8b645d08df286358b1f5293d24ab"}, + {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-win32.whl", hash = "sha256:763d65baa3b952479c4e972669f679fe490eee058d5aa85da483ebae2009d231"}, + {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-win_amd64.whl", hash = "sha256:d000f258cf42fec2b1bbf2863c61d7b8918d31ffee905da62dede869254d3b8a"}, + {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:045e0626baf1c52e5527bd5db361bc83180faaba2ff586e763d3d5982a876a9e"}, + {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_12_6_arm64.whl", hash = "sha256:721bc4ba4525f53f6a611ec0967bdcee61b31df5a56801281027a3a6d1c2daf5"}, + {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:41d0f1fa4c6830176eef5b276af04c89320ea616655d01327d5ce65e50575c94"}, + {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:4b3a93bb9bc662fc1f99c5c3ea8e623d8b23ad22f861eb6fce9377ac07ad6072"}, + {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-macosx_12_0_arm64.whl", hash = "sha256:a234a20ae07e8469da311e182e70ef6b199d0fbeb6c6cc2901204dd87fb867e8"}, + {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:15910ef4f3e537eea7fe45f8a5d19997479940d9196f357152a09031c5be59f3"}, + {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:370445fd795706fd291ab00c9df38a0caed0f17a6fb46b0f607668ecb16ce763"}, + {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-win32.whl", hash = "sha256:ecdf1a604009bd35c674b9225a8fa609e0282d9b896c03dd441a91e5f53b534e"}, + {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-win_amd64.whl", hash = "sha256:f34019dced51047d6f70cb9383b2ae2853b7fc4dce65129a5acd49f4f9256646"}, + {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2aa261c29a5545adfef9296b7e33941f46aa5bbd21164228e833412af4c9c75f"}, + {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-macosx_12_0_arm64.whl", hash = "sha256:f01da5790e95815eb5a8a138508c01c758e5f5bc0ce4286c4f7028b8dd7ac3d0"}, + {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:40d030e2329ce5286d6b231b8726959ebbe0404c92f0a578c0e2482182e38282"}, + {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:c3ca1fbba4ae962521e5eb66d72998b51f0f4d0f608d3c0347a48e1af262efa7"}, + {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-win32.whl", hash = "sha256:7bdb4c06b063f6fd55e472e201317a3bb6cdeeee5d5a38512ea5c01e1acbdd93"}, + {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-win_amd64.whl", hash = "sha256:be2a7ad8fd8f7442b24323d24ba0b56c51219513cfa45b9ada3b87b76c374d4b"}, + {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:91a789b4aa0097b78c93e3dc4b40040ba55bef518f84a40d4442f713b4094acb"}, + {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:99e77daab5d13a48a4054803d052ff40780278240a902b880dd37a51ba01a307"}, + {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:3243f48ecd450eddadc2d11b5feb08aca941b5cd98c9b1db14b2fd128be8c697"}, + {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:8831a2cedcd0f0927f788c5bdf6567d9dc9cc235646a434986a852af1cb54b4b"}, + {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-win32.whl", hash = "sha256:3110a99e0f94a4a3470ff67fc20d3f96c25b13d24c6980ff841e82bafe827cac"}, + {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-win_amd64.whl", hash = "sha256:92460ce908546ab69770b2e576e4f99fbb4ce6ab4b245345a3869a0a0410488f"}, + {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5bc0667c1eb8f83a3752b71b9c4ba55ef7c7058ae57022dd9b29065186a113d9"}, + {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:4a4d8d417868d68b979076a9be6a38c676eca060785abaa6709c7b31593c35d1"}, + {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:bf9a6bc4a0221538b1a7de3ed7bca4c93c02346853f44e1cd764be0023cd3640"}, + {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:a7b301ff08055d73223058b5c46c55638917f04d21577c95e00e0c4d79201a6b"}, + {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-win32.whl", hash = "sha256:d5e51e2901ec2366b79f16c2299a03e74ba4531ddcfacc1416639c557aef0ad8"}, + {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-win_amd64.whl", hash = "sha256:184faeaec61dbaa3cace407cffc5819f7b977e75360e8d5ca19461cd851a5fc5"}, + {file = "ruamel.yaml.clib-0.2.7.tar.gz", hash = "sha256:1f08fd5a2bea9c4180db71678e850b995d2a5f4537be0e94557668cf0f5f9497"}, +] + +[[package]] +name = "safety" +version = "2.3.4" +description = "Checks installed dependencies for known vulnerabilities and licenses." +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "safety-2.3.4-py3-none-any.whl", hash = "sha256:6224dcd9b20986a2b2c5e7acfdfba6bca42bb11b2783b24ed04f32317e5167ea"}, + {file = "safety-2.3.4.tar.gz", hash = "sha256:b9e74e794e82f54d11f4091c5d820c4d2d81de9f953bf0b4f33ac8bc402ae72c"}, +] + +[package.dependencies] +Click = ">=8.0.2" +dparse = ">=0.6.2" +packaging = ">=21.0" +requests = "*" +"ruamel.yaml" = ">=0.17.21" +setuptools = ">=19.3" + +[package.extras] +github = ["jinja2 (>=3.1.0)", "pygithub (>=1.43.3)"] +gitlab = ["python-gitlab (>=1.3.0)"] + +[[package]] +name = "scipy" +version = "1.10.0" +description = "Fundamental algorithms for scientific computing in Python" +category = "main" +optional = false +python-versions = "<3.12,>=3.8" +files = [ + {file = "scipy-1.10.0-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:b901b423c91281a974f6cd1c36f5c6c523e665b5a6d5e80fcb2334e14670eefd"}, + {file = "scipy-1.10.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:16ba05d3d1b9f2141004f3f36888e05894a525960b07f4c2bfc0456b955a00be"}, + {file = "scipy-1.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:151f066fe7d6653c3ffefd489497b8fa66d7316e3e0d0c0f7ff6acca1b802809"}, + {file = "scipy-1.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f9ea0a37aca111a407cb98aa4e8dfde6e5d9333bae06dfa5d938d14c80bb5c3"}, + {file = "scipy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:27e548276b5a88b51212b61f6dda49a24acf5d770dff940bd372b3f7ced8c6c2"}, + {file = "scipy-1.10.0-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:42ab8b9e7dc1ebe248e55f54eea5307b6ab15011a7883367af48dd781d1312e4"}, + {file = "scipy-1.10.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:e096b062d2efdea57f972d232358cb068413dc54eec4f24158bcbb5cb8bddfd8"}, + {file = "scipy-1.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4df25a28bd22c990b22129d3c637fd5c3be4b7c94f975dca909d8bab3309b694"}, + {file = "scipy-1.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ad449db4e0820e4b42baccefc98ec772ad7818dcbc9e28b85aa05a536b0f1a2"}, + {file = "scipy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:6faf86ef7717891195ae0537e48da7524d30bc3b828b30c9b115d04ea42f076f"}, + {file = "scipy-1.10.0-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:4bd0e3278126bc882d10414436e58fa3f1eca0aa88b534fcbf80ed47e854f46c"}, + {file = "scipy-1.10.0-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:38bfbd18dcc69eeb589811e77fae552fa923067fdfbb2e171c9eac749885f210"}, + {file = "scipy-1.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ab2a58064836632e2cec31ca197d3695c86b066bc4818052b3f5381bfd2a728"}, + {file = "scipy-1.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5cd7a30970c29d9768a7164f564d1fbf2842bfc77b7d114a99bc32703ce0bf48"}, + {file = "scipy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:9b878c671655864af59c108c20e4da1e796154bd78c0ed6bb02bc41c84625686"}, + {file = "scipy-1.10.0-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:3afcbddb4488ac950ce1147e7580178b333a29cd43524c689b2e3543a080a2c8"}, + {file = "scipy-1.10.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:6e4497e5142f325a5423ff5fda2fff5b5d953da028637ff7c704378c8c284ea7"}, + {file = "scipy-1.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:441cab2166607c82e6d7a8683779cb89ba0f475b983c7e4ab88f3668e268c143"}, + {file = "scipy-1.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0490dc499fe23e4be35b8b6dd1e60a4a34f0c4adb30ac671e6332446b3cbbb5a"}, + {file = "scipy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:954ff69d2d1bf666b794c1d7216e0a746c9d9289096a64ab3355a17c7c59db54"}, + {file = "scipy-1.10.0.tar.gz", hash = "sha256:c8b3cbc636a87a89b770c6afc999baa6bcbb01691b5ccbbc1b1791c7c0a07540"}, +] + +[package.dependencies] +numpy = ">=1.19.5,<1.27.0" + +[package.extras] +dev = ["click", "doit (>=0.36.0)", "flake8", "mypy", "pycodestyle", "pydevtool", "rich-click", "typing_extensions"] +doc = ["matplotlib (>2)", "numpydoc", "pydata-sphinx-theme (==0.9.0)", "sphinx (!=4.1.0)", "sphinx-design (>=0.2.0)"] +test = ["asv", "gmpy2", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] + +[[package]] +name = "setuptools" +version = "67.0.0" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "setuptools-67.0.0-py3-none-any.whl", hash = "sha256:9d790961ba6219e9ff7d9557622d2fe136816a264dd01d5997cfc057d804853d"}, + {file = "setuptools-67.0.0.tar.gz", hash = "sha256:883131c5b6efa70b9101c7ef30b2b7b780a4283d5fc1616383cdf22c83cbefe6"}, +] + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8 (<5)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] + +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] + +[[package]] +name = "smmap" +version = "5.0.0" +description = "A pure Python implementation of a sliding window memory map manager" +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "smmap-5.0.0-py3-none-any.whl", hash = "sha256:2aba19d6a040e78d8b09de5c57e96207b09ed71d8e55ce0959eeee6c8e190d94"}, + {file = "smmap-5.0.0.tar.gz", hash = "sha256:c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936"}, +] + +[[package]] +name = "snowballstemmer" +version = "2.2.0" +description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, + {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, +] + +[[package]] +name = "soupsieve" +version = "2.3.2.post1" +description = "A modern CSS selector implementation for Beautiful Soup." +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "soupsieve-2.3.2.post1-py3-none-any.whl", hash = "sha256:3b2503d3c7084a42b1ebd08116e5f81aadfaea95863628c80a3b774a11b7c759"}, + {file = "soupsieve-2.3.2.post1.tar.gz", hash = "sha256:fc53893b3da2c33de295667a0e19f078c14bf86544af307354de5fcf12a3f30d"}, +] + +[[package]] +name = "sphinx" +version = "4.5.0" +description = "Python documentation generator" +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "Sphinx-4.5.0-py3-none-any.whl", hash = "sha256:ebf612653238bcc8f4359627a9b7ce44ede6fdd75d9d30f68255c7383d3a6226"}, + {file = "Sphinx-4.5.0.tar.gz", hash = "sha256:7bf8ca9637a4ee15af412d1a1d9689fec70523a68ca9bb9127c2f3eeb344e2e6"}, +] + +[package.dependencies] +alabaster = ">=0.7,<0.8" +babel = ">=1.3" +colorama = {version = ">=0.3.5", markers = "sys_platform == \"win32\""} +docutils = ">=0.14,<0.18" +imagesize = "*" +importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} +Jinja2 = ">=2.3" +packaging = "*" +Pygments = ">=2.0" +requests = ">=2.5.0" +snowballstemmer = ">=1.1" +sphinxcontrib-applehelp = "*" +sphinxcontrib-devhelp = "*" +sphinxcontrib-htmlhelp = ">=2.0.0" +sphinxcontrib-jsmath = "*" +sphinxcontrib-qthelp = "*" +sphinxcontrib-serializinghtml = ">=1.1.5" + +[package.extras] +docs = ["sphinxcontrib-websupport"] +lint = ["docutils-stubs", "flake8 (>=3.5.0)", "isort", "mypy (>=0.931)", "types-requests", "types-typed-ast"] +test = ["cython", "html5lib", "pytest", "pytest-cov", "typed-ast"] + +[[package]] +name = "sphinx-book-theme" +version = "0.3.3" +description = "A clean book theme for scientific explanations and documentation with Sphinx" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "sphinx_book_theme-0.3.3-py3-none-any.whl", hash = "sha256:9685959dbbb492af005165ef1b9229fdd5d5431580ac181578beae3b4d012d91"}, + {file = "sphinx_book_theme-0.3.3.tar.gz", hash = "sha256:0ec36208ff14c6d6bf8aee1f1f8268e0c6e2bfa3cef6e41143312b25275a6217"}, +] + +[package.dependencies] +pydata-sphinx-theme = ">=0.8.0,<0.9.0" +pyyaml = "*" +sphinx = ">=3,<5" + +[package.extras] +code-style = ["pre-commit (>=2.7.0,<2.8.0)"] +doc = ["ablog (>=0.10.13,<0.11.0)", "folium", "ipywidgets", "matplotlib", "myst-nb (>=0.13.2,<0.14.0)", "nbclient", "numpy", "numpydoc", "pandas", "plotly", "sphinx (>=4.0,<5.0)", "sphinx-copybutton", "sphinx-design", "sphinx-examples", "sphinx-tabs", "sphinx-thebe (>=0.1.1)", "sphinx-togglebutton (>=0.2.1)", "sphinxcontrib-bibtex (>=2.2,<3.0)", "sphinxcontrib-youtube", "sphinxext-opengraph"] +test = ["beautifulsoup4 (>=4.6.1,<5)", "coverage", "myst-nb (>=0.13.2,<0.14.0)", "pytest (>=6.0.1,<6.1.0)", "pytest-cov", "pytest-regressions (>=2.0.1,<2.1.0)", "sphinx_thebe"] + +[[package]] +name = "sphinxcontrib-applehelp" +version = "1.0.4" +description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "sphinxcontrib-applehelp-1.0.4.tar.gz", hash = "sha256:828f867945bbe39817c210a1abfd1bc4895c8b73fcaade56d45357a348a07d7e"}, + {file = "sphinxcontrib_applehelp-1.0.4-py3-none-any.whl", hash = "sha256:29d341f67fb0f6f586b23ad80e072c8e6ad0b48417db2bde114a4c9746feb228"}, +] + +[package.extras] +lint = ["docutils-stubs", "flake8", "mypy"] +test = ["pytest"] + +[[package]] +name = "sphinxcontrib-devhelp" +version = "1.0.2" +description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document." +category = "dev" +optional = false +python-versions = ">=3.5" +files = [ + {file = "sphinxcontrib-devhelp-1.0.2.tar.gz", hash = "sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4"}, + {file = "sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e"}, +] + +[package.extras] +lint = ["docutils-stubs", "flake8", "mypy"] +test = ["pytest"] + +[[package]] +name = "sphinxcontrib-htmlhelp" +version = "2.0.1" +description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "sphinxcontrib-htmlhelp-2.0.1.tar.gz", hash = "sha256:0cbdd302815330058422b98a113195c9249825d681e18f11e8b1f78a2f11efff"}, + {file = "sphinxcontrib_htmlhelp-2.0.1-py3-none-any.whl", hash = "sha256:c38cb46dccf316c79de6e5515e1770414b797162b23cd3d06e67020e1d2a6903"}, +] + +[package.extras] +lint = ["docutils-stubs", "flake8", "mypy"] +test = ["html5lib", "pytest"] + +[[package]] +name = "sphinxcontrib-jsmath" +version = "1.0.1" +description = "A sphinx extension which renders display math in HTML via JavaScript" +category = "dev" +optional = false +python-versions = ">=3.5" +files = [ + {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"}, + {file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"}, +] + +[package.extras] +test = ["flake8", "mypy", "pytest"] + +[[package]] +name = "sphinxcontrib-qthelp" +version = "1.0.3" +description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document." +category = "dev" +optional = false +python-versions = ">=3.5" +files = [ + {file = "sphinxcontrib-qthelp-1.0.3.tar.gz", hash = "sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72"}, + {file = "sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl", hash = "sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6"}, +] + +[package.extras] +lint = ["docutils-stubs", "flake8", "mypy"] +test = ["pytest"] + +[[package]] +name = "sphinxcontrib-serializinghtml" +version = "1.1.5" +description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)." +category = "dev" +optional = false +python-versions = ">=3.5" +files = [ + {file = "sphinxcontrib-serializinghtml-1.1.5.tar.gz", hash = "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952"}, + {file = "sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl", hash = "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd"}, +] + +[package.extras] +lint = ["docutils-stubs", "flake8", "mypy"] +test = ["pytest"] + +[[package]] +name = "stack-data" +version = "0.6.2" +description = "Extract data from python stack frames and tracebacks for informative displays" +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "stack_data-0.6.2-py3-none-any.whl", hash = "sha256:cbb2a53eb64e5785878201a97ed7c7b94883f48b87bfb0bbe8b623c74679e4a8"}, + {file = "stack_data-0.6.2.tar.gz", hash = "sha256:32d2dd0376772d01b6cb9fc996f3c8b57a357089dec328ed4b6553d037eaf815"}, +] + +[package.dependencies] +asttokens = ">=2.1.0" +executing = ">=1.2.0" +pure-eval = "*" + +[package.extras] +tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"] + +[[package]] +name = "stevedore" +version = "4.1.1" +description = "Manage dynamic plugins for Python applications" +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "stevedore-4.1.1-py3-none-any.whl", hash = "sha256:aa6436565c069b2946fe4ebff07f5041e0c8bf18c7376dd29edf80cf7d524e4e"}, + {file = "stevedore-4.1.1.tar.gz", hash = "sha256:7f8aeb6e3f90f96832c301bff21a7eb5eefbe894c88c506483d355565d88cc1a"}, +] + +[package.dependencies] +pbr = ">=2.0.0,<2.1.0 || >2.1.0" + +[[package]] +name = "tbb" +version = "2021.8.0" +description = "Intel® oneAPI Threading Building Blocks (oneTBB)" +category = "main" +optional = true +python-versions = "*" +files = [ + {file = "tbb-2021.8.0-py2.py3-none-macosx_10_15_x86_64.macosx_11_0_x86_64.whl", hash = "sha256:4b65e890524aa5e8ab92e68b83ec5e7160f57e6cd63622fe0af2e626d4010de4"}, + {file = "tbb-2021.8.0-py2.py3-none-manylinux1_i686.whl", hash = "sha256:6ffb8e6c43e03a3a70ec44e28b15e01833a6d336e900253ebf708905c7dc60aa"}, + {file = "tbb-2021.8.0-py2.py3-none-manylinux1_x86_64.whl", hash = "sha256:7d3fad573a032915838cff9fc224cb4aa9cdc6746b2d2c1b6039420379a8a2ef"}, +] + +[[package]] +name = "tensornetwork" +version = "0.4.6" +description = "A high level tensor network API for accelerated tensor network calculations." +category = "main" +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "tensornetwork-0.4.6-py3-none-any.whl", hash = "sha256:33f777ea6b9579d010806b3a1ef02f4f9ff5f0707f0ceb681591ee6eb7a01b03"}, + {file = "tensornetwork-0.4.6.tar.gz", hash = "sha256:c5af810bf6c2480e1b1f3d98ccf262c5ffb5c3c513be6611f4fdd2258bbc7704"}, +] + +[package.dependencies] +graphviz = ">=0.11.1" +h5py = ">=2.9.0" +numpy = ">=1.17" +opt-einsum = ">=2.3.0" +scipy = ">=1.1" + +[[package]] +name = "termcolor" +version = "2.2.0" +description = "ANSI color formatting for output in terminal" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "termcolor-2.2.0-py3-none-any.whl", hash = "sha256:91ddd848e7251200eac969846cbae2dacd7d71c2871e92733289e7e3666f48e7"}, + {file = "termcolor-2.2.0.tar.gz", hash = "sha256:dfc8ac3f350788f23b2947b3e6cfa5a53b630b612e6cd8965a015a776020b99a"}, +] + +[package.extras] +tests = ["pytest", "pytest-cov"] + +[[package]] +name = "text-unidecode" +version = "1.3" +description = "The most basic Text::Unidecode port" +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93"}, + {file = "text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8"}, +] + +[[package]] +name = "tinycss2" +version = "1.2.1" +description = "A tiny CSS parser" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tinycss2-1.2.1-py3-none-any.whl", hash = "sha256:2b80a96d41e7c3914b8cda8bc7f705a4d9c49275616e886103dd839dfc847847"}, + {file = "tinycss2-1.2.1.tar.gz", hash = "sha256:8cff3a8f066c2ec677c06dbc7b45619804a6938478d9d73c284b29d14ecb0627"}, +] + +[package.dependencies] +webencodings = ">=0.4" + +[package.extras] +doc = ["sphinx", "sphinx_rtd_theme"] +test = ["flake8", "isort", "pytest"] + +[[package]] +name = "toml" +version = "0.10.2" +description = "Python Library for Tom's Obvious, Minimal Language" +category = "main" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, + {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, +] + +[[package]] +name = "tomli" +version = "2.0.1" +description = "A lil' TOML parser" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, +] + +[[package]] +name = "tomlkit" +version = "0.11.6" +description = "Style preserving TOML library" +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "tomlkit-0.11.6-py3-none-any.whl", hash = "sha256:07de26b0d8cfc18f871aec595fda24d95b08fef89d147caa861939f37230bf4b"}, + {file = "tomlkit-0.11.6.tar.gz", hash = "sha256:71b952e5721688937fb02cf9d354dbcf0785066149d2855e44531ebdd2b65d73"}, +] + +[[package]] +name = "toolz" +version = "0.12.0" +description = "List processing tools and functional utilities" +category = "main" +optional = false +python-versions = ">=3.5" +files = [ + {file = "toolz-0.12.0-py3-none-any.whl", hash = "sha256:2059bd4148deb1884bb0eb770a3cde70e7f954cfbbdc2285f1f2de01fd21eb6f"}, + {file = "toolz-0.12.0.tar.gz", hash = "sha256:88c570861c440ee3f2f6037c4654613228ff40c93a6c25e0eba70d17282c6194"}, +] + +[[package]] +name = "tornado" +version = "6.2" +description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." +category = "dev" +optional = false +python-versions = ">= 3.7" +files = [ + {file = "tornado-6.2-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:20f638fd8cc85f3cbae3c732326e96addff0a15e22d80f049e00121651e82e72"}, + {file = "tornado-6.2-cp37-abi3-macosx_10_9_x86_64.whl", hash = "sha256:87dcafae3e884462f90c90ecc200defe5e580a7fbbb4365eda7c7c1eb809ebc9"}, + {file = "tornado-6.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba09ef14ca9893954244fd872798b4ccb2367c165946ce2dd7376aebdde8e3ac"}, + {file = "tornado-6.2-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b8150f721c101abdef99073bf66d3903e292d851bee51910839831caba341a75"}, + {file = "tornado-6.2-cp37-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3a2f5999215a3a06a4fc218026cd84c61b8b2b40ac5296a6db1f1451ef04c1e"}, + {file = "tornado-6.2-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:5f8c52d219d4995388119af7ccaa0bcec289535747620116a58d830e7c25d8a8"}, + {file = "tornado-6.2-cp37-abi3-musllinux_1_1_i686.whl", hash = "sha256:6fdfabffd8dfcb6cf887428849d30cf19a3ea34c2c248461e1f7d718ad30b66b"}, + {file = "tornado-6.2-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:1d54d13ab8414ed44de07efecb97d4ef7c39f7438cf5e976ccd356bebb1b5fca"}, + {file = "tornado-6.2-cp37-abi3-win32.whl", hash = "sha256:5c87076709343557ef8032934ce5f637dbb552efa7b21d08e89ae7619ed0eb23"}, + {file = "tornado-6.2-cp37-abi3-win_amd64.whl", hash = "sha256:e5f923aa6a47e133d1cf87d60700889d7eae68988704e20c75fb2d65677a8e4b"}, + {file = "tornado-6.2.tar.gz", hash = "sha256:9b630419bde84ec666bfd7ea0a4cb2a8a651c2d5cccdbdd1972a0c859dfc3c13"}, +] + +[[package]] +name = "tqdm" +version = "4.64.1" +description = "Fast, Extensible Progress Meter" +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" +files = [ + {file = "tqdm-4.64.1-py2.py3-none-any.whl", hash = "sha256:6fee160d6ffcd1b1c68c65f14c829c22832bc401726335ce92c52d395944a6a1"}, + {file = "tqdm-4.64.1.tar.gz", hash = "sha256:5f4f682a004951c1b450bc753c710e9280c5746ce6ffedee253ddbcbf54cf1e4"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[package.extras] +dev = ["py-make (>=0.1.0)", "twine", "wheel"] +notebook = ["ipywidgets (>=6)"] +slack = ["slack-sdk"] +telegram = ["requests"] + +[[package]] +name = "traitlets" +version = "5.9.0" +description = "Traitlets Python configuration system" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "traitlets-5.9.0-py3-none-any.whl", hash = "sha256:9e6ec080259b9a5940c797d58b613b5e31441c2257b87c2e795c5228ae80d2d8"}, + {file = "traitlets-5.9.0.tar.gz", hash = "sha256:f6cde21a9c68cf756af02035f72d5a723bf607e862e7be33ece505abf4a3bad9"}, +] + +[package.extras] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] +test = ["argcomplete (>=2.0)", "pre-commit", "pytest", "pytest-mock"] + +[[package]] +name = "typer" +version = "0.7.0" +description = "Typer, build great CLIs. Easy to code. Based on Python type hints." +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "typer-0.7.0-py3-none-any.whl", hash = "sha256:b5e704f4e48ec263de1c0b3a2387cd405a13767d2f907f44c1a08cbad96f606d"}, + {file = "typer-0.7.0.tar.gz", hash = "sha256:ff797846578a9f2a201b53442aedeb543319466870fbe1c701eab66dd7681165"}, +] + +[package.dependencies] +click = ">=7.1.1,<9.0.0" + +[package.extras] +all = ["colorama (>=0.4.3,<0.5.0)", "rich (>=10.11.0,<13.0.0)", "shellingham (>=1.3.0,<2.0.0)"] +dev = ["autoflake (>=1.3.1,<2.0.0)", "flake8 (>=3.8.3,<4.0.0)", "pre-commit (>=2.17.0,<3.0.0)"] +doc = ["cairosvg (>=2.5.2,<3.0.0)", "mdx-include (>=1.4.1,<2.0.0)", "mkdocs (>=1.1.2,<2.0.0)", "mkdocs-material (>=8.1.4,<9.0.0)", "pillow (>=9.3.0,<10.0.0)"] +test = ["black (>=22.3.0,<23.0.0)", "coverage (>=6.2,<7.0)", "isort (>=5.0.6,<6.0.0)", "mypy (==0.910)", "pytest (>=4.4.0,<8.0.0)", "pytest-cov (>=2.10.0,<5.0.0)", "pytest-sugar (>=0.9.4,<0.10.0)", "pytest-xdist (>=1.32.0,<4.0.0)", "rich (>=10.11.0,<13.0.0)", "shellingham (>=1.3.0,<2.0.0)"] + +[[package]] +name = "typing-extensions" +version = "4.4.0" +description = "Backported and Experimental Type Hints for Python 3.7+" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "typing_extensions-4.4.0-py3-none-any.whl", hash = "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e"}, + {file = "typing_extensions-4.4.0.tar.gz", hash = "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa"}, +] + +[[package]] +name = "urllib3" +version = "1.26.14" +description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +files = [ + {file = "urllib3-1.26.14-py2.py3-none-any.whl", hash = "sha256:75edcdc2f7d85b137124a6c3c9fc3933cdeaa12ecb9a6a959f22797a0feca7e1"}, + {file = "urllib3-1.26.14.tar.gz", hash = "sha256:076907bf8fd355cde77728471316625a4d2f7e713c125f51953bb5b3eecf4f72"}, +] + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] +secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] +socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] + +[[package]] +name = "virtualenv" +version = "20.17.1" +description = "Virtual Python Environment builder" +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "virtualenv-20.17.1-py3-none-any.whl", hash = "sha256:ce3b1684d6e1a20a3e5ed36795a97dfc6af29bc3970ca8dab93e11ac6094b3c4"}, + {file = "virtualenv-20.17.1.tar.gz", hash = "sha256:f8b927684efc6f1cc206c9db297a570ab9ad0e51c16fa9e45487d36d1905c058"}, +] + +[package.dependencies] +distlib = ">=0.3.6,<1" +filelock = ">=3.4.1,<4" +platformdirs = ">=2.4,<3" + +[package.extras] +docs = ["proselint (>=0.13)", "sphinx (>=5.3)", "sphinx-argparse (>=0.3.2)", "sphinx-rtd-theme (>=1)", "towncrier (>=22.8)"] +testing = ["coverage (>=6.2)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=21.3)", "pytest (>=7.0.1)", "pytest-env (>=0.6.2)", "pytest-freezegun (>=0.4.2)", "pytest-mock (>=3.6.1)", "pytest-randomly (>=3.10.3)", "pytest-timeout (>=2.1)"] + +[[package]] +name = "vulture" +version = "2.7" +description = "Find dead code" +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "vulture-2.7-py2.py3-none-any.whl", hash = "sha256:bccc51064ed76db15a6b58277cea8885936af047f53d2655fb5de575e93d0bca"}, + {file = "vulture-2.7.tar.gz", hash = "sha256:67fb80a014ed9fdb599dd44bb96cb54311032a104106fc2e706ef7a6dad88032"}, +] + +[package.dependencies] +toml = "*" + +[[package]] +name = "watchdog" +version = "2.2.1" +description = "Filesystem events monitoring" +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "watchdog-2.2.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a09483249d25cbdb4c268e020cb861c51baab2d1affd9a6affc68ffe6a231260"}, + {file = "watchdog-2.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5100eae58133355d3ca6c1083a33b81355c4f452afa474c2633bd2fbbba398b3"}, + {file = "watchdog-2.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e618a4863726bc7a3c64f95c218437f3349fb9d909eb9ea3a1ed3b567417c661"}, + {file = "watchdog-2.2.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:102a60093090fc3ff76c983367b19849b7cc24ec414a43c0333680106e62aae1"}, + {file = "watchdog-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:748ca797ff59962e83cc8e4b233f87113f3cf247c23e6be58b8a2885c7337aa3"}, + {file = "watchdog-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6ccd8d84b9490a82b51b230740468116b8205822ea5fdc700a553d92661253a3"}, + {file = "watchdog-2.2.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:6e01d699cd260d59b84da6bda019dce0a3353e3fcc774408ae767fe88ee096b7"}, + {file = "watchdog-2.2.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8586d98c494690482c963ffb24c49bf9c8c2fe0589cec4dc2f753b78d1ec301d"}, + {file = "watchdog-2.2.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:adaf2ece15f3afa33a6b45f76b333a7da9256e1360003032524d61bdb4c422ae"}, + {file = "watchdog-2.2.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:83a7cead445008e880dbde833cb9e5cc7b9a0958edb697a96b936621975f15b9"}, + {file = "watchdog-2.2.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f8ac23ff2c2df4471a61af6490f847633024e5aa120567e08d07af5718c9d092"}, + {file = "watchdog-2.2.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d0f29fd9f3f149a5277929de33b4f121a04cf84bb494634707cfa8ea8ae106a8"}, + {file = "watchdog-2.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:967636031fa4c4955f0f3f22da3c5c418aa65d50908d31b73b3b3ffd66d60640"}, + {file = "watchdog-2.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:96cbeb494e6cbe3ae6aacc430e678ce4b4dd3ae5125035f72b6eb4e5e9eb4f4e"}, + {file = "watchdog-2.2.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:61fdb8e9c57baf625e27e1420e7ca17f7d2023929cd0065eb79c83da1dfbeacd"}, + {file = "watchdog-2.2.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:4cb5ecc332112017fbdb19ede78d92e29a8165c46b68a0b8ccbd0a154f196d5e"}, + {file = "watchdog-2.2.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a480d122740debf0afac4ddd583c6c0bb519c24f817b42ed6f850e2f6f9d64a8"}, + {file = "watchdog-2.2.1-py3-none-manylinux2014_aarch64.whl", hash = "sha256:978a1aed55de0b807913b7482d09943b23a2d634040b112bdf31811a422f6344"}, + {file = "watchdog-2.2.1-py3-none-manylinux2014_armv7l.whl", hash = "sha256:8c28c23972ec9c524967895ccb1954bc6f6d4a557d36e681a36e84368660c4ce"}, + {file = "watchdog-2.2.1-py3-none-manylinux2014_i686.whl", hash = "sha256:c27d8c1535fd4474e40a4b5e01f4ba6720bac58e6751c667895cbc5c8a7af33c"}, + {file = "watchdog-2.2.1-py3-none-manylinux2014_ppc64.whl", hash = "sha256:d6b87477752bd86ac5392ecb9eeed92b416898c30bd40c7e2dd03c3146105646"}, + {file = "watchdog-2.2.1-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:cece1aa596027ff56369f0b50a9de209920e1df9ac6d02c7f9e5d8162eb4f02b"}, + {file = "watchdog-2.2.1-py3-none-manylinux2014_s390x.whl", hash = "sha256:8b5cde14e5c72b2df5d074774bdff69e9b55da77e102a91f36ef26ca35f9819c"}, + {file = "watchdog-2.2.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:e038be858425c4f621900b8ff1a3a1330d9edcfeaa1c0468aeb7e330fb87693e"}, + {file = "watchdog-2.2.1-py3-none-win32.whl", hash = "sha256:bc43c1b24d2f86b6e1cc15f68635a959388219426109233e606517ff7d0a5a73"}, + {file = "watchdog-2.2.1-py3-none-win_amd64.whl", hash = "sha256:17f1708f7410af92ddf591e94ae71a27a13974559e72f7e9fde3ec174b26ba2e"}, + {file = "watchdog-2.2.1-py3-none-win_ia64.whl", hash = "sha256:195ab1d9d611a4c1e5311cbf42273bc541e18ea8c32712f2fb703cfc6ff006f9"}, + {file = "watchdog-2.2.1.tar.gz", hash = "sha256:cdcc23c9528601a8a293eb4369cbd14f6b4f34f07ae8769421252e9c22718b6f"}, +] + +[package.extras] +watchmedo = ["PyYAML (>=3.10)"] + +[[package]] +name = "wcwidth" +version = "0.2.6" +description = "Measures the displayed width of unicode strings in a terminal" +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "wcwidth-0.2.6-py2.py3-none-any.whl", hash = "sha256:795b138f6875577cd91bba52baf9e445cd5118fd32723b460e30a0af30ea230e"}, + {file = "wcwidth-0.2.6.tar.gz", hash = "sha256:a5220780a404dbe3353789870978e472cfe477761f06ee55077256e509b156d0"}, +] + +[[package]] +name = "webencodings" +version = "0.5.1" +description = "Character encoding aliases for legacy web content" +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, + {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, +] + +[[package]] +name = "yaspin" +version = "2.3.0" +description = "Yet Another Terminal Spinner" +category = "dev" +optional = false +python-versions = ">=3.7.2,<4.0.0" +files = [ + {file = "yaspin-2.3.0-py3-none-any.whl", hash = "sha256:17b5548479b3d5b30adec7a87ffcdcddb403d14a2bb86fbcee97f37951e13427"}, + {file = "yaspin-2.3.0.tar.gz", hash = "sha256:547afd1a9700ac3a29a9f5591c70343bef186ed5dfb5e545a9bb0c77e561a1c9"}, +] + +[package.dependencies] +termcolor = ">=2.2,<3.0" + +[[package]] +name = "zipp" +version = "3.12.0" +description = "Backport of pathlib-compatible object wrapper for zip files" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "zipp-3.12.0-py3-none-any.whl", hash = "sha256:9eb0a4c5feab9b08871db0d672745b53450d7f26992fd1e4653aa43345e97b86"}, + {file = "zipp-3.12.0.tar.gz", hash = "sha256:73efd63936398aac78fd92b6f4865190119d6c91b531532e798977ea8dd402eb"}, +] + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] + +[extras] +drawing = ["matplotlib", "networkx"] +mkl = ["mkl-devel"] + +[metadata] +lock-version = "2.0" +python-versions = ">=3.9, <3.11" +content-hash = "7280ae3ab8268aaf6302221df764c56c9527c760d094c6229a8e48eeac837e2d" From aad88a3a99eb9768be1e6fee1fedefcb7a067130 Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Feb 2023 21:20:57 +0800 Subject: [PATCH 25/92] docs: update info --- docs/contributing/1.-contributing-guide.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/contributing/1.-contributing-guide.md b/docs/contributing/1.-contributing-guide.md index def34412..5cff6dce 100644 --- a/docs/contributing/1.-contributing-guide.md +++ b/docs/contributing/1.-contributing-guide.md @@ -14,7 +14,7 @@ Account Requirements: Base System Requirements: -- Python3.6+ +- Python3.8+ - poetry - bash or a bash compatible shell (should be auto-installed on Linux / Mac) @@ -45,4 +45,4 @@ I can not tell you how thankful I am for the hard work done by tnpy contributors Thank you! -~Timothy Crosley +~Tan Tao-Lin From 226efb8e09d2ab84d19bfd525795bd0940316df7 Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Feb 2023 21:23:27 +0800 Subject: [PATCH 26/92] chore: add maintainer label --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index 431ea7a2..0dd05033 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,5 @@ FROM python:3.11-slim as python +LABEL maintainer="TaoLin tanlin2013@gmail.com" ENV PYTHONUNBUFFERED=true WORKDIR /app From a01efc0460b02e1eca5d6443f252229d01663609 Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Feb 2023 21:28:39 +0800 Subject: [PATCH 27/92] docs: add license info --- README.md | 66 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 36 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index 99ea86a6..eb0f6b0c 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ # tnpy + _________________ [![PyPI version](https://badge.fury.io/py/tnpy.svg)](http://badge.fury.io/py/tnpy) @@ -19,7 +20,6 @@ _________________ This project is a python implementation of Tensor Network, a numerical approach to quantum many-body systems. - **tnpy** is built on top of [quimb](https://github.com/jcmgray/quimb), along with [TensorNetwork](https://github.com/google/TensorNetwork) for tensor contractions, with optimized support for various backend engines @@ -44,9 +44,9 @@ Dependencies are listed in and they are supposed to be installed together with **tnpy**. Here we just list the essential building blocks. - * [jcmgray/quimb](https://github.com/jcmgray/quimb) - * [google/Tensornetwork](https://github.com/google/TensorNetwork) - * [primme/primme](https://github.com/primme/primme) +* [jcmgray/quimb](https://github.com/jcmgray/quimb) +* [google/Tensornetwork](https://github.com/google/TensorNetwork) +* [primme/primme](https://github.com/primme/primme) Also, it's required to have [lapack](http://www.netlib.org/lapack/) and [blas](http://www.netlib.org/blas/) installed in prior to Primme. @@ -56,35 +56,36 @@ with [mkl-devel](https://pypi.org/project/mkl-devel/). Installation ------------ - * Using Docker - - ``` - docker run --rm -it tanlin2013/tnpy - ``` - * Using pip - * Latest release: - ``` - pip install tnpy - ``` - * Development version: - ``` - pip install git+https://github.com/tanlin2013/tnpy@main - ``` - * Optional dependencies - * If [lapack](http://www.netlib.org/lapack/) and - [blas](http://www.netlib.org/blas/) are missing - ``` - pip install tnpy[mkl] - ``` - * For [quimb](https://github.com/jcmgray/quimb) drawing functionality. - This will install [matplotlib](https://matplotlib.org/) - and [networkx](https://networkx.org/) - ``` - pip install tnpy[drawing] - ``` +* Using Docker + + ``` + docker run --rm -it tanlin2013/tnpy + ``` +* Using pip + * Latest release: + ``` + pip install tnpy + ``` + * Development version: + ``` + pip install git+https://github.com/tanlin2013/tnpy@main + ``` +* Optional dependencies + * If [lapack](http://www.netlib.org/lapack/) and + [blas](http://www.netlib.org/blas/) are missing + ``` + pip install tnpy[mkl] + ``` + * For [quimb](https://github.com/jcmgray/quimb) drawing functionality. + This will install [matplotlib](https://matplotlib.org/) + and [networkx](https://networkx.org/) + ``` + pip install tnpy[drawing] + ``` Getting started --------------- + 1. We provide built-in models. Though it's also possible to register your own one. ``` @@ -108,3 +109,8 @@ Getting started ``` my_mps = fdmrg.mps ``` + +License +------- +© Tan Tao-Lin, 2023. Licensed under a [MIT](https://github.com/tanlin2013/tnpy/master/LICENSE) +license. From 37084ff3f71297765ac0d0969e1275fcf1ba14a5 Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Feb 2023 21:32:34 +0800 Subject: [PATCH 28/92] build: update pandoc version --- poetry.lock | 49 ++++++++++++++++++++++++++++++++++++++++++++++++- pyproject.toml | 2 +- 2 files changed, 49 insertions(+), 2 deletions(-) diff --git a/poetry.lock b/poetry.lock index 8a4f1079..d5a577c9 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2273,6 +2273,21 @@ files = [ {file = "packaging-23.0.tar.gz", hash = "sha256:b6ad297f8907de0fa2fe1ccbd26fdaf387f5f47c7275fedf8cce89f99446cf97"}, ] +[[package]] +name = "pandoc" +version = "2.3" +description = "Pandoc Documents for Python" +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "pandoc-2.3.tar.gz", hash = "sha256:e772c2c6d871146894579828dbaf1efd538eb64fc7e71d4a6b3a11a18baef90d"}, +] + +[package.dependencies] +plumbum = "*" +ply = "*" + [[package]] name = "pandocfilters" version = "1.5.0" @@ -2508,6 +2523,38 @@ files = [ dev = ["pre-commit", "tox"] testing = ["pytest", "pytest-benchmark"] +[[package]] +name = "plumbum" +version = "1.8.1" +description = "Plumbum: shell combinators library" +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "plumbum-1.8.1-py3-none-any.whl", hash = "sha256:07cf5f50bf739e91fb83ce304fc66b41dbd12db4d4546ff5266087dd9d148314"}, + {file = "plumbum-1.8.1.tar.gz", hash = "sha256:88a40fc69247d0cd585e21ca169b3820f46c484535102e16455d2202727bb37b"}, +] + +[package.dependencies] +pywin32 = {version = "*", markers = "platform_system == \"Windows\" and platform_python_implementation != \"PyPy\""} + +[package.extras] +dev = ["paramiko", "psutil", "pytest (>=6.0)", "pytest-cov", "pytest-mock", "pytest-timeout"] +docs = ["sphinx (>=4.0.0)", "sphinx-rtd-theme (>=1.0.0)"] +ssh = ["paramiko"] + +[[package]] +name = "ply" +version = "3.11" +description = "Python Lex & Yacc" +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "ply-3.11-py2.py3-none-any.whl", hash = "sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce"}, + {file = "ply-3.11.tar.gz", hash = "sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3"}, +] + [[package]] name = "portray" version = "1.8.0" @@ -3881,4 +3928,4 @@ mkl = ["mkl-devel"] [metadata] lock-version = "2.0" python-versions = ">=3.9, <3.11" -content-hash = "7280ae3ab8268aaf6302221df764c56c9527c760d094c6229a8e48eeac837e2d" +content-hash = "be43000b8b9da5b9de424a8a01f8bfca42441c4b629b2a92e7f59cead5c40f7e" diff --git a/pyproject.toml b/pyproject.toml index ba7c7ff5..6bd811bf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -53,7 +53,7 @@ optional = true sphinx = "^4.5.0" sphinx-book-theme = "^0.3.2" m2r2 = "^0.3.2" -#pandoc = "2.1" +pandoc = "^2.3" nbsphinx = "^0.8.8" portray = ">=1.3.0" From 666d7b2fa9e77edd04aa0609be03b802e521581c Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Feb 2023 21:33:32 +0800 Subject: [PATCH 29/92] chore: add gitkeep for folder --- docs/source/_static/.gitkeep | 0 docs/source/_templates/.gitkeep | 0 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/source/_static/.gitkeep create mode 100644 docs/source/_templates/.gitkeep diff --git a/docs/source/_static/.gitkeep b/docs/source/_static/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/docs/source/_templates/.gitkeep b/docs/source/_templates/.gitkeep new file mode 100644 index 00000000..e69de29b From 35c67775319f8752d61f8ed6f15872655b19028a Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Feb 2023 21:34:28 +0800 Subject: [PATCH 30/92] build: evolve cruft template --- .cruft.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cruft.json b/.cruft.json index 63edccdc..8ab09e7e 100644 --- a/.cruft.json +++ b/.cruft.json @@ -1,6 +1,6 @@ { "template": "https://github.com/tanlin2013/cookiecutter-python/", - "commit": "4823cc3ebc96109726f46955bcf30035617a8679", + "commit": "5877b6cfca106007dab6c2db71a13732b3df70d6", "checkout": null, "context": { "cookiecutter": { From 748924921bd0c179b06e95de888f77588c23626a Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Feb 2023 21:36:23 +0800 Subject: [PATCH 31/92] build: evolve cruft template --- .cruft.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cruft.json b/.cruft.json index 8ab09e7e..4093b4fb 100644 --- a/.cruft.json +++ b/.cruft.json @@ -1,6 +1,6 @@ { "template": "https://github.com/tanlin2013/cookiecutter-python/", - "commit": "5877b6cfca106007dab6c2db71a13732b3df70d6", + "commit": "2a0ebe8df863c5b981c3e6f8b784bb9e0ef3a72a", "checkout": null, "context": { "cookiecutter": { From a4dad776dbf63b984b86dc76a71804d2eca8eca3 Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Feb 2023 21:49:10 +0800 Subject: [PATCH 32/92] build: evolve cruft template --- .cruft.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cruft.json b/.cruft.json index 4093b4fb..5b42e3db 100644 --- a/.cruft.json +++ b/.cruft.json @@ -1,6 +1,6 @@ { "template": "https://github.com/tanlin2013/cookiecutter-python/", - "commit": "2a0ebe8df863c5b981c3e6f8b784bb9e0ef3a72a", + "commit": "67e3c8d085bd9a79c08cfb03f21c7cddd964b21a", "checkout": null, "context": { "cookiecutter": { From c41859fbd1a4ad714eae5d463d80b39c6cf8cf19 Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Feb 2023 21:50:59 +0800 Subject: [PATCH 33/92] test: comment out cruft section --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 6bd811bf..ded8a76d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -71,5 +71,5 @@ profile = "black" ignore_missing_imports = true strict_optional = false -[tool.cruft] -skip = [] +#[tool.cruft] +#skip = [] From 2c1279e566396c814294c00b3d924581337d1d74 Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Feb 2023 21:55:25 +0800 Subject: [PATCH 34/92] Revert "test: comment out cruft section" This reverts commit c41859fbd1a4ad714eae5d463d80b39c6cf8cf19. --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index ded8a76d..6bd811bf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -71,5 +71,5 @@ profile = "black" ignore_missing_imports = true strict_optional = false -#[tool.cruft] -#skip = [] +[tool.cruft] +skip = [] From 36dac46ef68de077cfcdbcef3fac64ebe2d1d527 Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Feb 2023 22:11:23 +0800 Subject: [PATCH 35/92] chore: elongate line separator --- tnpy/__init__.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tnpy/__init__.py b/tnpy/__init__.py index f8f2181c..9f81eda2 100644 --- a/tnpy/__init__.py +++ b/tnpy/__init__.py @@ -4,11 +4,12 @@ import toml # tomllib is coming out on python 3.11 as standard lib +# -- Version ----------------------------------------------------------------- -# -- Version ---------------------- __version__ = metadata.version(__name__) -# -- Define logger and the associated formatter and handler ------------- +# -- Define logger and the associated formatter and handler ------------------ + formatter = logging.Formatter( "%(asctime)s [%(filename)s] %(levelname)s: %(message)s", datefmt="%Y-%m-%d %H:%M:%S" ) @@ -22,7 +23,7 @@ logger.addHandler(handler) -# -- Load configurations from toml file ---------------------- +# -- Load configurations from toml file -------------------------------------- class ConfigReader: def __init__(self, file): self.__dict__.update(**toml.load(file)) From 3f6d36b57bf12e439c9eb1bbc30e14bb8b622118 Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Feb 2023 22:13:50 +0800 Subject: [PATCH 36/92] refactor: get version from metadata --- docs/source/conf.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index 2f8a244e..8729edf5 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -12,22 +12,21 @@ # import os import sys +from importlib import metadata sys.path.insert(0, os.path.abspath("../..")) sys.path.insert(0, os.path.abspath("../../tnpy")) -from tnpy import __version__ # noqa: E402 - # -- Project information ----------------------------------------------------- project = "tnpy" -copyright = "2021, Tan Tao-Lin" +copyright = "2023, Tan Tao-Lin" author = "Tan Tao-Lin" # The short X.Y version -version = __version__ +version = metadata.version("tnpy") # The full version, including alpha/beta/rc tags -release = __version__ +release = metadata.version("tnpy") # -- General configuration --------------------------------------------------- From 0c8910e6b5d949210f66ef0c04aa35ea4c79d47e Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Feb 2023 22:14:28 +0800 Subject: [PATCH 37/92] refactor: organize sections from cruft template --- docs/source/conf.py | 111 +++++++++++++------------------------------- 1 file changed, 33 insertions(+), 78 deletions(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index 8729edf5..6fcace2c 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -50,47 +50,11 @@ "m2r2", ] -# Turn on sphinx.ext.autosummary -autodoc_default_options = { - "members": True, - "member-order": "bysource", - "special-members": "__init__", - "undoc-members": True, - "exclude-members": "__weakref__", - "autosummary": True, - "show-inheritance": True, -} -autodoc_typehints = "description" -# autosummary_generate = True -# autosummary_imported_members = True -# numpydoc_show_class_members = False - -# Looks for objects in external projects -intersphinx_mapping = { - "numpy": ("https://numpy.org/doc/stable/", None), - "scipy": ("https://docs.scipy.org/doc/scipy/reference/", None), - "quimb": ("https://quimb.readthedocs.io/en/latest/", None), - "tensornetwork": ("https://tensornetwork.readthedocs.io/en/latest/", None), - # "primme": ("https://www.cs.wm.edu/~andreas/software/doc/readme.html", None), -} - -# Mathjax (default values seem to be satisfactory enough) -# mathjax_path = "https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/node-main.min.js" -# mathjax2_config = { -# "tex": { -# "inlineMath": [["$", "$"], ["\\(", "\\)"]], -# "displayMath": [["$$", "$$"]], -# "processEscapes": True, -# }, -# "options": {"ignoreHtmlClass": "document", "processHtmlClass": "math|output_area"} -# } - # Add any paths that contain templates here, relative to this directory. templates_path = ["_templates"] # The suffix(es) of source filenames. # You can specify multiple suffix as a list of string: -# source_suffix = [".rst", ".md"] # List of patterns, relative to source directory, that match files and @@ -101,14 +65,17 @@ # Allowing docstring in both __init__ and right under class definition autoclass_content = "both" - # -- Options for HTML output ------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. -# html_theme = "sphinx_book_theme" +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ["_static"] + # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. @@ -123,46 +90,34 @@ "use_download_button": False, } -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ["_static"] - - -# -- Options for LaTeX output --------------------------------------------- - -latex_elements = { # type: ignore - # The paper size ('letterpaper' or 'a4paper'). - # 'papersize': 'letterpaper', - # The font size ('10pt', '11pt' or '12pt'). - # 'pointsize': '10pt', - # Additional stuff for the LaTeX preamble. - # 'preamble': '', +# -- Options for Sphinx autosummary ------------------------------------------ +autodoc_default_options = { + "members": True, + "member-order": "bysource", + "special-members": "__init__", + "undoc-members": True, + "exclude-members": "__weakref__", + "autosummary": True, + "show-inheritance": True, } +autodoc_typehints = "description" +# autosummary_generate = True +# autosummary_imported_members = True +# numpydoc_show_class_members = False -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, -# author, documentclass [howto, manual, or own class]). -latex_documents = [ - ("index", "tnpy.tex", "tnpy Documentation", "Tan Tao-Lin", "manual"), -] - -# The name of an image file (relative to this directory) to place at the top of -# the title page. -# latex_logo = None - -# For "manual" documents, if this is true, then toplevel headings are parts, -# not chapters. -# latex_use_parts = False - -# If true, show page references after internal links. -# latex_show_pagerefs = False - -# If true, show URL addresses after external links. -# latex_show_urls = False - -# Documents to append as an appendix to all manuals. -# latex_appendices = [] +# -- Options for Mathjax ----------------------------------------------------- +# mathjax_path = "https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/node-main.min.js" +# mathjax2_config = { +# "tex": { +# "inlineMath": [["$", "$"], ["\\(", "\\)"]], +# "displayMath": [["$$", "$$"]], +# "processEscapes": True, +# }, +# "options": {"ignoreHtmlClass": "document", "processHtmlClass": "math|output_area"} +# } -# If false, no module index is generated. -# latex_domain_indices = True +# -- Link with documentation of external projects ---------------------------- +intersphinx_mapping = { + "numpy": ("https://numpy.org/doc/stable/", None), + "scipy": ("https://docs.scipy.org/doc/scipy/reference/", None), +} From a3e55ee4ffad0b6884b119044f4ecc5ffe1318c0 Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Feb 2023 22:18:34 +0800 Subject: [PATCH 38/92] build: change numpy ver lowest requirement --- poetry.lock | 2 +- pyproject.toml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index d5a577c9..17dd01c2 100644 --- a/poetry.lock +++ b/poetry.lock @@ -3928,4 +3928,4 @@ mkl = ["mkl-devel"] [metadata] lock-version = "2.0" python-versions = ">=3.9, <3.11" -content-hash = "be43000b8b9da5b9de424a8a01f8bfca42441c4b629b2a92e7f59cead5c40f7e" +content-hash = "cc937076f46e2c6de24a85d93f92dceab3b6e7201a0f6adc644702ea47d200e1" diff --git a/pyproject.toml b/pyproject.toml index 6bd811bf..fc03960d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,7 +13,7 @@ keywords = ["tensornetwork", "quantum-mechanics", "quantum-algorithms"] python = ">=3.9, <3.11" toml = "^0.10.2" tqdm = "^4.63.0" -numpy = ">=1.18, <1.24" +numpy = ">=1.22, <1.24" scipy = ">=1.1, <2.0" primme = "3.2.1" h5py = ">=3.6, <4.0" @@ -52,9 +52,9 @@ optional = true [tool.poetry.group.docs.dependencies] sphinx = "^4.5.0" sphinx-book-theme = "^0.3.2" +nbsphinx = "^0.8.8" m2r2 = "^0.3.2" pandoc = "^2.3" -nbsphinx = "^0.8.8" portray = ">=1.3.0" [build-system] From 9626d5205fac414c1fc12a41e750dc6f35bd665d Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Feb 2023 23:02:56 +0800 Subject: [PATCH 39/92] build: update poetry.lock --- poetry.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index 17dd01c2..3b758c8f 100644 --- a/poetry.lock +++ b/poetry.lock @@ -3304,14 +3304,14 @@ test = ["asv", "gmpy2", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeo [[package]] name = "setuptools" -version = "67.0.0" +version = "67.1.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "setuptools-67.0.0-py3-none-any.whl", hash = "sha256:9d790961ba6219e9ff7d9557622d2fe136816a264dd01d5997cfc057d804853d"}, - {file = "setuptools-67.0.0.tar.gz", hash = "sha256:883131c5b6efa70b9101c7ef30b2b7b780a4283d5fc1616383cdf22c83cbefe6"}, + {file = "setuptools-67.1.0-py3-none-any.whl", hash = "sha256:a7687c12b444eaac951ea87a9627c4f904ac757e7abdc5aac32833234af90378"}, + {file = "setuptools-67.1.0.tar.gz", hash = "sha256:e261cdf010c11a41cb5cb5f1bf3338a7433832029f559a6a7614bd42a967c300"}, ] [package.extras] From b7bd4969ffb9bf98e99de374ff0c96508c480164 Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Feb 2023 23:03:20 +0800 Subject: [PATCH 40/92] fix: README.md should not be ignored --- .dockerignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.dockerignore b/.dockerignore index f3defd06..54d16c69 100644 --- a/.dockerignore +++ b/.dockerignore @@ -8,7 +8,6 @@ docs/ CHANGELOG.md Dockerfile LICENSE -README.md setup.cfg ### VisualStudioCode template From af8031261cbc71d8c68201bca7c1eb5df712973a Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Feb 2023 23:03:39 +0800 Subject: [PATCH 41/92] fix: build should run against all --- .github/workflows/build.yml | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 327996a6..0d5cc0cf 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,11 +1,6 @@ name: Docker build -on: - push: - branches: - - 'main' - tags: - - 'v*' +on: [push, pull_request] jobs: build: From 9bdf20a8f9e9eaf626823af8e8b132fa03a35416 Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Feb 2023 23:04:20 +0800 Subject: [PATCH 42/92] style: rm trailing white spaces --- .github/workflows/codeql-analysis.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 809b2cff..51c5b70b 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -48,11 +48,11 @@ jobs: # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. # Prefix the list here with "+" to use these queries and those in the config file. - + # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs # queries: security-extended,security-and-quality - + # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild @@ -61,7 +61,7 @@ jobs: # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun - # If the Autobuild fails above, remove it and uncomment the following three lines. + # If the Autobuild fails above, remove it and uncomment the following three lines. # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance. # - run: | From 5a40e7e008242009c7c9b3e93912c932d89b0bcc Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Feb 2023 23:04:43 +0800 Subject: [PATCH 43/92] fix: sphinx-build not found --- .github/workflows/doc.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml index 2c4b2a93..936c644a 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -19,6 +19,7 @@ jobs: - name: Install dependencies run: | + apt-get install python3-sphinx python -m pip install --upgrade pip python -m pip install --upgrade poetry>=1.2.0 poetry install --with docs From 0bb4d684d2b43ce94b443d3448b8385f3b75ebc7 Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Feb 2023 23:05:03 +0800 Subject: [PATCH 44/92] build: evolve template --- .cruft.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cruft.json b/.cruft.json index 5b42e3db..742fc29b 100644 --- a/.cruft.json +++ b/.cruft.json @@ -1,6 +1,6 @@ { "template": "https://github.com/tanlin2013/cookiecutter-python/", - "commit": "67e3c8d085bd9a79c08cfb03f21c7cddd964b21a", + "commit": "9f9caa65534739b2dd6b338fa718d89fb42f39b0", "checkout": null, "context": { "cookiecutter": { From 2e039d465b1543d307f7898ce278977c0d2eada2 Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Feb 2023 23:17:08 +0800 Subject: [PATCH 45/92] fix: py version inconsistency --- poetry.lock | 58 +++++++++++++++++++++++++------------------------- pyproject.toml | 2 +- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/poetry.lock b/poetry.lock index 3b758c8f..313dc1df 100644 --- a/poetry.lock +++ b/poetry.lock @@ -3265,42 +3265,42 @@ gitlab = ["python-gitlab (>=1.3.0)"] [[package]] name = "scipy" -version = "1.10.0" +version = "1.9.3" description = "Fundamental algorithms for scientific computing in Python" category = "main" optional = false -python-versions = "<3.12,>=3.8" +python-versions = ">=3.8" files = [ - {file = "scipy-1.10.0-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:b901b423c91281a974f6cd1c36f5c6c523e665b5a6d5e80fcb2334e14670eefd"}, - {file = "scipy-1.10.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:16ba05d3d1b9f2141004f3f36888e05894a525960b07f4c2bfc0456b955a00be"}, - {file = "scipy-1.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:151f066fe7d6653c3ffefd489497b8fa66d7316e3e0d0c0f7ff6acca1b802809"}, - {file = "scipy-1.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f9ea0a37aca111a407cb98aa4e8dfde6e5d9333bae06dfa5d938d14c80bb5c3"}, - {file = "scipy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:27e548276b5a88b51212b61f6dda49a24acf5d770dff940bd372b3f7ced8c6c2"}, - {file = "scipy-1.10.0-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:42ab8b9e7dc1ebe248e55f54eea5307b6ab15011a7883367af48dd781d1312e4"}, - {file = "scipy-1.10.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:e096b062d2efdea57f972d232358cb068413dc54eec4f24158bcbb5cb8bddfd8"}, - {file = "scipy-1.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4df25a28bd22c990b22129d3c637fd5c3be4b7c94f975dca909d8bab3309b694"}, - {file = "scipy-1.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ad449db4e0820e4b42baccefc98ec772ad7818dcbc9e28b85aa05a536b0f1a2"}, - {file = "scipy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:6faf86ef7717891195ae0537e48da7524d30bc3b828b30c9b115d04ea42f076f"}, - {file = "scipy-1.10.0-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:4bd0e3278126bc882d10414436e58fa3f1eca0aa88b534fcbf80ed47e854f46c"}, - {file = "scipy-1.10.0-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:38bfbd18dcc69eeb589811e77fae552fa923067fdfbb2e171c9eac749885f210"}, - {file = "scipy-1.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ab2a58064836632e2cec31ca197d3695c86b066bc4818052b3f5381bfd2a728"}, - {file = "scipy-1.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5cd7a30970c29d9768a7164f564d1fbf2842bfc77b7d114a99bc32703ce0bf48"}, - {file = "scipy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:9b878c671655864af59c108c20e4da1e796154bd78c0ed6bb02bc41c84625686"}, - {file = "scipy-1.10.0-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:3afcbddb4488ac950ce1147e7580178b333a29cd43524c689b2e3543a080a2c8"}, - {file = "scipy-1.10.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:6e4497e5142f325a5423ff5fda2fff5b5d953da028637ff7c704378c8c284ea7"}, - {file = "scipy-1.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:441cab2166607c82e6d7a8683779cb89ba0f475b983c7e4ab88f3668e268c143"}, - {file = "scipy-1.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0490dc499fe23e4be35b8b6dd1e60a4a34f0c4adb30ac671e6332446b3cbbb5a"}, - {file = "scipy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:954ff69d2d1bf666b794c1d7216e0a746c9d9289096a64ab3355a17c7c59db54"}, - {file = "scipy-1.10.0.tar.gz", hash = "sha256:c8b3cbc636a87a89b770c6afc999baa6bcbb01691b5ccbbc1b1791c7c0a07540"}, + {file = "scipy-1.9.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1884b66a54887e21addf9c16fb588720a8309a57b2e258ae1c7986d4444d3bc0"}, + {file = "scipy-1.9.3-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:83b89e9586c62e787f5012e8475fbb12185bafb996a03257e9675cd73d3736dd"}, + {file = "scipy-1.9.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a72d885fa44247f92743fc20732ae55564ff2a519e8302fb7e18717c5355a8b"}, + {file = "scipy-1.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d01e1dd7b15bd2449c8bfc6b7cc67d630700ed655654f0dfcf121600bad205c9"}, + {file = "scipy-1.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:68239b6aa6f9c593da8be1509a05cb7f9efe98b80f43a5861cd24c7557e98523"}, + {file = "scipy-1.9.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b41bc822679ad1c9a5f023bc93f6d0543129ca0f37c1ce294dd9d386f0a21096"}, + {file = "scipy-1.9.3-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:90453d2b93ea82a9f434e4e1cba043e779ff67b92f7a0e85d05d286a3625df3c"}, + {file = "scipy-1.9.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83c06e62a390a9167da60bedd4575a14c1f58ca9dfde59830fc42e5197283dab"}, + {file = "scipy-1.9.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abaf921531b5aeaafced90157db505e10345e45038c39e5d9b6c7922d68085cb"}, + {file = "scipy-1.9.3-cp311-cp311-win_amd64.whl", hash = "sha256:06d2e1b4c491dc7d8eacea139a1b0b295f74e1a1a0f704c375028f8320d16e31"}, + {file = "scipy-1.9.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5a04cd7d0d3eff6ea4719371cbc44df31411862b9646db617c99718ff68d4840"}, + {file = "scipy-1.9.3-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:545c83ffb518094d8c9d83cce216c0c32f8c04aaf28b92cc8283eda0685162d5"}, + {file = "scipy-1.9.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d54222d7a3ba6022fdf5773931b5d7c56efe41ede7f7128c7b1637700409108"}, + {file = "scipy-1.9.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cff3a5295234037e39500d35316a4c5794739433528310e117b8a9a0c76d20fc"}, + {file = "scipy-1.9.3-cp38-cp38-win_amd64.whl", hash = "sha256:2318bef588acc7a574f5bfdff9c172d0b1bf2c8143d9582e05f878e580a3781e"}, + {file = "scipy-1.9.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d644a64e174c16cb4b2e41dfea6af722053e83d066da7343f333a54dae9bc31c"}, + {file = "scipy-1.9.3-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:da8245491d73ed0a994ed9c2e380fd058ce2fa8a18da204681f2fe1f57f98f95"}, + {file = "scipy-1.9.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4db5b30849606a95dcf519763dd3ab6fe9bd91df49eba517359e450a7d80ce2e"}, + {file = "scipy-1.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c68db6b290cbd4049012990d7fe71a2abd9ffbe82c0056ebe0f01df8be5436b0"}, + {file = "scipy-1.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:5b88e6d91ad9d59478fafe92a7c757d00c59e3bdc3331be8ada76a4f8d683f58"}, + {file = "scipy-1.9.3.tar.gz", hash = "sha256:fbc5c05c85c1a02be77b1ff591087c83bc44579c6d2bd9fb798bb64ea5e1a027"}, ] [package.dependencies] -numpy = ">=1.19.5,<1.27.0" +numpy = ">=1.18.5,<1.26.0" [package.extras] -dev = ["click", "doit (>=0.36.0)", "flake8", "mypy", "pycodestyle", "pydevtool", "rich-click", "typing_extensions"] -doc = ["matplotlib (>2)", "numpydoc", "pydata-sphinx-theme (==0.9.0)", "sphinx (!=4.1.0)", "sphinx-design (>=0.2.0)"] -test = ["asv", "gmpy2", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] +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" @@ -3927,5 +3927,5 @@ mkl = ["mkl-devel"] [metadata] lock-version = "2.0" -python-versions = ">=3.9, <3.11" -content-hash = "cc937076f46e2c6de24a85d93f92dceab3b6e7201a0f6adc644702ea47d200e1" +python-versions = ">=3.9, <4.0" +content-hash = "84aea7db03d5623ba20ee70b61fff0086ad0f4fb90d506f44476c967b4283523" diff --git a/pyproject.toml b/pyproject.toml index fc03960d..e72ec105 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,7 +10,7 @@ readme = "README.md" keywords = ["tensornetwork", "quantum-mechanics", "quantum-algorithms"] [tool.poetry.dependencies] -python = ">=3.9, <3.11" +python = ">=3.9, <4.0" toml = "^0.10.2" tqdm = "^4.63.0" numpy = ">=1.22, <1.24" From 74ad71de24781c7ee3d3d2930d934f3602d7e9a2 Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Feb 2023 23:19:57 +0800 Subject: [PATCH 46/92] ci: skip bandit B101 for assert --- .cruft.json | 2 +- pyproject.toml | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.cruft.json b/.cruft.json index 742fc29b..e597c72f 100644 --- a/.cruft.json +++ b/.cruft.json @@ -1,6 +1,6 @@ { "template": "https://github.com/tanlin2013/cookiecutter-python/", - "commit": "9f9caa65534739b2dd6b338fa718d89fb42f39b0", + "commit": "a85c6ef4a03ddaf545ea088ea610883a41fbf437", "checkout": null, "context": { "cookiecutter": { diff --git a/pyproject.toml b/pyproject.toml index e72ec105..286d49b4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -71,5 +71,8 @@ profile = "black" ignore_missing_imports = true strict_optional = false +[tool.bandit] +skips = ["B101"] + [tool.cruft] skip = [] From aaed3c7273e6dadff47880c90fdb873af6393537 Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Feb 2023 23:31:14 +0800 Subject: [PATCH 47/92] fix: llvmlite only support upto py310 --- .github/workflows/doc.yml | 2 +- .github/workflows/lint.yml | 2 +- .github/workflows/test.yml | 2 +- poetry.lock | 58 +++++++++++++++++++------------------- pyproject.toml | 2 +- 5 files changed, 33 insertions(+), 33 deletions(-) diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml index 936c644a..daa98083 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: [3.11] + python-version: [3.10] steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 74c06ae6..c91dfa0d 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: [3.11] + python-version: [3.10] steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 274ac241..3f302259 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -24,7 +24,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: [3.7, 3.11] + python-version: [3.7, 3.10] os: [ubuntu-latest] steps: diff --git a/poetry.lock b/poetry.lock index 313dc1df..3b758c8f 100644 --- a/poetry.lock +++ b/poetry.lock @@ -3265,42 +3265,42 @@ gitlab = ["python-gitlab (>=1.3.0)"] [[package]] name = "scipy" -version = "1.9.3" +version = "1.10.0" description = "Fundamental algorithms for scientific computing in Python" category = "main" optional = false -python-versions = ">=3.8" +python-versions = "<3.12,>=3.8" files = [ - {file = "scipy-1.9.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1884b66a54887e21addf9c16fb588720a8309a57b2e258ae1c7986d4444d3bc0"}, - {file = "scipy-1.9.3-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:83b89e9586c62e787f5012e8475fbb12185bafb996a03257e9675cd73d3736dd"}, - {file = "scipy-1.9.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a72d885fa44247f92743fc20732ae55564ff2a519e8302fb7e18717c5355a8b"}, - {file = "scipy-1.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d01e1dd7b15bd2449c8bfc6b7cc67d630700ed655654f0dfcf121600bad205c9"}, - {file = "scipy-1.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:68239b6aa6f9c593da8be1509a05cb7f9efe98b80f43a5861cd24c7557e98523"}, - {file = "scipy-1.9.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b41bc822679ad1c9a5f023bc93f6d0543129ca0f37c1ce294dd9d386f0a21096"}, - {file = "scipy-1.9.3-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:90453d2b93ea82a9f434e4e1cba043e779ff67b92f7a0e85d05d286a3625df3c"}, - {file = "scipy-1.9.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83c06e62a390a9167da60bedd4575a14c1f58ca9dfde59830fc42e5197283dab"}, - {file = "scipy-1.9.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abaf921531b5aeaafced90157db505e10345e45038c39e5d9b6c7922d68085cb"}, - {file = "scipy-1.9.3-cp311-cp311-win_amd64.whl", hash = "sha256:06d2e1b4c491dc7d8eacea139a1b0b295f74e1a1a0f704c375028f8320d16e31"}, - {file = "scipy-1.9.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5a04cd7d0d3eff6ea4719371cbc44df31411862b9646db617c99718ff68d4840"}, - {file = "scipy-1.9.3-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:545c83ffb518094d8c9d83cce216c0c32f8c04aaf28b92cc8283eda0685162d5"}, - {file = "scipy-1.9.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d54222d7a3ba6022fdf5773931b5d7c56efe41ede7f7128c7b1637700409108"}, - {file = "scipy-1.9.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cff3a5295234037e39500d35316a4c5794739433528310e117b8a9a0c76d20fc"}, - {file = "scipy-1.9.3-cp38-cp38-win_amd64.whl", hash = "sha256:2318bef588acc7a574f5bfdff9c172d0b1bf2c8143d9582e05f878e580a3781e"}, - {file = "scipy-1.9.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d644a64e174c16cb4b2e41dfea6af722053e83d066da7343f333a54dae9bc31c"}, - {file = "scipy-1.9.3-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:da8245491d73ed0a994ed9c2e380fd058ce2fa8a18da204681f2fe1f57f98f95"}, - {file = "scipy-1.9.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4db5b30849606a95dcf519763dd3ab6fe9bd91df49eba517359e450a7d80ce2e"}, - {file = "scipy-1.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c68db6b290cbd4049012990d7fe71a2abd9ffbe82c0056ebe0f01df8be5436b0"}, - {file = "scipy-1.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:5b88e6d91ad9d59478fafe92a7c757d00c59e3bdc3331be8ada76a4f8d683f58"}, - {file = "scipy-1.9.3.tar.gz", hash = "sha256:fbc5c05c85c1a02be77b1ff591087c83bc44579c6d2bd9fb798bb64ea5e1a027"}, + {file = "scipy-1.10.0-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:b901b423c91281a974f6cd1c36f5c6c523e665b5a6d5e80fcb2334e14670eefd"}, + {file = "scipy-1.10.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:16ba05d3d1b9f2141004f3f36888e05894a525960b07f4c2bfc0456b955a00be"}, + {file = "scipy-1.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:151f066fe7d6653c3ffefd489497b8fa66d7316e3e0d0c0f7ff6acca1b802809"}, + {file = "scipy-1.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f9ea0a37aca111a407cb98aa4e8dfde6e5d9333bae06dfa5d938d14c80bb5c3"}, + {file = "scipy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:27e548276b5a88b51212b61f6dda49a24acf5d770dff940bd372b3f7ced8c6c2"}, + {file = "scipy-1.10.0-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:42ab8b9e7dc1ebe248e55f54eea5307b6ab15011a7883367af48dd781d1312e4"}, + {file = "scipy-1.10.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:e096b062d2efdea57f972d232358cb068413dc54eec4f24158bcbb5cb8bddfd8"}, + {file = "scipy-1.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4df25a28bd22c990b22129d3c637fd5c3be4b7c94f975dca909d8bab3309b694"}, + {file = "scipy-1.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ad449db4e0820e4b42baccefc98ec772ad7818dcbc9e28b85aa05a536b0f1a2"}, + {file = "scipy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:6faf86ef7717891195ae0537e48da7524d30bc3b828b30c9b115d04ea42f076f"}, + {file = "scipy-1.10.0-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:4bd0e3278126bc882d10414436e58fa3f1eca0aa88b534fcbf80ed47e854f46c"}, + {file = "scipy-1.10.0-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:38bfbd18dcc69eeb589811e77fae552fa923067fdfbb2e171c9eac749885f210"}, + {file = "scipy-1.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ab2a58064836632e2cec31ca197d3695c86b066bc4818052b3f5381bfd2a728"}, + {file = "scipy-1.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5cd7a30970c29d9768a7164f564d1fbf2842bfc77b7d114a99bc32703ce0bf48"}, + {file = "scipy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:9b878c671655864af59c108c20e4da1e796154bd78c0ed6bb02bc41c84625686"}, + {file = "scipy-1.10.0-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:3afcbddb4488ac950ce1147e7580178b333a29cd43524c689b2e3543a080a2c8"}, + {file = "scipy-1.10.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:6e4497e5142f325a5423ff5fda2fff5b5d953da028637ff7c704378c8c284ea7"}, + {file = "scipy-1.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:441cab2166607c82e6d7a8683779cb89ba0f475b983c7e4ab88f3668e268c143"}, + {file = "scipy-1.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0490dc499fe23e4be35b8b6dd1e60a4a34f0c4adb30ac671e6332446b3cbbb5a"}, + {file = "scipy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:954ff69d2d1bf666b794c1d7216e0a746c9d9289096a64ab3355a17c7c59db54"}, + {file = "scipy-1.10.0.tar.gz", hash = "sha256:c8b3cbc636a87a89b770c6afc999baa6bcbb01691b5ccbbc1b1791c7c0a07540"}, ] [package.dependencies] -numpy = ">=1.18.5,<1.26.0" +numpy = ">=1.19.5,<1.27.0" [package.extras] -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"] +dev = ["click", "doit (>=0.36.0)", "flake8", "mypy", "pycodestyle", "pydevtool", "rich-click", "typing_extensions"] +doc = ["matplotlib (>2)", "numpydoc", "pydata-sphinx-theme (==0.9.0)", "sphinx (!=4.1.0)", "sphinx-design (>=0.2.0)"] +test = ["asv", "gmpy2", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] [[package]] name = "setuptools" @@ -3927,5 +3927,5 @@ mkl = ["mkl-devel"] [metadata] lock-version = "2.0" -python-versions = ">=3.9, <4.0" -content-hash = "84aea7db03d5623ba20ee70b61fff0086ad0f4fb90d506f44476c967b4283523" +python-versions = ">=3.9, <3.11" +content-hash = "cc937076f46e2c6de24a85d93f92dceab3b6e7201a0f6adc644702ea47d200e1" diff --git a/pyproject.toml b/pyproject.toml index 286d49b4..5b44900d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,7 +10,7 @@ readme = "README.md" keywords = ["tensornetwork", "quantum-mechanics", "quantum-algorithms"] [tool.poetry.dependencies] -python = ">=3.9, <4.0" +python = ">=3.9, <3.11" toml = "^0.10.2" tqdm = "^4.63.0" numpy = ">=1.22, <1.24" From a6c509934acbca29f52a0e50e520694789e084ea Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Feb 2023 23:38:16 +0800 Subject: [PATCH 48/92] fix: llvmlite only support upto py310 --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 0dd05033..03d1595c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.11-slim as python +FROM python:3.10-slim as python LABEL maintainer="TaoLin tanlin2013@gmail.com" ENV PYTHONUNBUFFERED=true WORKDIR /app From 85b6807e934b78ffca2dfef2a7b3e0de2ce74afb Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Feb 2023 23:40:04 +0800 Subject: [PATCH 49/92] fix: python version as string --- .github/workflows/doc.yml | 2 +- .github/workflows/lint.yml | 2 +- .github/workflows/test.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml index daa98083..db584db2 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: [3.10] + python-version: ["3.10"] steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index c91dfa0d..264af0ae 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: [3.10] + python-version: ["3.10"] steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3f302259..6ad2e251 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -24,7 +24,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: [3.7, 3.10] + python-version: ["3.7", "3.10"] os: [ubuntu-latest] steps: From c32ff940a70e2bcb3f96aa7156f8c62cfdeb0ba9 Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Feb 2023 23:53:08 +0800 Subject: [PATCH 50/92] fix: permission issue --- .github/workflows/doc.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml index db584db2..1e570650 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -19,7 +19,7 @@ jobs: - name: Install dependencies run: | - apt-get install python3-sphinx + sudo apt-get install -y python3-sphinx python -m pip install --upgrade pip python -m pip install --upgrade poetry>=1.2.0 poetry install --with docs From 272de3a4db5a4242eb6ffcc162be2c3cc1df5cb1 Mon Sep 17 00:00:00 2001 From: taolin Date: Thu, 2 Feb 2023 01:20:04 +0800 Subject: [PATCH 51/92] build: keep apt packages & poetry in runtime --- Dockerfile | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/Dockerfile b/Dockerfile index 03d1595c..2c34a7ef 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,29 +1,23 @@ -FROM python:3.10-slim as python +FROM python:3.10.8 as python LABEL maintainer="TaoLin tanlin2013@gmail.com" ENV PYTHONUNBUFFERED=true WORKDIR /app -FROM python as lapack -RUN apt update && \ - apt-get install -y --no-install-recommends \ - gfortran libblas-dev liblapack-dev graphviz - - -FROM python as poetry +FROM python as runtime ENV POETRY_HOME=/opt/poetry -ENV PATH="$POETRY_HOME/bin:$PATH" +ENV PATH="/app/.venv/bin:$PATH" COPY . ./ + RUN apt update && \ - apt-get install -y curl + apt-get install -y --no-install-recommends \ + gfortran libblas-dev liblapack-dev graphviz \ + RUN curl -sSL https://install.python-poetry.org | python3 - --version 1.3.2 && \ poetry config virtualenvs.in-project true && \ poetry install --no-interaction --no-ansi -vvv --without dev - -FROM python as runtime -ENV PATH="/app/.venv/bin:$PATH" -COPY --from=poetry /app /app RUN apt-get -y clean && \ - rm -rf /var/lib/apt/lists/* + rm -rf /var/lib/apt/lists/* \ + ENTRYPOINT /bin/bash From c82013dd653ff0596f37242ddd8d933846542e11 Mon Sep 17 00:00:00 2001 From: taolin Date: Thu, 2 Feb 2023 11:51:52 +0800 Subject: [PATCH 52/92] build: update mkl version --- poetry.lock | 39 ++++++++++++++++++++------------------- pyproject.toml | 2 +- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/poetry.lock b/poetry.lock index 3b758c8f..f6ae8caf 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1206,17 +1206,15 @@ files = [ [[package]] name = "intel-openmp" -version = "2022.2.1" +version = "2023.0.0" description = "Intel® OpenMP* Runtime Library" category = "main" optional = true python-versions = "*" files = [ - {file = "intel_openmp-2022.2.1-py2.py3-none-macosx_10_15_x86_64.macosx_11_0_x86_64.whl", hash = "sha256:6ae4a878135ec08aa16dd97b6d72ac16bb92fad4c6ba40f28b3558d70b1f447a"}, - {file = "intel_openmp-2022.2.1-py2.py3-none-manylinux1_i686.whl", hash = "sha256:c8b95fc493e2945b259153f7b0dd34a3d849e8e1e43b6c14ac04f613b3b45433"}, - {file = "intel_openmp-2022.2.1-py2.py3-none-manylinux1_x86_64.whl", hash = "sha256:342c9e2b6e1500a9fb8d39828293ab5f9bb310b81fad7eba5c9d865001b95a7e"}, - {file = "intel_openmp-2022.2.1-py2.py3-none-win32.whl", hash = "sha256:22e09934d9f8f8b864ae68cab95bf43667f00d24e4675eb6d2a4ee089754c439"}, - {file = "intel_openmp-2022.2.1-py2.py3-none-win_amd64.whl", hash = "sha256:77414289c14cb48d7f99926da69c9ced9e70c27feb825b0608f304f9d49844ae"}, + {file = "intel_openmp-2023.0.0-py2.py3-none-macosx_10_15_x86_64.macosx_11_0_x86_64.whl", hash = "sha256:77131c2cda75ace2060f6e9cdcc9f9c672ec838c4602fc544ce0858cfe8f416e"}, + {file = "intel_openmp-2023.0.0-py2.py3-none-manylinux1_i686.whl", hash = "sha256:adfb32b0dde6b3a95ced62608b05a45a7cfad928054136ddbfe0563e16cbf33c"}, + {file = "intel_openmp-2023.0.0-py2.py3-none-manylinux1_x86_64.whl", hash = "sha256:1ebce47df0b5ddad77992a70689fd3185df25f47cf901dd8384fd6d05a974f81"}, ] [[package]] @@ -1919,46 +1917,49 @@ files = [ [[package]] name = "mkl" -version = "2022.0.3" +version = "2023.0.0" description = "Intel® oneAPI Math Kernel Library" category = "main" optional = true python-versions = "*" files = [ - {file = "mkl-2022.0.3-py2.py3-none-win32.whl", hash = "sha256:24d5c35ff42199d318c6fd24ad4b58f9d00eb91bb18dbf8acf11ba435cf57e75"}, - {file = "mkl-2022.0.3-py2.py3-none-win_amd64.whl", hash = "sha256:706f74f142f7f7f7ed184eadb1472b95bce6f61bfd1a35e41daa362d089cec93"}, + {file = "mkl-2023.0.0-py2.py3-none-macosx_10_15_x86_64.macosx_11_0_x86_64.whl", hash = "sha256:e75ce244cd8ba36c497404fa166896f9042531a2f838ae83c75591c9af15589e"}, + {file = "mkl-2023.0.0-py2.py3-none-manylinux1_i686.whl", hash = "sha256:7c5c1f3aa4d129e0ae004e1f35d4e6bbdd0720715e5139b218b559c8901c7d97"}, + {file = "mkl-2023.0.0-py2.py3-none-manylinux1_x86_64.whl", hash = "sha256:9c9309dc7a394d935b50996772b35b95b4056c668e0deca5939de55b6e9995b4"}, ] [package.dependencies] -intel-openmp = ">=2022.0.0,<2023.0.0" +intel-openmp = ">=2023.0.0,<2024.0.0" tbb = ">=2021.0.0,<2022.0.0" [[package]] name = "mkl-devel" -version = "2022.0.3" +version = "2023.0.0" description = "Intel® oneAPI Math Kernel Library" category = "main" optional = true python-versions = "*" files = [ - {file = "mkl_devel-2022.0.3-py2.py3-none-win32.whl", hash = "sha256:434097fec438441157f99bb2edd28e52cc44a8ab642f933451f0a84a0d82e922"}, - {file = "mkl_devel-2022.0.3-py2.py3-none-win_amd64.whl", hash = "sha256:5a0a355a48e2bda43d7b4543b4732bfde0c7c727435d0f3ce8b90660ab9388a4"}, + {file = "mkl_devel-2023.0.0-py2.py3-none-macosx_10_15_x86_64.macosx_11_0_x86_64.whl", hash = "sha256:365c1b05cb1acd741c4b09242664dc57e954b8b177c3ccf53347d550ed457b13"}, + {file = "mkl_devel-2023.0.0-py2.py3-none-manylinux1_i686.whl", hash = "sha256:4595efb5215f62abcb37f2e6476687024499b7992c7e8e3453b391ef2b6b11c7"}, + {file = "mkl_devel-2023.0.0-py2.py3-none-manylinux1_x86_64.whl", hash = "sha256:1f2fd9941e8d4f010fa7f3f237ea0da513429348d9cce2a32f424dcb53ffeef7"}, ] [package.dependencies] -mkl = "2022.0.3" -mkl-include = "2022.0.3" +mkl = "2023.0.0" +mkl-include = "2023.0.0" [[package]] name = "mkl-include" -version = "2022.0.3" +version = "2023.0.0" description = "Intel® oneAPI Math Kernel Library" category = "main" optional = true python-versions = "*" files = [ - {file = "mkl_include-2022.0.3-py2.py3-none-win32.whl", hash = "sha256:24b133cd16fcfa6b6bc6ee2399b1036bfba9883a9dc10633bee6a6cfef8f1aa9"}, - {file = "mkl_include-2022.0.3-py2.py3-none-win_amd64.whl", hash = "sha256:04cfa83ad8f0f35cf1a86e1a401b71c6795fcf372ab23a50706cbd1560e4e68c"}, + {file = "mkl_include-2023.0.0-py2.py3-none-macosx_10_15_x86_64.macosx_11_0_x86_64.whl", hash = "sha256:b5645757a5fe4e8add2c9f2946556d03169ac9e6a2e3db2a92acbec837bfde0d"}, + {file = "mkl_include-2023.0.0-py2.py3-none-manylinux1_i686.whl", hash = "sha256:1f9514cec32ab1e467c7fc44674485622d9b151e91b9318e4d97249a28595671"}, + {file = "mkl_include-2023.0.0-py2.py3-none-manylinux1_x86_64.whl", hash = "sha256:14b0958dff799378975d83fbd00ce756645aa36b9f924bdfdb0fb031f72b734d"}, ] [[package]] @@ -3928,4 +3929,4 @@ mkl = ["mkl-devel"] [metadata] lock-version = "2.0" python-versions = ">=3.9, <3.11" -content-hash = "cc937076f46e2c6de24a85d93f92dceab3b6e7201a0f6adc644702ea47d200e1" +content-hash = "ee1ca886fda64a771bce7ea81510a4e188e413a28585d8a09c48b96e59584f21" diff --git a/pyproject.toml b/pyproject.toml index 5b44900d..c165091f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -21,7 +21,7 @@ graphviz = "0.20.1" tensornetwork = "0.4.6" autoray = ">=0.2, <0.4" quimb = "1.4.0" -mkl-devel = { version = "2022.0.3", optional = true } +mkl-devel = { version = "2023.0.0", optional = true } matplotlib = { version ="^3.5.2", optional = true } networkx = { version ="^2.8.4", optional = true } From 3378d1ca4ce8284956642219a435fc1c7d57ac63 Mon Sep 17 00:00:00 2001 From: taolin Date: Thu, 2 Feb 2023 11:54:34 +0800 Subject: [PATCH 53/92] ci: rm test against py37 --- .github/workflows/test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6ad2e251..2d25d39d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -24,7 +24,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.7", "3.10"] + python-version: ["3.10"] os: [ubuntu-latest] steps: @@ -69,7 +69,7 @@ jobs: run: | python -m pip install --upgrade pip python -m pip install --upgrade poetry==1.3.2 - poetry install + poetry install --all-extras - name: Test shell: bash From 2142f644d2243458d4f17752ea662ab4ec0e9cbb Mon Sep 17 00:00:00 2001 From: taolin Date: Thu, 2 Feb 2023 11:55:39 +0800 Subject: [PATCH 54/92] fix: rm typo backslash --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 2c34a7ef..0f8ec258 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,7 +17,7 @@ RUN curl -sSL https://install.python-poetry.org | python3 - --version 1.3.2 && poetry config virtualenvs.in-project true && \ poetry install --no-interaction --no-ansi -vvv --without dev -RUN apt-get -y clean && \ - rm -rf /var/lib/apt/lists/* \ +RUN apt-get -y clean && \ + rm -rf /var/lib/apt/lists/* ENTRYPOINT /bin/bash From 3ab9c70a1ea155494f52952b6975622cb7c2596d Mon Sep 17 00:00:00 2001 From: taolin Date: Thu, 2 Feb 2023 11:56:34 +0800 Subject: [PATCH 55/92] refactor: sort layer --- Dockerfile | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/Dockerfile b/Dockerfile index 0f8ec258..fcc3b146 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,21 +1,23 @@ FROM python:3.10.8 as python LABEL maintainer="TaoLin tanlin2013@gmail.com" -ENV PYTHONUNBUFFERED=true -WORKDIR /app + +ARG WORKDIR=/home +ENV PYTHONPATH="${PYTHONPATH}:$WORKDIR" \ + PATH="/root/.local/bin:$PATH" \ + PYTHONUNBUFFERED=true +WORKDIR $WORKDIR FROM python as runtime -ENV POETRY_HOME=/opt/poetry -ENV PATH="/app/.venv/bin:$PATH" -COPY . ./ +COPY . $WORKDIR RUN apt update && \ apt-get install -y --no-install-recommends \ - gfortran libblas-dev liblapack-dev graphviz \ + gfortran libblas-dev liblapack-dev graphviz RUN curl -sSL https://install.python-poetry.org | python3 - --version 1.3.2 && \ - poetry config virtualenvs.in-project true && \ - poetry install --no-interaction --no-ansi -vvv --without dev + poetry config virtualenvs.create false && \ + poetry install -vvv --without dev --all-extras RUN apt-get -y clean && \ rm -rf /var/lib/apt/lists/* From 524a9554301b78014b6dccba0a3ded1d35bea67a Mon Sep 17 00:00:00 2001 From: taolin Date: Thu, 2 Feb 2023 11:56:57 +0800 Subject: [PATCH 56/92] build: evolve template --- .cruft.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cruft.json b/.cruft.json index e597c72f..50e6589d 100644 --- a/.cruft.json +++ b/.cruft.json @@ -1,6 +1,6 @@ { "template": "https://github.com/tanlin2013/cookiecutter-python/", - "commit": "a85c6ef4a03ddaf545ea088ea610883a41fbf437", + "commit": "da4d55349e204cd8f9f6ccd633ad17961611996d", "checkout": null, "context": { "cookiecutter": { From 828d248053c530037d3db48a442db0ccdc6c8124 Mon Sep 17 00:00:00 2001 From: taolin Date: Thu, 2 Feb 2023 13:59:31 +0800 Subject: [PATCH 57/92] ci: add flag install all extras --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 2d25d39d..0a84d2c3 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -14,7 +14,7 @@ jobs: steps: - name: Install dev dependencies run: | - poetry install + poetry install --all-extras - name: Test run: pytest tests/ From 5d4f22f4bde79b537a2df3d9e9976ad57706c57b Mon Sep 17 00:00:00 2001 From: taolin Date: Thu, 2 Feb 2023 14:00:56 +0800 Subject: [PATCH 58/92] build: evolve template --- .cruft.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cruft.json b/.cruft.json index 50e6589d..9dc703f2 100644 --- a/.cruft.json +++ b/.cruft.json @@ -1,6 +1,6 @@ { "template": "https://github.com/tanlin2013/cookiecutter-python/", - "commit": "da4d55349e204cd8f9f6ccd633ad17961611996d", + "commit": "284e2a2b6adc3b9b0b7cca028dad9652c5d2c5cc", "checkout": null, "context": { "cookiecutter": { From 0a8b76f88ea52798aba62fce71802c28b9f8f5dd Mon Sep 17 00:00:00 2001 From: taolin Date: Thu, 2 Feb 2023 14:03:12 +0800 Subject: [PATCH 59/92] build: check on push only & cruft check --- .pre-commit-config.yaml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index bdc980da..a05d5481 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -29,6 +29,7 @@ repos: hooks: - id: poetry-check - id: poetry-lock + stages: [push] - repo: https://github.com/commitizen-tools/commitizen rev: v2.40.0 @@ -36,3 +37,12 @@ repos: - id: commitizen - id: commitizen-branch stages: [push] + +- repo: local + hooks: + - id: cruft-check + name: cruft-check + entry: bash -c 'cruft check' + language: python + pass_filenames: false + stages: [push] From 5e6bb0c8ec29e729435834c4e717a6292948ff13 Mon Sep 17 00:00:00 2001 From: taolin Date: Thu, 2 Feb 2023 14:03:26 +0800 Subject: [PATCH 60/92] build: evolve template --- .cruft.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cruft.json b/.cruft.json index 9dc703f2..fe2c1eba 100644 --- a/.cruft.json +++ b/.cruft.json @@ -1,6 +1,6 @@ { "template": "https://github.com/tanlin2013/cookiecutter-python/", - "commit": "284e2a2b6adc3b9b0b7cca028dad9652c5d2c5cc", + "commit": "9da6bb247555acc6d9f6802c07d122a6963af056", "checkout": null, "context": { "cookiecutter": { From 613936d489be6e71a874cd0e527c62a69179fc33 Mon Sep 17 00:00:00 2001 From: taolin Date: Thu, 2 Feb 2023 15:09:13 +0800 Subject: [PATCH 61/92] fix: add pandoc --- .github/workflows/doc.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml index 1e570650..ef4caae9 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -19,7 +19,7 @@ jobs: - name: Install dependencies run: | - sudo apt-get install -y python3-sphinx + sudo apt-get install -y python3-sphinx pandoc python -m pip install --upgrade pip python -m pip install --upgrade poetry>=1.2.0 poetry install --with docs From 92f63c75e6a081db2262c00d7dedf88321ca9419 Mon Sep 17 00:00:00 2001 From: taolin Date: Thu, 2 Feb 2023 15:09:25 +0800 Subject: [PATCH 62/92] fix: run in poetry env --- .github/workflows/doc.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml index ef4caae9..78079e0f 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -26,7 +26,7 @@ jobs: - name: Build Sphinx doc run: | - make -C docs html + poetry run make -C docs html - name: Deploy uses: peaceiris/actions-gh-pages@v3 From 3f9307358c318fb95cfd4a09ff04a898a12367c9 Mon Sep 17 00:00:00 2001 From: taolin Date: Thu, 2 Feb 2023 15:09:45 +0800 Subject: [PATCH 63/92] build: add flag local --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index fcc3b146..d8a07d68 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,7 +16,7 @@ RUN apt update && \ gfortran libblas-dev liblapack-dev graphviz RUN curl -sSL https://install.python-poetry.org | python3 - --version 1.3.2 && \ - poetry config virtualenvs.create false && \ + poetry config virtualenvs.create false --local && \ poetry install -vvv --without dev --all-extras RUN apt-get -y clean && \ From b53e7ead864400e9046a7e5e7a75bdf7942b8bd4 Mon Sep 17 00:00:00 2001 From: taolin Date: Thu, 2 Feb 2023 15:10:15 +0800 Subject: [PATCH 64/92] fix: checkout into actions wkdir --- .github/workflows/test.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 0a84d2c3..1358b5e9 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -12,6 +12,8 @@ jobs: container: image: docker://${{ github.repository }}:sha-${{ github.sha }} steps: + - uses: actions/checkout@v3 + - name: Install dev dependencies run: | poetry install --all-extras From 53be03c96ccceccb18d0bc675257dcf939863abc Mon Sep 17 00:00:00 2001 From: taolin Date: Thu, 2 Feb 2023 15:10:34 +0800 Subject: [PATCH 65/92] build: evolve template --- .cruft.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cruft.json b/.cruft.json index fe2c1eba..9830be5f 100644 --- a/.cruft.json +++ b/.cruft.json @@ -1,6 +1,6 @@ { "template": "https://github.com/tanlin2013/cookiecutter-python/", - "commit": "9da6bb247555acc6d9f6802c07d122a6963af056", + "commit": "6bc59a44349e3e1afd6ebf4211cbdbb4df4abab6", "checkout": null, "context": { "cookiecutter": { From d97045b8eea01e9ba0984f7d0a38a8443f230002 Mon Sep 17 00:00:00 2001 From: taolin Date: Thu, 2 Feb 2023 16:26:38 +0800 Subject: [PATCH 66/92] ci: run only after build success --- .github/workflows/test.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1358b5e9..0f77377d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -2,7 +2,7 @@ name: Test on: workflow_run: - workflows: [ "Docker build" ] + workflows: ["Docker build"] types: - completed @@ -11,6 +11,7 @@ jobs: runs-on: ubuntu-latest container: image: docker://${{ github.repository }}:sha-${{ github.sha }} + if: ${{ github.event.workflow_run.conclusion == 'success' }} steps: - uses: actions/checkout@v3 From f23c0042ba93c993140d478c17a0990870669025 Mon Sep 17 00:00:00 2001 From: taolin Date: Thu, 2 Feb 2023 16:27:09 +0800 Subject: [PATCH 67/92] build: update dev dependencies --- pyproject.toml | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index c165091f..72ff0610 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,20 +31,20 @@ drawing = ["matplotlib", "networkx"] [tool.poetry.group.dev.dependencies] pre-commit = "^2.19.0" -commitizen = "^2.40.0" -vulture = ">=1.0" -bandit = ">=1.6" -safety = ">=1.8" -isort = ">=5.3" -flake8-bugbear = ">=19.8" -black = ">=18.3" -mypy = ">=0.730.0" -ipython = ">=7.7" -pytest = ">=5.0" -pytest-cov = ">=2.7" -pytest-mock = ">=1.10" -pep8-naming = ">=0.8.2" -cruft = ">=2.2" +commitizen = "^2.35.0" +vulture = "^2.4" +bandit = "^1.7.4" +safety = "^2.3.4" +isort = "^5.11.0" +flake8-bugbear = "^22.10.25" +black = "^22.12.0" +mypy = "^0.990" +ipython = "^8.5.0" +pytest = "^7.1.2" +pytest-cov = "^4.0.0" +pytest-mock = "^3.9.0" +pep8-naming = "^0.13.0" +cruft = "^2.11.0" [tool.poetry.group.docs] optional = true @@ -55,7 +55,7 @@ sphinx-book-theme = "^0.3.2" nbsphinx = "^0.8.8" m2r2 = "^0.3.2" pandoc = "^2.3" -portray = ">=1.3.0" +portray = "^1.3.0" [build-system] requires = ["poetry-core>=1.0.0"] From f033202308e986e647f49f4598a707885dfa1ab9 Mon Sep 17 00:00:00 2001 From: taolin Date: Thu, 2 Feb 2023 16:27:54 +0800 Subject: [PATCH 68/92] build: update quimb and its dependencies --- pyproject.toml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 72ff0610..e865e8be 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,7 +19,9 @@ primme = "3.2.1" h5py = ">=3.6, <4.0" graphviz = "0.20.1" tensornetwork = "0.4.6" -autoray = ">=0.2, <0.4" +numba = "^0.56.4" +llvmlite = "^0.39.1" +autoray = "^0.6.0" quimb = "1.4.0" mkl-devel = { version = "2023.0.0", optional = true } matplotlib = { version ="^3.5.2", optional = true } From b238917689f8e6c48f108426ccc9a6b96b6e55f2 Mon Sep 17 00:00:00 2001 From: taolin Date: Thu, 2 Feb 2023 16:28:05 +0800 Subject: [PATCH 69/92] build: update dependencies --- poetry.lock | 160 ++++++++++++++++++++++--------------------------- pyproject.toml | 4 +- 2 files changed, 75 insertions(+), 89 deletions(-) diff --git a/poetry.lock b/poetry.lock index f6ae8caf..2fcf4c04 100644 --- a/poetry.lock +++ b/poetry.lock @@ -93,21 +93,18 @@ tests-no-zope = ["cloudpickle", "cloudpickle", "hypothesis", "hypothesis", "mypy [[package]] name = "autoray" -version = "0.3.2" +version = "0.6.0" description = "Write backend agnostic numeric code compatible with any numpy-ish array library." category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "autoray-0.3.2-py3-none-any.whl", hash = "sha256:a50b4174ae87e8f354feb1a793f6bb6d634404289a404f28497269f42616de44"}, - {file = "autoray-0.3.2.tar.gz", hash = "sha256:4ed0f4443fa832cd08fea274be022b045e835305832e19b1391309709f6198c7"}, + {file = "autoray-0.6.0-py3-none-any.whl", hash = "sha256:e4b0e40f3145f843da6971635aab892da41a7a1baffd06ef2df53caa1eb7f8cc"}, + {file = "autoray-0.6.0.tar.gz", hash = "sha256:ba3f30812549209bbba9d4976528f3f84bf84c22374699fd2e6aa84bf496d295"}, ] -[package.dependencies] -numpy = "*" - [package.extras] -tests = ["coverage", "pytest", "pytest-cov"] +tests = ["coverage", "numpy", "pytest", "pytest-cov"] [[package]] name = "babel" @@ -195,46 +192,32 @@ chardet = ">=3.0.2" [[package]] name = "black" -version = "23.1.0" +version = "22.12.0" description = "The uncompromising code formatter." category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "black-23.1.0-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:b6a92a41ee34b883b359998f0c8e6eb8e99803aa8bf3123bf2b2e6fec505a221"}, - {file = "black-23.1.0-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:57c18c5165c1dbe291d5306e53fb3988122890e57bd9b3dcb75f967f13411a26"}, - {file = "black-23.1.0-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:9880d7d419bb7e709b37e28deb5e68a49227713b623c72b2b931028ea65f619b"}, - {file = "black-23.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e6663f91b6feca5d06f2ccd49a10f254f9298cc1f7f49c46e498a0771b507104"}, - {file = "black-23.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:9afd3f493666a0cd8f8df9a0200c6359ac53940cbde049dcb1a7eb6ee2dd7074"}, - {file = "black-23.1.0-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:bfffba28dc52a58f04492181392ee380e95262af14ee01d4bc7bb1b1c6ca8d27"}, - {file = "black-23.1.0-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:c1c476bc7b7d021321e7d93dc2cbd78ce103b84d5a4cf97ed535fbc0d6660648"}, - {file = "black-23.1.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:382998821f58e5c8238d3166c492139573325287820963d2f7de4d518bd76958"}, - {file = "black-23.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bf649fda611c8550ca9d7592b69f0637218c2369b7744694c5e4902873b2f3a"}, - {file = "black-23.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:121ca7f10b4a01fd99951234abdbd97728e1240be89fde18480ffac16503d481"}, - {file = "black-23.1.0-cp37-cp37m-macosx_10_16_x86_64.whl", hash = "sha256:a8471939da5e824b891b25751955be52ee7f8a30a916d570a5ba8e0f2eb2ecad"}, - {file = "black-23.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8178318cb74f98bc571eef19068f6ab5613b3e59d4f47771582f04e175570ed8"}, - {file = "black-23.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:a436e7881d33acaf2536c46a454bb964a50eff59b21b51c6ccf5a40601fbef24"}, - {file = "black-23.1.0-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:a59db0a2094d2259c554676403fa2fac3473ccf1354c1c63eccf7ae65aac8ab6"}, - {file = "black-23.1.0-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:0052dba51dec07ed029ed61b18183942043e00008ec65d5028814afaab9a22fd"}, - {file = "black-23.1.0-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:49f7b39e30f326a34b5c9a4213213a6b221d7ae9d58ec70df1c4a307cf2a1580"}, - {file = "black-23.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:162e37d49e93bd6eb6f1afc3e17a3d23a823042530c37c3c42eeeaf026f38468"}, - {file = "black-23.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:8b70eb40a78dfac24842458476135f9b99ab952dd3f2dab738c1881a9b38b753"}, - {file = "black-23.1.0-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:a29650759a6a0944e7cca036674655c2f0f63806ddecc45ed40b7b8aa314b651"}, - {file = "black-23.1.0-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:bb460c8561c8c1bec7824ecbc3ce085eb50005883a6203dcfb0122e95797ee06"}, - {file = "black-23.1.0-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:c91dfc2c2a4e50df0026f88d2215e166616e0c80e86004d0003ece0488db2739"}, - {file = "black-23.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a951cc83ab535d248c89f300eccbd625e80ab880fbcfb5ac8afb5f01a258ac9"}, - {file = "black-23.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:0680d4380db3719ebcfb2613f34e86c8e6d15ffeabcf8ec59355c5e7b85bb555"}, - {file = "black-23.1.0-py3-none-any.whl", hash = "sha256:7a0f701d314cfa0896b9001df70a530eb2472babb76086344e688829efd97d32"}, - {file = "black-23.1.0.tar.gz", hash = "sha256:b0bd97bea8903f5a2ba7219257a44e3f1f9d00073d6cc1add68f0beec69692ac"}, + {file = "black-22.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eedd20838bd5d75b80c9f5487dbcb06836a43833a37846cf1d8c1cc01cef59d"}, + {file = "black-22.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:159a46a4947f73387b4d83e87ea006dbb2337eab6c879620a3ba52699b1f4351"}, + {file = "black-22.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d30b212bffeb1e252b31dd269dfae69dd17e06d92b87ad26e23890f3efea366f"}, + {file = "black-22.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:7412e75863aa5c5411886804678b7d083c7c28421210180d67dfd8cf1221e1f4"}, + {file = "black-22.12.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c116eed0efb9ff870ded8b62fe9f28dd61ef6e9ddd28d83d7d264a38417dcee2"}, + {file = "black-22.12.0-cp37-cp37m-win_amd64.whl", hash = "sha256:1f58cbe16dfe8c12b7434e50ff889fa479072096d79f0a7f25e4ab8e94cd8350"}, + {file = "black-22.12.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77d86c9f3db9b1bf6761244bc0b3572a546f5fe37917a044e02f3166d5aafa7d"}, + {file = "black-22.12.0-cp38-cp38-win_amd64.whl", hash = "sha256:82d9fe8fee3401e02e79767016b4907820a7dc28d70d137eb397b92ef3cc5bfc"}, + {file = "black-22.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:101c69b23df9b44247bd88e1d7e90154336ac4992502d4197bdac35dd7ee3320"}, + {file = "black-22.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:559c7a1ba9a006226f09e4916060982fd27334ae1998e7a38b3f33a37f7a2148"}, + {file = "black-22.12.0-py3-none-any.whl", hash = "sha256:436cc9167dd28040ad90d3b404aec22cedf24a6e4d7de221bec2730ec0c97bcf"}, + {file = "black-22.12.0.tar.gz", hash = "sha256:229351e5a18ca30f447bf724d007f890f97e13af070bb6ad4c0a441cd7596a2f"}, ] [package.dependencies] click = ">=8.0.0" mypy-extensions = ">=0.4.3" -packaging = ">=22.0" pathspec = ">=0.9.0" platformdirs = ">=2" -tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +tomli = {version = ">=1.1.0", markers = "python_full_version < \"3.11.0a7\""} typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""} [package.extras] @@ -960,14 +943,14 @@ pyflakes = ">=3.0.0,<3.1.0" [[package]] name = "flake8-bugbear" -version = "23.1.20" +version = "22.12.6" description = "A plugin for flake8 finding likely bugs and design problems in your program. Contains warnings that don't belong in pyflakes and pycodestyle." category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "flake8-bugbear-23.1.20.tar.gz", hash = "sha256:55902ab5a48c5ea53d8689ecd146eda548e72f2724192b9c1d68f6d975d13c06"}, - {file = "flake8_bugbear-23.1.20-py3-none-any.whl", hash = "sha256:04a115e5f9c8e87c38bdbbcdf9f58223ffe05469c07c9a7bd8633330bc4d078b"}, + {file = "flake8-bugbear-22.12.6.tar.gz", hash = "sha256:4cdb2c06e229971104443ae293e75e64c6107798229202fbe4f4091427a30ac0"}, + {file = "flake8_bugbear-22.12.6-py3-none-any.whl", hash = "sha256:b69a510634f8a9c298dfda2b18a8036455e6b19ecac4fe582e4d7a0abfa50a30"}, ] [package.dependencies] @@ -975,7 +958,7 @@ attrs = ">=19.2.0" flake8 = ">=3.0.0" [package.extras] -dev = ["coverage", "hypothesis", "hypothesmith (>=0.2)", "pre-commit", "pytest", "tox"] +dev = ["coverage", "hypothesis", "hypothesmith (>=0.2)", "pre-commit", "tox"] [[package]] name = "fonttools" @@ -1964,42 +1947,42 @@ files = [ [[package]] name = "mypy" -version = "0.991" +version = "0.990" description = "Optional static typing for Python" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "mypy-0.991-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7d17e0a9707d0772f4a7b878f04b4fd11f6f5bcb9b3813975a9b13c9332153ab"}, - {file = "mypy-0.991-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0714258640194d75677e86c786e80ccf294972cc76885d3ebbb560f11db0003d"}, - {file = "mypy-0.991-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0c8f3be99e8a8bd403caa8c03be619544bc2c77a7093685dcf308c6b109426c6"}, - {file = "mypy-0.991-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc9ec663ed6c8f15f4ae9d3c04c989b744436c16d26580eaa760ae9dd5d662eb"}, - {file = "mypy-0.991-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4307270436fd7694b41f913eb09210faff27ea4979ecbcd849e57d2da2f65305"}, - {file = "mypy-0.991-cp310-cp310-win_amd64.whl", hash = "sha256:901c2c269c616e6cb0998b33d4adbb4a6af0ac4ce5cd078afd7bc95830e62c1c"}, - {file = "mypy-0.991-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d13674f3fb73805ba0c45eb6c0c3053d218aa1f7abead6e446d474529aafc372"}, - {file = "mypy-0.991-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1c8cd4fb70e8584ca1ed5805cbc7c017a3d1a29fb450621089ffed3e99d1857f"}, - {file = "mypy-0.991-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:209ee89fbb0deed518605edddd234af80506aec932ad28d73c08f1400ef80a33"}, - {file = "mypy-0.991-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37bd02ebf9d10e05b00d71302d2c2e6ca333e6c2a8584a98c00e038db8121f05"}, - {file = "mypy-0.991-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:26efb2fcc6b67e4d5a55561f39176821d2adf88f2745ddc72751b7890f3194ad"}, - {file = "mypy-0.991-cp311-cp311-win_amd64.whl", hash = "sha256:3a700330b567114b673cf8ee7388e949f843b356a73b5ab22dd7cff4742a5297"}, - {file = "mypy-0.991-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:1f7d1a520373e2272b10796c3ff721ea1a0712288cafaa95931e66aa15798813"}, - {file = "mypy-0.991-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:641411733b127c3e0dab94c45af15fea99e4468f99ac88b39efb1ad677da5711"}, - {file = "mypy-0.991-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3d80e36b7d7a9259b740be6d8d906221789b0d836201af4234093cae89ced0cd"}, - {file = "mypy-0.991-cp37-cp37m-win_amd64.whl", hash = "sha256:e62ebaad93be3ad1a828a11e90f0e76f15449371ffeecca4a0a0b9adc99abcef"}, - {file = "mypy-0.991-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b86ce2c1866a748c0f6faca5232059f881cda6dda2a893b9a8373353cfe3715a"}, - {file = "mypy-0.991-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac6e503823143464538efda0e8e356d871557ef60ccd38f8824a4257acc18d93"}, - {file = "mypy-0.991-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0cca5adf694af539aeaa6ac633a7afe9bbd760df9d31be55ab780b77ab5ae8bf"}, - {file = "mypy-0.991-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a12c56bf73cdab116df96e4ff39610b92a348cc99a1307e1da3c3768bbb5b135"}, - {file = "mypy-0.991-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:652b651d42f155033a1967739788c436491b577b6a44e4c39fb340d0ee7f0d70"}, - {file = "mypy-0.991-cp38-cp38-win_amd64.whl", hash = "sha256:4175593dc25d9da12f7de8de873a33f9b2b8bdb4e827a7cae952e5b1a342e243"}, - {file = "mypy-0.991-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:98e781cd35c0acf33eb0295e8b9c55cdbef64fcb35f6d3aa2186f289bed6e80d"}, - {file = "mypy-0.991-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6d7464bac72a85cb3491c7e92b5b62f3dcccb8af26826257760a552a5e244aa5"}, - {file = "mypy-0.991-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c9166b3f81a10cdf9b49f2d594b21b31adadb3d5e9db9b834866c3258b695be3"}, - {file = "mypy-0.991-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8472f736a5bfb159a5e36740847808f6f5b659960115ff29c7cecec1741c648"}, - {file = "mypy-0.991-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e80e758243b97b618cdf22004beb09e8a2de1af481382e4d84bc52152d1c476"}, - {file = "mypy-0.991-cp39-cp39-win_amd64.whl", hash = "sha256:74e259b5c19f70d35fcc1ad3d56499065c601dfe94ff67ae48b85596b9ec1461"}, - {file = "mypy-0.991-py3-none-any.whl", hash = "sha256:de32edc9b0a7e67c2775e574cb061a537660e51210fbf6006b0b36ea695ae9bb"}, - {file = "mypy-0.991.tar.gz", hash = "sha256:3c0165ba8f354a6d9881809ef29f1a9318a236a6d81c690094c5df32107bde06"}, + {file = "mypy-0.990-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:aaf1be63e0207d7d17be942dcf9a6b641745581fe6c64df9a38deb562a7dbafa"}, + {file = "mypy-0.990-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d555aa7f44cecb7ea3c0ac69d58b1a5afb92caa017285a8e9c4efbf0518b61b4"}, + {file = "mypy-0.990-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f694d6d09a460b117dccb6857dda269188e3437c880d7b60fa0014fa872d1e9"}, + {file = "mypy-0.990-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:269f0dfb6463b8780333310ff4b5134425157ef0d2b1d614015adaf6d6a7eabd"}, + {file = "mypy-0.990-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8798c8ed83aa809f053abff08664bdca056038f5a02af3660de00b7290b64c47"}, + {file = "mypy-0.990-cp310-cp310-win_amd64.whl", hash = "sha256:47a9955214615108c3480a500cfda8513a0b1cd3c09a1ed42764ca0dd7b931dd"}, + {file = "mypy-0.990-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4a8a6c10f4c63fbf6ad6c03eba22c9331b3946a4cec97f008e9ffb4d3b31e8e2"}, + {file = "mypy-0.990-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cd2dd3730ba894ec2a2082cc703fbf3e95a08479f7be84912e3131fc68809d46"}, + {file = "mypy-0.990-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7da0005e47975287a92b43276e460ac1831af3d23032c34e67d003388a0ce8d0"}, + {file = "mypy-0.990-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:262c543ef24deb10470a3c1c254bb986714e2b6b1a67d66daf836a548a9f316c"}, + {file = "mypy-0.990-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3ff201a0c6d3ea029d73b1648943387d75aa052491365b101f6edd5570d018ea"}, + {file = "mypy-0.990-cp311-cp311-win_amd64.whl", hash = "sha256:1767830da2d1afa4e62b684647af0ff79b401f004d7fa08bc5b0ce2d45bcd5ec"}, + {file = "mypy-0.990-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6826d9c4d85bbf6d68cb279b561de6a4d8d778ca8e9ab2d00ee768ab501a9852"}, + {file = "mypy-0.990-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46897755f944176fbc504178422a5a2875bbf3f7436727374724842c0987b5af"}, + {file = "mypy-0.990-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0680389c34284287fe00e82fc8bccdea9aff318f7e7d55b90d967a13a9606013"}, + {file = "mypy-0.990-cp37-cp37m-win_amd64.whl", hash = "sha256:b08541a06eed35b543ae1a6b301590eb61826a1eb099417676ddc5a42aa151c5"}, + {file = "mypy-0.990-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:be88d665e76b452c26fb2bdc3d54555c01226fba062b004ede780b190a50f9db"}, + {file = "mypy-0.990-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9b8f4a8213b1fd4b751e26b59ae0e0c12896568d7e805861035c7a15ed6dc9eb"}, + {file = "mypy-0.990-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2b6f85c2ad378e3224e017904a051b26660087b3b76490d533b7344f1546d3ff"}, + {file = "mypy-0.990-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ee5f99817ee70254e7eb5cf97c1b11dda29c6893d846c8b07bce449184e9466"}, + {file = "mypy-0.990-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49082382f571c3186ce9ea0bd627cb1345d4da8d44a8377870f4442401f0a706"}, + {file = "mypy-0.990-cp38-cp38-win_amd64.whl", hash = "sha256:aba38e3dd66bdbafbbfe9c6e79637841928ea4c79b32e334099463c17b0d90ef"}, + {file = "mypy-0.990-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9d851c09b981a65d9d283a8ccb5b1d0b698e580493416a10942ef1a04b19fd37"}, + {file = "mypy-0.990-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d847dd23540e2912d9667602271e5ebf25e5788e7da46da5ffd98e7872616e8e"}, + {file = "mypy-0.990-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cc6019808580565040cd2a561b593d7c3c646badd7e580e07d875eb1bf35c695"}, + {file = "mypy-0.990-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a3150d409609a775c8cb65dbe305c4edd7fe576c22ea79d77d1454acd9aeda8"}, + {file = "mypy-0.990-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3227f14fe943524f5794679156488f18bf8d34bfecd4623cf76bc55958d229c5"}, + {file = "mypy-0.990-cp39-cp39-win_amd64.whl", hash = "sha256:c76c769c46a1e6062a84837badcb2a7b0cdb153d68601a61f60739c37d41cc74"}, + {file = "mypy-0.990-py3-none-any.whl", hash = "sha256:8f1940325a8ed460ba03d19ab83742260fa9534804c317224e5d4e5aa588e2d6"}, + {file = "mypy-0.990.tar.gz", hash = "sha256:72382cb609142dba3f04140d016c94b4092bc7b4d98ca718740dc989e5271b8d"}, ] [package.dependencies] @@ -2130,21 +2113,21 @@ traitlets = ">=5" [[package]] name = "networkx" -version = "2.8.8" +version = "3.0" description = "Python package for creating and manipulating graphs and networks" category = "main" optional = true python-versions = ">=3.8" files = [ - {file = "networkx-2.8.8-py3-none-any.whl", hash = "sha256:e435dfa75b1d7195c7b8378c3859f0445cd88c6b0375c181ed66823a9ceb7524"}, - {file = "networkx-2.8.8.tar.gz", hash = "sha256:230d388117af870fce5647a3c52401fcf753e94720e6ea6b4197a5355648885e"}, + {file = "networkx-3.0-py3-none-any.whl", hash = "sha256:58058d66b1818043527244fab9d41a51fcd7dcc271748015f3c181b8a90c8e2e"}, + {file = "networkx-3.0.tar.gz", hash = "sha256:9a9992345353618ae98339c2b63d8201c381c2944f38a2ab49cb45a4c667e412"}, ] [package.extras] -default = ["matplotlib (>=3.4)", "numpy (>=1.19)", "pandas (>=1.3)", "scipy (>=1.8)"] -developer = ["mypy (>=0.982)", "pre-commit (>=2.20)"] -doc = ["nb2plots (>=0.6)", "numpydoc (>=1.5)", "pillow (>=9.2)", "pydata-sphinx-theme (>=0.11)", "sphinx (>=5.2)", "sphinx-gallery (>=0.11)", "texext (>=0.6.6)"] -extra = ["lxml (>=4.6)", "pydot (>=1.4.2)", "pygraphviz (>=1.9)", "sympy (>=1.10)"] +default = ["matplotlib (>=3.4)", "numpy (>=1.20)", "pandas (>=1.3)", "scipy (>=1.8)"] +developer = ["mypy (>=0.991)", "pre-commit (>=2.20)"] +doc = ["nb2plots (>=0.6)", "numpydoc (>=1.5)", "pillow (>=9.2)", "pydata-sphinx-theme (>=0.11)", "sphinx (==5.2.3)", "sphinx-gallery (>=0.11)", "texext (>=0.6.7)"] +extra = ["lxml (>=4.6)", "pydot (>=1.4.2)", "pygraphviz (>=1.10)", "sympy (>=1.10)"] test = ["codecov (>=2.1)", "pytest (>=7.2)", "pytest-cov (>=4.0)"] [[package]] @@ -2264,16 +2247,19 @@ tests = ["pytest", "pytest-cov", "pytest-pep8"] [[package]] name = "packaging" -version = "23.0" +version = "21.3" description = "Core utilities for Python packages" category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.6" files = [ - {file = "packaging-23.0-py3-none-any.whl", hash = "sha256:714ac14496c3e68c99c29b00845f7a2b85f3bb6f1078fd9f72fd20f0570002b2"}, - {file = "packaging-23.0.tar.gz", hash = "sha256:b6ad297f8907de0fa2fe1ccbd26fdaf387f5f47c7275fedf8cce89f99446cf97"}, + {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, + {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, ] +[package.dependencies] +pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" + [[package]] name = "pandoc" version = "2.3" @@ -2778,7 +2764,7 @@ name = "pyparsing" version = "3.0.9" description = "pyparsing module - Classes and methods to define and execute parsing grammars" category = "main" -optional = true +optional = false python-versions = ">=3.6.8" files = [ {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, @@ -3242,20 +3228,20 @@ files = [ [[package]] name = "safety" -version = "2.3.4" +version = "2.3.5" description = "Checks installed dependencies for known vulnerabilities and licenses." category = "dev" optional = false python-versions = "*" files = [ - {file = "safety-2.3.4-py3-none-any.whl", hash = "sha256:6224dcd9b20986a2b2c5e7acfdfba6bca42bb11b2783b24ed04f32317e5167ea"}, - {file = "safety-2.3.4.tar.gz", hash = "sha256:b9e74e794e82f54d11f4091c5d820c4d2d81de9f953bf0b4f33ac8bc402ae72c"}, + {file = "safety-2.3.5-py3-none-any.whl", hash = "sha256:2227fcac1b22b53c1615af78872b48348661691450aa25d6704a5504dbd1f7e2"}, + {file = "safety-2.3.5.tar.gz", hash = "sha256:a60c11f8952f412cbb165d70cb1f673a3b43a2ba9a93ce11f97e6a4de834aa3a"}, ] [package.dependencies] Click = ">=8.0.2" dparse = ">=0.6.2" -packaging = ">=21.0" +packaging = ">=21.0,<22.0" requests = "*" "ruamel.yaml" = ">=0.17.21" setuptools = ">=19.3" @@ -3929,4 +3915,4 @@ mkl = ["mkl-devel"] [metadata] lock-version = "2.0" python-versions = ">=3.9, <3.11" -content-hash = "ee1ca886fda64a771bce7ea81510a4e188e413a28585d8a09c48b96e59584f21" +content-hash = "46a21aee3dd3052a9c29b744654260e191023a8cb6dc57688a8c940784e9f66e" diff --git a/pyproject.toml b/pyproject.toml index e865e8be..cf4f564a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,7 +13,7 @@ keywords = ["tensornetwork", "quantum-mechanics", "quantum-algorithms"] python = ">=3.9, <3.11" toml = "^0.10.2" tqdm = "^4.63.0" -numpy = ">=1.22, <1.24" +numpy = "^1.22" scipy = ">=1.1, <2.0" primme = "3.2.1" h5py = ">=3.6, <4.0" @@ -25,7 +25,7 @@ autoray = "^0.6.0" quimb = "1.4.0" mkl-devel = { version = "2023.0.0", optional = true } matplotlib = { version ="^3.5.2", optional = true } -networkx = { version ="^2.8.4", optional = true } +networkx = { version ="^3.0", optional = true } [tool.poetry.extras] mkl = ["mkl-devel"] # (https://github.com/tanlin2013/tnpy/issues/5) From 4f51f516bb1281c1e13ba4cd36d18a8fb04ffd95 Mon Sep 17 00:00:00 2001 From: taolin Date: Thu, 2 Feb 2023 16:28:52 +0800 Subject: [PATCH 70/92] build: evolve template --- .cruft.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cruft.json b/.cruft.json index 9830be5f..80096490 100644 --- a/.cruft.json +++ b/.cruft.json @@ -1,6 +1,6 @@ { "template": "https://github.com/tanlin2013/cookiecutter-python/", - "commit": "6bc59a44349e3e1afd6ebf4211cbdbb4df4abab6", + "commit": "0fd2c8ea25f91f205e461c35dfb91ff799a113b8", "checkout": null, "context": { "cookiecutter": { From 6a5bfdfcb87f6a74e65fb5182bc1f38729963eaf Mon Sep 17 00:00:00 2001 From: taolin Date: Thu, 2 Feb 2023 17:02:10 +0800 Subject: [PATCH 71/92] fix: run in poetry env --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 0f77377d..800ed453 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -20,7 +20,7 @@ jobs: poetry install --all-extras - name: Test - run: pytest tests/ + run: poetry run pytest tests/ build: runs-on: ${{ matrix.os }} From 20a50c8e1808fdc39a286996868f70edff406ba4 Mon Sep 17 00:00:00 2001 From: taolin Date: Thu, 2 Feb 2023 17:02:26 +0800 Subject: [PATCH 72/92] refactor: jobs name --- .github/workflows/test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 800ed453..a89228c9 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -7,7 +7,7 @@ on: - completed jobs: - docker: + in-docker: runs-on: ubuntu-latest container: image: docker://${{ github.repository }}:sha-${{ github.sha }} @@ -22,7 +22,7 @@ jobs: - name: Test run: poetry run pytest tests/ - build: + in-os: runs-on: ${{ matrix.os }} strategy: fail-fast: false From c24c995407a5738de115b5db8f7428dbc966d682 Mon Sep 17 00:00:00 2001 From: taolin Date: Thu, 2 Feb 2023 17:02:41 +0800 Subject: [PATCH 73/92] fix: grant permissions --- .github/workflows/doc.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml index 78079e0f..4630e18e 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -5,6 +5,8 @@ on: [push, pull_request] jobs: build: runs-on: ubuntu-latest + permissions: + contents: write strategy: matrix: python-version: ["3.10"] From 50674b7569f10ad34ad14995a7d38483c5de05c2 Mon Sep 17 00:00:00 2001 From: taolin Date: Thu, 2 Feb 2023 17:02:57 +0800 Subject: [PATCH 74/92] build: evolve template --- .cruft.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cruft.json b/.cruft.json index 80096490..f4758f22 100644 --- a/.cruft.json +++ b/.cruft.json @@ -1,6 +1,6 @@ { "template": "https://github.com/tanlin2013/cookiecutter-python/", - "commit": "0fd2c8ea25f91f205e461c35dfb91ff799a113b8", + "commit": "383f655f51e6fe8af10bc438266a04b46b146413", "checkout": null, "context": { "cookiecutter": { From 7a7f3294362d7eea6ee0ab79a36897c2874385a0 Mon Sep 17 00:00:00 2001 From: taolin Date: Thu, 2 Feb 2023 17:02:57 +0800 Subject: [PATCH 75/92] build: evolve template --- .cruft.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cruft.json b/.cruft.json index f4758f22..f7f57fb7 100644 --- a/.cruft.json +++ b/.cruft.json @@ -1,6 +1,6 @@ { "template": "https://github.com/tanlin2013/cookiecutter-python/", - "commit": "383f655f51e6fe8af10bc438266a04b46b146413", + "commit": "f2e1e061b72a0d0af9dfc780aafa0d510cc41943", "checkout": null, "context": { "cookiecutter": { From 6d3850fae56d086f29332d86377752e3ad08da4b Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Mar 2023 17:27:11 +0800 Subject: [PATCH 76/92] build: mv flake8, coverage into pyproject.toml --- .coveragerc | 5 ----- .dockerignore | 2 -- .pre-commit-config.yaml | 1 + pyproject.toml | 13 +++++++++++++ setup.cfg | 5 ----- 5 files changed, 14 insertions(+), 12 deletions(-) delete mode 100644 .coveragerc delete mode 100644 setup.cfg diff --git a/.coveragerc b/.coveragerc deleted file mode 100644 index ae17d653..00000000 --- a/.coveragerc +++ /dev/null @@ -1,5 +0,0 @@ -[report] -exclude_lines = - pragma: no cover -omit = - *tests* diff --git a/.dockerignore b/.dockerignore index 54d16c69..5ec3f785 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,14 +1,12 @@ ### Custom field .github/ docs/ -.coveragerc .dockerignore .gitignore .pre-commit-config.yml CHANGELOG.md Dockerfile LICENSE -setup.cfg ### VisualStudioCode template .vscode/* diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a05d5481..7d256e78 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -23,6 +23,7 @@ repos: rev: 6.0.0 hooks: - id: flake8 + additional_dependencies: [Flake8-pyproject] - repo: https://github.com/python-poetry/poetry rev: 1.3.2 diff --git a/pyproject.toml b/pyproject.toml index cf4f564a..907ad5ff 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -69,9 +69,22 @@ line-length = 100 [tool.isort] profile = "black" +[tool.flake8] +count = true +max-line-length = 100 +ignore = [ + "E203", + "W503" +] + [tool.mypy] ignore_missing_imports = true strict_optional = false +plugins = ["numpy.typing.mypy_plugin"] + +[tool.coverage.report] +exclude_lines = ["pragma: no cover"] +omit = ["*tests*"] [tool.bandit] skips = ["B101"] diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index ebeeaf02..00000000 --- a/setup.cfg +++ /dev/null @@ -1,5 +0,0 @@ -[flake8] -max-line-length = 100 -extend-ignore = - E203, - W503 From 27421eabf2d48886774b01dc1e32b3285f86d74c Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Mar 2023 17:28:11 +0800 Subject: [PATCH 77/92] refactor: resort badges order --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index eb0f6b0c..8069b9cd 100644 --- a/README.md +++ b/README.md @@ -3,15 +3,15 @@ _________________ [![PyPI version](https://badge.fury.io/py/tnpy.svg)](http://badge.fury.io/py/tnpy) -[![Docker build](https://github.com/tanlin2013/tnpy/actions/workflows/build.yml/badge.svg)](https://github.com/tanlin2013/tnpy/actions/workflows/build.yml) -[![Test Status](https://github.com/tanlin2013/tnpy/actions/workflows/test.yml/badge.svg)](https://github.com/tanlin2013/tnpy/actions/workflows/test.yml) -[![Lint Status](https://github.com/tanlin2013/tnpy/actions/workflows/lint.yml/badge.svg)](https://github.com/tanlin2013/tnpy/actions/workflows/lint.yml) +[![Downloads](https://pepy.tech/badge/tnpy)](https://pepy.tech/project/tnpy) [![codecov](https://codecov.io/gh/tanlin2013/tnpy/branch/main/graph/badge.svg)](https://codecov.io/gh/tanlin2013/tnpy) [![Join the chat at https://gitter.im/tanlin2013/tnpy](https://badges.gitter.im/tanlin2013/tnpy.svg)](https://gitter.im/tanlin2013/tnpy?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) -[![License](https://img.shields.io/github/license/mashape/apistatus.svg)](https://pypi.python.org/pypi/tnpy/) -[![Downloads](https://pepy.tech/badge/tnpy)](https://pepy.tech/project/tnpy) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![Imports: isort](https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336)](https://timothycrosley.github.io/isort/) +[![License](https://img.shields.io/github/license/mashape/apistatus.svg)](https://pypi.python.org/pypi/tnpy/) +[![Docker build](https://github.com/tanlin2013/tnpy/actions/workflows/build.yml/badge.svg)](https://github.com/tanlin2013/tnpy/actions/workflows/build.yml) +[![Test Status](https://github.com/tanlin2013/tnpy/actions/workflows/test.yml/badge.svg)](https://github.com/tanlin2013/tnpy/actions/workflows/test.yml) +[![Lint Status](https://github.com/tanlin2013/tnpy/actions/workflows/lint.yml/badge.svg)](https://github.com/tanlin2013/tnpy/actions/workflows/lint.yml) _________________ [Documentation](https://tanlin2013.github.io/tnpy/) | From 0ddc56db46a23904d4c627c20cffc9763fef5feb Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Mar 2023 17:28:46 +0800 Subject: [PATCH 78/92] fix: bandit look for pyproject.toml --- scripts/lint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/lint.sh b/scripts/lint.sh index d8eedddf..af54a27b 100755 --- a/scripts/lint.sh +++ b/scripts/lint.sh @@ -3,7 +3,7 @@ set -euxo pipefail poetry run cruft check poetry run safety check -i 39462 -i 40291 -poetry run bandit -r tnpy/ +poetry run bandit -c pyproject.toml -r tnpy/ poetry run isort --check --diff tnpy/ tests/ poetry run black --check tnpy/ tests/ poetry run flake8 tnpy/ tests/ From 2130e3f7e3d379e845a6ae4de5f9c3678f45268b Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Mar 2023 17:29:49 +0800 Subject: [PATCH 79/92] build: update dev dependencies --- pyproject.toml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 907ad5ff..eb68dac1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,15 +38,16 @@ vulture = "^2.4" bandit = "^1.7.4" safety = "^2.3.4" isort = "^5.11.0" -flake8-bugbear = "^22.10.25" -black = "^22.12.0" -mypy = "^0.990" +flake8-bugbear = "^23.1.14" +Flake8-pyproject = "^1.2.2" +black = "^23.1.0" +mypy = "^1.0.0" ipython = "^8.5.0" pytest = "^7.1.2" pytest-cov = "^4.0.0" pytest-mock = "^3.9.0" pep8-naming = "^0.13.0" -cruft = "^2.11.0" +cruft = "^2.12.0" [tool.poetry.group.docs] optional = true @@ -57,7 +58,7 @@ sphinx-book-theme = "^0.3.2" nbsphinx = "^0.8.8" m2r2 = "^0.3.2" pandoc = "^2.3" -portray = "^1.3.0" +#portray = "^1.3.0" [build-system] requires = ["poetry-core>=1.0.0"] From 3482affdc28d848a33a643eb96563f1c6a09dd2a Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Mar 2023 17:31:09 +0800 Subject: [PATCH 80/92] docs: update header --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8069b9cd..b6320ea2 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# tnpy +# tnpy: Tensor Network algorithms implemented in python. _________________ From 078c532549bda5b29de6020d2e1be4ed519f27c7 Mon Sep 17 00:00:00 2001 From: taolin Date: Wed, 1 Mar 2023 17:31:25 +0800 Subject: [PATCH 81/92] build: evolve template --- .cruft.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cruft.json b/.cruft.json index f7f57fb7..6f145e5c 100644 --- a/.cruft.json +++ b/.cruft.json @@ -1,6 +1,6 @@ { "template": "https://github.com/tanlin2013/cookiecutter-python/", - "commit": "f2e1e061b72a0d0af9dfc780aafa0d510cc41943", + "commit": "e5b8e103da6de7df44600e33b4b4535bb285bb53", "checkout": null, "context": { "cookiecutter": { From 0d3922a18fe0fece9a2759f644060adf2a0e2ca2 Mon Sep 17 00:00:00 2001 From: taolin Date: Thu, 2 Mar 2023 16:04:53 +0800 Subject: [PATCH 82/92] refactor: explicitly raise error or nosec b101 --- tnpy/exact_diagonalization.py | 36 ++++++++++----------- tnpy/model/total_sz.py | 5 +-- tnpy/operators.py | 27 ++++++---------- tnpy/tsdrg.py | 59 +++++++++++------------------------ 4 files changed, 46 insertions(+), 81 deletions(-) diff --git a/tnpy/exact_diagonalization.py b/tnpy/exact_diagonalization.py index 71b82a7b..11b20368 100644 --- a/tnpy/exact_diagonalization.py +++ b/tnpy/exact_diagonalization.py @@ -1,10 +1,10 @@ from itertools import permutations -from typing import Tuple, Sequence, List, Dict +from typing import Dict, List, Sequence, Tuple import numpy as np from tnpy import logger -from tnpy.operators import MatrixProductOperator, FullHamiltonian +from tnpy.operators import FullHamiltonian, MatrixProductOperator class ExactDiagonalization(FullHamiltonian): @@ -77,13 +77,9 @@ def reduced_density_matrix(self, site: int, level_idx: int = 0) -> np.ndarray: """ if not 0 <= site < self.n_sites - 1: - raise ValueError( - "Parameter `site` for bi-partition has to be within the system size." - ) + raise ValueError("Parameter `site` for bi-partition has to be within the system size.") if not 0 <= level_idx < len(self.evals): - raise ValueError( - "Parameter `level_idx` has to be lower than truncation dimension." - ) + raise ValueError("Parameter `level_idx` has to be lower than truncation dimension.") to_shape = ( (self.phys_dim ** (site + 1), -1) if site < self.n_sites // 2 @@ -131,9 +127,7 @@ def kron_operators(operators: Sequence[np.ndarray]) -> np.ndarray: opt = np.kron(opt, next_opt) return opt - def one_point_function( - self, operator: np.ndarray, site: int, level_idx: int = 0 - ) -> float: + def one_point_function(self, operator: np.ndarray, site: int, level_idx: int = 0) -> float: r""" Compute the expectation value :math:`\langle \hat{O}_i \rangle` of given local operator :math:`\hat{O}_i` on site :math:`i`. @@ -146,7 +140,8 @@ def one_point_function( Returns: """ - assert operator.shape == (self.phys_dim, self.phys_dim) + if operator.shape != (self.phys_dim, self.phys_dim): + raise ValueError(f"Operator shape mismatched with physical dims {self.phys_dim}.") opt_mat = self.kron_operators( [ np.eye(self.phys_dim**site), @@ -181,9 +176,13 @@ def two_point_function( Returns: """ - assert operator1.shape == (self.phys_dim, self.phys_dim) - assert operator2.shape == (self.phys_dim, self.phys_dim) - assert site1 != site2 + if operator1.shape != (self.phys_dim, self.phys_dim) or operator2.shape != ( + self.phys_dim, + self.phys_dim, + ): + raise ValueError(f"Operator shape mismatched with physical dims {self.phys_dim}.") + if site1 == site2: + raise ValueError("Two sites must not be the same site.") site1, site2 = sorted((site1, site2)) # TODO: operators aren't sorted accordingly opt_mat = self.kron_operators( @@ -219,9 +218,7 @@ def connected_two_point_function( """ return self.two_point_function( operator1, operator2, site1, site2, level_idx - ) - self.one_point_function( - operator1, site1, level_idx - ) * self.one_point_function( + ) - self.one_point_function(operator1, site1, level_idx) * self.one_point_function( operator2, site2, level_idx ) @@ -273,7 +270,6 @@ def spin_zero_projector(self, n: int): set(list(permutations(f"{'u' * (n // 2)}{'d' * (n // 2)}", n))) ) zero_charge_basis = [ - self.kron_product(list(map(self._basis.get, elem))) - for elem in spin_zero_permutations + self.kron_product(list(map(self._basis.get, elem))) for elem in spin_zero_permutations ] return np.hstack(tuple(map(np.transpose, zero_charge_basis))) diff --git a/tnpy/model/total_sz.py b/tnpy/model/total_sz.py index eb9079f1..d72a6263 100644 --- a/tnpy/model/total_sz.py +++ b/tnpy/model/total_sz.py @@ -1,8 +1,8 @@ import numpy as np -from tnpy.operators import SpinOperators, MatrixProductOperator from tnpy.model.model_1d import Model1D from tnpy.model.utils import boundary_vectors +from tnpy.operators import MatrixProductOperator, SpinOperators class TotalSz(Model1D): @@ -45,7 +45,8 @@ def subsystem_mpo(self, partition_site: int) -> MatrixProductOperator: Phys. Rev. B 82, 012405 (2010). `_ """ - assert 0 <= partition_site < self.n + if not 0 <= partition_site < self.n: + raise ValueError("Partition site must be in between 0 and the system size n.") return MatrixProductOperator( [ self._elem(site) if site <= partition_site else self._rest_elem(site) diff --git a/tnpy/operators.py b/tnpy/operators.py index c22f3cfb..17ef4cbe 100644 --- a/tnpy/operators.py +++ b/tnpy/operators.py @@ -1,7 +1,7 @@ from __future__ import annotations +from dataclasses import InitVar, astuple, dataclass, field from itertools import groupby -from dataclasses import dataclass, InitVar, field, astuple import numpy as np import quimb.tensor as qtn @@ -73,12 +73,10 @@ def all_equal(iterable): g = groupby(iterable) return next(g, True) and not next(g, False) - assert all_equal( - [ - super(MatrixProductOperator, self).phys_dim(site) - for site in range(self.n_sites) - ] - ) + if not all_equal( + [super(MatrixProductOperator, self).phys_dim(site) for site in range(self.n_sites)] + ): + raise ValueError("All MPO tensors are assumed to have same physical dims.") @property def n_sites(self) -> int: @@ -96,12 +94,8 @@ def square(self) -> MatrixProductOperator: Returns: squared_mpo: """ - first_layer = self.reindex( - {f"b{site}": f"dummy{site}" for site in range(self.nsites)} - ) - second_layer = self.reindex( - {f"k{site}": f"dummy{site}" for site in range(self.nsites)} - ) + first_layer = self.reindex({f"b{site}": f"dummy{site}" for site in range(self.nsites)}) + second_layer = self.reindex({f"k{site}": f"dummy{site}" for site in range(self.nsites)}) second_layer.reindex( {ind: qtn.rand_uuid() for ind in second_layer.inner_inds()}, inplace=True ) @@ -119,9 +113,7 @@ def _fuse_bilayer(site: int) -> qtn.Tensor: } ) - return MatrixProductOperator( - [_fuse_bilayer(site).data for site in range(self.nsites)] - ) + return MatrixProductOperator([_fuse_bilayer(site).data for site in range(self.nsites)]) class FullHamiltonian: @@ -147,8 +139,7 @@ def __init__(self, mpo: MatrixProductOperator): if self.phys_dim**self.n_sites > 2**12: raise ResourceWarning( - f"Requesting more than {self.n_sites} sites " - f"with physical dim {self.phys_dim}." + f"Requesting more than {self.n_sites} sites " f"with physical dim {self.phys_dim}." ) self._matrix = ( diff --git a/tnpy/tsdrg.py b/tnpy/tsdrg.py index c04bd2e5..d322987e 100644 --- a/tnpy/tsdrg.py +++ b/tnpy/tsdrg.py @@ -4,11 +4,11 @@ from dataclasses import dataclass, field from functools import wraps from itertools import count, islice -from typing import Union, List, Dict, Iterator, Callable, Sequence, Tuple +from typing import Callable, Dict, Iterator, List, Sequence, Tuple, Union import numpy as np -import scipy.linalg as spl import quimb.tensor as qtn +import scipy.linalg as spl from graphviz import Digraph from tnpy import logger @@ -16,9 +16,7 @@ class Node(qtn.Tensor): - def __init__( - self, node_id: int, left: Node = None, right: Node = None, *args, **kwargs - ): + def __init__(self, node_id: int, left: Node = None, right: Node = None, *args, **kwargs): """ The node of binary tree, while data structure is inherited from :class:`quimb.Tensor`. @@ -88,9 +86,7 @@ def __init__(self, mpo: MatrixProductOperator): """ self._root_id: int | None = None self._tree = { - site: Node( - node_id=site, data=tensor.data, inds=tensor.inds, tags=tensor.tags - ) + site: Node(node_id=site, data=tensor.data, inds=tensor.inds, tags=tensor.tags) for site, tensor in enumerate(mpo) } self._n_leaves = mpo.nsites @@ -380,12 +376,10 @@ def common_ancestor( path1 = self.find_path(node_id1, return_itself=True) path2 = self.find_path(node_id2, return_itself=True) try: - first_unmatched = next( - idx for idx, (x, y) in enumerate(zip(path1, path2)) if x != y - ) + first_unmatched = next(idx for idx, (x, y) in enumerate(zip(path1, path2)) if x != y) common_path = path1[:first_unmatched] except StopIteration: - assert path1 == path2 + assert path1 == path2 # nosec: B101 common_path = path1[:-1] return common_path if not lowest else common_path[-1] @@ -425,9 +419,7 @@ def find_child(node: Node): graph = Digraph() graph.node("head", style="invis") graph.edge("head", f"{self.root.node_id}", headport="n", arrowhead="inv") - graph.node( - f"{self.root.node_id}", shape="triangle", rank="max", style="rounded" - ) + graph.node(f"{self.root.node_id}", shape="triangle", rank="max", style="rounded") find_child(self.root) # for constraining mpo inside an invisible box with graph.subgraph(name="cluster_0") as sg: @@ -699,7 +691,7 @@ def run(self): if len(self._fused_mpo_cache) == 1: logger.info("Reaching the root in tree.") logger.info(f"Obtain ground state energies, {repr(self.evals)}.") - assert step == self.n_sites - 1, "step is out of range." + assert step == self.n_sites - 1, "step is out of range." # nosec: B101 break self._gap_cache.update(max_gapped_bond) @@ -785,9 +777,7 @@ def sandwich(self, mpo: MatrixProductOperator = None) -> qtn.Tensor: ) return self.loop_simplify(bra, ket, mpo) - def expectation_value( - self, mpo: MatrixProductOperator, tol: float = 1e-12 - ) -> np.ndarray: + def expectation_value(self, mpo: MatrixProductOperator, tol: float = 1e-12) -> np.ndarray: """ Compute the expectation value for given ``mpo``. @@ -823,9 +813,7 @@ def _min_surface(self, bipartite_site: int) -> Tuple[int, Dict, Dict]: ``ket_inds_map`` and ``bra_inds_map`` are each a dictionary of indices that maps the original indices of LCA nodes into the physical bonds. """ - min_side = ( - 0 if (bipartite_site + 1) / (self.tree.n_leaves - bipartite_site) < 1 else 1 - ) + min_side = 0 if (bipartite_site + 1) / (self.tree.n_leaves - bipartite_site) < 1 else 1 iterator = ( range(bipartite_site + 1) if min_side == 0 @@ -852,13 +840,9 @@ def reduced_density_matrix(self, site: int, level_idx: int) -> np.ndarray: """ if not 0 <= site < self.tree.n_leaves - 1: - raise ValueError( - "Parameter `site` for bi-partition has to be within the system size." - ) + raise ValueError("Parameter `site` for bi-partition has to be within the system size.") if not 0 <= level_idx < self.tree.root.shape[2]: - raise ValueError( - "Parameter `level_idx` has to be lower than truncation dimension." - ) + raise ValueError("Parameter `level_idx` has to be lower than truncation dimension.") min_side, on_min_ket_surface, on_min_bra_surface = self._min_surface(site) to_site = site + 1 if min_side == 0 else site node_ids = self.tree.find_path(to_site) @@ -890,13 +874,9 @@ def reduced_density_matrix(self, site: int, level_idx: int) -> np.ndarray: ) ] ) - return net.to_dense( - [*on_min_ket_surface.values()], [*on_min_bra_surface.values()] - ) + return net.to_dense([*on_min_ket_surface.values()], [*on_min_bra_surface.values()]) - def entanglement_entropy( - self, site: int, level_idx: int, nan_to_num: bool = False - ) -> float: + def entanglement_entropy(self, site: int, level_idx: int, nan_to_num: bool = False) -> float: """ Compute the von Neumann entropy on the cutting ``site``. @@ -912,9 +892,7 @@ def entanglement_entropy( entropy = -1 * rho @ np.log(rho) return np.nan_to_num(entropy) if nan_to_num else entropy - def one_point_function( - self, operator: np.ndarray, site: int, level_idx: int - ) -> float: + def one_point_function(self, operator: np.ndarray, site: int, level_idx: int) -> float: r""" Compute the expectation value :math:`\langle \hat{O}_i \rangle` of given local operator :math:`\hat{O}_i` on site :math:`i`. @@ -973,7 +951,8 @@ def two_point_function( Returns: """ - assert site1 != site2 + if site1 == site2: + raise ValueError("Two sites must not be the same site.") site1, site2 = sorted((site1, site2)) # TODO: operators aren't sorted accordingly node_ids = list(set(self.tree.find_path(site1) + self.tree.find_path(site2))) @@ -1020,9 +999,7 @@ def connected_two_point_function( """ return self.two_point_function( operator1, operator2, site1, site2, level_idx - ) - self.one_point_function( - operator1, site1, level_idx - ) * self.one_point_function( + ) - self.one_point_function(operator1, site1, level_idx) * self.one_point_function( operator2, site2, level_idx ) From 2d0b3bdc8063aca332cc26608b537ac56a285e40 Mon Sep 17 00:00:00 2001 From: taolin Date: Thu, 2 Mar 2023 16:07:00 +0800 Subject: [PATCH 83/92] build: update lock file --- poetry.lock | 879 ++++++++++++++++++---------------------------------- 1 file changed, 293 insertions(+), 586 deletions(-) diff --git a/poetry.lock b/poetry.lock index 2fcf4c04..dd0059ee 100644 --- a/poetry.lock +++ b/poetry.lock @@ -108,19 +108,16 @@ tests = ["coverage", "numpy", "pytest", "pytest-cov"] [[package]] name = "babel" -version = "2.11.0" +version = "2.12.1" description = "Internationalization utilities" category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "Babel-2.11.0-py3-none-any.whl", hash = "sha256:1ad3eca1c885218f6dce2ab67291178944f810a10a9b5f3cb8382a5a232b64fe"}, - {file = "Babel-2.11.0.tar.gz", hash = "sha256:5ef4b3226b0180dedded4229651c8b0e1a3a6a2837d45a073272f313e4cf97f6"}, + {file = "Babel-2.12.1-py3-none-any.whl", hash = "sha256:b4246fb7677d3b98f501a39d43396d3cafdc8eadb045f4a31be01863f655c610"}, + {file = "Babel-2.12.1.tar.gz", hash = "sha256:cc2d99999cd01d44420ae725a21c9e3711b3aadc7976d6147f622d8581963455"}, ] -[package.dependencies] -pytz = ">=2015.7" - [[package]] name = "backcall" version = "0.2.0" @@ -192,32 +189,46 @@ chardet = ">=3.0.2" [[package]] name = "black" -version = "22.12.0" +version = "23.1.0" description = "The uncompromising code formatter." category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "black-22.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eedd20838bd5d75b80c9f5487dbcb06836a43833a37846cf1d8c1cc01cef59d"}, - {file = "black-22.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:159a46a4947f73387b4d83e87ea006dbb2337eab6c879620a3ba52699b1f4351"}, - {file = "black-22.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d30b212bffeb1e252b31dd269dfae69dd17e06d92b87ad26e23890f3efea366f"}, - {file = "black-22.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:7412e75863aa5c5411886804678b7d083c7c28421210180d67dfd8cf1221e1f4"}, - {file = "black-22.12.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c116eed0efb9ff870ded8b62fe9f28dd61ef6e9ddd28d83d7d264a38417dcee2"}, - {file = "black-22.12.0-cp37-cp37m-win_amd64.whl", hash = "sha256:1f58cbe16dfe8c12b7434e50ff889fa479072096d79f0a7f25e4ab8e94cd8350"}, - {file = "black-22.12.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77d86c9f3db9b1bf6761244bc0b3572a546f5fe37917a044e02f3166d5aafa7d"}, - {file = "black-22.12.0-cp38-cp38-win_amd64.whl", hash = "sha256:82d9fe8fee3401e02e79767016b4907820a7dc28d70d137eb397b92ef3cc5bfc"}, - {file = "black-22.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:101c69b23df9b44247bd88e1d7e90154336ac4992502d4197bdac35dd7ee3320"}, - {file = "black-22.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:559c7a1ba9a006226f09e4916060982fd27334ae1998e7a38b3f33a37f7a2148"}, - {file = "black-22.12.0-py3-none-any.whl", hash = "sha256:436cc9167dd28040ad90d3b404aec22cedf24a6e4d7de221bec2730ec0c97bcf"}, - {file = "black-22.12.0.tar.gz", hash = "sha256:229351e5a18ca30f447bf724d007f890f97e13af070bb6ad4c0a441cd7596a2f"}, + {file = "black-23.1.0-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:b6a92a41ee34b883b359998f0c8e6eb8e99803aa8bf3123bf2b2e6fec505a221"}, + {file = "black-23.1.0-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:57c18c5165c1dbe291d5306e53fb3988122890e57bd9b3dcb75f967f13411a26"}, + {file = "black-23.1.0-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:9880d7d419bb7e709b37e28deb5e68a49227713b623c72b2b931028ea65f619b"}, + {file = "black-23.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e6663f91b6feca5d06f2ccd49a10f254f9298cc1f7f49c46e498a0771b507104"}, + {file = "black-23.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:9afd3f493666a0cd8f8df9a0200c6359ac53940cbde049dcb1a7eb6ee2dd7074"}, + {file = "black-23.1.0-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:bfffba28dc52a58f04492181392ee380e95262af14ee01d4bc7bb1b1c6ca8d27"}, + {file = "black-23.1.0-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:c1c476bc7b7d021321e7d93dc2cbd78ce103b84d5a4cf97ed535fbc0d6660648"}, + {file = "black-23.1.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:382998821f58e5c8238d3166c492139573325287820963d2f7de4d518bd76958"}, + {file = "black-23.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bf649fda611c8550ca9d7592b69f0637218c2369b7744694c5e4902873b2f3a"}, + {file = "black-23.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:121ca7f10b4a01fd99951234abdbd97728e1240be89fde18480ffac16503d481"}, + {file = "black-23.1.0-cp37-cp37m-macosx_10_16_x86_64.whl", hash = "sha256:a8471939da5e824b891b25751955be52ee7f8a30a916d570a5ba8e0f2eb2ecad"}, + {file = "black-23.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8178318cb74f98bc571eef19068f6ab5613b3e59d4f47771582f04e175570ed8"}, + {file = "black-23.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:a436e7881d33acaf2536c46a454bb964a50eff59b21b51c6ccf5a40601fbef24"}, + {file = "black-23.1.0-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:a59db0a2094d2259c554676403fa2fac3473ccf1354c1c63eccf7ae65aac8ab6"}, + {file = "black-23.1.0-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:0052dba51dec07ed029ed61b18183942043e00008ec65d5028814afaab9a22fd"}, + {file = "black-23.1.0-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:49f7b39e30f326a34b5c9a4213213a6b221d7ae9d58ec70df1c4a307cf2a1580"}, + {file = "black-23.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:162e37d49e93bd6eb6f1afc3e17a3d23a823042530c37c3c42eeeaf026f38468"}, + {file = "black-23.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:8b70eb40a78dfac24842458476135f9b99ab952dd3f2dab738c1881a9b38b753"}, + {file = "black-23.1.0-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:a29650759a6a0944e7cca036674655c2f0f63806ddecc45ed40b7b8aa314b651"}, + {file = "black-23.1.0-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:bb460c8561c8c1bec7824ecbc3ce085eb50005883a6203dcfb0122e95797ee06"}, + {file = "black-23.1.0-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:c91dfc2c2a4e50df0026f88d2215e166616e0c80e86004d0003ece0488db2739"}, + {file = "black-23.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a951cc83ab535d248c89f300eccbd625e80ab880fbcfb5ac8afb5f01a258ac9"}, + {file = "black-23.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:0680d4380db3719ebcfb2613f34e86c8e6d15ffeabcf8ec59355c5e7b85bb555"}, + {file = "black-23.1.0-py3-none-any.whl", hash = "sha256:7a0f701d314cfa0896b9001df70a530eb2472babb76086344e688829efd97d32"}, + {file = "black-23.1.0.tar.gz", hash = "sha256:b0bd97bea8903f5a2ba7219257a44e3f1f9d00073d6cc1add68f0beec69692ac"}, ] [package.dependencies] click = ">=8.0.0" mypy-extensions = ">=0.4.3" +packaging = ">=22.0" pathspec = ">=0.9.0" platformdirs = ">=2" -tomli = {version = ">=1.1.0", markers = "python_full_version < \"3.11.0a7\""} +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""} [package.extras] @@ -402,14 +413,14 @@ files = [ [[package]] name = "commitizen" -version = "2.40.0" +version = "2.42.1" description = "Python commitizen client tool" category = "dev" optional = false python-versions = ">=3.6.2,<4.0.0" files = [ - {file = "commitizen-2.40.0-py3-none-any.whl", hash = "sha256:44b589869529c297d4ef594bb7560388d3367b3ae8af36b0664d2f51a28e8f87"}, - {file = "commitizen-2.40.0.tar.gz", hash = "sha256:8f1a09589ffb87bb17df17261423e88299bd63432dbfc4e6fc6657fea23dddc0"}, + {file = "commitizen-2.42.1-py3-none-any.whl", hash = "sha256:fad7d37cfae361a859b713d4ac591859d5ca03137dd52de4e1bd208f7f45d5dc"}, + {file = "commitizen-2.42.1.tar.gz", hash = "sha256:eac18c7c65587061aac6829534907aeb208405b8230bfd35ec08503c228a7f17"}, ] [package.dependencies] @@ -523,63 +534,63 @@ requests = ">=2.23.0" [[package]] name = "coverage" -version = "7.1.0" +version = "7.2.1" description = "Code coverage measurement for Python" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "coverage-7.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3b946bbcd5a8231383450b195cfb58cb01cbe7f8949f5758566b881df4b33baf"}, - {file = "coverage-7.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ec8e767f13be637d056f7e07e61d089e555f719b387a7070154ad80a0ff31801"}, - {file = "coverage-7.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4a5a5879a939cb84959d86869132b00176197ca561c664fc21478c1eee60d75"}, - {file = "coverage-7.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b643cb30821e7570c0aaf54feaf0bfb630b79059f85741843e9dc23f33aaca2c"}, - {file = "coverage-7.1.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32df215215f3af2c1617a55dbdfb403b772d463d54d219985ac7cd3bf124cada"}, - {file = "coverage-7.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:33d1ae9d4079e05ac4cc1ef9e20c648f5afabf1a92adfaf2ccf509c50b85717f"}, - {file = "coverage-7.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:29571503c37f2ef2138a306d23e7270687c0efb9cab4bd8038d609b5c2393a3a"}, - {file = "coverage-7.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:63ffd21aa133ff48c4dff7adcc46b7ec8b565491bfc371212122dd999812ea1c"}, - {file = "coverage-7.1.0-cp310-cp310-win32.whl", hash = "sha256:4b14d5e09c656de5038a3f9bfe5228f53439282abcab87317c9f7f1acb280352"}, - {file = "coverage-7.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:8361be1c2c073919500b6601220a6f2f98ea0b6d2fec5014c1d9cfa23dd07038"}, - {file = "coverage-7.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:da9b41d4539eefd408c46725fb76ecba3a50a3367cafb7dea5f250d0653c1040"}, - {file = "coverage-7.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c5b15ed7644ae4bee0ecf74fee95808dcc34ba6ace87e8dfbf5cb0dc20eab45a"}, - {file = "coverage-7.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d12d076582507ea460ea2a89a8c85cb558f83406c8a41dd641d7be9a32e1274f"}, - {file = "coverage-7.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e2617759031dae1bf183c16cef8fcfb3de7617f394c813fa5e8e46e9b82d4222"}, - {file = "coverage-7.1.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4e4881fa9e9667afcc742f0c244d9364d197490fbc91d12ac3b5de0bf2df146"}, - {file = "coverage-7.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9d58885215094ab4a86a6aef044e42994a2bd76a446dc59b352622655ba6621b"}, - {file = "coverage-7.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:ffeeb38ee4a80a30a6877c5c4c359e5498eec095878f1581453202bfacc8fbc2"}, - {file = "coverage-7.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3baf5f126f30781b5e93dbefcc8271cb2491647f8283f20ac54d12161dff080e"}, - {file = "coverage-7.1.0-cp311-cp311-win32.whl", hash = "sha256:ded59300d6330be27bc6cf0b74b89ada58069ced87c48eaf9344e5e84b0072f7"}, - {file = "coverage-7.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:6a43c7823cd7427b4ed763aa7fb63901ca8288591323b58c9cd6ec31ad910f3c"}, - {file = "coverage-7.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7a726d742816cb3a8973c8c9a97539c734b3a309345236cd533c4883dda05b8d"}, - {file = "coverage-7.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc7c85a150501286f8b56bd8ed3aa4093f4b88fb68c0843d21ff9656f0009d6a"}, - {file = "coverage-7.1.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f5b4198d85a3755d27e64c52f8c95d6333119e49fd001ae5798dac872c95e0f8"}, - {file = "coverage-7.1.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ddb726cb861c3117a553f940372a495fe1078249ff5f8a5478c0576c7be12050"}, - {file = "coverage-7.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:51b236e764840a6df0661b67e50697aaa0e7d4124ca95e5058fa3d7cbc240b7c"}, - {file = "coverage-7.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:7ee5c9bb51695f80878faaa5598040dd6c9e172ddcf490382e8aedb8ec3fec8d"}, - {file = "coverage-7.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:c31b75ae466c053a98bf26843563b3b3517b8f37da4d47b1c582fdc703112bc3"}, - {file = "coverage-7.1.0-cp37-cp37m-win32.whl", hash = "sha256:3b155caf3760408d1cb903b21e6a97ad4e2bdad43cbc265e3ce0afb8e0057e73"}, - {file = "coverage-7.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:2a60d6513781e87047c3e630b33b4d1e89f39836dac6e069ffee28c4786715f5"}, - {file = "coverage-7.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f2cba5c6db29ce991029b5e4ac51eb36774458f0a3b8d3137241b32d1bb91f06"}, - {file = "coverage-7.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:beeb129cacea34490ffd4d6153af70509aa3cda20fdda2ea1a2be870dfec8d52"}, - {file = "coverage-7.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0c45948f613d5d18c9ec5eaa203ce06a653334cf1bd47c783a12d0dd4fd9c851"}, - {file = "coverage-7.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef382417db92ba23dfb5864a3fc9be27ea4894e86620d342a116b243ade5d35d"}, - {file = "coverage-7.1.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c7c0d0827e853315c9bbd43c1162c006dd808dbbe297db7ae66cd17b07830f0"}, - {file = "coverage-7.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e5cdbb5cafcedea04924568d990e20ce7f1945a1dd54b560f879ee2d57226912"}, - {file = "coverage-7.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:9817733f0d3ea91bea80de0f79ef971ae94f81ca52f9b66500c6a2fea8e4b4f8"}, - {file = "coverage-7.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:218fe982371ac7387304153ecd51205f14e9d731b34fb0568181abaf7b443ba0"}, - {file = "coverage-7.1.0-cp38-cp38-win32.whl", hash = "sha256:04481245ef966fbd24ae9b9e537ce899ae584d521dfbe78f89cad003c38ca2ab"}, - {file = "coverage-7.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:8ae125d1134bf236acba8b83e74c603d1b30e207266121e76484562bc816344c"}, - {file = "coverage-7.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2bf1d5f2084c3932b56b962a683074a3692bce7cabd3aa023c987a2a8e7612f6"}, - {file = "coverage-7.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:98b85dd86514d889a2e3dd22ab3c18c9d0019e696478391d86708b805f4ea0fa"}, - {file = "coverage-7.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38da2db80cc505a611938d8624801158e409928b136c8916cd2e203970dde4dc"}, - {file = "coverage-7.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3164d31078fa9efe406e198aecd2a02d32a62fecbdef74f76dad6a46c7e48311"}, - {file = "coverage-7.1.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db61a79c07331e88b9a9974815c075fbd812bc9dbc4dc44b366b5368a2936063"}, - {file = "coverage-7.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9ccb092c9ede70b2517a57382a601619d20981f56f440eae7e4d7eaafd1d1d09"}, - {file = "coverage-7.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:33ff26d0f6cc3ca8de13d14fde1ff8efe1456b53e3f0273e63cc8b3c84a063d8"}, - {file = "coverage-7.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d47dd659a4ee952e90dc56c97d78132573dc5c7b09d61b416a9deef4ebe01a0c"}, - {file = "coverage-7.1.0-cp39-cp39-win32.whl", hash = "sha256:d248cd4a92065a4d4543b8331660121b31c4148dd00a691bfb7a5cdc7483cfa4"}, - {file = "coverage-7.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:7ed681b0f8e8bcbbffa58ba26fcf5dbc8f79e7997595bf071ed5430d8c08d6f3"}, - {file = "coverage-7.1.0-pp37.pp38.pp39-none-any.whl", hash = "sha256:755e89e32376c850f826c425ece2c35a4fc266c081490eb0a841e7c1cb0d3bda"}, - {file = "coverage-7.1.0.tar.gz", hash = "sha256:10188fe543560ec4874f974b5305cd1a8bdcfa885ee00ea3a03733464c4ca265"}, + {file = "coverage-7.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:49567ec91fc5e0b15356da07a2feabb421d62f52a9fff4b1ec40e9e19772f5f8"}, + {file = "coverage-7.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d2ef6cae70168815ed91388948b5f4fcc69681480a0061114db737f957719f03"}, + {file = "coverage-7.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3004765bca3acd9e015794e5c2f0c9a05587f5e698127ff95e9cfba0d3f29339"}, + {file = "coverage-7.2.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cca7c0b7f5881dfe0291ef09ba7bb1582cb92ab0aeffd8afb00c700bf692415a"}, + {file = "coverage-7.2.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2167d116309f564af56f9aa5e75ef710ef871c5f9b313a83050035097b56820"}, + {file = "coverage-7.2.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:cb5f152fb14857cbe7f3e8c9a5d98979c4c66319a33cad6e617f0067c9accdc4"}, + {file = "coverage-7.2.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:87dc37f16fb5e3a28429e094145bf7c1753e32bb50f662722e378c5851f7fdc6"}, + {file = "coverage-7.2.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e191a63a05851f8bce77bc875e75457f9b01d42843f8bd7feed2fc26bbe60833"}, + {file = "coverage-7.2.1-cp310-cp310-win32.whl", hash = "sha256:e3ea04b23b114572b98a88c85379e9e9ae031272ba1fb9b532aa934c621626d4"}, + {file = "coverage-7.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:0cf557827be7eca1c38a2480484d706693e7bb1929e129785fe59ec155a59de6"}, + {file = "coverage-7.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:570c21a29493b350f591a4b04c158ce1601e8d18bdcd21db136fbb135d75efa6"}, + {file = "coverage-7.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9e872b082b32065ac2834149dc0adc2a2e6d8203080501e1e3c3c77851b466f9"}, + {file = "coverage-7.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fac6343bae03b176e9b58104a9810df3cdccd5cfed19f99adfa807ffbf43cf9b"}, + {file = "coverage-7.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abacd0a738e71b20e224861bc87e819ef46fedba2fb01bc1af83dfd122e9c319"}, + {file = "coverage-7.2.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9256d4c60c4bbfec92721b51579c50f9e5062c21c12bec56b55292464873508"}, + {file = "coverage-7.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:80559eaf6c15ce3da10edb7977a1548b393db36cbc6cf417633eca05d84dd1ed"}, + {file = "coverage-7.2.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:0bd7e628f6c3ec4e7d2d24ec0e50aae4e5ae95ea644e849d92ae4805650b4c4e"}, + {file = "coverage-7.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:09643fb0df8e29f7417adc3f40aaf379d071ee8f0350ab290517c7004f05360b"}, + {file = "coverage-7.2.1-cp311-cp311-win32.whl", hash = "sha256:1b7fb13850ecb29b62a447ac3516c777b0e7a09ecb0f4bb6718a8654c87dfc80"}, + {file = "coverage-7.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:617a94ada56bbfe547aa8d1b1a2b8299e2ec1ba14aac1d4b26a9f7d6158e1273"}, + {file = "coverage-7.2.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8649371570551d2fd7dee22cfbf0b61f1747cdfb2b7587bb551e4beaaa44cb97"}, + {file = "coverage-7.2.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d2b9b5e70a21474c105a133ba227c61bc95f2ac3b66861143ce39a5ea4b3f84"}, + {file = "coverage-7.2.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae82c988954722fa07ec5045c57b6d55bc1a0890defb57cf4a712ced65b26ddd"}, + {file = "coverage-7.2.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:861cc85dfbf55a7a768443d90a07e0ac5207704a9f97a8eb753292a7fcbdfcfc"}, + {file = "coverage-7.2.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:0339dc3237c0d31c3b574f19c57985fcbe494280153bbcad33f2cdf469f4ac3e"}, + {file = "coverage-7.2.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:5928b85416a388dd557ddc006425b0c37e8468bd1c3dc118c1a3de42f59e2a54"}, + {file = "coverage-7.2.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8d3843ca645f62c426c3d272902b9de90558e9886f15ddf5efe757b12dd376f5"}, + {file = "coverage-7.2.1-cp37-cp37m-win32.whl", hash = "sha256:6a034480e9ebd4e83d1aa0453fd78986414b5d237aea89a8fdc35d330aa13bae"}, + {file = "coverage-7.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:6fce673f79a0e017a4dc35e18dc7bb90bf6d307c67a11ad5e61ca8d42b87cbff"}, + {file = "coverage-7.2.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7f099da6958ddfa2ed84bddea7515cb248583292e16bb9231d151cd528eab657"}, + {file = "coverage-7.2.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:97a3189e019d27e914ecf5c5247ea9f13261d22c3bb0cfcfd2a9b179bb36f8b1"}, + {file = "coverage-7.2.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a81dbcf6c6c877986083d00b834ac1e84b375220207a059ad45d12f6e518a4e3"}, + {file = "coverage-7.2.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:78d2c3dde4c0b9be4b02067185136b7ee4681978228ad5ec1278fa74f5ca3e99"}, + {file = "coverage-7.2.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a209d512d157379cc9ab697cbdbb4cfd18daa3e7eebaa84c3d20b6af0037384"}, + {file = "coverage-7.2.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f3d07edb912a978915576a776756069dede66d012baa503022d3a0adba1b6afa"}, + {file = "coverage-7.2.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8dca3c1706670297851bca1acff9618455122246bdae623be31eca744ade05ec"}, + {file = "coverage-7.2.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b1991a6d64231a3e5bbe3099fb0dd7c9aeaa4275ad0e0aeff4cb9ef885c62ba2"}, + {file = "coverage-7.2.1-cp38-cp38-win32.whl", hash = "sha256:22c308bc508372576ffa3d2dbc4824bb70d28eeb4fcd79d4d1aed663a06630d0"}, + {file = "coverage-7.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:b0c0d46de5dd97f6c2d1b560bf0fcf0215658097b604f1840365296302a9d1fb"}, + {file = "coverage-7.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4dd34a935de268a133e4741827ae951283a28c0125ddcdbcbba41c4b98f2dfef"}, + {file = "coverage-7.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0f8318ed0f3c376cfad8d3520f496946977abde080439d6689d7799791457454"}, + {file = "coverage-7.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:834c2172edff5a08d78e2f53cf5e7164aacabeb66b369f76e7bb367ca4e2d993"}, + {file = "coverage-7.2.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e4d70c853f0546855f027890b77854508bdb4d6a81242a9d804482e667fff6e6"}, + {file = "coverage-7.2.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a6450da4c7afc4534305b2b7d8650131e130610cea448ff240b6ab73d7eab63"}, + {file = "coverage-7.2.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:99f4dd81b2bb8fc67c3da68b1f5ee1650aca06faa585cbc6818dbf67893c6d58"}, + {file = "coverage-7.2.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bdd3f2f285ddcf2e75174248b2406189261a79e7fedee2ceeadc76219b6faa0e"}, + {file = "coverage-7.2.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:f29351393eb05e6326f044a7b45ed8e38cb4dcc38570d12791f271399dc41431"}, + {file = "coverage-7.2.1-cp39-cp39-win32.whl", hash = "sha256:e2b50ebc2b6121edf352336d503357321b9d8738bb7a72d06fc56153fd3f4cd8"}, + {file = "coverage-7.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:bd5a12239c0006252244f94863f1c518ac256160cd316ea5c47fb1a11b25889a"}, + {file = "coverage-7.2.1-pp37.pp38.pp39-none-any.whl", hash = "sha256:436313d129db7cf5b4ac355dd2bd3f7c7e5294af077b090b85de75f8458b8616"}, + {file = "coverage-7.2.1.tar.gz", hash = "sha256:c77f2a9093ccf329dd523a9b2b3c854c20d2a3d968b6def3b820272ca6732242"}, ] [package.dependencies] @@ -783,18 +794,6 @@ files = [ {file = "distlib-0.3.6.tar.gz", hash = "sha256:14bad2d9b04d3a36127ac97f30b12a19268f211063d8f8ee4f47108896e11b46"}, ] -[[package]] -name = "docstring-parser" -version = "0.15" -description = "Parse Python docstrings in reST, Google and Numpydoc format" -category = "dev" -optional = false -python-versions = ">=3.6,<4.0" -files = [ - {file = "docstring_parser-0.15-py3-none-any.whl", hash = "sha256:d1679b86250d269d06a99670924d6bce45adc00b08069dae8c47d98e89b667a9"}, - {file = "docstring_parser-0.15.tar.gz", hash = "sha256:48ddc093e8b1865899956fcc03b03e66bb7240c310fac5af81814580c55bf682"}, -] - [[package]] name = "docutils" version = "0.17.1" @@ -869,40 +868,16 @@ files = [ [package.extras] tests = ["asttokens", "littleutils", "pytest", "rich"] -[[package]] -name = "falcon" -version = "2.0.0" -description = "An unladen web framework for building APIs and app backends." -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "falcon-2.0.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:733033ec80c896e30a43ab3e776856096836787197a44eb21022320a61311983"}, - {file = "falcon-2.0.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:f93351459f110b4c1ee28556aef9a791832df6f910bea7b3f616109d534df06b"}, - {file = "falcon-2.0.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:e9efa0791b5d9f9dd9689015ea6bce0a27fcd5ecbcd30e6d940bffa4f7f03389"}, - {file = "falcon-2.0.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:59d1e8c993b9a37ea06df9d72cf907a46cc8063b30717cdac2f34d1658b6f936"}, - {file = "falcon-2.0.0-cp34-cp34m-manylinux1_i686.whl", hash = "sha256:a5ebb22a04c9cc65081938ee7651b4e3b4d2a28522ea8ec04c7bdd2b3e9e8cd8"}, - {file = "falcon-2.0.0-cp34-cp34m-manylinux1_x86_64.whl", hash = "sha256:95bf6ce986c1119aef12c9b348f4dee9c6dcc58391bdd0bc2b0bf353c2b15986"}, - {file = "falcon-2.0.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:aa184895d1ad4573fbfaaf803563d02f019ebdf4790e41cc568a330607eae439"}, - {file = "falcon-2.0.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:74cf1d18207381c665b9e6292d65100ce146d958707793174b03869dc6e614f4"}, - {file = "falcon-2.0.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:24adcd2b29a8ffa9d552dc79638cd21736a3fb04eda7d102c6cebafdaadb88ad"}, - {file = "falcon-2.0.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:18157af2a4fc3feedf2b5dcc6196f448639acf01c68bc33d4d5a04c3ef87f494"}, - {file = "falcon-2.0.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:e3782b7b92fefd46a6ad1fd8fe63fe6c6f1b7740a95ca56957f48d1aee34b357"}, - {file = "falcon-2.0.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:9712975adcf8c6e12876239085ad757b8fdeba223d46d23daef82b47658f83a9"}, - {file = "falcon-2.0.0-py2.py3-none-any.whl", hash = "sha256:54f2cb4b687035b2a03206dbfc538055cc48b59a953187b0458aa1b574d47b53"}, - {file = "falcon-2.0.0.tar.gz", hash = "sha256:eea593cf466b9c126ce667f6d30503624ef24459f118c75594a69353b6c3d5fc"}, -] - [[package]] name = "fastjsonschema" -version = "2.16.2" +version = "2.16.3" description = "Fastest Python implementation of JSON schema" category = "dev" optional = false python-versions = "*" files = [ - {file = "fastjsonschema-2.16.2-py3-none-any.whl", hash = "sha256:21f918e8d9a1a4ba9c22e09574ba72267a6762d47822db9add95f6454e51cc1c"}, - {file = "fastjsonschema-2.16.2.tar.gz", hash = "sha256:01e366f25d9047816fe3d288cbfc3e10541daf0af2044763f3d0ade42476da18"}, + {file = "fastjsonschema-2.16.3-py3-none-any.whl", hash = "sha256:04fbecc94300436f628517b05741b7ea009506ce8f946d40996567c669318490"}, + {file = "fastjsonschema-2.16.3.tar.gz", hash = "sha256:4a30d6315a68c253cfa8f963b9697246315aa3db89f98b97235e345dedfb0b8e"}, ] [package.extras] @@ -943,14 +918,14 @@ pyflakes = ">=3.0.0,<3.1.0" [[package]] name = "flake8-bugbear" -version = "22.12.6" +version = "23.2.13" description = "A plugin for flake8 finding likely bugs and design problems in your program. Contains warnings that don't belong in pyflakes and pycodestyle." category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "flake8-bugbear-22.12.6.tar.gz", hash = "sha256:4cdb2c06e229971104443ae293e75e64c6107798229202fbe4f4091427a30ac0"}, - {file = "flake8_bugbear-22.12.6-py3-none-any.whl", hash = "sha256:b69a510634f8a9c298dfda2b18a8036455e6b19ecac4fe582e4d7a0abfa50a30"}, + {file = "flake8-bugbear-23.2.13.tar.gz", hash = "sha256:39259814a83f33c8409417ee12dd4050c9c0bb4c8707c12fc18ae62b2f3ddee1"}, + {file = "flake8_bugbear-23.2.13-py3-none-any.whl", hash = "sha256:f136bd0ca2684f101168bba2310dec541e11aa6b252260c17dcf58d18069a740"}, ] [package.dependencies] @@ -958,7 +933,25 @@ attrs = ">=19.2.0" flake8 = ">=3.0.0" [package.extras] -dev = ["coverage", "hypothesis", "hypothesmith (>=0.2)", "pre-commit", "tox"] +dev = ["coverage", "hypothesis", "hypothesmith (>=0.2)", "pre-commit", "pytest", "tox"] + +[[package]] +name = "flake8-pyproject" +version = "1.2.2" +description = "Flake8 plug-in loading the configuration from pyproject.toml" +category = "dev" +optional = false +python-versions = ">= 3.6" +files = [ + {file = "flake8_pyproject-1.2.2-py3-none-any.whl", hash = "sha256:52d412219e7db6227faa654675b1435947b11d49b453f3eced760f19bdd6f06a"}, +] + +[package.dependencies] +Flake8 = ">=5" +TOMLi = {version = "*", markers = "python_version < \"3.11\""} + +[package.extras] +dev = ["pyTest", "pyTest-cov"] [[package]] name = "fonttools" @@ -997,24 +990,6 @@ files = [ {file = "future-0.18.3.tar.gz", hash = "sha256:34a17436ed1e96697a86f9de3d15a3b0be01d8bc8de9c1dffd59fb8234ed5307"}, ] -[[package]] -name = "ghp-import" -version = "2.1.0" -description = "Copy your docs directly to the gh-pages branch." -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"}, - {file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619"}, -] - -[package.dependencies] -python-dateutil = ">=2.8.1" - -[package.extras] -dev = ["flake8", "markdown", "twine", "wheel"] - [[package]] name = "gitdb" version = "4.0.10" @@ -1032,14 +1007,14 @@ smmap = ">=3.0.1,<6" [[package]] name = "gitpython" -version = "3.1.30" -description = "GitPython is a python library used to interact with Git repositories" +version = "3.1.31" +description = "GitPython is a Python library used to interact with Git repositories" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "GitPython-3.1.30-py3-none-any.whl", hash = "sha256:cd455b0000615c60e286208ba540271af9fe531fa6a87cc590a7298785ab2882"}, - {file = "GitPython-3.1.30.tar.gz", hash = "sha256:769c2d83e13f5d938b7688479da374c4e3d49f71549aaf462b646db9602ea6f8"}, + {file = "GitPython-3.1.31-py3-none-any.whl", hash = "sha256:f04893614f6aa713a60cbbe1e6a97403ef633103cdd0ef5eb6efe0deb98dbe8d"}, + {file = "GitPython-3.1.31.tar.gz", hash = "sha256:8ce3bcf69adfdf7c7d503e78fd3b1c492af782d58893b650adb2ac8912ddd573"}, ] [package.dependencies] @@ -1100,32 +1075,16 @@ files = [ [package.dependencies] numpy = ">=1.14.5" -[[package]] -name = "hug" -version = "2.6.1" -description = "A Python framework that makes developing APIs as simple as possible, but no simpler." -category = "dev" -optional = false -python-versions = ">=3.5" -files = [ - {file = "hug-2.6.1-py2.py3-none-any.whl", hash = "sha256:31c8fc284f81377278629a4b94cbb619ae9ce829cdc2da9564ccc66a121046b4"}, - {file = "hug-2.6.1.tar.gz", hash = "sha256:b0edace2acb618873779c9ce6ecf9165db54fef95c22262f5700fcdd9febaec9"}, -] - -[package.dependencies] -falcon = "2.0.0" -requests = "*" - [[package]] name = "identify" -version = "2.5.17" +version = "2.5.18" description = "File identification library for Python" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "identify-2.5.17-py2.py3-none-any.whl", hash = "sha256:7d526dd1283555aafcc91539acc061d8f6f59adb0a7bba462735b0a318bff7ed"}, - {file = "identify-2.5.17.tar.gz", hash = "sha256:93cc61a861052de9d4c541a7acb7e3dcc9c11b398a2144f6e52ae5285f5f4f06"}, + {file = "identify-2.5.18-py2.py3-none-any.whl", hash = "sha256:93aac7ecf2f6abf879b8f29a8002d3c6de7086b8c28d88e1ad15045a15ab63f9"}, + {file = "identify-2.5.18.tar.gz", hash = "sha256:89e144fa560cc4cffb6ef2ab5e9fb18ed9f9b3cb054384bab4b95c12f6c309fe"}, ] [package.extras] @@ -1175,6 +1134,25 @@ docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker perf = ["ipython"] testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)"] +[[package]] +name = "importlib-resources" +version = "5.12.0" +description = "Read resources from Python packages" +category = "main" +optional = true +python-versions = ">=3.7" +files = [ + {file = "importlib_resources-5.12.0-py3-none-any.whl", hash = "sha256:7b1deeebbf351c7578e09bf2f63fa2ce8b5ffec296e0d349139d43cca061a81a"}, + {file = "importlib_resources-5.12.0.tar.gz", hash = "sha256:4be82589bf5c1d7999aedf2a45159d10cb3ca4f19b2271f8792bc8e6da7b22f6"}, +] + +[package.dependencies] +zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] + [[package]] name = "iniconfig" version = "2.0.0" @@ -1202,14 +1180,14 @@ files = [ [[package]] name = "ipython" -version = "8.9.0" +version = "8.11.0" description = "IPython: Productive Interactive Computing" category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "ipython-8.9.0-py3-none-any.whl", hash = "sha256:9c207b0ef2d276d1bfcfeb9a62804336abbe4b170574ea061500952319b1d78c"}, - {file = "ipython-8.9.0.tar.gz", hash = "sha256:71618e82e6d59487bea059626e7c79fb4a5b760d1510d02fab1160db6fdfa1f7"}, + {file = "ipython-8.11.0-py3-none-any.whl", hash = "sha256:5b54478e459155a326bf5f42ee4f29df76258c0279c36f21d71ddb560f88b156"}, + {file = "ipython-8.11.0.tar.gz", hash = "sha256:735cede4099dbc903ee540307b9171fbfef4aa75cfcacc5a273b2cda2f02be04"}, ] [package.dependencies] @@ -1221,13 +1199,13 @@ jedi = ">=0.16" matplotlib-inline = "*" pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""} pickleshare = "*" -prompt-toolkit = ">=3.0.30,<3.1.0" +prompt-toolkit = ">=3.0.30,<3.0.37 || >3.0.37,<3.1.0" pygments = ">=2.4.0" stack-data = "*" traitlets = ">=5" [package.extras] -all = ["black", "curio", "docrepr", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib", "matplotlib (!=3.2.0)", "nbconvert", "nbformat", "notebook", "numpy (>=1.20)", "pandas", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "qtconsole", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "trio", "typing-extensions"] +all = ["black", "curio", "docrepr", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib", "matplotlib (!=3.2.0)", "nbconvert", "nbformat", "notebook", "numpy (>=1.21)", "pandas", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "qtconsole", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "trio", "typing-extensions"] black = ["black"] doc = ["docrepr", "ipykernel", "matplotlib", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "typing-extensions"] kernel = ["ipykernel"] @@ -1237,7 +1215,7 @@ notebook = ["ipywidgets", "notebook"] parallel = ["ipyparallel"] qtconsole = ["qtconsole"] test = ["pytest (<7.1)", "pytest-asyncio", "testpath"] -test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.20)", "pandas", "pytest (<7.1)", "pytest-asyncio", "testpath", "trio"] +test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.21)", "pandas", "pytest (<7.1)", "pytest-asyncio", "testpath", "trio"] [[package]] name = "isort" @@ -1333,14 +1311,14 @@ format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339- [[package]] name = "jupyter-client" -version = "8.0.2" +version = "8.0.3" description = "Jupyter protocol implementation and client libraries" category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "jupyter_client-8.0.2-py3-none-any.whl", hash = "sha256:c53731eb590b68839b0ce04bf46ff8c4f03278f5d9fe5c3b0f268a57cc2bd97e"}, - {file = "jupyter_client-8.0.2.tar.gz", hash = "sha256:47ac9f586dbcff4d79387ec264faf0fdeb5f14845fa7345fd7d1e378f8096011"}, + {file = "jupyter_client-8.0.3-py3-none-any.whl", hash = "sha256:be48ac6bd659cbbddb7a674cf06b3b8afbf53f228253cf58bde604c03bd487b0"}, + {file = "jupyter_client-8.0.3.tar.gz", hash = "sha256:ed65498bea6d876ef9d8da3e0db3dd33c5d129f5b2645f56ae03993782966bd0"}, ] [package.dependencies] @@ -1466,22 +1444,6 @@ files = [ {file = "kiwisolver-1.4.4.tar.gz", hash = "sha256:d41997519fcba4a1e46eb4a2fe31bc12f0ff957b2b81bac28db24744f333e955"}, ] -[[package]] -name = "livereload" -version = "2.6.3" -description = "Python LiveReload is an awesome tool for web developers" -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "livereload-2.6.3-py2.py3-none-any.whl", hash = "sha256:ad4ac6f53b2d62bb6ce1a5e6e96f1f00976a32348afedcb4b6d68df2a1d346e4"}, - {file = "livereload-2.6.3.tar.gz", hash = "sha256:776f2f865e59fde56490a56bcc6773b6917366bce0c267c60ee8aaf1a0959869"}, -] - -[package.dependencies] -six = "*" -tornado = {version = "*", markers = "python_version > \"2.7\""} - [[package]] name = "llvmlite" version = "0.39.1" @@ -1627,44 +1589,6 @@ files = [ docutils = "*" mistune = "0.8.4" -[[package]] -name = "mako" -version = "1.2.4" -description = "A super-fast templating language that borrows the best ideas from the existing templating languages." -category = "dev" -optional = false -python-versions = ">=3.7" -files = [ - {file = "Mako-1.2.4-py3-none-any.whl", hash = "sha256:c97c79c018b9165ac9922ae4f32da095ffd3c4e6872b45eded42926deea46818"}, - {file = "Mako-1.2.4.tar.gz", hash = "sha256:d60a3903dc3bb01a18ad6a89cdbe2e4eadc69c0bc8ef1e3773ba53d44c3f7a34"}, -] - -[package.dependencies] -MarkupSafe = ">=0.9.2" - -[package.extras] -babel = ["Babel"] -lingua = ["lingua"] -testing = ["pytest"] - -[[package]] -name = "markdown" -version = "3.3.7" -description = "Python implementation of Markdown." -category = "dev" -optional = false -python-versions = ">=3.6" -files = [ - {file = "Markdown-3.3.7-py3-none-any.whl", hash = "sha256:f5da449a6e1c989a4cea2631aa8ee67caa5a2ef855d551c88f9e309f4634c621"}, - {file = "Markdown-3.3.7.tar.gz", hash = "sha256:cbb516f16218e643d8e0a95b309f77eb118cb138d39a4f27851e6a63581db874"}, -] - -[package.dependencies] -importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} - -[package.extras] -testing = ["coverage", "pyyaml"] - [[package]] name = "markupsafe" version = "2.1.2" @@ -1727,64 +1651,65 @@ files = [ [[package]] name = "matplotlib" -version = "3.6.3" +version = "3.7.0" description = "Python plotting package" category = "main" optional = true python-versions = ">=3.8" files = [ - {file = "matplotlib-3.6.3-cp310-cp310-macosx_10_12_universal2.whl", hash = "sha256:80c166a0e28512e26755f69040e6bf2f946a02ffdb7c00bf6158cca3d2b146e6"}, - {file = "matplotlib-3.6.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:eb9421c403ffd387fbe729de6d9a03005bf42faba5e8432f4e51e703215b49fc"}, - {file = "matplotlib-3.6.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5223affa21050fb6118353c1380c15e23aedfb436bf3e162c26dc950617a7519"}, - {file = "matplotlib-3.6.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d00c248ab6b92bea3f8148714837937053a083ff03b4c5e30ed37e28fc0e7e56"}, - {file = "matplotlib-3.6.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca94f0362f6b6f424b555b956971dcb94b12d0368a6c3e07dc7a40d32d6d873d"}, - {file = "matplotlib-3.6.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59400cc9451094b7f08cc3f321972e6e1db4cd37a978d4e8a12824bf7fd2f03b"}, - {file = "matplotlib-3.6.3-cp310-cp310-win32.whl", hash = "sha256:57ad1aee29043163374bfa8990e1a2a10ff72c9a1bfaa92e9c46f6ea59269121"}, - {file = "matplotlib-3.6.3-cp310-cp310-win_amd64.whl", hash = "sha256:1fcc4cad498533d3c393a160975acc9b36ffa224d15a6b90ae579eacee5d8579"}, - {file = "matplotlib-3.6.3-cp311-cp311-macosx_10_12_universal2.whl", hash = "sha256:d2cfaa7fd62294d945b8843ea24228a27c8e7c5b48fa634f3c168153b825a21b"}, - {file = "matplotlib-3.6.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:c3f08df2ac4636249b8bc7a85b8b82c983bef1441595936f62c2918370ca7e1d"}, - {file = "matplotlib-3.6.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ff2aa84e74f80891e6bcf292ebb1dd57714ffbe13177642d65fee25384a30894"}, - {file = "matplotlib-3.6.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:11011c97d62c1db7bc20509572557842dbb8c2a2ddd3dd7f20501aa1cde3e54e"}, - {file = "matplotlib-3.6.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c235bf9be052347373f589e018988cad177abb3f997ab1a2e2210c41562cc0c"}, - {file = "matplotlib-3.6.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bebcff4c3ed02c6399d47329f3554193abd824d3d53b5ca02cf583bcd94470e2"}, - {file = "matplotlib-3.6.3-cp311-cp311-win32.whl", hash = "sha256:d5f18430f5cfa5571ab8f4c72c89af52aa0618e864c60028f11a857d62200cba"}, - {file = "matplotlib-3.6.3-cp311-cp311-win_amd64.whl", hash = "sha256:dfba7057609ca9567b9704626756f0142e97ec8c5ba2c70c6e7bd1c25ef99f06"}, - {file = "matplotlib-3.6.3-cp38-cp38-macosx_10_12_universal2.whl", hash = "sha256:9fb8fb19d03abf3c5dab89a8677e62c4023632f919a62b6dd1d6d2dbf42cd9f5"}, - {file = "matplotlib-3.6.3-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:bbf269e1d24bc25247095d71c7a969813f7080e2a7c6fa28931a603f747ab012"}, - {file = "matplotlib-3.6.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:994637e2995b0342699b396a320698b07cd148bbcf2dd2fa2daba73f34dd19f2"}, - {file = "matplotlib-3.6.3-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:77b384cee7ab8cf75ffccbfea351a09b97564fc62d149827a5e864bec81526e5"}, - {file = "matplotlib-3.6.3-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:73b93af33634ed919e72811c9703e1105185cd3fb46d76f30b7f4cfbbd063f89"}, - {file = "matplotlib-3.6.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:debeab8e2ab07e5e3dac33e12456da79c7e104270d2b2d1df92b9e40347cca75"}, - {file = "matplotlib-3.6.3-cp38-cp38-win32.whl", hash = "sha256:acc3b1a4bddbf56fe461e36fb9ef94c2cb607fc90d24ccc650040bfcc7610de4"}, - {file = "matplotlib-3.6.3-cp38-cp38-win_amd64.whl", hash = "sha256:1183877d008c752d7d535396096c910f4663e4b74a18313adee1213328388e1e"}, - {file = "matplotlib-3.6.3-cp39-cp39-macosx_10_12_universal2.whl", hash = "sha256:6adc441b5b2098a4b904bbf9d9e92fb816fef50c55aa2ea6a823fc89b94bb838"}, - {file = "matplotlib-3.6.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:6d81b11ede69e3a751424b98dc869c96c10256b2206bfdf41f9c720eee86844c"}, - {file = "matplotlib-3.6.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:29f17b7f2e068dc346687cbdf80b430580bab42346625821c2d3abf3a1ec5417"}, - {file = "matplotlib-3.6.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f56a7252eee8f3438447f75f5e1148a1896a2756a92285fe5d73bed6deebff4"}, - {file = "matplotlib-3.6.3-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bbddfeb1495484351fb5b30cf5bdf06b3de0bc4626a707d29e43dfd61af2a780"}, - {file = "matplotlib-3.6.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:809119d1cba3ece3c9742eb01827fe7a0e781ea3c5d89534655a75e07979344f"}, - {file = "matplotlib-3.6.3-cp39-cp39-win32.whl", hash = "sha256:e0a64d7cc336b52e90f59e6d638ae847b966f68582a7af041e063d568e814740"}, - {file = "matplotlib-3.6.3-cp39-cp39-win_amd64.whl", hash = "sha256:79e501eb847f4a489eb7065bb8d3187117f65a4c02d12ea3a19d6c5bef173bcc"}, - {file = "matplotlib-3.6.3-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2787a16df07370dcba385fe20cdd0cc3cfaabd3c873ddabca78c10514c799721"}, - {file = "matplotlib-3.6.3-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:68d94a436f62b8a861bf3ace82067a71bafb724b4e4f9133521e4d8012420dd7"}, - {file = "matplotlib-3.6.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81b409b2790cf8d7c1ef35920f01676d2ae7afa8241844e7aa5484fdf493a9a0"}, - {file = "matplotlib-3.6.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:faff486b36530a836a6b4395850322e74211cd81fc17f28b4904e1bd53668e3e"}, - {file = "matplotlib-3.6.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:38d38cb1ea1d80ee0f6351b65c6f76cad6060bbbead015720ba001348ae90f0c"}, - {file = "matplotlib-3.6.3-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12f999661589981e74d793ee2f41b924b3b87d65fd929f6153bf0f30675c59b1"}, - {file = "matplotlib-3.6.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01b7f521a9a73c383825813af255f8c4485d1706e4f3e2ed5ae771e4403a40ab"}, - {file = "matplotlib-3.6.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:9ceebaf73f1a3444fa11014f38b9da37ff7ea328d6efa1652241fe3777bfdab9"}, - {file = "matplotlib-3.6.3.tar.gz", hash = "sha256:1f4d69707b1677560cd952544ee4962f68ff07952fb9069ff8c12b56353cb8c9"}, + {file = "matplotlib-3.7.0-cp310-cp310-macosx_10_12_universal2.whl", hash = "sha256:3da8b9618188346239e51f1ea6c0f8f05c6e218cfcc30b399dd7dd7f52e8bceb"}, + {file = "matplotlib-3.7.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:c0592ba57217c22987b7322df10f75ef95bc44dce781692b4b7524085de66019"}, + {file = "matplotlib-3.7.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:21269450243d6928da81a9bed201f0909432a74e7d0d65db5545b9fa8a0d0223"}, + {file = "matplotlib-3.7.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb2e76cd429058d8954121c334dddfcd11a6186c6975bca61f3f248c99031b05"}, + {file = "matplotlib-3.7.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:de20eb1247725a2f889173d391a6d9e7e0f2540feda24030748283108b0478ec"}, + {file = "matplotlib-3.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c5465735eaaafd1cfaec3fed60aee776aeb3fd3992aa2e49f4635339c931d443"}, + {file = "matplotlib-3.7.0-cp310-cp310-win32.whl", hash = "sha256:092e6abc80cdf8a95f7d1813e16c0e99ceda8d5b195a3ab859c680f3487b80a2"}, + {file = "matplotlib-3.7.0-cp310-cp310-win_amd64.whl", hash = "sha256:4f640534ec2760e270801056bc0d8a10777c48b30966eef78a7c35d8590915ba"}, + {file = "matplotlib-3.7.0-cp311-cp311-macosx_10_12_universal2.whl", hash = "sha256:f336e7014889c38c59029ebacc35c59236a852e4b23836708cfd3f43d1eaeed5"}, + {file = "matplotlib-3.7.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:3a10428d4f8d1a478ceabd652e61a175b2fdeed4175ab48da4a7b8deb561e3fa"}, + {file = "matplotlib-3.7.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:46ca923e980f76d34c1c633343a72bb042d6ba690ecc649aababf5317997171d"}, + {file = "matplotlib-3.7.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c849aa94ff2a70fb71f318f48a61076d1205c6013b9d3885ade7f992093ac434"}, + {file = "matplotlib-3.7.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:827e78239292e561cfb70abf356a9d7eaf5bf6a85c97877f254009f20b892f89"}, + {file = "matplotlib-3.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:691ef1f15360e439886186d0db77b5345b24da12cbc4fc57b26c4826db4d6cab"}, + {file = "matplotlib-3.7.0-cp311-cp311-win32.whl", hash = "sha256:21a8aeac39b4a795e697265d800ce52ab59bdeb6bb23082e2d971f3041074f02"}, + {file = "matplotlib-3.7.0-cp311-cp311-win_amd64.whl", hash = "sha256:01681566e95b9423021b49dea6a2395c16fa054604eacb87f0f4c439750f9114"}, + {file = "matplotlib-3.7.0-cp38-cp38-macosx_10_12_universal2.whl", hash = "sha256:cf119eee4e57389fba5ac8b816934e95c256535e55f0b21628b4205737d1de85"}, + {file = "matplotlib-3.7.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:21bd4033c40b95abd5b8453f036ed5aa70856e56ecbd887705c37dce007a4c21"}, + {file = "matplotlib-3.7.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:111ef351f28fd823ed7177632070a6badd6f475607122bc9002a526f2502a0b5"}, + {file = "matplotlib-3.7.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f91d35b3ef51d29d9c661069b9e4ba431ce283ffc533b981506889e144b5b40e"}, + {file = "matplotlib-3.7.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0a776462a4a63c0bfc9df106c15a0897aa2dbab6795c693aa366e8e283958854"}, + {file = "matplotlib-3.7.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0dfd4a0cbd151f6439e6d7f8dca5292839ca311e7e650596d073774847ca2e4f"}, + {file = "matplotlib-3.7.0-cp38-cp38-win32.whl", hash = "sha256:56b7b79488209041a9bf7ddc34f1b069274489ce69e34dc63ae241d0d6b4b736"}, + {file = "matplotlib-3.7.0-cp38-cp38-win_amd64.whl", hash = "sha256:8665855f3919c80551f377bc16df618ceabf3ef65270bc14b60302dce88ca9ab"}, + {file = "matplotlib-3.7.0-cp39-cp39-macosx_10_12_universal2.whl", hash = "sha256:f910d924da8b9fb066b5beae0b85e34ed1b6293014892baadcf2a51da1c65807"}, + {file = "matplotlib-3.7.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:cf6346644e8fe234dc847e6232145dac199a650d3d8025b3ef65107221584ba4"}, + {file = "matplotlib-3.7.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3d1e52365d8d5af699f04581ca191112e1d1220a9ce4386b57d807124d8b55e6"}, + {file = "matplotlib-3.7.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c869b646489c6a94375714032e5cec08e3aa8d3f7d4e8ef2b0fb50a52b317ce6"}, + {file = "matplotlib-3.7.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f4ddac5f59e78d04b20469bc43853a8e619bb6505c7eac8ffb343ff2c516d72f"}, + {file = "matplotlib-3.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb0304c1cd802e9a25743414c887e8a7cd51d96c9ec96d388625d2cd1c137ae3"}, + {file = "matplotlib-3.7.0-cp39-cp39-win32.whl", hash = "sha256:a06a6c9822e80f323549c6bc9da96d4f233178212ad9a5f4ab87fd153077a507"}, + {file = "matplotlib-3.7.0-cp39-cp39-win_amd64.whl", hash = "sha256:cb52aa97b92acdee090edfb65d1cb84ea60ab38e871ba8321a10bbcebc2a3540"}, + {file = "matplotlib-3.7.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3493b48e56468c39bd9c1532566dff3b8062952721b7521e1f394eb6791495f4"}, + {file = "matplotlib-3.7.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7d0dcd1a0bf8d56551e8617d6dc3881d8a1c7fb37d14e5ec12cbb293f3e6170a"}, + {file = "matplotlib-3.7.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51fb664c37714cbaac69c16d6b3719f517a13c96c3f76f4caadd5a0aa7ed0329"}, + {file = "matplotlib-3.7.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:4497d88c559b76da320b7759d64db442178beeea06a52dc0c629086982082dcd"}, + {file = "matplotlib-3.7.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:9d85355c48ef8b9994293eb7c00f44aa8a43cad7a297fbf0770a25cdb2244b91"}, + {file = "matplotlib-3.7.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:03eb2c8ff8d85da679b71e14c7c95d16d014c48e0c0bfa14db85f6cdc5c92aad"}, + {file = "matplotlib-3.7.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71b751d06b2ed1fd017de512d7439c0259822864ea16731522b251a27c0b2ede"}, + {file = "matplotlib-3.7.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:b51ab8a5d5d3bbd4527af633a638325f492e09e45e78afdf816ef55217a09664"}, + {file = "matplotlib-3.7.0.tar.gz", hash = "sha256:8f6efd313430d7ef70a38a3276281cb2e8646b3a22b3b21eb227da20e15e6813"}, ] [package.dependencies] contourpy = ">=1.0.1" cycler = ">=0.10" fonttools = ">=4.22.0" +importlib-resources = {version = ">=3.2.0", markers = "python_version < \"3.10\""} kiwisolver = ">=1.0.1" -numpy = ">=1.19" +numpy = ">=1.20" packaging = ">=20.0" pillow = ">=6.2.0" -pyparsing = ">=2.2.1" +pyparsing = ">=2.3.1" python-dateutil = ">=2.7" [[package]] @@ -1814,18 +1739,6 @@ files = [ {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, ] -[[package]] -name = "mergedeep" -version = "1.3.4" -description = "A deep merge function for 🐍." -category = "dev" -optional = false -python-versions = ">=3.6" -files = [ - {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, - {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, -] - [[package]] name = "mistune" version = "0.8.4" @@ -1838,66 +1751,6 @@ files = [ {file = "mistune-0.8.4.tar.gz", hash = "sha256:59a3429db53c50b5c6bcc8a07f8848cb00d7dc8bdb431a4ab41920d201d4756e"}, ] -[[package]] -name = "mkdocs" -version = "1.3.1" -description = "Project documentation with Markdown." -category = "dev" -optional = false -python-versions = ">=3.6" -files = [ - {file = "mkdocs-1.3.1-py3-none-any.whl", hash = "sha256:fda92466393127d2da830bc6edc3a625a14b436316d1caf347690648e774c4f0"}, - {file = "mkdocs-1.3.1.tar.gz", hash = "sha256:a41a2ff25ce3bbacc953f9844ba07d106233cd76c88bac1f59cb1564ac0d87ed"}, -] - -[package.dependencies] -click = ">=3.3" -ghp-import = ">=1.0" -importlib-metadata = ">=4.3" -Jinja2 = ">=2.10.2" -Markdown = ">=3.2.1,<3.4" -mergedeep = ">=1.3.4" -packaging = ">=20.5" -PyYAML = ">=3.10" -pyyaml-env-tag = ">=0.1" -watchdog = ">=2.0" - -[package.extras] -i18n = ["babel (>=2.9.0)"] - -[[package]] -name = "mkdocs-material" -version = "8.5.4" -description = "Documentation that simply works" -category = "dev" -optional = false -python-versions = ">=3.7" -files = [ - {file = "mkdocs_material-8.5.4-py3-none-any.whl", hash = "sha256:aec2f0f2143109f8388aadf76e6fff749a2b74ebe730d0f674c65b53da89d19d"}, - {file = "mkdocs_material-8.5.4.tar.gz", hash = "sha256:70dc47820d4765b77968b9119f2957d09b4d8d328d950bee4544ff224d5c7b36"}, -] - -[package.dependencies] -jinja2 = ">=3.0.2" -markdown = ">=3.2" -mkdocs = ">=1.3.0" -mkdocs-material-extensions = ">=1.0.3" -pygments = ">=2.12" -pymdown-extensions = ">=9.4" -requests = ">=2.26" - -[[package]] -name = "mkdocs-material-extensions" -version = "1.1.1" -description = "Extension pack for Python Markdown and MkDocs Material." -category = "dev" -optional = false -python-versions = ">=3.7" -files = [ - {file = "mkdocs_material_extensions-1.1.1-py3-none-any.whl", hash = "sha256:e41d9f38e4798b6617ad98ca8f7f1157b1e4385ac1459ca1e4ea219b556df945"}, - {file = "mkdocs_material_extensions-1.1.1.tar.gz", hash = "sha256:9c003da71e2cc2493d910237448c672e00cefc800d3d6ae93d2fc69979e3bd93"}, -] - [[package]] name = "mkl" version = "2023.0.0" @@ -1947,42 +1800,38 @@ files = [ [[package]] name = "mypy" -version = "0.990" +version = "1.0.1" description = "Optional static typing for Python" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "mypy-0.990-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:aaf1be63e0207d7d17be942dcf9a6b641745581fe6c64df9a38deb562a7dbafa"}, - {file = "mypy-0.990-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d555aa7f44cecb7ea3c0ac69d58b1a5afb92caa017285a8e9c4efbf0518b61b4"}, - {file = "mypy-0.990-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f694d6d09a460b117dccb6857dda269188e3437c880d7b60fa0014fa872d1e9"}, - {file = "mypy-0.990-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:269f0dfb6463b8780333310ff4b5134425157ef0d2b1d614015adaf6d6a7eabd"}, - {file = "mypy-0.990-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8798c8ed83aa809f053abff08664bdca056038f5a02af3660de00b7290b64c47"}, - {file = "mypy-0.990-cp310-cp310-win_amd64.whl", hash = "sha256:47a9955214615108c3480a500cfda8513a0b1cd3c09a1ed42764ca0dd7b931dd"}, - {file = "mypy-0.990-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4a8a6c10f4c63fbf6ad6c03eba22c9331b3946a4cec97f008e9ffb4d3b31e8e2"}, - {file = "mypy-0.990-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cd2dd3730ba894ec2a2082cc703fbf3e95a08479f7be84912e3131fc68809d46"}, - {file = "mypy-0.990-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7da0005e47975287a92b43276e460ac1831af3d23032c34e67d003388a0ce8d0"}, - {file = "mypy-0.990-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:262c543ef24deb10470a3c1c254bb986714e2b6b1a67d66daf836a548a9f316c"}, - {file = "mypy-0.990-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3ff201a0c6d3ea029d73b1648943387d75aa052491365b101f6edd5570d018ea"}, - {file = "mypy-0.990-cp311-cp311-win_amd64.whl", hash = "sha256:1767830da2d1afa4e62b684647af0ff79b401f004d7fa08bc5b0ce2d45bcd5ec"}, - {file = "mypy-0.990-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6826d9c4d85bbf6d68cb279b561de6a4d8d778ca8e9ab2d00ee768ab501a9852"}, - {file = "mypy-0.990-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46897755f944176fbc504178422a5a2875bbf3f7436727374724842c0987b5af"}, - {file = "mypy-0.990-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0680389c34284287fe00e82fc8bccdea9aff318f7e7d55b90d967a13a9606013"}, - {file = "mypy-0.990-cp37-cp37m-win_amd64.whl", hash = "sha256:b08541a06eed35b543ae1a6b301590eb61826a1eb099417676ddc5a42aa151c5"}, - {file = "mypy-0.990-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:be88d665e76b452c26fb2bdc3d54555c01226fba062b004ede780b190a50f9db"}, - {file = "mypy-0.990-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9b8f4a8213b1fd4b751e26b59ae0e0c12896568d7e805861035c7a15ed6dc9eb"}, - {file = "mypy-0.990-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2b6f85c2ad378e3224e017904a051b26660087b3b76490d533b7344f1546d3ff"}, - {file = "mypy-0.990-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ee5f99817ee70254e7eb5cf97c1b11dda29c6893d846c8b07bce449184e9466"}, - {file = "mypy-0.990-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49082382f571c3186ce9ea0bd627cb1345d4da8d44a8377870f4442401f0a706"}, - {file = "mypy-0.990-cp38-cp38-win_amd64.whl", hash = "sha256:aba38e3dd66bdbafbbfe9c6e79637841928ea4c79b32e334099463c17b0d90ef"}, - {file = "mypy-0.990-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9d851c09b981a65d9d283a8ccb5b1d0b698e580493416a10942ef1a04b19fd37"}, - {file = "mypy-0.990-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d847dd23540e2912d9667602271e5ebf25e5788e7da46da5ffd98e7872616e8e"}, - {file = "mypy-0.990-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cc6019808580565040cd2a561b593d7c3c646badd7e580e07d875eb1bf35c695"}, - {file = "mypy-0.990-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a3150d409609a775c8cb65dbe305c4edd7fe576c22ea79d77d1454acd9aeda8"}, - {file = "mypy-0.990-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3227f14fe943524f5794679156488f18bf8d34bfecd4623cf76bc55958d229c5"}, - {file = "mypy-0.990-cp39-cp39-win_amd64.whl", hash = "sha256:c76c769c46a1e6062a84837badcb2a7b0cdb153d68601a61f60739c37d41cc74"}, - {file = "mypy-0.990-py3-none-any.whl", hash = "sha256:8f1940325a8ed460ba03d19ab83742260fa9534804c317224e5d4e5aa588e2d6"}, - {file = "mypy-0.990.tar.gz", hash = "sha256:72382cb609142dba3f04140d016c94b4092bc7b4d98ca718740dc989e5271b8d"}, + {file = "mypy-1.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:71a808334d3f41ef011faa5a5cd8153606df5fc0b56de5b2e89566c8093a0c9a"}, + {file = "mypy-1.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:920169f0184215eef19294fa86ea49ffd4635dedfdea2b57e45cb4ee85d5ccaf"}, + {file = "mypy-1.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27a0f74a298769d9fdc8498fcb4f2beb86f0564bcdb1a37b58cbbe78e55cf8c0"}, + {file = "mypy-1.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:65b122a993d9c81ea0bfde7689b3365318a88bde952e4dfa1b3a8b4ac05d168b"}, + {file = "mypy-1.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:5deb252fd42a77add936b463033a59b8e48eb2eaec2976d76b6878d031933fe4"}, + {file = "mypy-1.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2013226d17f20468f34feddd6aae4635a55f79626549099354ce641bc7d40262"}, + {file = "mypy-1.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:48525aec92b47baed9b3380371ab8ab6e63a5aab317347dfe9e55e02aaad22e8"}, + {file = "mypy-1.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c96b8a0c019fe29040d520d9257d8c8f122a7343a8307bf8d6d4a43f5c5bfcc8"}, + {file = "mypy-1.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:448de661536d270ce04f2d7dddaa49b2fdba6e3bd8a83212164d4174ff43aa65"}, + {file = "mypy-1.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:d42a98e76070a365a1d1c220fcac8aa4ada12ae0db679cb4d910fabefc88b994"}, + {file = "mypy-1.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e64f48c6176e243ad015e995de05af7f22bbe370dbb5b32bd6988438ec873919"}, + {file = "mypy-1.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fdd63e4f50e3538617887e9aee91855368d9fc1dea30da743837b0df7373bc4"}, + {file = "mypy-1.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:dbeb24514c4acbc78d205f85dd0e800f34062efcc1f4a4857c57e4b4b8712bff"}, + {file = "mypy-1.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a2948c40a7dd46c1c33765718936669dc1f628f134013b02ff5ac6c7ef6942bf"}, + {file = "mypy-1.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5bc8d6bd3b274dd3846597855d96d38d947aedba18776aa998a8d46fabdaed76"}, + {file = "mypy-1.0.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:17455cda53eeee0a4adb6371a21dd3dbf465897de82843751cf822605d152c8c"}, + {file = "mypy-1.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e831662208055b006eef68392a768ff83596035ffd6d846786578ba1714ba8f6"}, + {file = "mypy-1.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e60d0b09f62ae97a94605c3f73fd952395286cf3e3b9e7b97f60b01ddfbbda88"}, + {file = "mypy-1.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:0af4f0e20706aadf4e6f8f8dc5ab739089146b83fd53cb4a7e0e850ef3de0bb6"}, + {file = "mypy-1.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:24189f23dc66f83b839bd1cce2dfc356020dfc9a8bae03978477b15be61b062e"}, + {file = "mypy-1.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:93a85495fb13dc484251b4c1fd7a5ac370cd0d812bbfc3b39c1bafefe95275d5"}, + {file = "mypy-1.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f546ac34093c6ce33f6278f7c88f0f147a4849386d3bf3ae193702f4fe31407"}, + {file = "mypy-1.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c6c2ccb7af7154673c591189c3687b013122c5a891bb5651eca3db8e6c6c55bd"}, + {file = "mypy-1.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:15b5a824b58c7c822c51bc66308e759243c32631896743f030daf449fe3677f3"}, + {file = "mypy-1.0.1-py3-none-any.whl", hash = "sha256:eda5c8b9949ed411ff752b9a01adda31afe7eae1e53e946dbdf9db23865e66c4"}, + {file = "mypy-1.0.1.tar.gz", hash = "sha256:28cea5a6392bb43d266782983b5a4216c25544cd7d80be681a155ddcdafd152d"}, ] [package.dependencies] @@ -1998,14 +1847,14 @@ reports = ["lxml"] [[package]] name = "mypy-extensions" -version = "0.4.3" -description = "Experimental type system extensions for programs checked with the mypy typechecker." +version = "1.0.0" +description = "Type system extensions for programs checked with the mypy type checker." category = "dev" optional = false -python-versions = "*" +python-versions = ">=3.5" files = [ - {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, - {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, + {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, + {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, ] [[package]] @@ -2247,19 +2096,16 @@ tests = ["pytest", "pytest-cov", "pytest-pep8"] [[package]] name = "packaging" -version = "21.3" +version = "23.0" description = "Core utilities for Python packages" category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, - {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, + {file = "packaging-23.0-py3-none-any.whl", hash = "sha256:714ac14496c3e68c99c29b00845f7a2b85f3bb6f1078fd9f72fd20f0570002b2"}, + {file = "packaging-23.0.tar.gz", hash = "sha256:b6ad297f8907de0fa2fe1ccbd26fdaf387f5f47c7275fedf8cce89f99446cf97"}, ] -[package.dependencies] -pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" - [[package]] name = "pandoc" version = "2.3" @@ -2327,24 +2173,6 @@ files = [ {file = "pbr-5.11.1.tar.gz", hash = "sha256:aefc51675b0b533d56bb5fd1c8c6c0522fe31896679882e1c4c63d5e4a0fccb3"}, ] -[[package]] -name = "pdocs" -version = "1.2.0" -description = "A simple program and library to auto generate API documentation for Python modules." -category = "dev" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pdocs-1.2.0-py3-none-any.whl", hash = "sha256:caca2829415e62d31eaab46c53cd77a2a14f132c73e48e25187331c3a9fc2459"}, - {file = "pdocs-1.2.0.tar.gz", hash = "sha256:996ad4d5039b59a9a112d29abfb3995ec4ed8d8415ddce6947c3a5248adb428b"}, -] - -[package.dependencies] -docstring_parser = ">=0.7.2" -hug = ">=2.6" -Mako = ">1.2.2" -Markdown = ">=3.0.0" - [[package]] name = "pep8-naming" version = "0.13.3" @@ -2480,19 +2308,19 @@ tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "pa [[package]] name = "platformdirs" -version = "2.6.2" +version = "3.0.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "platformdirs-2.6.2-py3-none-any.whl", hash = "sha256:83c8f6d04389165de7c9b6f0c682439697887bca0aa2f1c87ef1826be3584490"}, - {file = "platformdirs-2.6.2.tar.gz", hash = "sha256:e1fea1fe471b9ff8332e229df3cb7de4f53eeea4998d3b6bfff542115e998bd2"}, + {file = "platformdirs-3.0.0-py3-none-any.whl", hash = "sha256:b1d5eb14f221506f50d6604a561f4c5786d9e80355219694a1b244bcd96f4567"}, + {file = "platformdirs-3.0.0.tar.gz", hash = "sha256:8a1228abb1ef82d788f74139988b137e78692984ec7b08eaa6c65f1723af28f9"}, ] [package.extras] -docs = ["furo (>=2022.12.7)", "proselint (>=0.13)", "sphinx (>=5.3)", "sphinx-autodoc-typehints (>=1.19.5)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.2.2)", "pytest (>=7.2)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"] +docs = ["furo (>=2022.12.7)", "proselint (>=0.13)", "sphinx (>=6.1.3)", "sphinx-autodoc-typehints (>=1.22,!=1.23.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.2.2)", "pytest (>=7.2.1)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"] [[package]] name = "pluggy" @@ -2542,29 +2370,6 @@ files = [ {file = "ply-3.11.tar.gz", hash = "sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3"}, ] -[[package]] -name = "portray" -version = "1.8.0" -description = "Your Project with Great Documentation" -category = "dev" -optional = false -python-versions = ">3.7" -files = [ - {file = "portray-1.8.0-py3-none-any.whl", hash = "sha256:c7ee981b51f9b41b60b04c1351e1b61edd291049d10c45f7c8f05897caa6a931"}, - {file = "portray-1.8.0.tar.gz", hash = "sha256:a9dd2973a0235051c5b68a29390c3eeee192dc248cc2d944452ee9c02423b47d"}, -] - -[package.dependencies] -GitPython = ">=3.0" -hug = ">=2.6" -livereload = ">=2.6.3" -mkdocs = ">=1.3.0,<1.4.0" -mkdocs-material = ">=7.0" -pdocs = ">=1.2.0" -pymdown-extensions = ">=7.0" -toml = ">=0.10.0" -yaspin = ">=0.15.0,<3" - [[package]] name = "pre-commit" version = "2.21.0" @@ -2602,14 +2407,14 @@ scipy = "*" [[package]] name = "prompt-toolkit" -version = "3.0.36" +version = "3.0.38" description = "Library for building powerful interactive command lines in Python" category = "dev" optional = false -python-versions = ">=3.6.2" +python-versions = ">=3.7.0" files = [ - {file = "prompt_toolkit-3.0.36-py3-none-any.whl", hash = "sha256:aa64ad242a462c5ff0363a7b9cfe696c20d55d9fc60c11fd8e632d064804d305"}, - {file = "prompt_toolkit-3.0.36.tar.gz", hash = "sha256:3e163f254bef5a03b146397d7c1963bd3e2812f0964bb9a24e6ec761fd28db63"}, + {file = "prompt_toolkit-3.0.38-py3-none-any.whl", hash = "sha256:45ea77a2f7c60418850331366c81cf6b5b9cf4c7fd34616f733c5427e6abbb1f"}, + {file = "prompt_toolkit-3.0.38.tar.gz", hash = "sha256:23ac5d50538a9a38c8bde05fecb47d0b403ecd0662857a86f886f798563d5b9b"}, ] [package.dependencies] @@ -2744,27 +2549,12 @@ files = [ [package.extras] plugins = ["importlib-metadata"] -[[package]] -name = "pymdown-extensions" -version = "9.9.2" -description = "Extension pack for Python Markdown." -category = "dev" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pymdown_extensions-9.9.2-py3-none-any.whl", hash = "sha256:c3d804eb4a42b85bafb5f36436342a5ad38df03878bb24db8855a4aa8b08b765"}, - {file = "pymdown_extensions-9.9.2.tar.gz", hash = "sha256:ebb33069bafcb64d5f5988043331d4ea4929325dc678a6bcf247ddfcf96499f8"}, -] - -[package.dependencies] -markdown = ">=3.2" - [[package]] name = "pyparsing" version = "3.0.9" description = "pyparsing module - Classes and methods to define and execute parsing grammars" category = "main" -optional = false +optional = true python-versions = ">=3.6.8" files = [ {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, @@ -2889,14 +2679,14 @@ six = ">=1.5" [[package]] name = "python-slugify" -version = "8.0.0" +version = "8.0.1" description = "A Python slugify application that also handles Unicode" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "python-slugify-8.0.0.tar.gz", hash = "sha256:f1da83f3c7ab839b3f84543470cd95bdb5a81f1a0b80fed502f78b7dca256062"}, - {file = "python_slugify-8.0.0-py2.py3-none-any.whl", hash = "sha256:51f217508df20a6c166c7821683384b998560adcf8f19a6c2ca8b460528ccd9c"}, + {file = "python-slugify-8.0.1.tar.gz", hash = "sha256:ce0d46ddb668b3be82f4ed5e503dbc33dd815d83e2eb6824211310d3fb172a27"}, + {file = "python_slugify-8.0.1-py2.py3-none-any.whl", hash = "sha256:70ca6ea68fe63ecc8fa4fcf00ae651fc8a5d02d93dcd12ae6d4fc7ca46c4d395"}, ] [package.dependencies] @@ -2905,18 +2695,6 @@ text-unidecode = ">=1.3" [package.extras] unidecode = ["Unidecode (>=1.1.1)"] -[[package]] -name = "pytz" -version = "2022.7.1" -description = "World timezone definitions, modern and historical" -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "pytz-2022.7.1-py2.py3-none-any.whl", hash = "sha256:78f4f37d8198e0627c5f1143240bb0206b8691d8d7ac6d78fee88b78733f8c4a"}, - {file = "pytz-2022.7.1.tar.gz", hash = "sha256:01a0681c4b9684a28304615eba55d1ab31ae00bf68ec157ec3708a8182dbbcd0"}, -] - [[package]] name = "pywin32" version = "305" @@ -2991,21 +2769,6 @@ files = [ {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, ] -[[package]] -name = "pyyaml-env-tag" -version = "0.1" -description = "A custom YAML tag for referencing environment variables in YAML files. " -category = "dev" -optional = false -python-versions = ">=3.6" -files = [ - {file = "pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069"}, - {file = "pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb"}, -] - -[package.dependencies] -pyyaml = "*" - [[package]] name = "pyzmq" version = "25.0.0" @@ -3228,20 +2991,20 @@ files = [ [[package]] name = "safety" -version = "2.3.5" +version = "2.3.4" description = "Checks installed dependencies for known vulnerabilities and licenses." category = "dev" optional = false python-versions = "*" files = [ - {file = "safety-2.3.5-py3-none-any.whl", hash = "sha256:2227fcac1b22b53c1615af78872b48348661691450aa25d6704a5504dbd1f7e2"}, - {file = "safety-2.3.5.tar.gz", hash = "sha256:a60c11f8952f412cbb165d70cb1f673a3b43a2ba9a93ce11f97e6a4de834aa3a"}, + {file = "safety-2.3.4-py3-none-any.whl", hash = "sha256:6224dcd9b20986a2b2c5e7acfdfba6bca42bb11b2783b24ed04f32317e5167ea"}, + {file = "safety-2.3.4.tar.gz", hash = "sha256:b9e74e794e82f54d11f4091c5d820c4d2d81de9f953bf0b4f33ac8bc402ae72c"}, ] [package.dependencies] Click = ">=8.0.2" dparse = ">=0.6.2" -packaging = ">=21.0,<22.0" +packaging = ">=21.0" requests = "*" "ruamel.yaml" = ">=0.17.21" setuptools = ">=19.3" @@ -3252,33 +3015,33 @@ gitlab = ["python-gitlab (>=1.3.0)"] [[package]] name = "scipy" -version = "1.10.0" +version = "1.10.1" description = "Fundamental algorithms for scientific computing in Python" category = "main" optional = false python-versions = "<3.12,>=3.8" files = [ - {file = "scipy-1.10.0-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:b901b423c91281a974f6cd1c36f5c6c523e665b5a6d5e80fcb2334e14670eefd"}, - {file = "scipy-1.10.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:16ba05d3d1b9f2141004f3f36888e05894a525960b07f4c2bfc0456b955a00be"}, - {file = "scipy-1.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:151f066fe7d6653c3ffefd489497b8fa66d7316e3e0d0c0f7ff6acca1b802809"}, - {file = "scipy-1.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f9ea0a37aca111a407cb98aa4e8dfde6e5d9333bae06dfa5d938d14c80bb5c3"}, - {file = "scipy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:27e548276b5a88b51212b61f6dda49a24acf5d770dff940bd372b3f7ced8c6c2"}, - {file = "scipy-1.10.0-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:42ab8b9e7dc1ebe248e55f54eea5307b6ab15011a7883367af48dd781d1312e4"}, - {file = "scipy-1.10.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:e096b062d2efdea57f972d232358cb068413dc54eec4f24158bcbb5cb8bddfd8"}, - {file = "scipy-1.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4df25a28bd22c990b22129d3c637fd5c3be4b7c94f975dca909d8bab3309b694"}, - {file = "scipy-1.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ad449db4e0820e4b42baccefc98ec772ad7818dcbc9e28b85aa05a536b0f1a2"}, - {file = "scipy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:6faf86ef7717891195ae0537e48da7524d30bc3b828b30c9b115d04ea42f076f"}, - {file = "scipy-1.10.0-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:4bd0e3278126bc882d10414436e58fa3f1eca0aa88b534fcbf80ed47e854f46c"}, - {file = "scipy-1.10.0-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:38bfbd18dcc69eeb589811e77fae552fa923067fdfbb2e171c9eac749885f210"}, - {file = "scipy-1.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ab2a58064836632e2cec31ca197d3695c86b066bc4818052b3f5381bfd2a728"}, - {file = "scipy-1.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5cd7a30970c29d9768a7164f564d1fbf2842bfc77b7d114a99bc32703ce0bf48"}, - {file = "scipy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:9b878c671655864af59c108c20e4da1e796154bd78c0ed6bb02bc41c84625686"}, - {file = "scipy-1.10.0-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:3afcbddb4488ac950ce1147e7580178b333a29cd43524c689b2e3543a080a2c8"}, - {file = "scipy-1.10.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:6e4497e5142f325a5423ff5fda2fff5b5d953da028637ff7c704378c8c284ea7"}, - {file = "scipy-1.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:441cab2166607c82e6d7a8683779cb89ba0f475b983c7e4ab88f3668e268c143"}, - {file = "scipy-1.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0490dc499fe23e4be35b8b6dd1e60a4a34f0c4adb30ac671e6332446b3cbbb5a"}, - {file = "scipy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:954ff69d2d1bf666b794c1d7216e0a746c9d9289096a64ab3355a17c7c59db54"}, - {file = "scipy-1.10.0.tar.gz", hash = "sha256:c8b3cbc636a87a89b770c6afc999baa6bcbb01691b5ccbbc1b1791c7c0a07540"}, + {file = "scipy-1.10.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e7354fd7527a4b0377ce55f286805b34e8c54b91be865bac273f527e1b839019"}, + {file = "scipy-1.10.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:4b3f429188c66603a1a5c549fb414e4d3bdc2a24792e061ffbd607d3d75fd84e"}, + {file = "scipy-1.10.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1553b5dcddd64ba9a0d95355e63fe6c3fc303a8fd77c7bc91e77d61363f7433f"}, + {file = "scipy-1.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c0ff64b06b10e35215abce517252b375e580a6125fd5fdf6421b98efbefb2d2"}, + {file = "scipy-1.10.1-cp310-cp310-win_amd64.whl", hash = "sha256:fae8a7b898c42dffe3f7361c40d5952b6bf32d10c4569098d276b4c547905ee1"}, + {file = "scipy-1.10.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0f1564ea217e82c1bbe75ddf7285ba0709ecd503f048cb1236ae9995f64217bd"}, + {file = "scipy-1.10.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:d925fa1c81b772882aa55bcc10bf88324dadb66ff85d548c71515f6689c6dac5"}, + {file = "scipy-1.10.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaea0a6be54462ec027de54fca511540980d1e9eea68b2d5c1dbfe084797be35"}, + {file = "scipy-1.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15a35c4242ec5f292c3dd364a7c71a61be87a3d4ddcc693372813c0b73c9af1d"}, + {file = "scipy-1.10.1-cp311-cp311-win_amd64.whl", hash = "sha256:43b8e0bcb877faf0abfb613d51026cd5cc78918e9530e375727bf0625c82788f"}, + {file = "scipy-1.10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5678f88c68ea866ed9ebe3a989091088553ba12c6090244fdae3e467b1139c35"}, + {file = "scipy-1.10.1-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:39becb03541f9e58243f4197584286e339029e8908c46f7221abeea4b749fa88"}, + {file = "scipy-1.10.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bce5869c8d68cf383ce240e44c1d9ae7c06078a9396df68ce88a1230f93a30c1"}, + {file = "scipy-1.10.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07c3457ce0b3ad5124f98a86533106b643dd811dd61b548e78cf4c8786652f6f"}, + {file = "scipy-1.10.1-cp38-cp38-win_amd64.whl", hash = "sha256:049a8bbf0ad95277ffba9b3b7d23e5369cc39e66406d60422c8cfef40ccc8415"}, + {file = "scipy-1.10.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:cd9f1027ff30d90618914a64ca9b1a77a431159df0e2a195d8a9e8a04c78abf9"}, + {file = "scipy-1.10.1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:79c8e5a6c6ffaf3a2262ef1be1e108a035cf4f05c14df56057b64acc5bebffb6"}, + {file = "scipy-1.10.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:51af417a000d2dbe1ec6c372dfe688e041a7084da4fdd350aeb139bd3fb55353"}, + {file = "scipy-1.10.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b4735d6c28aad3cdcf52117e0e91d6b39acd4272f3f5cd9907c24ee931ad601"}, + {file = "scipy-1.10.1-cp39-cp39-win_amd64.whl", hash = "sha256:7ff7f37b1bf4417baca958d254e8e2875d0cc23aaadbe65b3d5b3077b0eb23ea"}, + {file = "scipy-1.10.1.tar.gz", hash = "sha256:2cf9dfb80a7b4589ba4c40ce7588986d6d5cebc5457cad2c2880f6bc2d42f3a5"}, ] [package.dependencies] @@ -3291,14 +3054,14 @@ test = ["asv", "gmpy2", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeo [[package]] name = "setuptools" -version = "67.1.0" +version = "67.4.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "setuptools-67.1.0-py3-none-any.whl", hash = "sha256:a7687c12b444eaac951ea87a9627c4f904ac757e7abdc5aac32833234af90378"}, - {file = "setuptools-67.1.0.tar.gz", hash = "sha256:e261cdf010c11a41cb5cb5f1bf3338a7433832029f559a6a7614bd42a967c300"}, + {file = "setuptools-67.4.0-py3-none-any.whl", hash = "sha256:f106dee1b506dee5102cc3f3e9e68137bbad6d47b616be7991714b0c62204251"}, + {file = "setuptools-67.4.0.tar.gz", hash = "sha256:e5fd0a713141a4a105412233c63dc4e17ba0090c8e8334594ac790ec97792330"}, ] [package.extras] @@ -3344,14 +3107,14 @@ files = [ [[package]] name = "soupsieve" -version = "2.3.2.post1" +version = "2.4" description = "A modern CSS selector implementation for Beautiful Soup." category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "soupsieve-2.3.2.post1-py3-none-any.whl", hash = "sha256:3b2503d3c7084a42b1ebd08116e5f81aadfaea95863628c80a3b774a11b7c759"}, - {file = "soupsieve-2.3.2.post1.tar.gz", hash = "sha256:fc53893b3da2c33de295667a0e19f078c14bf86544af307354de5fcf12a3f30d"}, + {file = "soupsieve-2.4-py3-none-any.whl", hash = "sha256:49e5368c2cda80ee7e84da9dbe3e110b70a4575f196efb74e51b94549d921955"}, + {file = "soupsieve-2.4.tar.gz", hash = "sha256:e28dba9ca6c7c00173e34e4ba57448f0688bb681b7c5e8bf4971daafc093d69a"}, ] [[package]] @@ -3529,14 +3292,14 @@ tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"] [[package]] name = "stevedore" -version = "4.1.1" +version = "5.0.0" description = "Manage dynamic plugins for Python applications" category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "stevedore-4.1.1-py3-none-any.whl", hash = "sha256:aa6436565c069b2946fe4ebff07f5041e0c8bf18c7376dd29edf80cf7d524e4e"}, - {file = "stevedore-4.1.1.tar.gz", hash = "sha256:7f8aeb6e3f90f96832c301bff21a7eb5eefbe894c88c506483d355565d88cc1a"}, + {file = "stevedore-5.0.0-py3-none-any.whl", hash = "sha256:bd5a71ff5e5e5f5ea983880e4a1dd1bb47f8feebbb3d95b592398e2f02194771"}, + {file = "stevedore-5.0.0.tar.gz", hash = "sha256:2c428d2338976279e8eb2196f7a94910960d9f7ba2f41f3988511e95ca447021"}, ] [package.dependencies] @@ -3749,14 +3512,14 @@ test = ["black (>=22.3.0,<23.0.0)", "coverage (>=6.2,<7.0)", "isort (>=5.0.6,<6. [[package]] name = "typing-extensions" -version = "4.4.0" +version = "4.5.0" description = "Backported and Experimental Type Hints for Python 3.7+" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "typing_extensions-4.4.0-py3-none-any.whl", hash = "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e"}, - {file = "typing_extensions-4.4.0.tar.gz", hash = "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa"}, + {file = "typing_extensions-4.5.0-py3-none-any.whl", hash = "sha256:fb33085c39dd998ac16d1431ebc293a8b3eedd00fd4a32de0ff79002c19511b4"}, + {file = "typing_extensions-4.5.0.tar.gz", hash = "sha256:5cb5f4a79139d699607b3ef622a1dedafa84e115ab0024e0d9c044a9479ca7cb"}, ] [[package]] @@ -3778,24 +3541,24 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] name = "virtualenv" -version = "20.17.1" +version = "20.20.0" description = "Virtual Python Environment builder" category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "virtualenv-20.17.1-py3-none-any.whl", hash = "sha256:ce3b1684d6e1a20a3e5ed36795a97dfc6af29bc3970ca8dab93e11ac6094b3c4"}, - {file = "virtualenv-20.17.1.tar.gz", hash = "sha256:f8b927684efc6f1cc206c9db297a570ab9ad0e51c16fa9e45487d36d1905c058"}, + {file = "virtualenv-20.20.0-py3-none-any.whl", hash = "sha256:3c22fa5a7c7aa106ced59934d2c20a2ecb7f49b4130b8bf444178a16b880fa45"}, + {file = "virtualenv-20.20.0.tar.gz", hash = "sha256:a8a4b8ca1e28f864b7514a253f98c1d62b64e31e77325ba279248c65fb4fcef4"}, ] [package.dependencies] distlib = ">=0.3.6,<1" filelock = ">=3.4.1,<4" -platformdirs = ">=2.4,<3" +platformdirs = ">=2.4,<4" [package.extras] -docs = ["proselint (>=0.13)", "sphinx (>=5.3)", "sphinx-argparse (>=0.3.2)", "sphinx-rtd-theme (>=1)", "towncrier (>=22.8)"] -testing = ["coverage (>=6.2)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=21.3)", "pytest (>=7.0.1)", "pytest-env (>=0.6.2)", "pytest-freezegun (>=0.4.2)", "pytest-mock (>=3.6.1)", "pytest-randomly (>=3.10.3)", "pytest-timeout (>=2.1)"] +docs = ["furo (>=2022.12.7)", "proselint (>=0.13)", "sphinx (>=6.1.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=22.12)"] +test = ["covdefaults (>=2.2.2)", "coverage (>=7.1)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23)", "pytest (>=7.2.1)", "pytest-env (>=0.8.1)", "pytest-freezegun (>=0.4.2)", "pytest-mock (>=3.10)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)"] [[package]] name = "vulture" @@ -3812,47 +3575,6 @@ files = [ [package.dependencies] toml = "*" -[[package]] -name = "watchdog" -version = "2.2.1" -description = "Filesystem events monitoring" -category = "dev" -optional = false -python-versions = ">=3.6" -files = [ - {file = "watchdog-2.2.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a09483249d25cbdb4c268e020cb861c51baab2d1affd9a6affc68ffe6a231260"}, - {file = "watchdog-2.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5100eae58133355d3ca6c1083a33b81355c4f452afa474c2633bd2fbbba398b3"}, - {file = "watchdog-2.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e618a4863726bc7a3c64f95c218437f3349fb9d909eb9ea3a1ed3b567417c661"}, - {file = "watchdog-2.2.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:102a60093090fc3ff76c983367b19849b7cc24ec414a43c0333680106e62aae1"}, - {file = "watchdog-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:748ca797ff59962e83cc8e4b233f87113f3cf247c23e6be58b8a2885c7337aa3"}, - {file = "watchdog-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6ccd8d84b9490a82b51b230740468116b8205822ea5fdc700a553d92661253a3"}, - {file = "watchdog-2.2.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:6e01d699cd260d59b84da6bda019dce0a3353e3fcc774408ae767fe88ee096b7"}, - {file = "watchdog-2.2.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8586d98c494690482c963ffb24c49bf9c8c2fe0589cec4dc2f753b78d1ec301d"}, - {file = "watchdog-2.2.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:adaf2ece15f3afa33a6b45f76b333a7da9256e1360003032524d61bdb4c422ae"}, - {file = "watchdog-2.2.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:83a7cead445008e880dbde833cb9e5cc7b9a0958edb697a96b936621975f15b9"}, - {file = "watchdog-2.2.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f8ac23ff2c2df4471a61af6490f847633024e5aa120567e08d07af5718c9d092"}, - {file = "watchdog-2.2.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d0f29fd9f3f149a5277929de33b4f121a04cf84bb494634707cfa8ea8ae106a8"}, - {file = "watchdog-2.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:967636031fa4c4955f0f3f22da3c5c418aa65d50908d31b73b3b3ffd66d60640"}, - {file = "watchdog-2.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:96cbeb494e6cbe3ae6aacc430e678ce4b4dd3ae5125035f72b6eb4e5e9eb4f4e"}, - {file = "watchdog-2.2.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:61fdb8e9c57baf625e27e1420e7ca17f7d2023929cd0065eb79c83da1dfbeacd"}, - {file = "watchdog-2.2.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:4cb5ecc332112017fbdb19ede78d92e29a8165c46b68a0b8ccbd0a154f196d5e"}, - {file = "watchdog-2.2.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a480d122740debf0afac4ddd583c6c0bb519c24f817b42ed6f850e2f6f9d64a8"}, - {file = "watchdog-2.2.1-py3-none-manylinux2014_aarch64.whl", hash = "sha256:978a1aed55de0b807913b7482d09943b23a2d634040b112bdf31811a422f6344"}, - {file = "watchdog-2.2.1-py3-none-manylinux2014_armv7l.whl", hash = "sha256:8c28c23972ec9c524967895ccb1954bc6f6d4a557d36e681a36e84368660c4ce"}, - {file = "watchdog-2.2.1-py3-none-manylinux2014_i686.whl", hash = "sha256:c27d8c1535fd4474e40a4b5e01f4ba6720bac58e6751c667895cbc5c8a7af33c"}, - {file = "watchdog-2.2.1-py3-none-manylinux2014_ppc64.whl", hash = "sha256:d6b87477752bd86ac5392ecb9eeed92b416898c30bd40c7e2dd03c3146105646"}, - {file = "watchdog-2.2.1-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:cece1aa596027ff56369f0b50a9de209920e1df9ac6d02c7f9e5d8162eb4f02b"}, - {file = "watchdog-2.2.1-py3-none-manylinux2014_s390x.whl", hash = "sha256:8b5cde14e5c72b2df5d074774bdff69e9b55da77e102a91f36ef26ca35f9819c"}, - {file = "watchdog-2.2.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:e038be858425c4f621900b8ff1a3a1330d9edcfeaa1c0468aeb7e330fb87693e"}, - {file = "watchdog-2.2.1-py3-none-win32.whl", hash = "sha256:bc43c1b24d2f86b6e1cc15f68635a959388219426109233e606517ff7d0a5a73"}, - {file = "watchdog-2.2.1-py3-none-win_amd64.whl", hash = "sha256:17f1708f7410af92ddf591e94ae71a27a13974559e72f7e9fde3ec174b26ba2e"}, - {file = "watchdog-2.2.1-py3-none-win_ia64.whl", hash = "sha256:195ab1d9d611a4c1e5311cbf42273bc541e18ea8c32712f2fb703cfc6ff006f9"}, - {file = "watchdog-2.2.1.tar.gz", hash = "sha256:cdcc23c9528601a8a293eb4369cbd14f6b4f34f07ae8769421252e9c22718b6f"}, -] - -[package.extras] -watchmedo = ["PyYAML (>=3.10)"] - [[package]] name = "wcwidth" version = "0.2.6" @@ -3877,36 +3599,21 @@ files = [ {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, ] -[[package]] -name = "yaspin" -version = "2.3.0" -description = "Yet Another Terminal Spinner" -category = "dev" -optional = false -python-versions = ">=3.7.2,<4.0.0" -files = [ - {file = "yaspin-2.3.0-py3-none-any.whl", hash = "sha256:17b5548479b3d5b30adec7a87ffcdcddb403d14a2bb86fbcee97f37951e13427"}, - {file = "yaspin-2.3.0.tar.gz", hash = "sha256:547afd1a9700ac3a29a9f5591c70343bef186ed5dfb5e545a9bb0c77e561a1c9"}, -] - -[package.dependencies] -termcolor = ">=2.2,<3.0" - [[package]] name = "zipp" -version = "3.12.0" +version = "3.15.0" description = "Backport of pathlib-compatible object wrapper for zip files" -category = "dev" +category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "zipp-3.12.0-py3-none-any.whl", hash = "sha256:9eb0a4c5feab9b08871db0d672745b53450d7f26992fd1e4653aa43345e97b86"}, - {file = "zipp-3.12.0.tar.gz", hash = "sha256:73efd63936398aac78fd92b6f4865190119d6c91b531532e798977ea8dd402eb"}, + {file = "zipp-3.15.0-py3-none-any.whl", hash = "sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556"}, + {file = "zipp-3.15.0.tar.gz", hash = "sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b"}, ] [package.extras] docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] +testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] [extras] drawing = ["matplotlib", "networkx"] @@ -3915,4 +3622,4 @@ mkl = ["mkl-devel"] [metadata] lock-version = "2.0" python-versions = ">=3.9, <3.11" -content-hash = "46a21aee3dd3052a9c29b744654260e191023a8cb6dc57688a8c940784e9f66e" +content-hash = "5038fe9df7bc3a6d02c7e9b2bea1d51eeb78b778a5834731573f4f511531ee6f" From ca82f80e1ff6579e20d7c7cec010a55948347fec Mon Sep 17 00:00:00 2001 From: taolin Date: Thu, 2 Mar 2023 16:08:41 +0800 Subject: [PATCH 84/92] ci: update action ver --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0d5cc0cf..324c3b0e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -34,7 +34,7 @@ jobs: - name: Build and push id: docker_build - uses: docker/build-push-action@v3 + uses: docker/build-push-action@v4 with: cache-from: type=gha cache-to: type=gha,mode=max From 40ec4614ffc8b8b5ed49edeca9ff7697b3a6fbfa Mon Sep 17 00:00:00 2001 From: taolin Date: Thu, 2 Mar 2023 16:08:59 +0800 Subject: [PATCH 85/92] build: update dev dependency --- poetry.lock | 10 +++++----- pyproject.toml | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/poetry.lock b/poetry.lock index dd0059ee..4af64d5b 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2372,14 +2372,14 @@ files = [ [[package]] name = "pre-commit" -version = "2.21.0" +version = "3.1.1" description = "A framework for managing and maintaining multi-language pre-commit hooks." category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pre_commit-2.21.0-py2.py3-none-any.whl", hash = "sha256:e2f91727039fc39a92f58a588a25b87f936de6567eed4f0e673e0507edc75bad"}, - {file = "pre_commit-2.21.0.tar.gz", hash = "sha256:31ef31af7e474a8d8995027fefdfcf509b5c913ff31f2015b4ec4beb26a6f658"}, + {file = "pre_commit-3.1.1-py2.py3-none-any.whl", hash = "sha256:b80254e60668e1dd1f5c03a1c9e0413941d61f568a57d745add265945f65bfe8"}, + {file = "pre_commit-3.1.1.tar.gz", hash = "sha256:d63e6537f9252d99f65755ae5b79c989b462d511ebbc481b561db6a297e1e865"}, ] [package.dependencies] @@ -3622,4 +3622,4 @@ mkl = ["mkl-devel"] [metadata] lock-version = "2.0" python-versions = ">=3.9, <3.11" -content-hash = "5038fe9df7bc3a6d02c7e9b2bea1d51eeb78b778a5834731573f4f511531ee6f" +content-hash = "9bf484f64ad4a2486e4917622553149a27b29147286c4324ef20bfae7cfd011b" diff --git a/pyproject.toml b/pyproject.toml index eb68dac1..8776ce8d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,7 +32,7 @@ mkl = ["mkl-devel"] # (https://github.com/tanlin2013/tnpy/issues/5) drawing = ["matplotlib", "networkx"] [tool.poetry.group.dev.dependencies] -pre-commit = "^2.19.0" +pre-commit = "^3.0.0" commitizen = "^2.35.0" vulture = "^2.4" bandit = "^1.7.4" From fc4109eba8f430f6f15762724a8a77ddbcfc6b28 Mon Sep 17 00:00:00 2001 From: taolin Date: Thu, 2 Mar 2023 16:10:23 +0800 Subject: [PATCH 86/92] build: evolve template --- .cruft.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cruft.json b/.cruft.json index 6f145e5c..f48cd683 100644 --- a/.cruft.json +++ b/.cruft.json @@ -1,6 +1,6 @@ { "template": "https://github.com/tanlin2013/cookiecutter-python/", - "commit": "e5b8e103da6de7df44600e33b4b4535bb285bb53", + "commit": "52658e95ca943b42a87527253e70981d67d61512", "checkout": null, "context": { "cookiecutter": { From a9fbf79b83cee0fbe6b7fcba0a3e6a226d68dbe5 Mon Sep 17 00:00:00 2001 From: taolin Date: Thu, 2 Mar 2023 16:23:07 +0800 Subject: [PATCH 87/92] style: reformatted by black, isort --- tnpy/finite_dmrg.py | 36 +++++++++++---------------------- tnpy/finite_tdvp.py | 12 ++--------- tnpy/linalg.py | 6 ++---- tnpy/matrix_product_state.py | 26 +++++++----------------- tnpy/model/__init__.py | 8 ++++---- tnpy/model/dimer_xxz.py | 2 +- tnpy/model/model_1d.py | 2 ++ tnpy/model/random_heisenberg.py | 6 ++---- tnpy/model/thirring.py | 10 +++------ tnpy/model/transverse_ising.py | 2 +- tnpy/model/utils.py | 1 + tnpy/model/xxz.py | 2 +- 12 files changed, 38 insertions(+), 75 deletions(-) diff --git a/tnpy/finite_dmrg.py b/tnpy/finite_dmrg.py index 276412dc..d4788e1f 100644 --- a/tnpy/finite_dmrg.py +++ b/tnpy/finite_dmrg.py @@ -1,22 +1,22 @@ import time -from enum import Enum from datetime import timedelta -from itertools import cycle +from enum import Enum from functools import partial -from typing import Tuple, List +from itertools import cycle +from typing import List, Tuple import numpy as np from quimb.tensor import rand_uuid from tnpy import logger from tnpy.linalg import eigh, eigshmv -from tnpy.operators import MatrixProductOperator from tnpy.matrix_product_state import ( - MatrixProductState, - Environment, Direction, + Environment, + MatrixProductState, MatrixProductStateMeasurements, ) +from tnpy.operators import MatrixProductOperator class Metric(Enum): @@ -94,9 +94,7 @@ def phys_dim(self) -> int: def variance(self) -> float: return self._env.variance() - def one_site_solver( - self, site: int, tol: float = 1e-8, **kwargs - ) -> Tuple[float, np.ndarray]: + def one_site_solver(self, site: int, tol: float = 1e-8, **kwargs) -> Tuple[float, np.ndarray]: """ Args: @@ -110,9 +108,7 @@ def one_site_solver( v0 = self.mps[site].data.reshape(-1, 1) if v0.size < self._exact_solver_dim: return eigh(self._env.one_site_full_matrix(site)) # type: ignore - return eigshmv( - self._env.one_site_matvec(site), v0=v0, tol=tol, **kwargs - ) # type: ignore + return eigshmv(self._env.one_site_matvec(site), v0=v0, tol=tol, **kwargs) # type: ignore def two_site_solver(self, site: int, tol: float = 1e-8, **kwargs): return NotImplemented @@ -174,9 +170,7 @@ def sweep( self._env.update(site, direction=direction) return energy - def _converged( - self, n_sweep: int, tol: float, max_sweep: int, metric: Metric - ) -> bool: + def _converged(self, n_sweep: int, tol: float, max_sweep: int, metric: Metric) -> bool: """ Helper function for checking the convergence. @@ -191,9 +185,7 @@ def _converged( """ def stopping_criterion(gradient: float) -> bool: - logger.info( - f"Metric {metric.name} is lowered by {gradient:e} " f"in this sweep." - ) + logger.info(f"Metric {metric.name} is lowered by {gradient:e} " f"in this sweep.") if abs(gradient) < tol: logger.info(f"Reaching set tolerance {tol}, stop sweeping.") return True @@ -241,9 +233,7 @@ def run( A record of energies computed on each sweep. """ clock = [time.process_time()] - converged = partial( - self._converged, tol=tol, max_sweep=max_sweep, metric=metric - ) + converged = partial(self._converged, tol=tol, max_sweep=max_sweep, metric=metric) logger.info( f"Set tolerance = {tol} to metric {metric.name}," f" up to maximally {max_sweep} sweeps." @@ -348,9 +338,7 @@ def gen_array(site: int) -> np.ndarray: [gen_array(site) for site in range(self.n_sites)], shape="lpr" ) - def one_site_solver( - self, site: int, tol: float = 1e-8, **kwargs - ) -> Tuple[float, np.ndarray]: + def one_site_solver(self, site: int, tol: float = 1e-8, **kwargs) -> Tuple[float, np.ndarray]: v0 = self.mps[site].data.reshape(-1, 1) if v0.size < self._exact_solver_dim: return eigh( diff --git a/tnpy/finite_tdvp.py b/tnpy/finite_tdvp.py index 5f62fc5c..636a0ca3 100644 --- a/tnpy/finite_tdvp.py +++ b/tnpy/finite_tdvp.py @@ -92,11 +92,7 @@ def sweep(self, iterator, t_span): self._update_left_env(site + 1) self._update_left_norm(site + 1) if site < self.N - 1: - C = Node( - self._unit_solver(Evolve.BACKWARD, t_span, site).reshape( - r.shape - ) - ) + C = Node(self._unit_solver(Evolve.BACKWARD, t_span, site).reshape(r.shape)) Mp = self._mps.nodes[site + 1] C[1] ^ Mp[0] self._mps.nodes[site + 1] = C @ Mp @@ -106,11 +102,7 @@ def sweep(self, iterator, t_span): self._update_right_env(site - 1) self._update_right_norm(site - 1) if site > 0: - C = Node( - self._unit_solver(Evolve.BACKWARD, t_span, site - 1).reshape( - q.shape - ) - ) + C = Node(self._unit_solver(Evolve.BACKWARD, t_span, site - 1).reshape(q.shape)) Mp = self._mps.nodes[site - 1] Mp[2] ^ C[0] # @TODO: measure something here to check the status of mps diff --git a/tnpy/linalg.py b/tnpy/linalg.py index bd265681..07d125a0 100644 --- a/tnpy/linalg.py +++ b/tnpy/linalg.py @@ -1,7 +1,7 @@ from typing import Tuple -import primme import numpy as np +import primme import scipy.linalg as spla from scipy.sparse.linalg import LinearOperator @@ -83,7 +83,5 @@ def eigshmv( Returns: """ - evals, evecs = primme.eigsh( - linear_operator, v0=v0, k=k, which=which, tol=tol, **kwargs - ) + evals, evecs = primme.eigsh(linear_operator, v0=v0, k=k, which=which, tol=tol, **kwargs) return (evals[0], evecs) if k == 1 else (evals, evecs) diff --git a/tnpy/matrix_product_state.py b/tnpy/matrix_product_state.py index 326deb09..e12fe940 100644 --- a/tnpy/matrix_product_state.py +++ b/tnpy/matrix_product_state.py @@ -12,7 +12,7 @@ from tqdm import tqdm from tnpy import logger -from tnpy.linalg import svd, LinearOperator +from tnpy.linalg import LinearOperator, svd from tnpy.operators import MatrixProductOperator @@ -90,9 +90,7 @@ def permute_arrays(self, shape: str = "lrp"): inds = [inds[s] for s in shape if s in inds] # type: ignore self[i].transpose_(*inds) - def conj( - self, mangle_inner: bool = False, mangle_outer: bool = False - ) -> MatrixProductState: + def conj(self, mangle_inner: bool = False, mangle_outer: bool = False) -> MatrixProductState: """ Create a conjugated copy of this :class:`~MatrixProductState` instance. @@ -109,9 +107,7 @@ def conj( """ mps = super().conj() if mangle_inner: - mps.reindex( - {ind: qtn.rand_uuid() for ind in mps.inner_inds()}, inplace=True - ) + mps.reindex({ind: qtn.rand_uuid() for ind in mps.inner_inds()}, inplace=True) if mangle_outer: mps.reindex( {ind: re.sub(r"^k(\d+)", r"b\1", ind) for ind in mps.outer_inds()}, @@ -132,9 +128,7 @@ def save(self, filename: str): """ # @TODO: solve ordering issue - tensor_datasets = { - self.site_tag(site): self[site].data for site in range(self.nsites) - } + tensor_datasets = {self.site_tag(site): self[site].data for site in range(self.nsites)} filepath = Path(filename) extension = filepath.suffix if extension == ".hdf5": @@ -174,9 +168,7 @@ def load(cls, filename: str) -> MatrixProductState: raise ValueError(f"File extension {extension} is not supported.") @classmethod - def random( - cls, n: int, bond_dim: int, phys_dim: int, **kwargs - ) -> MatrixProductState: + def random(cls, n: int, bond_dim: int, phys_dim: int, **kwargs) -> MatrixProductState: """ Create a randomly initialized :class:`~MatrixProductState`. @@ -254,9 +246,7 @@ def __init__(self, mpo: MatrixProductOperator, mps: MatrixProductState): self._right: Dict[int, qtn.Tensor] = {} for site in tqdm(range(1, self.n_sites), desc="Initializing left environments"): self.update_left(site) - for site in tqdm( - range(self.n_sites - 2, -1, -1), desc="Initializing right environments" - ): + for site in tqdm(range(self.n_sites - 2, -1, -1), desc="Initializing right environments"): self.update_right(site) def close(self): @@ -447,9 +437,7 @@ def matvec(x: np.ndarray) -> np.ndarray: ] return tn.contract(output_inds=output_inds).data.reshape(-1, 1) - return LinearOperator( - shape=(self.mps[site].size, self.mps[site].size), matvec=matvec - ) + return LinearOperator(shape=(self.mps[site].size, self.mps[site].size), matvec=matvec) class MatrixProductStateMeasurements: diff --git a/tnpy/model/__init__.py b/tnpy/model/__init__.py index 8adba3d2..db8a97a7 100644 --- a/tnpy/model/__init__.py +++ b/tnpy/model/__init__.py @@ -1,10 +1,10 @@ +from tnpy.model.dimer_xxz import DimerXXZ from tnpy.model.model_1d import Model1D -from tnpy.model.total_sz import TotalSz -from tnpy.model.xxz import XXZ -from tnpy.model.thirring import Thirring from tnpy.model.random_heisenberg import RandomHeisenberg -from tnpy.model.dimer_xxz import DimerXXZ +from tnpy.model.thirring import Thirring +from tnpy.model.total_sz import TotalSz from tnpy.model.transverse_ising import TransverseIsing +from tnpy.model.xxz import XXZ __all__ = [ "Model1D", diff --git a/tnpy/model/dimer_xxz.py b/tnpy/model/dimer_xxz.py index 3723fb06..b0ed5e8c 100644 --- a/tnpy/model/dimer_xxz.py +++ b/tnpy/model/dimer_xxz.py @@ -1,8 +1,8 @@ import numpy as np -from tnpy.operators import SpinOperators from tnpy.model.model_1d import Model1D from tnpy.model.utils import boundary_vectors, minors_if_no_penalty +from tnpy.operators import SpinOperators class DimerXXZ(Model1D): diff --git a/tnpy/model/model_1d.py b/tnpy/model/model_1d.py index 2dd3b666..f6c40b57 100644 --- a/tnpy/model/model_1d.py +++ b/tnpy/model/model_1d.py @@ -1,5 +1,7 @@ import abc + import numpy as np + from tnpy.operators import MatrixProductOperator diff --git a/tnpy/model/random_heisenberg.py b/tnpy/model/random_heisenberg.py index 1be3929f..77906957 100644 --- a/tnpy/model/random_heisenberg.py +++ b/tnpy/model/random_heisenberg.py @@ -1,8 +1,8 @@ import numpy as np -from tnpy.operators import SpinOperators from tnpy.model.model_1d import Model1D from tnpy.model.utils import boundary_vectors, minors_if_no_penalty +from tnpy.operators import SpinOperators class RandomHeisenberg(Model1D): @@ -86,9 +86,7 @@ def trial_id(self) -> str | None: def _elem(self, site: int) -> np.ndarray: Sp, Sm, Sz, I2, O2 = SpinOperators() - alpha = ( - self.penalty * (0.25 + self.s_target**2 / self.n) - self.offset / self.n - ) + alpha = self.penalty * (0.25 + self.s_target**2 / self.n) - self.offset / self.n beta = self._random_sequence[site] - 2.0 * self.penalty * self.s_target return np.array( diff --git a/tnpy/model/thirring.py b/tnpy/model/thirring.py index 81b2cc37..a7fca30a 100644 --- a/tnpy/model/thirring.py +++ b/tnpy/model/thirring.py @@ -1,14 +1,12 @@ import numpy as np -from tnpy.operators import SpinOperators from tnpy.model.model_1d import Model1D from tnpy.model.utils import boundary_vectors, minors_if_no_penalty +from tnpy.operators import SpinOperators class Thirring(Model1D): - def __init__( - self, n: int, delta: float, ma: float, penalty: float, s_target: int - ) -> None: + def __init__(self, n: int, delta: float, ma: float, penalty: float, s_target: int) -> None: r""" The Hamiltonian @@ -44,9 +42,7 @@ def __init__( def _elem(self, site: int) -> np.ndarray: Sp, Sm, Sz, I2, O2 = SpinOperators() - beta = ( - self.delta + ((-1.0) ** site * self.ma) - 2.0 * self.penalty * self.s_target - ) + beta = self.delta + ((-1.0) ** site * self.ma) - 2.0 * self.penalty * self.s_target gamma = self.penalty * (0.25 + self.s_target**2 / self.n) + 0.25 * self.delta return np.array( diff --git a/tnpy/model/transverse_ising.py b/tnpy/model/transverse_ising.py index 460e40ee..bc296acd 100644 --- a/tnpy/model/transverse_ising.py +++ b/tnpy/model/transverse_ising.py @@ -1,8 +1,8 @@ import numpy as np -from tnpy.operators import SpinOperators from tnpy.model.model_1d import Model1D from tnpy.model.utils import boundary_vectors +from tnpy.operators import SpinOperators class TransverseIsing(Model1D): diff --git a/tnpy/model/utils.py b/tnpy/model/utils.py index e192eba2..26b86932 100644 --- a/tnpy/model/utils.py +++ b/tnpy/model/utils.py @@ -1,5 +1,6 @@ from functools import wraps from typing import Callable + import numpy as np diff --git a/tnpy/model/xxz.py b/tnpy/model/xxz.py index 36a86203..625cb045 100644 --- a/tnpy/model/xxz.py +++ b/tnpy/model/xxz.py @@ -1,8 +1,8 @@ import numpy as np -from tnpy.operators import SpinOperators from tnpy.model.model_1d import Model1D from tnpy.model.utils import boundary_vectors +from tnpy.operators import SpinOperators class XXZ(Model1D): From 6a4a543a81a69323a7ba2e7b765086cbd765720c Mon Sep 17 00:00:00 2001 From: taolin Date: Thu, 2 Mar 2023 16:23:48 +0800 Subject: [PATCH 88/92] refactor: rm config through toml file --- tnpy/__init__.py | 13 ------------- tnpy/config.toml | 10 ---------- 2 files changed, 23 deletions(-) delete mode 100644 tnpy/config.toml diff --git a/tnpy/__init__.py b/tnpy/__init__.py index 9f81eda2..070f3504 100644 --- a/tnpy/__init__.py +++ b/tnpy/__init__.py @@ -1,8 +1,5 @@ import logging from importlib import metadata -from pathlib import Path - -import toml # tomllib is coming out on python 3.11 as standard lib # -- Version ----------------------------------------------------------------- @@ -21,13 +18,3 @@ logger = logging.getLogger("tnpy") logger.setLevel(logging.INFO) logger.addHandler(handler) - - -# -- Load configurations from toml file -------------------------------------- -class ConfigReader: - def __init__(self, file): - self.__dict__.update(**toml.load(file)) - - -with open(Path(__file__).absolute().parent / "config.toml", "r", encoding="utf-8") as f: - config = ConfigReader(f) diff --git a/tnpy/config.toml b/tnpy/config.toml deleted file mode 100644 index 40b8a3f5..00000000 --- a/tnpy/config.toml +++ /dev/null @@ -1,10 +0,0 @@ -[MatrixProductOperator] -phys_dim_on_bond = 0 - -[FullHamiltonian] -max_resource_dim = 4096 - -[FiniteDMRG] -exact_solver_dim = 200 -best_n_sweeps = 3 -max_sweep_dump_mps = true From 0cba9b69fa1cb96f8403c5ec383532f12eb1cabe Mon Sep 17 00:00:00 2001 From: taolin Date: Thu, 2 Mar 2023 16:24:09 +0800 Subject: [PATCH 89/92] fix: inconsistency with base class --- tnpy/finite_dmrg.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tnpy/finite_dmrg.py b/tnpy/finite_dmrg.py index d4788e1f..10d2822e 100644 --- a/tnpy/finite_dmrg.py +++ b/tnpy/finite_dmrg.py @@ -398,7 +398,6 @@ def measurements(self) -> MatrixProductStateMeasurements: raise RuntimeError("FiniteDMRG is probably not executed yet.") return MatrixProductStateMeasurements(self.restored_mps) - @property def variance(self) -> float: tn = ( self.restored_mps From 3219df22d6af3a92e57be44892154f91557c5e79 Mon Sep 17 00:00:00 2001 From: taolin Date: Thu, 2 Mar 2023 16:32:15 +0800 Subject: [PATCH 90/92] style: reformatted by back, isort --- tests/model/test_random_heisenberg.py | 17 ++-- tests/model/test_total_sz.py | 3 +- tests/test_exact_diagonalization.py | 4 +- tests/test_finite_dmrg.py | 10 +- tests/test_matrix_product_state.py | 12 +-- tests/test_operators.py | 139 +++++++++++--------------- tests/test_tsdrg.py | 42 +++----- 7 files changed, 89 insertions(+), 138 deletions(-) diff --git a/tests/model/test_random_heisenberg.py b/tests/model/test_random_heisenberg.py index 5afeb5e9..cfab2d36 100644 --- a/tests/model/test_random_heisenberg.py +++ b/tests/model/test_random_heisenberg.py @@ -1,29 +1,26 @@ -import pytest import numpy as np +import pytest from tnpy.model import RandomHeisenberg from tnpy.operators import FullHamiltonian class TestRandomHeisenberg: - - @pytest.fixture(scope='class') + @pytest.fixture(scope="class") def model(self): return RandomHeisenberg(n=6, h=0.5, seed=2022) - @pytest.fixture(scope='class') + @pytest.fixture(scope="class") def offset(self): return 0.5 - @pytest.fixture(scope='class') + @pytest.fixture(scope="class") def shifted_model(self, model, offset): - return RandomHeisenberg( - n=model.n, h=model.h, seed=model.seed, offset=offset - ) + return RandomHeisenberg(n=model.n, h=model.h, seed=model.seed, offset=offset) def test_offset(self, model, offset, shifted_model): np.testing.assert_allclose( - FullHamiltonian(model.mpo).matrix - offset * np.eye(2 ** model.n), + FullHamiltonian(model.mpo).matrix - offset * np.eye(2**model.n), FullHamiltonian(shifted_model.mpo).matrix, - atol=1e-12 + atol=1e-12, ) diff --git a/tests/model/test_total_sz.py b/tests/model/test_total_sz.py index 46d66723..90d6bfe7 100644 --- a/tests/model/test_total_sz.py +++ b/tests/model/test_total_sz.py @@ -1,6 +1,5 @@ -import pytest - import numpy as np +import pytest from tnpy.model import TotalSz from tnpy.operators import FullHamiltonian diff --git a/tests/test_exact_diagonalization.py b/tests/test_exact_diagonalization.py index 6b44a66b..3d317edc 100644 --- a/tests/test_exact_diagonalization.py +++ b/tests/test_exact_diagonalization.py @@ -1,9 +1,9 @@ -import pytest import numpy as np +import pytest import scipy.linalg as spla -from tnpy.model import RandomHeisenberg from tnpy.exact_diagonalization import ExactDiagonalization +from tnpy.model import RandomHeisenberg from tnpy.operators import FullHamiltonian diff --git a/tests/test_finite_dmrg.py b/tests/test_finite_dmrg.py index 23e89257..75b3ee09 100644 --- a/tests/test_finite_dmrg.py +++ b/tests/test_finite_dmrg.py @@ -1,5 +1,5 @@ -import pytest import numpy as np +import pytest from tnpy.exact_diagonalization import ExactDiagonalization from tnpy.finite_dmrg import FiniteDMRG, ShiftInvertDMRG @@ -38,9 +38,7 @@ def ed(self, model): @pytest.fixture(scope="function") def sidmrg(self, model, offset): - shifted_model = RandomHeisenberg( - n=model.n, h=model.h, seed=model.seed, offset=offset - ) + shifted_model = RandomHeisenberg(n=model.n, h=model.h, seed=model.seed, offset=offset) return ShiftInvertDMRG(shifted_model.mpo, bond_dim=2**6, offset=offset) @pytest.fixture(scope="class") @@ -61,9 +59,7 @@ def test_run(self, ed, sidmrg, nearest_eval): def test_restored_mps(self, sidmrg, nearest_evec): sidmrg.run(tol=1e-8) restored_vec = ( - sidmrg.restored_mps.contract() - .fuse({"k": sidmrg.restored_mps.outer_inds()}) - .data + sidmrg.restored_mps.contract().fuse({"k": sidmrg.restored_mps.outer_inds()}).data ) # Note: They can differ up to a global phase (+1 or -1) if not np.allclose(restored_vec, nearest_evec, atol=1e-6): diff --git a/tests/test_matrix_product_state.py b/tests/test_matrix_product_state.py index 00081314..90caa246 100644 --- a/tests/test_matrix_product_state.py +++ b/tests/test_matrix_product_state.py @@ -1,11 +1,11 @@ import os from contextlib import nullcontext as does_not_raise -import pytest import numpy as np +import pytest +from tnpy.matrix_product_state import Direction, Environment, MatrixProductState from tnpy.model import RandomHeisenberg -from tnpy.matrix_product_state import Direction, MatrixProductState, Environment class Helper: @@ -84,9 +84,7 @@ def test_load(self, filename, expectation): def test_split_tensor(self, site, mps): two_site_mps = mps[site] @ mps[site + 1] mps.split_tensor(site, direction=Direction.RIGHTWARD) - np.testing.assert_allclose( - two_site_mps.data, (mps[site] @ mps[site + 1]).data, atol=1e-12 - ) + np.testing.assert_allclose(two_site_mps.data, (mps[site] @ mps[site + 1]).data, atol=1e-12) assert mps[site].tags == {f"I{site}"} assert mps[site + 1].tags == {f"I{site + 1}"} @@ -95,9 +93,7 @@ class TestEnvironment: @pytest.fixture(scope="class") def env(self): model = RandomHeisenberg(n=6, h=0, penalty=100.0) - return Environment( - model.mpo, MatrixProductState.random(n=model.n, bond_dim=16, phys_dim=2) - ) + return Environment(model.mpo, MatrixProductState.random(n=model.n, bond_dim=16, phys_dim=2)) def test_left(self, env): print(env.mps) diff --git a/tests/test_operators.py b/tests/test_operators.py index f54bee82..6588d632 100644 --- a/tests/test_operators.py +++ b/tests/test_operators.py @@ -1,36 +1,23 @@ -import pytest import numpy as np +import pytest -from tnpy.operators import SpinOperators, FullHamiltonian from tnpy.model import XXZ, RandomHeisenberg +from tnpy.operators import FullHamiltonian, SpinOperators class TestSpinOperators: - def test_spin_half_ops(self): spin_half_ops = SpinOperators() np.testing.assert_array_equal( - np.array( - [[0, 1], - [1, 0]] - ), - spin_half_ops.Sp + spin_half_ops.Sm + np.array([[0, 1], [1, 0]]), spin_half_ops.Sp + spin_half_ops.Sm ) np.testing.assert_array_equal( - np.array( - [[0, -1j], - [1j, 0]] - ), - -1j * (spin_half_ops.Sp - spin_half_ops.Sm) + np.array([[0, -1j], [1j, 0]]), -1j * (spin_half_ops.Sp - spin_half_ops.Sm) ) class TestMatrixProductOperator: - - @pytest.mark.parametrize("model", [ - RandomHeisenberg(n=4, h=0), - RandomHeisenberg(n=4, h=0.5) - ]) + @pytest.mark.parametrize("model", [RandomHeisenberg(n=4, h=0), RandomHeisenberg(n=4, h=0.5)]) def test_square(self, model): bilayer_mpo = model.mpo.square() assert bilayer_mpo[0].shape == (25, 2, 2) @@ -38,74 +25,69 @@ def test_square(self, model): assert bilayer_mpo[2].shape == (25, 25, 2, 2) assert bilayer_mpo[3].shape == (25, 2, 2) ham = FullHamiltonian(model.mpo).matrix - np.testing.assert_allclose( - ham @ ham, - FullHamiltonian(bilayer_mpo).matrix, - atol=1e-12 - ) + np.testing.assert_allclose(ham @ ham, FullHamiltonian(bilayer_mpo).matrix, atol=1e-12) @pytest.mark.parametrize("n", [2, 4, 6]) @pytest.mark.parametrize("h", [0, 0.5, 1]) def test_multiply_scalar(self, n, h): mpo = RandomHeisenberg(n=n, h=h).mpo np.testing.assert_array_equal( - -1 * FullHamiltonian(mpo).matrix, - FullHamiltonian(-1 * mpo).matrix + -1 * FullHamiltonian(mpo).matrix, FullHamiltonian(-1 * mpo).matrix ) class TestFullHamiltonian: - - @pytest.fixture(scope='class', params=[ - { - "n": 2, - "ham": FullHamiltonian(RandomHeisenberg(n=2, h=0).mpo), - "data": np.array( - [[0.25, 0, 0, 0], - [0, -0.25, 0.5, 0], - [0, 0.5, -0.25, 0], - [0, 0, 0, 0.25]] - ) - }, - { - "n": 3, - "ham": FullHamiltonian(RandomHeisenberg(n=3, h=0).mpo), - "data": np.array( - [[0.5, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0.5, 0, 0, 0, 0, 0], - [0, 0.5, -0.5, 0, 0.5, 0, 0, 0], - [0, 0, 0, 0, 0, 0.5, 0, 0], - [0, 0, 0.5, 0, 0, 0, 0, 0], - [0, 0, 0, 0.5, 0, -0.5, 0.5, 0], - [0, 0, 0, 0, 0, 0.5, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0.5]] - ) - }, - { - "n": 2, - "ham": FullHamiltonian(XXZ(n=2, delta=0.5).mpo), - "data": np.array( - [[-0.125, 0, 0, 0], - [0, 0.125, -0.5, 0], - [0, -0.5, 0.125, 0], - [0, 0, 0, -0.125]] - ) - }, - { - "n": 3, - "ham": FullHamiltonian(XXZ(n=3, delta=0.5).mpo), - "data": np.array( - [[-0.25, 0, 0, 0, 0, 0, 0, 0], - [0, 0, -0.5, 0, 0, 0, 0, 0], - [0, -0.5, 0.25, 0, -0.5, 0, 0, 0], - [0, 0, 0, 0, 0, -0.5, 0, 0], - [0, 0, -0.5, 0, 0, 0, 0, 0], - [0, 0, 0, -0.5, 0, 0.25, -0.5, 0], - [0, 0, 0, 0, 0, -0.5, 0, 0], - [0, 0, 0, 0, 0, 0, 0, -0.25]] - ) - } - ]) + @pytest.fixture( + scope="class", + params=[ + { + "n": 2, + "ham": FullHamiltonian(RandomHeisenberg(n=2, h=0).mpo), + "data": np.array( + [[0.25, 0, 0, 0], [0, -0.25, 0.5, 0], [0, 0.5, -0.25, 0], [0, 0, 0, 0.25]] + ), + }, + { + "n": 3, + "ham": FullHamiltonian(RandomHeisenberg(n=3, h=0).mpo), + "data": np.array( + [ + [0.5, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0.5, 0, 0, 0, 0, 0], + [0, 0.5, -0.5, 0, 0.5, 0, 0, 0], + [0, 0, 0, 0, 0, 0.5, 0, 0], + [0, 0, 0.5, 0, 0, 0, 0, 0], + [0, 0, 0, 0.5, 0, -0.5, 0.5, 0], + [0, 0, 0, 0, 0, 0.5, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0.5], + ] + ), + }, + { + "n": 2, + "ham": FullHamiltonian(XXZ(n=2, delta=0.5).mpo), + "data": np.array( + [[-0.125, 0, 0, 0], [0, 0.125, -0.5, 0], [0, -0.5, 0.125, 0], [0, 0, 0, -0.125]] + ), + }, + { + "n": 3, + "ham": FullHamiltonian(XXZ(n=3, delta=0.5).mpo), + "data": np.array( + [ + [-0.25, 0, 0, 0, 0, 0, 0, 0], + [0, 0, -0.5, 0, 0, 0, 0, 0], + [0, -0.5, 0.25, 0, -0.5, 0, 0, 0], + [0, 0, 0, 0, 0, -0.5, 0, 0], + [0, 0, -0.5, 0, 0, 0, 0, 0], + [0, 0, 0, -0.5, 0, 0.25, -0.5, 0], + [0, 0, 0, 0, 0, -0.5, 0, 0], + [0, 0, 0, 0, 0, 0, 0, -0.25], + ] + ), + }, + ], + ) def model(self, request): return request.param @@ -113,7 +95,4 @@ def test_n_sites(self, model): assert model["ham"].n_sites == model["n"] def test_matrix(self, model): - np.testing.assert_array_equal( - model["ham"].matrix, - model["data"] - ) + np.testing.assert_array_equal(model["ham"].matrix, model["data"]) diff --git a/tests/test_tsdrg.py b/tests/test_tsdrg.py index 3dcdd1e0..90be04e4 100644 --- a/tests/test_tsdrg.py +++ b/tests/test_tsdrg.py @@ -1,15 +1,15 @@ -import pytest import numpy as np +import pytest -from tnpy.model import RandomHeisenberg, TotalSz -from tnpy.operators import SpinOperators, FullHamiltonian from tnpy.exact_diagonalization import ExactDiagonalization +from tnpy.model import RandomHeisenberg, TotalSz +from tnpy.operators import FullHamiltonian, SpinOperators from tnpy.tsdrg import ( - TensorTree, - TreeTensorNetworkSDRG as tSDRG, HighEnergyTreeTensorNetworkSDRG, ShiftInvertTreeTensorNetworkSDRG, + TensorTree, ) +from tnpy.tsdrg import TreeTensorNetworkSDRG as tSDRG class TestTensorTree: @@ -21,25 +21,19 @@ def tree(self): left_id=1, right_id=2, new_id=4, - data=ExactDiagonalization(RandomHeisenberg(n=2, h=0).mpo).evecs.reshape( - (2, 2, 4) - ), + data=ExactDiagonalization(RandomHeisenberg(n=2, h=0).mpo).evecs.reshape((2, 2, 4)), ) tree.fuse( left_id=0, right_id=4, new_id=5, - data=ExactDiagonalization(RandomHeisenberg(n=3, h=0).mpo).evecs.reshape( - (2, 4, 8) - ), + data=ExactDiagonalization(RandomHeisenberg(n=3, h=0).mpo).evecs.reshape((2, 4, 8)), ) tree.fuse( left_id=5, right_id=3, new_id=6, - data=ExactDiagonalization(RandomHeisenberg(n=4, h=0).mpo).evecs.reshape( - (8, 2, 16) - ), + data=ExactDiagonalization(RandomHeisenberg(n=4, h=0).mpo).evecs.reshape((8, 2, 16)), ) return tree @@ -150,9 +144,7 @@ def test_run(self, ed, tsdrg): np.set_printoptions(threshold=sys.maxsize, linewidth=sys.maxsize) tsdrg.run() - np.testing.assert_allclose( - ed.evals[: tsdrg.chi], np.sort(tsdrg.evals), atol=1e-8 - ) + np.testing.assert_allclose(ed.evals[: tsdrg.chi], np.sort(tsdrg.evals), atol=1e-8) def test_measurements(self, ed, tsdrg): tsdrg.run() @@ -218,9 +210,7 @@ def test_reduced_density_matrix(self, site, level_idx, ed, tsdrg): np.testing.assert_allclose( ed.reduced_density_matrix(site=site, level_idx=level_idx), np.linalg.eigvalsh( - tsdrg.measurements.reduced_density_matrix( - site=site, level_idx=level_idx - ) + tsdrg.measurements.reduced_density_matrix(site=site, level_idx=level_idx) )[::-1], atol=1e-12, ) @@ -252,9 +242,7 @@ def test_two_point_function(self, site1, site2, level_idx, ed, tsdrg): Sp, Sm, Sz, I2, O2 = SpinOperators() np.testing.assert_allclose( ed.two_point_function(Sz, Sz, site1, site2, level_idx=level_idx), - tsdrg.measurements.two_point_function( - Sz, Sz, site1, site2, level_idx=level_idx - ), + tsdrg.measurements.two_point_function(Sz, Sz, site1, site2, level_idx=level_idx), atol=1e-12, ) @@ -319,12 +307,8 @@ def model(self): @pytest.fixture(scope="function") def sitsdrg(self, model, offset): - shifted_model = RandomHeisenberg( - n=model.n, h=model.h, seed=model.seed, offset=offset - ) - return ShiftInvertTreeTensorNetworkSDRG( - shifted_model.mpo, chi=2**5, offset=offset - ) + shifted_model = RandomHeisenberg(n=model.n, h=model.h, seed=model.seed, offset=offset) + return ShiftInvertTreeTensorNetworkSDRG(shifted_model.mpo, chi=2**5, offset=offset) @pytest.fixture(scope="class") def ed(self, model): From 3cf42ab3ecf639ca2efae77f7ac1bf1525df725f Mon Sep 17 00:00:00 2001 From: taolin Date: Thu, 2 Mar 2023 16:39:14 +0800 Subject: [PATCH 91/92] chore: ignore N806 for operators in uppercase --- pyproject.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 8776ce8d..357fa354 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -75,7 +75,8 @@ count = true max-line-length = 100 ignore = [ "E203", - "W503" + "W503", + "N806" ] [tool.mypy] From e03a920921279c2e8a61202620fa129245c808db Mon Sep 17 00:00:00 2001 From: taolin Date: Thu, 2 Mar 2023 16:42:59 +0800 Subject: [PATCH 92/92] chore: ignore N803 for phys arguments in uppercase --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index 357fa354..9e191c14 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -76,6 +76,7 @@ max-line-length = 100 ignore = [ "E203", "W503", + "N803", "N806" ]