From 49a519379cee8ab36615b1332017d717495713f7 Mon Sep 17 00:00:00 2001 From: Lars Bogner Date: Sun, 31 Aug 2025 14:03:13 +0200 Subject: [PATCH] Add project 1 with the corresponding source code and report. --- .gitignore | 267 ++++++++ README.md | 20 + projects/project1/include/citations.bib | 392 +++++++++++ projects/project1/main.pdf | Bin 0 -> 311960 bytes projects/project1/main.tex | 334 +++++++++ projects/project1/mainNotes.bib | 2 + pyproject.toml | 11 + src/project1/generate_results.sh | 42 ++ src/project1/include/helpers.hpp | 10 + src/project1/include/solvers.hpp | 6 + src/project1/poisson.cpp | 24 + src/project1/poisson_solver.cpp | 56 ++ src/project1/poisson_timing.cpp | 58 ++ src/project1/python/poisson_plotter.py | 155 +++++ src/project1/python/timing_plotter.py | 30 + src/project1/src/helpers.cpp | 57 ++ src/project1/src/solvers.cpp | 83 +++ uv.lock | 874 ++++++++++++++++++++++++ 18 files changed, 2421 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 projects/project1/include/citations.bib create mode 100644 projects/project1/main.pdf create mode 100644 projects/project1/main.tex create mode 100644 projects/project1/mainNotes.bib create mode 100644 pyproject.toml create mode 100755 src/project1/generate_results.sh create mode 100644 src/project1/include/helpers.hpp create mode 100644 src/project1/include/solvers.hpp create mode 100644 src/project1/poisson.cpp create mode 100644 src/project1/poisson_solver.cpp create mode 100644 src/project1/poisson_timing.cpp create mode 100644 src/project1/python/poisson_plotter.py create mode 100644 src/project1/python/timing_plotter.py create mode 100644 src/project1/src/helpers.cpp create mode 100644 src/project1/src/solvers.cpp create mode 100644 uv.lock diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ca9032f --- /dev/null +++ b/.gitignore @@ -0,0 +1,267 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[codz] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py.cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# UV +# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +#uv.lock + +# 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 +#poetry.toml + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +# pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python. +# https://pdm-project.org/en/latest/usage/project/#working-with-version-control +#pdm.lock +#pdm.toml +.pdm-python +.pdm-build/ + +# pixi +# Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control. +#pixi.lock +# Pixi creates a virtual environment in the .pixi directory, just like venv module creates one +# in the .venv directory. It is recommended not to include this directory in version control. +.pixi + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# Redis +*.rdb +*.aof +*.pid + +# RabbitMQ +mnesia/ +rabbitmq/ +rabbitmq-data/ + +# ActiveMQ +activemq-data/ + +# SageMath parsed files +*.sage.py + +# Environments +.env +.envrc +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# 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/ + +# Abstra +# Abstra is an AI-powered process automation framework. +# Ignore directories containing user credentials, local state, and settings. +# Learn more at https://abstra.io/docs +.abstra/ + +# Visual Studio Code +# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore +# that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore +# and can be added to the global gitignore or merged into this file. However, if you prefer, +# you could uncomment the following to ignore the entire vscode folder +# .vscode/ + +# Ruff stuff: +.ruff_cache/ + +# PyPI configuration file +.pypirc + +# Marimo +marimo/_static/ +marimo/_lsp/ +__marimo__/ + +# Streamlit +.streamlit/secrets.toml + +# Visual Studio Code configuration +.vscode/ + +*.acn +*.acr +*.alg +*.aux +*.bak +*.bbl +*.bcf +*.blg +*.brf +*.bst +*.dvi +*.fdb_latexmk +*.fls +*.glg +*.glo +*.gls +*.idx +*.ilg +*.ind +*.ist +*.lof +*.log +*.lol +*.lot +*.maf +*.mtc +*.mtc1 +*.nav +*.nlo +*.nls +*.out +*/include/*.pdf +*.pyg +*.run.xml +*.snm +*.synctex.gz +*.tex.backup +*.tex~ +*.thm +*.toc +*.vrb +*.xdy +*.xml +*blx.bib +.bak +.mtc +build/ \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..3f3ff38 --- /dev/null +++ b/README.md @@ -0,0 +1,20 @@ +# Solutions for the UiO course FYS4150 +Written by Lars Bogner + +------- + +## Prerequisites +- All python packages are managed by the fantastic package manager [uv](https://github.com/astral-sh/uv). For an optimal experience: Install uv and initialize the virtual environment using `uv init`. +- All GNU/Linux commands have been tested on Fedora 41. Check for version incompatibilities on errors. +- The C++ source code has been tested using the G++ compiler in the version `g++ (GCC) 15.2.1 20250808 (Red Hat 15.2.1-1)`. + +## Structure of the Projects +- All stuff related to the LaTeX report is in the root directory `projects/`. The corresponding reports are then part of the child directories `project*/`. The main tex-File is part of each directory. +- Source Code for the generation of results is saved to `src/project*/`. The code is structured depending on the main programming language in use. Mostly it is divided into two C++ folders, namely `src/` and `include/`. In the `python/` directory you can find python3 Code used e.g. for plotting. + + +## Usage +### Project 1 +Run `src/project1/generate_results.sh` to compile all binaries and automatically create all output plots. The table of relative errors is saved to `rel_errors.txt`. + + diff --git a/projects/project1/include/citations.bib b/projects/project1/include/citations.bib new file mode 100644 index 0000000..f9c9668 --- /dev/null +++ b/projects/project1/include/citations.bib @@ -0,0 +1,392 @@ + +@inreference{noauthor_tridiagonal_2025, + title = {Tridiagonal matrix algorithm}, + rights = {Creative Commons Attribution-{ShareAlike} License}, + url = {https://en.wikipedia.org/w/index.php?title=Tridiagonal_matrix_algorithm&oldid=1306920126}, + abstract = {In numerical linear algebra, the tridiagonal matrix algorithm, also known as the Thomas algorithm (named after Llewellyn Thomas), is a simplified form of Gaussian elimination that can be used to solve tridiagonal systems of equations. A tridiagonal system for n unknowns may be written as + + + + + + a + + i + + + + x + + i + − + 1 + + + + + + b + + i + + + + x + + i + + + + + + c + + i + + + + x + + i + + + 1 + + + = + + d + + i + + + , + + + \{{\textbackslash}displaystyle a\_\{i\}x\_\{i-1\}+b\_\{i\}x\_\{i\}+c\_\{i\}x\_\{i+1\}=d\_\{i\},\} + + +where + + + + + a + + 1 + + + = + 0 + + + \{{\textbackslash}displaystyle a\_\{1\}=0\} + + and + + + + + c + + n + + + = + 0 + + + \{{\textbackslash}displaystyle c\_\{n\}=0\} + +. + + + + + + + [ + + + + + b + + 1 + + + + + + c + + 1 + + + + + + + 0 + + + + + + a + + 2 + + + + + + b + + 2 + + + + + + c + + 2 + + + + + + + + + + + a + + 3 + + + + + + b + + 3 + + + + + ⋱ + + + + + + + + ⋱ + + + ⋱ + + + + c + + n + − + 1 + + + + + + + 0 + + + + + + a + + n + + + + + + b + + n + + + + + + ] + + + + + [ + + + + + x + + 1 + + + + + + + + x + + 2 + + + + + + + + x + + 3 + + + + + + + ⋮ + + + + + + x + + n + + + + + + ] + + + = + + + [ + + + + + d + + 1 + + + + + + + + d + + 2 + + + + + + + + d + + 3 + + + + + + + ⋮ + + + + + + d + + n + + + + + + ] + + + . + + + \{{\textbackslash}displaystyle \{{\textbackslash}begin\{bmatrix\}b\_\{1\}\&c\_\{1\}\&\&\&0{\textbackslash}{\textbackslash}a\_\{2\}\&b\_\{2\}\&c\_\{2\}\&\&{\textbackslash}{\textbackslash}\&a\_\{3\}\&b\_\{3\}\&{\textbackslash}ddots \&{\textbackslash}{\textbackslash}\&\&{\textbackslash}ddots \&{\textbackslash}ddots \&c\_\{n-1\}{\textbackslash}{\textbackslash}0\&\&\&a\_\{n\}\&b\_\{n\}{\textbackslash}end\{bmatrix\}\}\{{\textbackslash}begin\{bmatrix\}x\_\{1\}{\textbackslash}{\textbackslash}x\_\{2\}{\textbackslash}{\textbackslash}x\_\{3\}{\textbackslash}{\textbackslash}{\textbackslash}vdots {\textbackslash}{\textbackslash}x\_\{n\}{\textbackslash}end\{bmatrix\}\}=\{{\textbackslash}begin\{bmatrix\}d\_\{1\}{\textbackslash}{\textbackslash}d\_\{2\}{\textbackslash}{\textbackslash}d\_\{3\}{\textbackslash}{\textbackslash}{\textbackslash}vdots {\textbackslash}{\textbackslash}d\_\{n\}{\textbackslash}end\{bmatrix\}\}.\} + + +For such systems, the solution can be obtained in + + + + O + ( + n + ) + + + \{{\textbackslash}displaystyle O(n)\} + + operations instead of + + + + O + ( + + n + + 3 + + + ) + + + \{{\textbackslash}displaystyle O(n{\textasciicircum}\{3\})\} + + required by Gaussian elimination. A first sweep eliminates the + + + + + a + + i + + + + + \{{\textbackslash}displaystyle a\_\{i\}\} + +'s, and then an (abbreviated) backward substitution produces the solution. Examples of such matrices commonly arise from the discretization of 1D Poisson equation and natural cubic spline interpolation. +Thomas' algorithm is not stable in general, but is so in several special cases, such as when the matrix is diagonally dominant (either by rows or columns) or symmetric positive definite; for a more precise characterization of stability of Thomas' algorithm, see Higham Theorem 9.12. If stability is required in the general case, Gaussian elimination with partial pivoting ({GEPP}) is recommended instead.}, + booktitle = {Wikipedia}, + urldate = {2025-08-28}, + date = {2025-08-20}, + langid = {english}, + note = {Page Version {ID}: 1306920126}, + file = {Snapshot:/home/lars/Zotero/storage/LJCAC2BT/index.html:text/html}, +} diff --git a/projects/project1/main.pdf b/projects/project1/main.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b0cb457ff6114205011ac45259baa9e5fb82308c GIT binary patch literal 311960 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%0AKC@`RWyS8BLTrW{DZbt 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 z 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

+OD0Irg_J&|9P74 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 literal 0 HcmV?d00001 diff --git a/projects/project1/main.tex b/projects/project1/main.tex new file mode 100644 index 0000000..3a02eca --- /dev/null +++ b/projects/project1/main.tex @@ -0,0 +1,334 @@ +\documentclass[english,notitlepage]{revtex4-1} % defines the basic parameters of the document +%For preview: skriv i terminal: latexmk -pdf -pvc filnavn +\let\tablenum\relax % to avoid clash with siunitx + + +% if you want a single-column, remove reprint + +% allows special characters (including æøå) +\usepackage[utf8]{inputenc} +%\usepackage[english]{babel} + +%% note that you may need to download some of these packages manually, it depends on your setup. +%% I recommend downloading TeXMaker, because it includes a large library of the most common packages. + +\usepackage{amssymb} % mathematical symbols (physics imports amsmath) +\usepackage{amsmath} +\usepackage{graphicx} % include graphics such as plots +\usepackage{xcolor} % set colors +\usepackage{hyperref} % automagic cross-referencing (this is GODLIKE) +\usepackage{listings} % display code +\usepackage{subfigure} % imports a lot of cool and useful figure commands +\usepackage{float} +%\usepackage[section]{placeins} +\usepackage{algorithm} +\usepackage[noend]{algpseudocode} +\usepackage{subfigure} +\usepackage{tikz} +\usepackage{siunitx} +\usetikzlibrary{quantikz} +% defines the color of hyperref objects +% Blending two colors: blue!80!black = 80% blue and 20% black +\hypersetup{ % this is just my personal choice, feel free to change things + colorlinks, + linkcolor={red!50!black}, + citecolor={blue!50!black}, + urlcolor={blue!80!black}} + +%% Defines the style of the programming listing +%% This is actually my personal template, go ahead and change stuff if you want + + + +%% USEFUL LINKS: +%% +%% UiO LaTeX guides: https://www.mn.uio.no/ifi/tjenester/it/hjelp/latex/ +%% mathematics: https://en.wikibooks.org/wiki/LaTeX/Mathematics + +%% PHYSICS ! https://mirror.hmc.edu/ctan/macros/latex/contrib/physics/physics.pdf + +%% the basics of Tikz: https://en.wikibooks.org/wiki/LaTeX/PGF/Tikz +%% all the colors!: https://en.wikibooks.org/wiki/LaTeX/Colors +%% how to draw tables: https://en.wikibooks.org/wiki/LaTeX/Tables +%% code listing styles: https://en.wikibooks.org/wiki/LaTeX/Source_Code_Listings +%% \includegraphics https://en.wikibooks.org/wiki/LaTeX/Importing_Graphics +%% learn more about figures https://en.wikibooks.org/wiki/LaTeX/Floats,_Figures_and_Captions +%% automagic bibliography: https://en.wikibooks.org/wiki/LaTeX/Bibliography_Management (this one is kinda difficult the first time) +%% REVTeX Guide: http://www.physics.csbsju.edu/370/papers/Journal_Style_Manuals/auguide4-1.pdf +%% +%% (this document is of class "revtex4-1", the REVTeX Guide explains how the class works) + + +%% CREATING THE .pdf FILE USING LINUX IN THE TERMINAL +%% +%% [terminal]$ pdflatex template.tex +%% +%% Run the command twice, always. +%% If you want to use \footnote, you need to run these commands (IN THIS SPECIFIC ORDER) +%% +%% [terminal]$ pdflatex template.tex +%% [terminal]$ bibtex template +%% [terminal]$ pdflatex template.tex +%% [terminal]$ pdflatex template.tex +%% +%% Don't ask me why, I don't know. + + +\begin{document} + +\title{Solutions to Project 1} % self-explanatory +\author{Lars Bogner} % self-explanatory +\date{\today} % self-explanatory +\noaffiliation % ignore this, but keep it. + + +\maketitle + +\textit{List a link to your github repository here!} + +\section*{Problem 1} +To prove that the given function is a solution to the one-dimensional Poisson equation, we are calculating the second derivative of $u(x)$ as +\begin{equation} + \frac{\partial u}{\partial x} = (1-e^{-10}) + 10 e^{-10x} +\end{equation} +and therefore +\begin{equation} + \frac{\partial^2 u}{\partial x^2} = -100 e^{-10x} +\end{equation} +Therefore the main equation $-\frac{\partial^2 u}{\partial x^2} = f(x)$ is satisfied with $f(x) = 100 e^{-10x}$. Now we have to check the remaining boundary conditions. There is no singularity within the $x$ range: $x \in [0, 1]$, therefore the Poisson equation is well-defined in this interval. Lastly we check the boundary conditions: +\begin{equation} + \begin{aligned} + u(0) &= 1 - 1 = 0\\ + u(1) &= 1 - 1 + e^{-10} - e^{-10} = 0 + \end{aligned} +\end{equation} + + +\section*{Problem 2} +The code for this problem can be found in the files \texttt{src/project1/poisson.cpp} and \texttt{src/\-project1/\-python/\-poisson\_plotter.py}. The resulting plot is displayed in \autoref{fig:poisson_plot}. + +\begin{figure} + \centering + \includegraphics[width=0.8\textwidth]{include/poisson_solution.pdf} + \caption{Numerical values of the solution to the Poisson equation} + \label{fig:poisson_plot} +\end{figure} + +\section*{Problem 3} +To discretize the Poisson equation, we start with discretizing derivatives. For this to work we will Taylor expand the function $u(x)$ around a point $x_i$: + +\begin{equation} \label{eq:taylor} + u(x_j) = u(x_i) + (x_j - x_i) u'(x_i) + \frac{(x_j - x_i)^2}{2} u''(x_i) + \ldots +\end{equation} + +If our $\{x_j\}$ are equally spaced, i.e. $x_{j+1} = x_j + \Delta, \quad \forall j \in \mathbb{Z}$, we can write the Taylor expansion in terms of the spacing $\Delta$: + +\begin{equation} \label{eq:discrete_taylor} + u(x_j) = u(x_i) + (j - i) \Delta u'(x_i) + \frac{(j - i)^2}{2} \Delta^2 u''(x_i) + \ldots +\end{equation} +To find a discrete expression for the second derivative, we use the discrete version of derivatives: +\begin{equation} + \frac{\partial g(x)}{\partial x} = \lim_{\Delta \to 0} \frac{g(x+\Delta / 2) - g(x - \Delta / 2)}{\Delta} +\end{equation} +and thus follows +\begin{equation} + \frac{\partial}{\partial x} \frac{\partial g(x)}{\partial x} = \lim_{\Delta \to 0} \frac{1}{\Delta^2} \left( g(x + \Delta) - g(x) - g(x) + g(x - \Delta) \right). +\end{equation} + +If we take this expression and apply it to $u(x_j)$, we get +\begin{equation} + \frac{\partial^2 u(x_j)}{\partial x_j^2} = \lim_{\Delta \to 0}\frac{u(x_{j+1}) - 2u(x_j) + u(x_{j-1})}{\Delta^2} +\end{equation} + +The rest of the problem can be discretized by mapping the continous domain of $x \in [0, 1]$ to a discrete spectrum of points, i.e. $f(x) \to f_j = f(x_j)$ and $u(x) \to u_j = u(x_j)$. If we discard the limit of $\Delta \to 0$ we move to an approximation of $u_j$ which we call $v_j$. The problem can then be written as +\begin{equation} + - \frac{v_{j+1} - 2v_j + v_{j-1}}{\Delta^2} = f_j \quad \forall j \in \{1, \ldots, n-1\} +\end{equation} + +\section*{Problem 4} +When slightly rearranging the discretized Poisson equation from Problem 3, we get +\begin{equation} + v_{j+1} - 2v_j + v_{j-1} = -\Delta^2 f_j \quad \forall j \in \{1, \ldots, n-1\} +\end{equation} +which can be directly interpreted as a matrix equation of the form $A \vec v = \vec g$. We need to pay special attention to the border regions of the matrix equation, as we can't compute $v_0$ and $v_n$. If we absorb those into $\vec g$, we get a correct matrix equation system. Therefore we define $g_j = -\Delta^2 f_j ,\,\forall j \in \{2, \ldots, n-2\}$ and $g_1 = -\Delta^2 f_1 - v_0$ and $g_{n-1} = -\Delta^2 f_{n-1} - v_n$. The matrix $A$ is a tridiagonal matrix with the following structure: +\begin{itemize} + \item The main diagonal consists of $-2$. + \item The first superdiagonal consists of $1$. + \item The first subdiagonal consists of $1$. +\end{itemize} + +\section*{Problem 5} +\subsection*{Subproblem (a)} +As our discrete solution always depends on one value before and one value after the current value, our matrix has to be smaller in either direction by one row and column. If we put this into an equation we can say: +\begin{equation} + n = m - 2 +\end{equation} +\subsection*{Subproblem (b)} +We can find the inner part of $\vec v^\ast$, i.e. $v_i = v_{i+1}^\ast \forall i \in \{1, \ldots, n\}$. + +\section*{Problem 6} +\subsection*{Subproblem (a)} +To solve a general tridiagonal matrix equation we can use the algorithm described in \cite{noauthor_tridiagonal_2025}. The algorithm is structured as described in Algorithm \ref{algo:general}. + +\begin{figure} +% NOTE: We only need \begin{figure} ... \end{figure} here because of a compatability issue between the 'revtex4-1' document class and the 'algorithm' environment. + \begin{algorithm}[H] + \caption{General Algorithm (Thomas Algorithm)\cite{noauthor_tridiagonal_2025} for solving $A \vec v = \vec g$ where $A$ is a tridiagonal matrix} + \label{algo:general} + \begin{algorithmic} + \Function{General Algorithm}{$\vec a, \vec b, \vec c, \vec g$} + \State $\vec {c'} \gets \vec 0$ \Comment{Initialize temporary vectors} + \State $\vec {g'} \gets \vec 0$ + + \State $c'_1 \gets c_1 / b_1$ + \For{$i = 2, \ldots, n-1$} \Comment{Recursively compute $c'$} + \State $c'_i \gets c_i / (b_i - a_i c'_{i-1})$ + \EndFor + \State $g'_1 \gets g_1 / b_1$ + \For{$i = 2, \ldots, n$} \Comment{Recursively compute $g'$} + \State $g'_i \gets (g_i - a_i g'_{i-1}) / (b_i - a_i c'_{i-1})$ + \EndFor + \State $\vec v \gets \vec 0$ \Comment{Initialize solution vector} + \State $v_n \gets g'_n$ + \For{$i = n-1, n-2, \ldots, 1$} \Comment{Back substitution} + \State $v_i \gets g'_i - c'_i v_{i+1}$ + \EndFor + \Return $\vec v$ + \EndFunction + \end{algorithmic} + \end{algorithm} +\end{figure} + +\subsection*{Subproblem (b)} +The floating point operations (FLOPs) can be counted as follows: +\begin{itemize} + \item Calculate first element of $c'$: 1 FLOP + \item Calculate rest of $c'$: 3 FLOPs per element ($3 (n-2)$ FLOPs) + \item Calculate first element of $g'$: 1 FLOP + \item Calculate rest of $g'$: 5 FLOPs per element ($5 (n-1)$ FLOPs) + \item Back substitution: 2 FLOPs per element ($2 (n-1)$ FLOPs) +\end{itemize} +In total this gives us +\begin{equation} + N = 1 + 3(n-2) + 1 + 5(n-1) + 2(n-1) = 10 \cdot n - 11 \sim \mathcal{O}(n) +\end{equation} +floating point operations (FLOPs). + +\section*{Problem 7} +\subsection*{Subproblem (a)} +The implementation of the specialized algorithm can be found in the file \texttt{src/\-project1/\-src/\-solvers.cpp} with usage in \texttt{src/\-project1/\-poisson\-\_solver.cpp}. + +\subsection*{Subproblem (b)} +Comparing the solutions for different values of $N$ we can clearly see the increase in accuracy as $N$ is increased. The numerical solutions converge towards the analytical solution. The results are summarized in \autoref{fig:big_ref_plot}. To assess the quality of the results, the solutions are plotted in comparison to the numerical solution in the upper plot, while the lower plot shows the relative error. The relative error is defined as +\begin{equation} \label{eq:relerror} + \frac{\delta v_i}{u_i} = \frac{v_i - u_i}{u_i} +\end{equation} + +\begin{figure} + \centering + \includegraphics[width=0.8\textwidth]{include/big_ref_plot.pdf} + \caption{Numerical values of the solution to the Poisson equation for different values of $N$} + \label{fig:big_ref_plot} +\end{figure} + +\section*{Problem 8} +\subsection*{Subproblem (a)} +Plotting the absolute error for different values of $N$ reveals the said convergence behavior. As $N$ increases, the absolute error decreases, indicating that the numerical solution is approaching the analytical solution. The results are summarized in \autoref{fig:abs_error_plot}. + +\begin{figure} + \centering + \includegraphics[width=0.8\textwidth]{include/abs_error_plot.pdf} + \caption{Absolute error of the numerical solution for different values of $N$} + \label{fig:abs_error_plot} +\end{figure} + +\subsection*{Subproblem (b)} +Plotting the relative error for different values of $N$ reveals the increase of relative error as $u$ approaches 0 in the vicinity of the boundaries. This behavior is prevalent in all solutions as the limit of small divisors is approached. This behavior is quite logical, but it also shows, that not all uncertainties can be correctly minimized with an increase in resolution. The results are shown in \autoref{fig:rel_error_plot}. To overcome the division by zero issue for the relative error, only the values of $u > \num{1e-10}$ are considered. + +\begin{figure} + \centering + \includegraphics[width=0.8\textwidth]{include/rel_error_plot.pdf} + \caption{Relative error of the numerical solution for different values of $N$} + \label{fig:rel_error_plot} +\end{figure} + +\subsection*{Subproblem (c)} +The maximum relative errors are calculated directly using C++ as the output size scales linearly with $N$ and gets overwhelmingly large for bigger $N$. The results are output using the \texttt{std::cout} command and retrieved using GNU/Linux command line utilities. The code for calculating the maximum relative error $\max_i \frac{\delta v_i}{u_i}$ (see \eqref{eq:relerror}) is included in the C++ implementation. The results are summarized in \autoref{tab:rel_errors}. We see a steady decrease of the relative error up to $N = \num{100000}$, after which the relative error increases again. This will most likely be due to the artifacts seen in \autoref{fig:rel_error_plot} starting at $N = \num{10000}$. The source of these artifacts is not entirely clear. + +\begin{table}[H] + \centering + \begin{tabular}{ + S[table-format=7] + S[scientific-notation=true,round-mode=places,round-precision=3] + } + \hline \\ + {$N$} \relax & {Max Relative Errors} \\ \hline + 10 \relax & 0.0793264 \\ + 100 \relax & 0.000832917 \\ + 1000 \relax & 8.33329e-06 \\ + 10000 \relax & 8.33301e-08 \\ + 100000 \relax & 1.4356e-09 \\ + 1000000 \relax & 8.40412e-07 \\ + 10000000 \relax & 2.9838e-06 \\ + \hline + \end{tabular} + \caption{Summary of maximum relative errors for different values of $N$} + \label{tab:rel_errors} +\end{table} + +\section*{Problem 9} +\subsection*{Subproblem (a)} +To specialize the general algorithm to our specific problem, we take a look at how our general algorithm modifies the input vectors during forward and backward substitution. As a first step, we can calculate the values $c_i'$ from Algorithm \ref{algo:general} explicitly as $c_i' = \frac{-i}{i+1}$. This explicit formulation also allows for a more straightforward definition of $g_i' \equiv \tilde{g}_i$. Combining these two results we can rewrite the algorithm as described in Algorithm \ref{algo:optimal}. + +\begin{figure} + \begin{algorithm}[H] +\caption{Special Algorithm for computing $\vec v$ from $\vec g$ using constant tridiagonal elements} +\label{algo:optimal} + \begin{algorithmic} + \Function{Optimal Algorithm}{$\vec g$} + \State $\vec{v} \gets \vec{0}$ \Comment{Initialize solution vector} + \State $\vec{\tilde{g}} \gets \vec{0}$ \Comment{Initialize modified input vector} + \State $\tilde{g}_0 \gets g_0 / 2$ + \For{$i = 1, \ldots, n-1$} \Comment{Forward substitution} + \State $\tilde{g}_i \gets (g_i + \tilde{g}_{i-1}) \cdot \frac{i+1}{i+2}$ + \EndFor + \State $v_{n-1} \gets \tilde{g}_{n-1}$ + \For{$i = n-2, n-3, \ldots, 0$} \Comment{Backward substitution} + \State $v_i \gets \tilde{g}_i + \frac{i+1}{i+2} \cdot v_{i+1}$ + \EndFor + \Return $\vec{v}$ + \EndFunction + \end{algorithmic} +\end{algorithm} +\end{figure} + +\subsection*{Subproblem (b)} +The floating point operations (FLOPs) can be counted as follows: +\begin{itemize} + \item Calculate first element of $\tilde{g}$: 1 FLOP + \item Calculate remaining elements of $\tilde{g}$: $3(n-1)$ FLOPs + \item Calculate last element of $v$: 0 FLOPs + \item Calculate remaining elements of $v$: $3(n-1)$ FLOPs +\end{itemize} +If we dismiss integer additions and subtractions, the total number of FLOPs can be simplified to: + +\begin{equation} + N =1 + 3(n-1) + 0 + 3(n-1) = 6\cdot n - 5 \sim \mathcal{O}(n) +\end{equation} + +\subsection*{Subproblem (c)} +The implementation of the specialized algorithm can be found in the file \texttt{src/\-project1/\-src/\-solvers.cpp} with usage in \texttt{src/\-project1/\-poisson\_timing.cpp}. Secondly a variant with further optimizations on the memory access patterns is implemented in the same location. From now on we will reference this version as the \textit{Optimized Algorithm}. + + +\section*{Problem 10} +To evaluate the performance of the different algorithms, the algorithms were executed 100 times for varying problem sizes $N$. The execution times were recorded and analyzed to compare the efficiency of the algorithms. To compare the effect of different $N$ on the execution time, the execution times were normalized by dividing them by $N$. The results are summarized in \autoref{fig:timing_plot}. We can observe, that the specialized algorithm outperforms the general algorithm consistently across all problem sizes by more than a factor of 2. The optimized algorithm shows a further improvement over the specialized algorithm with very consistent execution times across all problem sizes. + +\begin{figure} + \centering + \includegraphics[width=0.8\textwidth]{include/timing_results_100_iterations.pdf} + \caption{Normalized execution times for different algorithms and problem sizes} + \label{fig:timing_plot} +\end{figure} + +\bibliography{include/citations} +\end{document} diff --git a/projects/project1/mainNotes.bib b/projects/project1/mainNotes.bib new file mode 100644 index 0000000..f275e40 --- /dev/null +++ b/projects/project1/mainNotes.bib @@ -0,0 +1,2 @@ +@CONTROL{REVTEX41Control} +@CONTROL{apsrev41Control,author="08",editor="1",pages="0",title="",year="1"} diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..c101e28 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,11 @@ +[project] +name = "fys4150-solutions" +version = "0.1.0" +requires-python = ">=3.13" +dependencies = [ + "ipykernel>=6.30.1", + "matplotlib>=3.10.5", + "numpy>=2.3.2", + "pandas>=2.3.2", + "scipy>=1.16.1", +] diff --git a/src/project1/generate_results.sh b/src/project1/generate_results.sh new file mode 100755 index 0000000..84b05d7 --- /dev/null +++ b/src/project1/generate_results.sh @@ -0,0 +1,42 @@ +#!/bin/bash +echo "Cleaning up old results..." +rm -f poisson_solution.csv numerical_solution_*.csv rel_errors.txt timing_results_100_iterations.csv +rm -f poisson_solver poisson_timing poisson +rm -f ../../projects/project1/include/*.pdf + +echo "Compiling the C++ code..." +g++ -o poisson_solver poisson_solver.cpp src/* +g++ -o poisson_timing poisson_timing.cpp src/* +g++ -o poisson poisson.cpp +echo "Compilation finished." + +echo "Generating reference solution..." +./poisson +uv run python/poisson_plotter.py --filename "poisson_solution.csv" + +for power in 1 2 3 4 5 6 7; do + N=$((10 ** power)) + if [ $power -lt 5 ]; then + output_to_file=true + else + output_to_file=false + fi + echo "Running simulation for N=$N (output: $output_to_file)" + ./poisson_solver $N $output_to_file | tee >(awk ' + /Running Poisson solver/ { N=$7 } + /Max relative error/ { print N"&"$4"\\\\" >> "rel_errors.txt" } + ') + if [ "$output_to_file" = true ]; then + uv run python/poisson_plotter.py --filename "numerical_solution_$N.csv" + uv run python/poisson_plotter.py --filename "numerical_solution_$N.csv" --reference "poisson_solution.csv" + fi +done + +echo "Creating Summary Plot..." +uv run python/poisson_plotter.py --reference "poisson_solution.csv" --filename "numerical_solution_*.csv" + +echo "Timing the algorithm variations..." +./poisson_timing +uv run python/timing_plotter.py "timing_results_100_iterations.csv" + +echo "All done!" diff --git a/src/project1/include/helpers.hpp b/src/project1/include/helpers.hpp new file mode 100644 index 0000000..35432ee --- /dev/null +++ b/src/project1/include/helpers.hpp @@ -0,0 +1,10 @@ +#include +#include +#include + +double f(double x); +std::vector get_g(const std::vector& x); +std::vector get_x(int N); +std::vector analytical_solution(const std::vector& x); +double relative_error(const std::vector& v, const std::vector& u); +void debug_print(const std::vector& v, const std::string& name); \ No newline at end of file diff --git a/src/project1/include/solvers.hpp b/src/project1/include/solvers.hpp new file mode 100644 index 0000000..27fcda5 --- /dev/null +++ b/src/project1/include/solvers.hpp @@ -0,0 +1,6 @@ +#include + +std::vector general_algorithm(const std::vector& a, const std::vector& b, const std::vector& c, const std::vector& g); +std::vector special_algorithm(const std::vector& g); +std::vector optimal_algorithm_opt(const std::vector& g); +std::vector add_boundaries(const std::vector& v); \ No newline at end of file diff --git a/src/project1/poisson.cpp b/src/project1/poisson.cpp new file mode 100644 index 0000000..0e27194 --- /dev/null +++ b/src/project1/poisson.cpp @@ -0,0 +1,24 @@ +#include +#include +#include +#include + +using namespace std; + +int main(){ + const double dx = 1.0/1000000; + const double xmin = 0; + const double xmax = 1; + const int decimals = 14; + + string output_file = "poisson_solution.csv"; + ofstream ofs(output_file); + ofs << "x,u(x)\n"; + + for(double x = xmin; x <= xmax; x += dx){ + double u = 1 - (1 - exp(-10))*x - exp(-10*x); + ofs << fixed << setprecision(decimals) << x << "," << u << "\n"; + } + ofs.close(); + return 0; +} \ No newline at end of file diff --git a/src/project1/poisson_solver.cpp b/src/project1/poisson_solver.cpp new file mode 100644 index 0000000..27c23e8 --- /dev/null +++ b/src/project1/poisson_solver.cpp @@ -0,0 +1,56 @@ +#include +#include +#include + +#include "include/solvers.hpp" +#include "include/helpers.hpp" + +using namespace std; + +int main(int argc, char* argv[]){ + const int decimal_places = 14; + int N; // !! Number of steps between the discretization points (= N_points - 1) + if (argc > 1) { // Get number of steps from command line argument + N = atoi(argv[1]); + } else { + N = 1000; + } + + bool output_to_file = true; + if (argc > 2) { // Get output preference from command line argument (use "true" or "false", default is true) + output_to_file = (strcmp(argv[2], "true") == 0); + } + + const double delta_x = 1.0 / N; + vector a(N-1, -1.0); + vector b(N-1, 2.0); + vector c(N-1, -1.0); + vector g(N-1, 0.0); + + cout << "Running Poisson solver with N = " << N << endl; + for (int i = 1; i < N; i++) { + double x = i * delta_x; + g[i-1] = delta_x * delta_x * f(x); + } + + vector solution = add_boundaries(general_algorithm(a, b, c, g)); + vector x = get_x(N); + vector u = analytical_solution(x); + double max_rel_error = relative_error(solution, u); + cout << "Max relative error: " << max_rel_error << endl; + + if (output_to_file) { + // Output the solution + string filename = "numerical_solution_" + to_string(N) + ".csv"; + ofstream ofs(filename); + ofs << "x,u(x)" << endl; + for (int i = 0; i <= N; i++) { + ofs << fixed << setprecision(decimal_places) << scientific << x[i] << "," << solution[i] << endl; + } + ofs.close(); + + } + + return 0; +} + diff --git a/src/project1/poisson_timing.cpp b/src/project1/poisson_timing.cpp new file mode 100644 index 0000000..fa491de --- /dev/null +++ b/src/project1/poisson_timing.cpp @@ -0,0 +1,58 @@ +#include "include/helpers.hpp" +#include "include/solvers.hpp" + +#include +#include +#include + +using namespace std; + + +vector appl_general_algorithm(const vector& g){ + int N = g.size() + 1; + vector a(N-1, -1.0); + vector b(N-1, 2.0); + vector c(N-1, -1.0); + return general_algorithm(a, b, c, g); +} + +double time_function(const vector& g, vector (*func)(const vector&), const int n_iter=100){ + auto start = chrono::high_resolution_clock::now(); + for(int i = 0; i < n_iter; i++){ + func(g); + } + auto end = chrono::high_resolution_clock::now(); + chrono::duration elapsed = end - start; + return elapsed.count() / n_iter; +} + +int main(int argc, char* argv[]) { + int n_iter = 100; + if (argc > 1) { // Get number of iterations from command line argument + n_iter = atoi(argv[1]); + } + + int N = 1000; + vector g = get_g(get_x(N)); + cout << "Relative error between solvers: " << relative_error(special_algorithm(g), appl_general_algorithm(g)) << endl; + cout << "Relative error between solvers (optimized): " << relative_error(optimal_algorithm_opt(g), appl_general_algorithm(g)) << endl; + + string filename = "timing_results_" + to_string(n_iter) + "_iterations.csv"; + ofstream outfile(filename); + outfile << "N,Time (Special),Time (Optimized),Time (General)\n"; + for(int power = 1; power <= 6; power++){ + N = pow(10, power); + g = get_g(get_x(N)); + double time_optimal = time_function(g, special_algorithm, n_iter); + double time_optimal_opt = time_function(g, optimal_algorithm_opt, n_iter); + double time_general = time_function(g, appl_general_algorithm, n_iter); + cout << "Average time for specialized algorithm over " << N << " values: " << time_optimal << " seconds" << endl; + cout << "Average time for optimized algorithm over " << N << " values: " << time_optimal_opt << " seconds" << endl; + cout << "Average time for general algorithm over " << N << " values: " << time_general << " seconds" << endl; + + outfile << N << "," << scientific << setprecision(10) << time_optimal << "," << time_optimal_opt << "," << time_general << endl; + } + outfile.close(); + + return 0; +} \ No newline at end of file diff --git a/src/project1/python/poisson_plotter.py b/src/project1/python/poisson_plotter.py new file mode 100644 index 0000000..287dd9d --- /dev/null +++ b/src/project1/python/poisson_plotter.py @@ -0,0 +1,155 @@ +from importlib.resources import files +import pandas as pd +import numpy as np +import matplotlib.pyplot as plt +import argparse +import os + +parser = argparse.ArgumentParser() +parser.add_argument("--filename", type=str, default="src/project1/poisson_solution.csv") +parser.add_argument("--reference", type=str, default=None) +args = parser.parse_args() + +FILENAME = args.filename +REFERENCE = args.reference + +def singular_plot(): + df = pd.read_csv(FILENAME) + fig, ax = plt.subplots(figsize=(6,3)) + ax.plot(df["x"], df["u(x)"]) + ax.set_xlabel(r"$x$") + ax.set_ylabel(r"$u(x)$") + + fig.tight_layout() + + output_directory = os.path.abspath(os.path.join(__file__, "../../../../projects/project1/include")) + output_file = os.path.basename(FILENAME).replace(".csv", ".pdf") + fig.savefig(os.path.join(output_directory, output_file)) + +def reference_plot(): + df = pd.read_csv(FILENAME).sort_values("x") + df_ref = pd.read_csv(REFERENCE).sort_values("x") + + fig, (ax1, ax2) = plt.subplots(nrows=2, sharex=True, height_ratios=[3, 1], figsize=(4, 8)) + ax1.plot(df["x"], df["u(x)"], label="Numerical Solution") + ax1.plot(df_ref["x"], df_ref["u(x)"], label="Reference Solution", linestyle="--") + ax1.set_xlabel(r"$x$") + ax1.set_ylabel(r"$u(x)$") + ax1.legend() + + combined_df = pd.merge_asof(df, df_ref, on="x", suffixes=("_num", "_ref")) + ratio = (combined_df["u(x)_num"] - combined_df["u(x)_ref"]) / combined_df["u(x)_ref"] + + ax2.plot(combined_df["x"], ratio.abs()) + ax2.set_xlabel(r"$x$") + ax2.set_ylabel(r"$|\frac{u(x)_{num} - u(x)_{ref}}{u(x)_{ref}}|$") + ax2.axhline(y=1, color="gray", linestyle="--") + ax2.set_yscale("log") + + fig.tight_layout() + + output_directory = os.path.abspath(os.path.join(__file__, "../../../../projects/project1/include")) + output_file = os.path.basename(FILENAME).replace(".csv", "_ref.pdf") + fig.savefig(os.path.join(output_directory, output_file)) + +def multiple_reference_plot(): + # Filename is wildcard -> Find files + import glob + files = glob.glob(FILENAME) + files.sort() + fig, (ax1, ax2) = plt.subplots(nrows=2, sharex=True, height_ratios=[3, 1], figsize=(6,5)) + df_ref = pd.read_csv(REFERENCE).sort_values("x") + + + for file in files: + df = pd.read_csv(file).sort_values("x") + label = f"Num. (N = {os.path.basename(file).replace(".csv", "").split("_")[-1]})" + ax1.plot(df["x"], df["u(x)"], label=label) + + combined_df = pd.merge_asof(df, df_ref, on="x", suffixes=("_num", "_ref")) + ratio = (combined_df["u(x)_num"] - combined_df["u(x)_ref"]) / combined_df["u(x)_ref"] + ax2.plot(combined_df["x"], ratio.abs(), label=label) + + ax1.plot(df_ref["x"], df_ref["u(x)"], label="Reference Solution", linestyle="--", color="gray") + ax1.set_xlabel(r"$x$") + ax1.set_ylabel(r"$u(x)$") + ax1.legend() + ax2.axhline(y=1, color="gray", linestyle="--") + ax2.set_xlabel(r"$x$") + ax2.set_ylabel(r"$|\frac{u(x)_{num} - u(x)_{ref}}{u(x)_{ref}}|$") + ax2.set_yscale("log") + + fig.tight_layout() + + output_directory = os.path.abspath(os.path.join(__file__, "../../../../projects/project1/include")) + output_file = "big_ref_plot.pdf" + fig.savefig(os.path.join(output_directory, output_file)) + + +def error_plots(): + abs_error_plot() + rel_error_plot() + + +def abs_error_plot(): + import glob + files = glob.glob(FILENAME) + files.sort() + + df_ref = pd.read_csv(REFERENCE).sort_values("x") + + fig, ax = plt.subplots(figsize=(6,3)) + for file in files: + df = pd.read_csv(file).sort_values("x") + combined_df = pd.merge_asof(df, df_ref, on="x", suffixes=("_num", "_ref")) + log_abs_err = np.log10((combined_df["u(x)_num"] - combined_df["u(x)_ref"]).abs()) + ax.plot(combined_df["x"], log_abs_err, label=f"N={os.path.basename(file).replace('.csv','').split('_')[-1]}") + + ax.set_xlabel(r"$x$") + ax.set_ylabel(r"$\log_{10}(|u(x)_{num} - u(x)_{ref}|)$") + ax.legend() + + fig.tight_layout() + + output_directory = os.path.abspath(os.path.join(__file__, "../../../../projects/project1/include")) + output_file = "abs_error_plot.pdf" + fig.savefig(os.path.join(output_directory, output_file)) + + +def rel_error_plot(): + import glob + files = glob.glob(FILENAME) + files.sort() + + df_ref = pd.read_csv(REFERENCE).sort_values("x") + + fig, ax = plt.subplots(figsize=(6,3)) + for file in files: + df = pd.read_csv(file).sort_values("x") + combined_df = pd.merge_asof(df, df_ref, on="x", suffixes=("_num", "_ref")) + # Drop rows where u(x)_ref is zero + combined_df = combined_df[combined_df["u(x)_ref"].abs() > 1e-10] + log_rel_err = np.log10((combined_df["u(x)_num"] - combined_df["u(x)_ref"]).abs() / combined_df["u(x)_ref"].abs()) + ax.plot(combined_df["x"], log_rel_err, label=f"N={os.path.basename(file).replace('.csv','').split('_')[-1]}") + + ax.set_xlabel(r"$x$") + ax.set_ylabel(r"$\log_{10}(|\frac{u(x)_{num} - u(x)_{ref}}{u(x)_{ref}}|)$") + ax.legend() + + fig.tight_layout() + + output_directory = os.path.abspath(os.path.join(__file__, "../../../../projects/project1/include")) + output_file = "rel_error_plot.pdf" + fig.savefig(os.path.join(output_directory, output_file)) + + +if __name__ == "__main__": + if REFERENCE: + if "*" in FILENAME: + multiple_reference_plot() + abs_error_plot() + rel_error_plot() + else: + reference_plot() + else: + singular_plot() \ No newline at end of file diff --git a/src/project1/python/timing_plotter.py b/src/project1/python/timing_plotter.py new file mode 100644 index 0000000..f7dcf35 --- /dev/null +++ b/src/project1/python/timing_plotter.py @@ -0,0 +1,30 @@ +import numpy as np +import pandas as pd +import matplotlib.pyplot as plt +import argparse +import os + +parser = argparse.ArgumentParser(description="Plot timing results from CSV file.") +parser.add_argument("csv_file", help="Path to the CSV file containing timing results.") +args = parser.parse_args() + +df = pd.read_csv(args.csv_file) +for column in df.columns[1:]: + df[column] = df[column] / df["N"] # Normalize by N + +fig, ax = plt.subplots(figsize=(6,3)) +x = np.arange(len(df)) +bar_width = 0.2 +for i, column in enumerate(df.columns[1:]): + ax.bar(x + i * bar_width, df[column], width=bar_width, label=column) +ax.set_xticks(x + bar_width / 2) +ax.set_xticklabels(df["N"]) +ax.set_xlabel("N (number of values)") +ax.set_ylabel("Time (seconds) per N") +ax.legend(ncol=3) + +fig.tight_layout() + +output_directory = os.path.abspath(os.path.join(__file__, "../../../../projects/project1/include")) +output_file = os.path.basename(args.csv_file).replace(".csv", ".pdf") +fig.savefig(os.path.join(output_directory, output_file)) \ No newline at end of file diff --git a/src/project1/src/helpers.cpp b/src/project1/src/helpers.cpp new file mode 100644 index 0000000..fa29d43 --- /dev/null +++ b/src/project1/src/helpers.cpp @@ -0,0 +1,57 @@ +#include "../include/helpers.hpp" + +double f(double x){ + return 100*exp(-10*x); +} + +std::vector get_x(int N){ + std::vector x; + for (int i = 0; i <= N; i++) { + x.push_back(i * (1.0 / N)); + } + return x; +} + +std::vector get_g(const std::vector& x){ + std::vector g; + double delta_x = x[1] - x[0]; + for (int i = 1; i < x.size() - 1; i++) { + double x_i = x[i]; + g.push_back(delta_x * delta_x * f(x_i)); + } + return g; +} + +std::vector analytical_solution(const std::vector& x){ + std::vector u; + for(int i = 0; i < x.size(); i++){ + double x_i = x.at(i); + double u_i = 1.0 - (1.0 - exp(-10.0))*x_i - exp(-10.0*x_i); + u.push_back(u_i); + } + return u; +} + +double relative_error(const std::vector& v, const std::vector& u){ + if (v.size() != u.size()) { + std::cerr << "Error: Vectors must be of the same size." << std::endl << "Found sizes: " << v.size() << " and " << u.size() << std::endl; + return -1.0; + } + const double eps = 1e-14; + double max_rel_error = 0.0; + for(int i = 0; i < v.size(); i++){ + if (fabs(u[i]) > eps) { // Avoid division by zero + double rel_error = fabs((v[i] - u[i]) / u[i]); + if (rel_error > max_rel_error) { + max_rel_error = rel_error; + } + } + } + return max_rel_error; +} + +void debug_print(const std::vector& v, const std::string& name){ + for (int i = 0; i < v.size(); i++){ + std::cout << name << "[" << i << "] = " << v[i] << std::endl; + } +} \ No newline at end of file diff --git a/src/project1/src/solvers.cpp b/src/project1/src/solvers.cpp new file mode 100644 index 0000000..955b8a9 --- /dev/null +++ b/src/project1/src/solvers.cpp @@ -0,0 +1,83 @@ +#include "../include/solvers.hpp" +#include + +std::vector general_algorithm(const std::vector& a, const std::vector& b, const std::vector& c, const std::vector& g) { + int n = g.size(); + std::vector c_prime(n-1, 0.0); + std::vector g_prime(n, 0.0); + + // Forward elimination + c_prime[0] = c[0] / b[0]; + for(int i = 1; i < n - 1; i++){ + c_prime[i] = c[i] / (b[i] - a[i] * c_prime[i - 1]); + } + g_prime[0] = g[0] / b[0]; + for (int i = 1; i < n; i++) { + g_prime[i] = (g[i] - a[i] * g_prime[i - 1]) / (b[i] - a[i] * c_prime[i - 1]); + } + + // Back substitution + std::vector v(n, 0.0); + v[n - 1] = g_prime[n - 1]; + for (int i = n - 2; i >= 0; i--) { + v[i] = g_prime[i] - c_prime[i] * v[i + 1]; + } + return v; +} + +std::vector special_algorithm(const std::vector& g){ + int n = g.size(); + std::vector v(n, 0.0); + std::vector g_tilde(n, 0.0); + + g_tilde[0] = g[0] / 2.0; + for(int i = 1; i <= n - 1; i++){ + g_tilde[i] = (g[i] + g_tilde[i - 1]) * double(i + 1) / double(i + 2); + } + v[n - 1] = g_tilde[n - 1]; + for(int i = n - 2; i >= 0; i--){ + v[i] = g_tilde[i] + double(i + 1) / double(i + 2) * v[i + 1]; + } + return v; +} + +std::vector optimal_algorithm_opt(const std::vector& g) { + // Trying to shave off the last few bits here and there + + const int n = static_cast(g.size()); + std::vector v(n); + + // Use g_tilde in-place (reuse v as workspace to save one allocation) + double prev = g[0] * 0.5; + v[0] = prev; + + // Forward sweep + for (int i = 1; i < n; i++) { + const double factor = double(i + 1) / double(i + 2); + prev = (g[i] + prev) * factor; + v[i] = prev; + } + + // Backward sweep + double next = v[n - 1]; + for (int i = n - 2; i >= 0; i--) { + const double factor = double(i + 1) / double(i + 2); + next = v[i] + factor * next; + v[i] = next; + } + + return v; +} + + +std::vector add_boundaries(const std::vector& v){ + std::vector v_ast; + // Add 0.0 to the beginning and end + v_ast.push_back(0.0); + for (int i = 0; i < v.size(); i++){ + v_ast.push_back(v[i]); + } + v_ast.push_back(0.0); + return v_ast; +} + diff --git a/uv.lock b/uv.lock new file mode 100644 index 0000000..ce9600a --- /dev/null +++ b/uv.lock @@ -0,0 +1,874 @@ +version = 1 +revision = 3 +requires-python = ">=3.13" + +[[package]] +name = "appnope" +version = "0.1.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/35/5d/752690df9ef5b76e169e68d6a129fa6d08a7100ca7f754c89495db3c6019/appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee", size = 4170, upload-time = "2024-02-06T09:43:11.258Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321, upload-time = "2024-02-06T09:43:09.663Z" }, +] + +[[package]] +name = "asttokens" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4a/e7/82da0a03e7ba5141f05cce0d302e6eed121ae055e0456ca228bf693984bc/asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7", size = 61978, upload-time = "2024-11-30T04:30:14.439Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2", size = 26918, upload-time = "2024-11-30T04:30:10.946Z" }, +] + +[[package]] +name = "cffi" +version = "1.17.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621, upload-time = "2024-09-04T20:45:21.852Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8d/f8/dd6c246b148639254dad4d6803eb6a54e8c85c6e11ec9df2cffa87571dbe/cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", size = 182989, upload-time = "2024-09-04T20:44:28.956Z" }, + { url = "https://files.pythonhosted.org/packages/8b/f1/672d303ddf17c24fc83afd712316fda78dc6fce1cd53011b839483e1ecc8/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", size = 178802, upload-time = "2024-09-04T20:44:30.289Z" }, + { url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792, upload-time = "2024-09-04T20:44:32.01Z" }, + { url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893, upload-time = "2024-09-04T20:44:33.606Z" }, + { url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810, upload-time = "2024-09-04T20:44:35.191Z" }, + { url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200, upload-time = "2024-09-04T20:44:36.743Z" }, + { url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447, upload-time = "2024-09-04T20:44:38.492Z" }, + { url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358, upload-time = "2024-09-04T20:44:40.046Z" }, + { url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469, upload-time = "2024-09-04T20:44:41.616Z" }, + { url = "https://files.pythonhosted.org/packages/bf/ee/f94057fa6426481d663b88637a9a10e859e492c73d0384514a17d78ee205/cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", size = 172475, upload-time = "2024-09-04T20:44:43.733Z" }, + { url = "https://files.pythonhosted.org/packages/7c/fc/6a8cb64e5f0324877d503c854da15d76c1e50eb722e320b15345c4d0c6de/cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", size = 182009, upload-time = "2024-09-04T20:44:45.309Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "comm" +version = "0.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4c/13/7d740c5849255756bc17888787313b61fd38a0a8304fc4f073dfc46122aa/comm-0.2.3.tar.gz", hash = "sha256:2dc8048c10962d55d7ad693be1e7045d891b7ce8d999c97963a5e3e99c055971", size = 6319, upload-time = "2025-07-25T14:02:04.452Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/60/97/891a0971e1e4a8c5d2b20bbe0e524dc04548d2307fee33cdeba148fd4fc7/comm-0.2.3-py3-none-any.whl", hash = "sha256:c615d91d75f7f04f095b30d1c1711babd43bdc6419c1be9886a85f2f4e489417", size = 7294, upload-time = "2025-07-25T14:02:02.896Z" }, +] + +[[package]] +name = "contourpy" +version = "1.3.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/58/01/1253e6698a07380cd31a736d248a3f2a50a7c88779a1813da27503cadc2a/contourpy-1.3.3.tar.gz", hash = "sha256:083e12155b210502d0bca491432bb04d56dc3432f95a979b429f2848c3dbe880", size = 13466174, upload-time = "2025-07-26T12:03:12.549Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/68/35/0167aad910bbdb9599272bd96d01a9ec6852f36b9455cf2ca67bd4cc2d23/contourpy-1.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:177fb367556747a686509d6fef71d221a4b198a3905fe824430e5ea0fda54eb5", size = 293257, upload-time = "2025-07-26T12:01:39.367Z" }, + { url = "https://files.pythonhosted.org/packages/96/e4/7adcd9c8362745b2210728f209bfbcf7d91ba868a2c5f40d8b58f54c509b/contourpy-1.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d002b6f00d73d69333dac9d0b8d5e84d9724ff9ef044fd63c5986e62b7c9e1b1", size = 274034, upload-time = "2025-07-26T12:01:40.645Z" }, + { url = "https://files.pythonhosted.org/packages/73/23/90e31ceeed1de63058a02cb04b12f2de4b40e3bef5e082a7c18d9c8ae281/contourpy-1.3.3-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:348ac1f5d4f1d66d3322420f01d42e43122f43616e0f194fc1c9f5d830c5b286", size = 334672, upload-time = "2025-07-26T12:01:41.942Z" }, + { url = "https://files.pythonhosted.org/packages/ed/93/b43d8acbe67392e659e1d984700e79eb67e2acb2bd7f62012b583a7f1b55/contourpy-1.3.3-cp313-cp313-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:655456777ff65c2c548b7c454af9c6f33f16c8884f11083244b5819cc214f1b5", size = 381234, upload-time = "2025-07-26T12:01:43.499Z" }, + { url = "https://files.pythonhosted.org/packages/46/3b/bec82a3ea06f66711520f75a40c8fc0b113b2a75edb36aa633eb11c4f50f/contourpy-1.3.3-cp313-cp313-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:644a6853d15b2512d67881586bd03f462c7ab755db95f16f14d7e238f2852c67", size = 385169, upload-time = "2025-07-26T12:01:45.219Z" }, + { url = "https://files.pythonhosted.org/packages/4b/32/e0f13a1c5b0f8572d0ec6ae2f6c677b7991fafd95da523159c19eff0696a/contourpy-1.3.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4debd64f124ca62069f313a9cb86656ff087786016d76927ae2cf37846b006c9", size = 362859, upload-time = "2025-07-26T12:01:46.519Z" }, + { url = "https://files.pythonhosted.org/packages/33/71/e2a7945b7de4e58af42d708a219f3b2f4cff7386e6b6ab0a0fa0033c49a9/contourpy-1.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a15459b0f4615b00bbd1e91f1b9e19b7e63aea7483d03d804186f278c0af2659", size = 1332062, upload-time = "2025-07-26T12:01:48.964Z" }, + { url = "https://files.pythonhosted.org/packages/12/fc/4e87ac754220ccc0e807284f88e943d6d43b43843614f0a8afa469801db0/contourpy-1.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ca0fdcd73925568ca027e0b17ab07aad764be4706d0a925b89227e447d9737b7", size = 1403932, upload-time = "2025-07-26T12:01:51.979Z" }, + { url = "https://files.pythonhosted.org/packages/a6/2e/adc197a37443f934594112222ac1aa7dc9a98faf9c3842884df9a9d8751d/contourpy-1.3.3-cp313-cp313-win32.whl", hash = "sha256:b20c7c9a3bf701366556e1b1984ed2d0cedf999903c51311417cf5f591d8c78d", size = 185024, upload-time = "2025-07-26T12:01:53.245Z" }, + { url = "https://files.pythonhosted.org/packages/18/0b/0098c214843213759692cc638fce7de5c289200a830e5035d1791d7a2338/contourpy-1.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:1cadd8b8969f060ba45ed7c1b714fe69185812ab43bd6b86a9123fe8f99c3263", size = 226578, upload-time = "2025-07-26T12:01:54.422Z" }, + { url = "https://files.pythonhosted.org/packages/8a/9a/2f6024a0c5995243cd63afdeb3651c984f0d2bc727fd98066d40e141ad73/contourpy-1.3.3-cp313-cp313-win_arm64.whl", hash = "sha256:fd914713266421b7536de2bfa8181aa8c699432b6763a0ea64195ebe28bff6a9", size = 193524, upload-time = "2025-07-26T12:01:55.73Z" }, + { url = "https://files.pythonhosted.org/packages/c0/b3/f8a1a86bd3298513f500e5b1f5fd92b69896449f6cab6a146a5d52715479/contourpy-1.3.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:88df9880d507169449d434c293467418b9f6cbe82edd19284aa0409e7fdb933d", size = 306730, upload-time = "2025-07-26T12:01:57.051Z" }, + { url = "https://files.pythonhosted.org/packages/3f/11/4780db94ae62fc0c2053909b65dc3246bd7cecfc4f8a20d957ad43aa4ad8/contourpy-1.3.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:d06bb1f751ba5d417047db62bca3c8fde202b8c11fb50742ab3ab962c81e8216", size = 287897, upload-time = "2025-07-26T12:01:58.663Z" }, + { url = "https://files.pythonhosted.org/packages/ae/15/e59f5f3ffdd6f3d4daa3e47114c53daabcb18574a26c21f03dc9e4e42ff0/contourpy-1.3.3-cp313-cp313t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e4e6b05a45525357e382909a4c1600444e2a45b4795163d3b22669285591c1ae", size = 326751, upload-time = "2025-07-26T12:02:00.343Z" }, + { url = "https://files.pythonhosted.org/packages/0f/81/03b45cfad088e4770b1dcf72ea78d3802d04200009fb364d18a493857210/contourpy-1.3.3-cp313-cp313t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ab3074b48c4e2cf1a960e6bbeb7f04566bf36b1861d5c9d4d8ac04b82e38ba20", size = 375486, upload-time = "2025-07-26T12:02:02.128Z" }, + { url = "https://files.pythonhosted.org/packages/0c/ba/49923366492ffbdd4486e970d421b289a670ae8cf539c1ea9a09822b371a/contourpy-1.3.3-cp313-cp313t-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6c3d53c796f8647d6deb1abe867daeb66dcc8a97e8455efa729516b997b8ed99", size = 388106, upload-time = "2025-07-26T12:02:03.615Z" }, + { url = "https://files.pythonhosted.org/packages/9f/52/5b00ea89525f8f143651f9f03a0df371d3cbd2fccd21ca9b768c7a6500c2/contourpy-1.3.3-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:50ed930df7289ff2a8d7afeb9603f8289e5704755c7e5c3bbd929c90c817164b", size = 352548, upload-time = "2025-07-26T12:02:05.165Z" }, + { url = "https://files.pythonhosted.org/packages/32/1d/a209ec1a3a3452d490f6b14dd92e72280c99ae3d1e73da74f8277d4ee08f/contourpy-1.3.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4feffb6537d64b84877da813a5c30f1422ea5739566abf0bd18065ac040e120a", size = 1322297, upload-time = "2025-07-26T12:02:07.379Z" }, + { url = "https://files.pythonhosted.org/packages/bc/9e/46f0e8ebdd884ca0e8877e46a3f4e633f6c9c8c4f3f6e72be3fe075994aa/contourpy-1.3.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:2b7e9480ffe2b0cd2e787e4df64270e3a0440d9db8dc823312e2c940c167df7e", size = 1391023, upload-time = "2025-07-26T12:02:10.171Z" }, + { url = "https://files.pythonhosted.org/packages/b9/70/f308384a3ae9cd2209e0849f33c913f658d3326900d0ff5d378d6a1422d2/contourpy-1.3.3-cp313-cp313t-win32.whl", hash = "sha256:283edd842a01e3dcd435b1c5116798d661378d83d36d337b8dde1d16a5fc9ba3", size = 196157, upload-time = "2025-07-26T12:02:11.488Z" }, + { url = "https://files.pythonhosted.org/packages/b2/dd/880f890a6663b84d9e34a6f88cded89d78f0091e0045a284427cb6b18521/contourpy-1.3.3-cp313-cp313t-win_amd64.whl", hash = "sha256:87acf5963fc2b34825e5b6b048f40e3635dd547f590b04d2ab317c2619ef7ae8", size = 240570, upload-time = "2025-07-26T12:02:12.754Z" }, + { url = "https://files.pythonhosted.org/packages/80/99/2adc7d8ffead633234817ef8e9a87115c8a11927a94478f6bb3d3f4d4f7d/contourpy-1.3.3-cp313-cp313t-win_arm64.whl", hash = "sha256:3c30273eb2a55024ff31ba7d052dde990d7d8e5450f4bbb6e913558b3d6c2301", size = 199713, upload-time = "2025-07-26T12:02:14.4Z" }, + { url = "https://files.pythonhosted.org/packages/72/8b/4546f3ab60f78c514ffb7d01a0bd743f90de36f0019d1be84d0a708a580a/contourpy-1.3.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fde6c716d51c04b1c25d0b90364d0be954624a0ee9d60e23e850e8d48353d07a", size = 292189, upload-time = "2025-07-26T12:02:16.095Z" }, + { url = "https://files.pythonhosted.org/packages/fd/e1/3542a9cb596cadd76fcef413f19c79216e002623158befe6daa03dbfa88c/contourpy-1.3.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:cbedb772ed74ff5be440fa8eee9bd49f64f6e3fc09436d9c7d8f1c287b121d77", size = 273251, upload-time = "2025-07-26T12:02:17.524Z" }, + { url = "https://files.pythonhosted.org/packages/b1/71/f93e1e9471d189f79d0ce2497007731c1e6bf9ef6d1d61b911430c3db4e5/contourpy-1.3.3-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:22e9b1bd7a9b1d652cd77388465dc358dafcd2e217d35552424aa4f996f524f5", size = 335810, upload-time = "2025-07-26T12:02:18.9Z" }, + { url = "https://files.pythonhosted.org/packages/91/f9/e35f4c1c93f9275d4e38681a80506b5510e9327350c51f8d4a5a724d178c/contourpy-1.3.3-cp314-cp314-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a22738912262aa3e254e4f3cb079a95a67132fc5a063890e224393596902f5a4", size = 382871, upload-time = "2025-07-26T12:02:20.418Z" }, + { url = "https://files.pythonhosted.org/packages/b5/71/47b512f936f66a0a900d81c396a7e60d73419868fba959c61efed7a8ab46/contourpy-1.3.3-cp314-cp314-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:afe5a512f31ee6bd7d0dda52ec9864c984ca3d66664444f2d72e0dc4eb832e36", size = 386264, upload-time = "2025-07-26T12:02:21.916Z" }, + { url = "https://files.pythonhosted.org/packages/04/5f/9ff93450ba96b09c7c2b3f81c94de31c89f92292f1380261bd7195bea4ea/contourpy-1.3.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f64836de09927cba6f79dcd00fdd7d5329f3fccc633468507079c829ca4db4e3", size = 363819, upload-time = "2025-07-26T12:02:23.759Z" }, + { url = "https://files.pythonhosted.org/packages/3e/a6/0b185d4cc480ee494945cde102cb0149ae830b5fa17bf855b95f2e70ad13/contourpy-1.3.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1fd43c3be4c8e5fd6e4f2baeae35ae18176cf2e5cced681cca908addf1cdd53b", size = 1333650, upload-time = "2025-07-26T12:02:26.181Z" }, + { url = "https://files.pythonhosted.org/packages/43/d7/afdc95580ca56f30fbcd3060250f66cedbde69b4547028863abd8aa3b47e/contourpy-1.3.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:6afc576f7b33cf00996e5c1102dc2a8f7cc89e39c0b55df93a0b78c1bd992b36", size = 1404833, upload-time = "2025-07-26T12:02:28.782Z" }, + { url = "https://files.pythonhosted.org/packages/e2/e2/366af18a6d386f41132a48f033cbd2102e9b0cf6345d35ff0826cd984566/contourpy-1.3.3-cp314-cp314-win32.whl", hash = "sha256:66c8a43a4f7b8df8b71ee1840e4211a3c8d93b214b213f590e18a1beca458f7d", size = 189692, upload-time = "2025-07-26T12:02:30.128Z" }, + { url = "https://files.pythonhosted.org/packages/7d/c2/57f54b03d0f22d4044b8afb9ca0e184f8b1afd57b4f735c2fa70883dc601/contourpy-1.3.3-cp314-cp314-win_amd64.whl", hash = "sha256:cf9022ef053f2694e31d630feaacb21ea24224be1c3ad0520b13d844274614fd", size = 232424, upload-time = "2025-07-26T12:02:31.395Z" }, + { url = "https://files.pythonhosted.org/packages/18/79/a9416650df9b525737ab521aa181ccc42d56016d2123ddcb7b58e926a42c/contourpy-1.3.3-cp314-cp314-win_arm64.whl", hash = "sha256:95b181891b4c71de4bb404c6621e7e2390745f887f2a026b2d99e92c17892339", size = 198300, upload-time = "2025-07-26T12:02:32.956Z" }, + { url = "https://files.pythonhosted.org/packages/1f/42/38c159a7d0f2b7b9c04c64ab317042bb6952b713ba875c1681529a2932fe/contourpy-1.3.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:33c82d0138c0a062380332c861387650c82e4cf1747aaa6938b9b6516762e772", size = 306769, upload-time = "2025-07-26T12:02:34.2Z" }, + { url = "https://files.pythonhosted.org/packages/c3/6c/26a8205f24bca10974e77460de68d3d7c63e282e23782f1239f226fcae6f/contourpy-1.3.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:ea37e7b45949df430fe649e5de8351c423430046a2af20b1c1961cae3afcda77", size = 287892, upload-time = "2025-07-26T12:02:35.807Z" }, + { url = "https://files.pythonhosted.org/packages/66/06/8a475c8ab718ebfd7925661747dbb3c3ee9c82ac834ccb3570be49d129f4/contourpy-1.3.3-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d304906ecc71672e9c89e87c4675dc5c2645e1f4269a5063b99b0bb29f232d13", size = 326748, upload-time = "2025-07-26T12:02:37.193Z" }, + { url = "https://files.pythonhosted.org/packages/b4/a3/c5ca9f010a44c223f098fccd8b158bb1cb287378a31ac141f04730dc49be/contourpy-1.3.3-cp314-cp314t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ca658cd1a680a5c9ea96dc61cdbae1e85c8f25849843aa799dfd3cb370ad4fbe", size = 375554, upload-time = "2025-07-26T12:02:38.894Z" }, + { url = "https://files.pythonhosted.org/packages/80/5b/68bd33ae63fac658a4145088c1e894405e07584a316738710b636c6d0333/contourpy-1.3.3-cp314-cp314t-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ab2fd90904c503739a75b7c8c5c01160130ba67944a7b77bbf36ef8054576e7f", size = 388118, upload-time = "2025-07-26T12:02:40.642Z" }, + { url = "https://files.pythonhosted.org/packages/40/52/4c285a6435940ae25d7410a6c36bda5145839bc3f0beb20c707cda18b9d2/contourpy-1.3.3-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7301b89040075c30e5768810bc96a8e8d78085b47d8be6e4c3f5a0b4ed478a0", size = 352555, upload-time = "2025-07-26T12:02:42.25Z" }, + { url = "https://files.pythonhosted.org/packages/24/ee/3e81e1dd174f5c7fefe50e85d0892de05ca4e26ef1c9a59c2a57e43b865a/contourpy-1.3.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:2a2a8b627d5cc6b7c41a4beff6c5ad5eb848c88255fda4a8745f7e901b32d8e4", size = 1322295, upload-time = "2025-07-26T12:02:44.668Z" }, + { url = "https://files.pythonhosted.org/packages/3c/b2/6d913d4d04e14379de429057cd169e5e00f6c2af3bb13e1710bcbdb5da12/contourpy-1.3.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:fd6ec6be509c787f1caf6b247f0b1ca598bef13f4ddeaa126b7658215529ba0f", size = 1391027, upload-time = "2025-07-26T12:02:47.09Z" }, + { url = "https://files.pythonhosted.org/packages/93/8a/68a4ec5c55a2971213d29a9374913f7e9f18581945a7a31d1a39b5d2dfe5/contourpy-1.3.3-cp314-cp314t-win32.whl", hash = "sha256:e74a9a0f5e3fff48fb5a7f2fd2b9b70a3fe014a67522f79b7cca4c0c7e43c9ae", size = 202428, upload-time = "2025-07-26T12:02:48.691Z" }, + { url = "https://files.pythonhosted.org/packages/fa/96/fd9f641ffedc4fa3ace923af73b9d07e869496c9cc7a459103e6e978992f/contourpy-1.3.3-cp314-cp314t-win_amd64.whl", hash = "sha256:13b68d6a62db8eafaebb8039218921399baf6e47bf85006fd8529f2a08ef33fc", size = 250331, upload-time = "2025-07-26T12:02:50.137Z" }, + { url = "https://files.pythonhosted.org/packages/ae/8c/469afb6465b853afff216f9528ffda78a915ff880ed58813ba4faf4ba0b6/contourpy-1.3.3-cp314-cp314t-win_arm64.whl", hash = "sha256:b7448cb5a725bb1e35ce88771b86fba35ef418952474492cf7c764059933ff8b", size = 203831, upload-time = "2025-07-26T12:02:51.449Z" }, +] + +[[package]] +name = "cycler" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a9/95/a3dbbb5028f35eafb79008e7522a75244477d2838f38cbb722248dabc2a8/cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c", size = 7615, upload-time = "2023-10-07T05:32:18.335Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321, upload-time = "2023-10-07T05:32:16.783Z" }, +] + +[[package]] +name = "debugpy" +version = "1.8.16" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ca/d4/722d0bcc7986172ac2ef3c979ad56a1030e3afd44ced136d45f8142b1f4a/debugpy-1.8.16.tar.gz", hash = "sha256:31e69a1feb1cf6b51efbed3f6c9b0ef03bc46ff050679c4be7ea6d2e23540870", size = 1643809, upload-time = "2025-08-06T18:00:02.647Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/66/607ab45cc79e60624df386e233ab64a6d8d39ea02e7f80e19c1d451345bb/debugpy-1.8.16-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:85df3adb1de5258dca910ae0bb185e48c98801ec15018a263a92bb06be1c8787", size = 2496157, upload-time = "2025-08-06T18:00:24.361Z" }, + { url = "https://files.pythonhosted.org/packages/4d/a0/c95baae08a75bceabb79868d663a0736655e427ab9c81fb848da29edaeac/debugpy-1.8.16-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bee89e948bc236a5c43c4214ac62d28b29388453f5fd328d739035e205365f0b", size = 4222491, upload-time = "2025-08-06T18:00:25.806Z" }, + { url = "https://files.pythonhosted.org/packages/5b/2f/1c8db6ddd8a257c3cd2c46413b267f1d5fa3df910401c899513ce30392d6/debugpy-1.8.16-cp313-cp313-win32.whl", hash = "sha256:cf358066650439847ec5ff3dae1da98b5461ea5da0173d93d5e10f477c94609a", size = 5281126, upload-time = "2025-08-06T18:00:27.207Z" }, + { url = "https://files.pythonhosted.org/packages/d3/ba/c3e154ab307366d6c5a9c1b68de04914e2ce7fa2f50d578311d8cc5074b2/debugpy-1.8.16-cp313-cp313-win_amd64.whl", hash = "sha256:b5aea1083f6f50023e8509399d7dc6535a351cc9f2e8827d1e093175e4d9fa4c", size = 5323094, upload-time = "2025-08-06T18:00:29.03Z" }, + { url = "https://files.pythonhosted.org/packages/52/57/ecc9ae29fa5b2d90107cd1d9bf8ed19aacb74b2264d986ae9d44fe9bdf87/debugpy-1.8.16-py2.py3-none-any.whl", hash = "sha256:19c9521962475b87da6f673514f7fd610328757ec993bf7ec0d8c96f9a325f9e", size = 5287700, upload-time = "2025-08-06T18:00:42.333Z" }, +] + +[[package]] +name = "decorator" +version = "5.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711, upload-time = "2025-02-24T04:41:34.073Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190, upload-time = "2025-02-24T04:41:32.565Z" }, +] + +[[package]] +name = "executing" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/91/50/a9d80c47ff289c611ff12e63f7c5d13942c65d68125160cefd768c73e6e4/executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755", size = 978693, upload-time = "2025-01-22T15:41:29.403Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa", size = 26702, upload-time = "2025-01-22T15:41:25.929Z" }, +] + +[[package]] +name = "fonttools" +version = "4.59.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/11/7f/29c9c3fe4246f6ad96fee52b88d0dc3a863c7563b0afc959e36d78b965dc/fonttools-4.59.1.tar.gz", hash = "sha256:74995b402ad09822a4c8002438e54940d9f1ecda898d2bb057729d7da983e4cb", size = 3534394, upload-time = "2025-08-14T16:28:14.266Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/19/5e/94a4d7f36c36e82f6a81e0064d148542e0ad3e6cf51fc5461ca128f3658d/fonttools-4.59.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:89d9957b54246c6251345297dddf77a84d2c19df96af30d2de24093bbdf0528b", size = 2760192, upload-time = "2025-08-14T16:27:03.024Z" }, + { url = "https://files.pythonhosted.org/packages/ee/a5/f50712fc33ef9d06953c660cefaf8c8fe4b8bc74fa21f44ee5e4f9739439/fonttools-4.59.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8156b11c0d5405810d216f53907bd0f8b982aa5f1e7e3127ab3be1a4062154ff", size = 2332694, upload-time = "2025-08-14T16:27:04.883Z" }, + { url = "https://files.pythonhosted.org/packages/e9/a2/5a9fc21c354bf8613215ce233ab0d933bd17d5ff4c29693636551adbc7b3/fonttools-4.59.1-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:8387876a8011caec52d327d5e5bca705d9399ec4b17afb8b431ec50d47c17d23", size = 4889254, upload-time = "2025-08-14T16:27:07.02Z" }, + { url = "https://files.pythonhosted.org/packages/2d/e5/54a6dc811eba018d022ca2e8bd6f2969291f9586ccf9a22a05fc55f91250/fonttools-4.59.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fb13823a74b3a9204a8ed76d3d6d5ec12e64cc5bc44914eb9ff1cdac04facd43", size = 4949109, upload-time = "2025-08-14T16:27:09.3Z" }, + { url = "https://files.pythonhosted.org/packages/db/15/b05c72a248a95bea0fd05fbd95acdf0742945942143fcf961343b7a3663a/fonttools-4.59.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e1ca10da138c300f768bb68e40e5b20b6ecfbd95f91aac4cc15010b6b9d65455", size = 4888428, upload-time = "2025-08-14T16:27:11.514Z" }, + { url = "https://files.pythonhosted.org/packages/63/71/c7d6840f858d695adc0c4371ec45e3fb1c8e060b276ba944e2800495aca4/fonttools-4.59.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:2beb5bfc4887a3130f8625349605a3a45fe345655ce6031d1bac11017454b943", size = 5032668, upload-time = "2025-08-14T16:27:13.872Z" }, + { url = "https://files.pythonhosted.org/packages/90/54/57be4aca6f1312e2bc4d811200dd822325794e05bdb26eeff0976edca651/fonttools-4.59.1-cp313-cp313-win32.whl", hash = "sha256:419f16d750d78e6d704bfe97b48bba2f73b15c9418f817d0cb8a9ca87a5b94bf", size = 2201832, upload-time = "2025-08-14T16:27:16.126Z" }, + { url = "https://files.pythonhosted.org/packages/fc/1f/1899a6175a5f900ed8730a0d64f53ca1b596ed7609bfda033cf659114258/fonttools-4.59.1-cp313-cp313-win_amd64.whl", hash = "sha256:c536f8a852e8d3fa71dde1ec03892aee50be59f7154b533f0bf3c1174cfd5126", size = 2250673, upload-time = "2025-08-14T16:27:18.033Z" }, + { url = "https://files.pythonhosted.org/packages/15/07/f6ba82c22f118d9985c37fea65d8d715ca71300d78b6c6e90874dc59f11d/fonttools-4.59.1-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:d5c3bfdc9663f3d4b565f9cb3b8c1efb3e178186435b45105bde7328cfddd7fe", size = 2758606, upload-time = "2025-08-14T16:27:20.064Z" }, + { url = "https://files.pythonhosted.org/packages/3a/81/84aa3d0ce27b0112c28b67b637ff7a47cf401cf5fbfee6476e4bc9777580/fonttools-4.59.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:ea03f1da0d722fe3c2278a05957e6550175571a4894fbf9d178ceef4a3783d2b", size = 2330187, upload-time = "2025-08-14T16:27:22.42Z" }, + { url = "https://files.pythonhosted.org/packages/17/41/b3ba43f78afb321e2e50232c87304c8d0f5ab39b64389b8286cc39cdb824/fonttools-4.59.1-cp314-cp314-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:57a3708ca6bfccb790f585fa6d8f29432ec329618a09ff94c16bcb3c55994643", size = 4832020, upload-time = "2025-08-14T16:27:24.214Z" }, + { url = "https://files.pythonhosted.org/packages/67/b1/3af871c7fb325a68938e7ce544ca48bfd2c6bb7b357f3c8252933b29100a/fonttools-4.59.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:729367c91eb1ee84e61a733acc485065a00590618ca31c438e7dd4d600c01486", size = 4930687, upload-time = "2025-08-14T16:27:26.484Z" }, + { url = "https://files.pythonhosted.org/packages/c5/4f/299fc44646b30d9ef03ffaa78b109c7bd32121f0d8f10009ee73ac4514bc/fonttools-4.59.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:8f8ef66ac6db450193ed150e10b3b45dde7aded10c5d279968bc63368027f62b", size = 4875794, upload-time = "2025-08-14T16:27:28.887Z" }, + { url = "https://files.pythonhosted.org/packages/90/cf/a0a3d763ab58f5f81ceff104ddb662fd9da94248694862b9c6cbd509fdd5/fonttools-4.59.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:075f745d539a998cd92cb84c339a82e53e49114ec62aaea8307c80d3ad3aef3a", size = 4985780, upload-time = "2025-08-14T16:27:30.858Z" }, + { url = "https://files.pythonhosted.org/packages/72/c5/ba76511aaae143d89c29cd32ce30bafb61c477e8759a1590b8483f8065f8/fonttools-4.59.1-cp314-cp314-win32.whl", hash = "sha256:c2b0597522d4c5bb18aa5cf258746a2d4a90f25878cbe865e4d35526abd1b9fc", size = 2205610, upload-time = "2025-08-14T16:27:32.578Z" }, + { url = "https://files.pythonhosted.org/packages/a9/65/b250e69d6caf35bc65cddbf608be0662d741c248f2e7503ab01081fc267e/fonttools-4.59.1-cp314-cp314-win_amd64.whl", hash = "sha256:e9ad4ce044e3236f0814c906ccce8647046cc557539661e35211faadf76f283b", size = 2255376, upload-time = "2025-08-14T16:27:34.653Z" }, + { url = "https://files.pythonhosted.org/packages/11/f3/0bc63a23ac0f8175e23d82f85d6ee693fbd849de7ad739f0a3622182ad29/fonttools-4.59.1-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:652159e8214eb4856e8387ebcd6b6bd336ee258cbeb639c8be52005b122b9609", size = 2826546, upload-time = "2025-08-14T16:27:36.783Z" }, + { url = "https://files.pythonhosted.org/packages/e9/46/a3968205590e068fdf60e926be329a207782576cb584d3b7dcd2d2844957/fonttools-4.59.1-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:43d177cd0e847ea026fedd9f099dc917da136ed8792d142298a252836390c478", size = 2359771, upload-time = "2025-08-14T16:27:39.678Z" }, + { url = "https://files.pythonhosted.org/packages/b8/ff/d14b4c283879e8cb57862d9624a34fe6522b6fcdd46ccbfc58900958794a/fonttools-4.59.1-cp314-cp314t-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:e54437651e1440ee53a95e6ceb6ee440b67a3d348c76f45f4f48de1a5ecab019", size = 4831575, upload-time = "2025-08-14T16:27:41.885Z" }, + { url = "https://files.pythonhosted.org/packages/9c/04/a277d9a584a49d98ca12d3b2c6663bdf333ae97aaa83bd0cdabf7c5a6c84/fonttools-4.59.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6065fdec8ff44c32a483fd44abe5bcdb40dd5e2571a5034b555348f2b3a52cea", size = 5069962, upload-time = "2025-08-14T16:27:44.284Z" }, + { url = "https://files.pythonhosted.org/packages/16/6f/3d2ae69d96c4cdee6dfe7598ca5519a1514487700ca3d7c49c5a1ad65308/fonttools-4.59.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:42052b56d176f8b315fbc09259439c013c0cb2109df72447148aeda677599612", size = 4942926, upload-time = "2025-08-14T16:27:46.523Z" }, + { url = "https://files.pythonhosted.org/packages/0c/d3/c17379e0048d03ce26b38e4ab0e9a98280395b00529e093fe2d663ac0658/fonttools-4.59.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:bcd52eaa5c4c593ae9f447c1d13e7e4a00ca21d755645efa660b6999425b3c88", size = 4958678, upload-time = "2025-08-14T16:27:48.555Z" }, + { url = "https://files.pythonhosted.org/packages/8c/3f/c5543a1540abdfb4d375e3ebeb84de365ab9b153ec14cb7db05f537dd1e7/fonttools-4.59.1-cp314-cp314t-win32.whl", hash = "sha256:02e4fdf27c550dded10fe038a5981c29f81cb9bc649ff2eaa48e80dab8998f97", size = 2266706, upload-time = "2025-08-14T16:27:50.556Z" }, + { url = "https://files.pythonhosted.org/packages/3e/99/85bff6e674226bc8402f983e365f07e76d990e7220ba72bcc738fef52391/fonttools-4.59.1-cp314-cp314t-win_amd64.whl", hash = "sha256:412a5fd6345872a7c249dac5bcce380393f40c1c316ac07f447bc17d51900922", size = 2329994, upload-time = "2025-08-14T16:27:52.36Z" }, + { url = "https://files.pythonhosted.org/packages/0f/64/9d606e66d498917cd7a2ff24f558010d42d6fd4576d9dd57f0bd98333f5a/fonttools-4.59.1-py3-none-any.whl", hash = "sha256:647db657073672a8330608970a984d51573557f328030566521bc03415535042", size = 1130094, upload-time = "2025-08-14T16:28:12.048Z" }, +] + +[[package]] +name = "fys4150-solutions" +version = "0.1.0" +source = { virtual = "." } +dependencies = [ + { name = "ipykernel" }, + { name = "matplotlib" }, + { name = "numpy" }, + { name = "pandas" }, + { name = "scipy" }, +] + +[package.metadata] +requires-dist = [ + { name = "ipykernel", specifier = ">=6.30.1" }, + { name = "matplotlib", specifier = ">=3.10.5" }, + { name = "numpy", specifier = ">=2.3.2" }, + { name = "pandas", specifier = ">=2.3.2" }, + { name = "scipy", specifier = ">=1.16.1" }, +] + +[[package]] +name = "ipykernel" +version = "6.30.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "appnope", marker = "sys_platform == 'darwin'" }, + { name = "comm" }, + { name = "debugpy" }, + { name = "ipython" }, + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "matplotlib-inline" }, + { name = "nest-asyncio" }, + { name = "packaging" }, + { name = "psutil" }, + { name = "pyzmq" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bb/76/11082e338e0daadc89c8ff866185de11daf67d181901038f9e139d109761/ipykernel-6.30.1.tar.gz", hash = "sha256:6abb270161896402e76b91394fcdce5d1be5d45f456671e5080572f8505be39b", size = 166260, upload-time = "2025-08-04T15:47:35.018Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fc/c7/b445faca8deb954fe536abebff4ece5b097b923de482b26e78448c89d1dd/ipykernel-6.30.1-py3-none-any.whl", hash = "sha256:aa6b9fb93dca949069d8b85b6c79b2518e32ac583ae9c7d37c51d119e18b3fb4", size = 117484, upload-time = "2025-08-04T15:47:32.622Z" }, +] + +[[package]] +name = "ipython" +version = "9.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "decorator" }, + { name = "ipython-pygments-lexers" }, + { name = "jedi" }, + { name = "matplotlib-inline" }, + { name = "pexpect", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "prompt-toolkit" }, + { name = "pygments" }, + { name = "stack-data" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/54/80/406f9e3bde1c1fd9bf5a0be9d090f8ae623e401b7670d8f6fdf2ab679891/ipython-9.4.0.tar.gz", hash = "sha256:c033c6d4e7914c3d9768aabe76bbe87ba1dc66a92a05db6bfa1125d81f2ee270", size = 4385338, upload-time = "2025-07-01T11:11:30.606Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/63/f8/0031ee2b906a15a33d6bfc12dd09c3dfa966b3cb5b284ecfb7549e6ac3c4/ipython-9.4.0-py3-none-any.whl", hash = "sha256:25850f025a446d9b359e8d296ba175a36aedd32e83ca9b5060430fe16801f066", size = 611021, upload-time = "2025-07-01T11:11:27.85Z" }, +] + +[[package]] +name = "ipython-pygments-lexers" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393, upload-time = "2025-01-17T11:24:34.505Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074, upload-time = "2025-01-17T11:24:33.271Z" }, +] + +[[package]] +name = "jedi" +version = "0.19.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "parso" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/72/3a/79a912fbd4d8dd6fbb02bf69afd3bb72cf0c729bb3063c6f4498603db17a/jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0", size = 1231287, upload-time = "2024-11-11T01:41:42.873Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278, upload-time = "2024-11-11T01:41:40.175Z" }, +] + +[[package]] +name = "jupyter-client" +version = "8.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-core" }, + { name = "python-dateutil" }, + { name = "pyzmq" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/71/22/bf9f12fdaeae18019a468b68952a60fe6dbab5d67cd2a103cac7659b41ca/jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419", size = 342019, upload-time = "2024-09-17T10:44:17.613Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f", size = 106105, upload-time = "2024-09-17T10:44:15.218Z" }, +] + +[[package]] +name = "jupyter-core" +version = "5.8.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "platformdirs" }, + { name = "pywin32", marker = "platform_python_implementation != 'PyPy' and sys_platform == 'win32'" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/99/1b/72906d554acfeb588332eaaa6f61577705e9ec752ddb486f302dafa292d9/jupyter_core-5.8.1.tar.gz", hash = "sha256:0a5f9706f70e64786b75acba995988915ebd4601c8a52e534a40b51c95f59941", size = 88923, upload-time = "2025-05-27T07:38:16.655Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2f/57/6bffd4b20b88da3800c5d691e0337761576ee688eb01299eae865689d2df/jupyter_core-5.8.1-py3-none-any.whl", hash = "sha256:c28d268fc90fb53f1338ded2eb410704c5449a358406e8a948b75706e24863d0", size = 28880, upload-time = "2025-05-27T07:38:15.137Z" }, +] + +[[package]] +name = "kiwisolver" +version = "1.4.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5c/3c/85844f1b0feb11ee581ac23fe5fce65cd049a200c1446708cc1b7f922875/kiwisolver-1.4.9.tar.gz", hash = "sha256:c3b22c26c6fd6811b0ae8363b95ca8ce4ea3c202d3d0975b2914310ceb1bcc4d", size = 97564, upload-time = "2025-08-10T21:27:49.279Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/31/c1/c2686cda909742ab66c7388e9a1a8521a59eb89f8bcfbee28fc980d07e24/kiwisolver-1.4.9-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a5d0432ccf1c7ab14f9949eec60c5d1f924f17c037e9f8b33352fa05799359b8", size = 123681, upload-time = "2025-08-10T21:26:26.725Z" }, + { url = "https://files.pythonhosted.org/packages/ca/f0/f44f50c9f5b1a1860261092e3bc91ecdc9acda848a8b8c6abfda4a24dd5c/kiwisolver-1.4.9-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efb3a45b35622bb6c16dbfab491a8f5a391fe0e9d45ef32f4df85658232ca0e2", size = 66464, upload-time = "2025-08-10T21:26:27.733Z" }, + { url = "https://files.pythonhosted.org/packages/2d/7a/9d90a151f558e29c3936b8a47ac770235f436f2120aca41a6d5f3d62ae8d/kiwisolver-1.4.9-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1a12cf6398e8a0a001a059747a1cbf24705e18fe413bc22de7b3d15c67cffe3f", size = 64961, upload-time = "2025-08-10T21:26:28.729Z" }, + { url = "https://files.pythonhosted.org/packages/e9/e9/f218a2cb3a9ffbe324ca29a9e399fa2d2866d7f348ec3a88df87fc248fc5/kiwisolver-1.4.9-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b67e6efbf68e077dd71d1a6b37e43e1a99d0bff1a3d51867d45ee8908b931098", size = 1474607, upload-time = "2025-08-10T21:26:29.798Z" }, + { url = "https://files.pythonhosted.org/packages/d9/28/aac26d4c882f14de59041636292bc838db8961373825df23b8eeb807e198/kiwisolver-1.4.9-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5656aa670507437af0207645273ccdfee4f14bacd7f7c67a4306d0dcaeaf6eed", size = 1276546, upload-time = "2025-08-10T21:26:31.401Z" }, + { url = "https://files.pythonhosted.org/packages/8b/ad/8bfc1c93d4cc565e5069162f610ba2f48ff39b7de4b5b8d93f69f30c4bed/kiwisolver-1.4.9-cp313-cp313-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:bfc08add558155345129c7803b3671cf195e6a56e7a12f3dde7c57d9b417f525", size = 1294482, upload-time = "2025-08-10T21:26:32.721Z" }, + { url = "https://files.pythonhosted.org/packages/da/f1/6aca55ff798901d8ce403206d00e033191f63d82dd708a186e0ed2067e9c/kiwisolver-1.4.9-cp313-cp313-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:40092754720b174e6ccf9e845d0d8c7d8e12c3d71e7fc35f55f3813e96376f78", size = 1343720, upload-time = "2025-08-10T21:26:34.032Z" }, + { url = "https://files.pythonhosted.org/packages/d1/91/eed031876c595c81d90d0f6fc681ece250e14bf6998c3d7c419466b523b7/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:497d05f29a1300d14e02e6441cf0f5ee81c1ff5a304b0d9fb77423974684e08b", size = 2224907, upload-time = "2025-08-10T21:26:35.824Z" }, + { url = "https://files.pythonhosted.org/packages/e9/ec/4d1925f2e49617b9cca9c34bfa11adefad49d00db038e692a559454dfb2e/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:bdd1a81a1860476eb41ac4bc1e07b3f07259e6d55bbf739b79c8aaedcf512799", size = 2321334, upload-time = "2025-08-10T21:26:37.534Z" }, + { url = "https://files.pythonhosted.org/packages/43/cb/450cd4499356f68802750c6ddc18647b8ea01ffa28f50d20598e0befe6e9/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:e6b93f13371d341afee3be9f7c5964e3fe61d5fa30f6a30eb49856935dfe4fc3", size = 2488313, upload-time = "2025-08-10T21:26:39.191Z" }, + { url = "https://files.pythonhosted.org/packages/71/67/fc76242bd99f885651128a5d4fa6083e5524694b7c88b489b1b55fdc491d/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d75aa530ccfaa593da12834b86a0724f58bff12706659baa9227c2ccaa06264c", size = 2291970, upload-time = "2025-08-10T21:26:40.828Z" }, + { url = "https://files.pythonhosted.org/packages/75/bd/f1a5d894000941739f2ae1b65a32892349423ad49c2e6d0771d0bad3fae4/kiwisolver-1.4.9-cp313-cp313-win_amd64.whl", hash = "sha256:dd0a578400839256df88c16abddf9ba14813ec5f21362e1fe65022e00c883d4d", size = 73894, upload-time = "2025-08-10T21:26:42.33Z" }, + { url = "https://files.pythonhosted.org/packages/95/38/dce480814d25b99a391abbddadc78f7c117c6da34be68ca8b02d5848b424/kiwisolver-1.4.9-cp313-cp313-win_arm64.whl", hash = "sha256:d4188e73af84ca82468f09cadc5ac4db578109e52acb4518d8154698d3a87ca2", size = 64995, upload-time = "2025-08-10T21:26:43.889Z" }, + { url = "https://files.pythonhosted.org/packages/e2/37/7d218ce5d92dadc5ebdd9070d903e0c7cf7edfe03f179433ac4d13ce659c/kiwisolver-1.4.9-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:5a0f2724dfd4e3b3ac5a82436a8e6fd16baa7d507117e4279b660fe8ca38a3a1", size = 126510, upload-time = "2025-08-10T21:26:44.915Z" }, + { url = "https://files.pythonhosted.org/packages/23/b0/e85a2b48233daef4b648fb657ebbb6f8367696a2d9548a00b4ee0eb67803/kiwisolver-1.4.9-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:1b11d6a633e4ed84fc0ddafd4ebfd8ea49b3f25082c04ad12b8315c11d504dc1", size = 67903, upload-time = "2025-08-10T21:26:45.934Z" }, + { url = "https://files.pythonhosted.org/packages/44/98/f2425bc0113ad7de24da6bb4dae1343476e95e1d738be7c04d31a5d037fd/kiwisolver-1.4.9-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61874cdb0a36016354853593cffc38e56fc9ca5aa97d2c05d3dcf6922cd55a11", size = 66402, upload-time = "2025-08-10T21:26:47.101Z" }, + { url = "https://files.pythonhosted.org/packages/98/d8/594657886df9f34c4177cc353cc28ca7e6e5eb562d37ccc233bff43bbe2a/kiwisolver-1.4.9-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:60c439763a969a6af93b4881db0eed8fadf93ee98e18cbc35bc8da868d0c4f0c", size = 1582135, upload-time = "2025-08-10T21:26:48.665Z" }, + { url = "https://files.pythonhosted.org/packages/5c/c6/38a115b7170f8b306fc929e166340c24958347308ea3012c2b44e7e295db/kiwisolver-1.4.9-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:92a2f997387a1b79a75e7803aa7ded2cfbe2823852ccf1ba3bcf613b62ae3197", size = 1389409, upload-time = "2025-08-10T21:26:50.335Z" }, + { url = "https://files.pythonhosted.org/packages/bf/3b/e04883dace81f24a568bcee6eb3001da4ba05114afa622ec9b6fafdc1f5e/kiwisolver-1.4.9-cp313-cp313t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a31d512c812daea6d8b3be3b2bfcbeb091dbb09177706569bcfc6240dcf8b41c", size = 1401763, upload-time = "2025-08-10T21:26:51.867Z" }, + { url = "https://files.pythonhosted.org/packages/9f/80/20ace48e33408947af49d7d15c341eaee69e4e0304aab4b7660e234d6288/kiwisolver-1.4.9-cp313-cp313t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:52a15b0f35dad39862d376df10c5230155243a2c1a436e39eb55623ccbd68185", size = 1453643, upload-time = "2025-08-10T21:26:53.592Z" }, + { url = "https://files.pythonhosted.org/packages/64/31/6ce4380a4cd1f515bdda976a1e90e547ccd47b67a1546d63884463c92ca9/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a30fd6fdef1430fd9e1ba7b3398b5ee4e2887783917a687d86ba69985fb08748", size = 2330818, upload-time = "2025-08-10T21:26:55.051Z" }, + { url = "https://files.pythonhosted.org/packages/fa/e9/3f3fcba3bcc7432c795b82646306e822f3fd74df0ee81f0fa067a1f95668/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:cc9617b46837c6468197b5945e196ee9ca43057bb7d9d1ae688101e4e1dddf64", size = 2419963, upload-time = "2025-08-10T21:26:56.421Z" }, + { url = "https://files.pythonhosted.org/packages/99/43/7320c50e4133575c66e9f7dadead35ab22d7c012a3b09bb35647792b2a6d/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:0ab74e19f6a2b027ea4f845a78827969af45ce790e6cb3e1ebab71bdf9f215ff", size = 2594639, upload-time = "2025-08-10T21:26:57.882Z" }, + { url = "https://files.pythonhosted.org/packages/65/d6/17ae4a270d4a987ef8a385b906d2bdfc9fce502d6dc0d3aea865b47f548c/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dba5ee5d3981160c28d5490f0d1b7ed730c22470ff7f6cc26cfcfaacb9896a07", size = 2391741, upload-time = "2025-08-10T21:26:59.237Z" }, + { url = "https://files.pythonhosted.org/packages/2a/8f/8f6f491d595a9e5912971f3f863d81baddccc8a4d0c3749d6a0dd9ffc9df/kiwisolver-1.4.9-cp313-cp313t-win_arm64.whl", hash = "sha256:0749fd8f4218ad2e851e11cc4dc05c7cbc0cbc4267bdfdb31782e65aace4ee9c", size = 68646, upload-time = "2025-08-10T21:27:00.52Z" }, + { url = "https://files.pythonhosted.org/packages/6b/32/6cc0fbc9c54d06c2969faa9c1d29f5751a2e51809dd55c69055e62d9b426/kiwisolver-1.4.9-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:9928fe1eb816d11ae170885a74d074f57af3a0d65777ca47e9aeb854a1fba386", size = 123806, upload-time = "2025-08-10T21:27:01.537Z" }, + { url = "https://files.pythonhosted.org/packages/b2/dd/2bfb1d4a4823d92e8cbb420fe024b8d2167f72079b3bb941207c42570bdf/kiwisolver-1.4.9-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:d0005b053977e7b43388ddec89fa567f43d4f6d5c2c0affe57de5ebf290dc552", size = 66605, upload-time = "2025-08-10T21:27:03.335Z" }, + { url = "https://files.pythonhosted.org/packages/f7/69/00aafdb4e4509c2ca6064646cba9cd4b37933898f426756adb2cb92ebbed/kiwisolver-1.4.9-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:2635d352d67458b66fd0667c14cb1d4145e9560d503219034a18a87e971ce4f3", size = 64925, upload-time = "2025-08-10T21:27:04.339Z" }, + { url = "https://files.pythonhosted.org/packages/43/dc/51acc6791aa14e5cb6d8a2e28cefb0dc2886d8862795449d021334c0df20/kiwisolver-1.4.9-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:767c23ad1c58c9e827b649a9ab7809fd5fd9db266a9cf02b0e926ddc2c680d58", size = 1472414, upload-time = "2025-08-10T21:27:05.437Z" }, + { url = "https://files.pythonhosted.org/packages/3d/bb/93fa64a81db304ac8a246f834d5094fae4b13baf53c839d6bb6e81177129/kiwisolver-1.4.9-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:72d0eb9fba308b8311685c2268cf7d0a0639a6cd027d8128659f72bdd8a024b4", size = 1281272, upload-time = "2025-08-10T21:27:07.063Z" }, + { url = "https://files.pythonhosted.org/packages/70/e6/6df102916960fb8d05069d4bd92d6d9a8202d5a3e2444494e7cd50f65b7a/kiwisolver-1.4.9-cp314-cp314-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f68e4f3eeca8fb22cc3d731f9715a13b652795ef657a13df1ad0c7dc0e9731df", size = 1298578, upload-time = "2025-08-10T21:27:08.452Z" }, + { url = "https://files.pythonhosted.org/packages/7c/47/e142aaa612f5343736b087864dbaebc53ea8831453fb47e7521fa8658f30/kiwisolver-1.4.9-cp314-cp314-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d84cd4061ae292d8ac367b2c3fa3aad11cb8625a95d135fe93f286f914f3f5a6", size = 1345607, upload-time = "2025-08-10T21:27:10.125Z" }, + { url = "https://files.pythonhosted.org/packages/54/89/d641a746194a0f4d1a3670fb900d0dbaa786fb98341056814bc3f058fa52/kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:a60ea74330b91bd22a29638940d115df9dc00af5035a9a2a6ad9399ffb4ceca5", size = 2230150, upload-time = "2025-08-10T21:27:11.484Z" }, + { url = "https://files.pythonhosted.org/packages/aa/6b/5ee1207198febdf16ac11f78c5ae40861b809cbe0e6d2a8d5b0b3044b199/kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:ce6a3a4e106cf35c2d9c4fa17c05ce0b180db622736845d4315519397a77beaf", size = 2325979, upload-time = "2025-08-10T21:27:12.917Z" }, + { url = "https://files.pythonhosted.org/packages/fc/ff/b269eefd90f4ae14dcc74973d5a0f6d28d3b9bb1afd8c0340513afe6b39a/kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:77937e5e2a38a7b48eef0585114fe7930346993a88060d0bf886086d2aa49ef5", size = 2491456, upload-time = "2025-08-10T21:27:14.353Z" }, + { url = "https://files.pythonhosted.org/packages/fc/d4/10303190bd4d30de547534601e259a4fbf014eed94aae3e5521129215086/kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:24c175051354f4a28c5d6a31c93906dc653e2bf234e8a4bbfb964892078898ce", size = 2294621, upload-time = "2025-08-10T21:27:15.808Z" }, + { url = "https://files.pythonhosted.org/packages/28/e0/a9a90416fce5c0be25742729c2ea52105d62eda6c4be4d803c2a7be1fa50/kiwisolver-1.4.9-cp314-cp314-win_amd64.whl", hash = "sha256:0763515d4df10edf6d06a3c19734e2566368980d21ebec439f33f9eb936c07b7", size = 75417, upload-time = "2025-08-10T21:27:17.436Z" }, + { url = "https://files.pythonhosted.org/packages/1f/10/6949958215b7a9a264299a7db195564e87900f709db9245e4ebdd3c70779/kiwisolver-1.4.9-cp314-cp314-win_arm64.whl", hash = "sha256:0e4e2bf29574a6a7b7f6cb5fa69293b9f96c928949ac4a53ba3f525dffb87f9c", size = 66582, upload-time = "2025-08-10T21:27:18.436Z" }, + { url = "https://files.pythonhosted.org/packages/ec/79/60e53067903d3bc5469b369fe0dfc6b3482e2133e85dae9daa9527535991/kiwisolver-1.4.9-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:d976bbb382b202f71c67f77b0ac11244021cfa3f7dfd9e562eefcea2df711548", size = 126514, upload-time = "2025-08-10T21:27:19.465Z" }, + { url = "https://files.pythonhosted.org/packages/25/d1/4843d3e8d46b072c12a38c97c57fab4608d36e13fe47d47ee96b4d61ba6f/kiwisolver-1.4.9-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:2489e4e5d7ef9a1c300a5e0196e43d9c739f066ef23270607d45aba368b91f2d", size = 67905, upload-time = "2025-08-10T21:27:20.51Z" }, + { url = "https://files.pythonhosted.org/packages/8c/ae/29ffcbd239aea8b93108de1278271ae764dfc0d803a5693914975f200596/kiwisolver-1.4.9-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:e2ea9f7ab7fbf18fffb1b5434ce7c69a07582f7acc7717720f1d69f3e806f90c", size = 66399, upload-time = "2025-08-10T21:27:21.496Z" }, + { url = "https://files.pythonhosted.org/packages/a1/ae/d7ba902aa604152c2ceba5d352d7b62106bedbccc8e95c3934d94472bfa3/kiwisolver-1.4.9-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b34e51affded8faee0dfdb705416153819d8ea9250bbbf7ea1b249bdeb5f1122", size = 1582197, upload-time = "2025-08-10T21:27:22.604Z" }, + { url = "https://files.pythonhosted.org/packages/f2/41/27c70d427eddb8bc7e4f16420a20fefc6f480312122a59a959fdfe0445ad/kiwisolver-1.4.9-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d8aacd3d4b33b772542b2e01beb50187536967b514b00003bdda7589722d2a64", size = 1390125, upload-time = "2025-08-10T21:27:24.036Z" }, + { url = "https://files.pythonhosted.org/packages/41/42/b3799a12bafc76d962ad69083f8b43b12bf4fe78b097b12e105d75c9b8f1/kiwisolver-1.4.9-cp314-cp314t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7cf974dd4e35fa315563ac99d6287a1024e4dc2077b8a7d7cd3d2fb65d283134", size = 1402612, upload-time = "2025-08-10T21:27:25.773Z" }, + { url = "https://files.pythonhosted.org/packages/d2/b5/a210ea073ea1cfaca1bb5c55a62307d8252f531beb364e18aa1e0888b5a0/kiwisolver-1.4.9-cp314-cp314t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:85bd218b5ecfbee8c8a82e121802dcb519a86044c9c3b2e4aef02fa05c6da370", size = 1453990, upload-time = "2025-08-10T21:27:27.089Z" }, + { url = "https://files.pythonhosted.org/packages/5f/ce/a829eb8c033e977d7ea03ed32fb3c1781b4fa0433fbadfff29e39c676f32/kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:0856e241c2d3df4efef7c04a1e46b1936b6120c9bcf36dd216e3acd84bc4fb21", size = 2331601, upload-time = "2025-08-10T21:27:29.343Z" }, + { url = "https://files.pythonhosted.org/packages/e0/4b/b5e97eb142eb9cd0072dacfcdcd31b1c66dc7352b0f7c7255d339c0edf00/kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:9af39d6551f97d31a4deebeac6f45b156f9755ddc59c07b402c148f5dbb6482a", size = 2422041, upload-time = "2025-08-10T21:27:30.754Z" }, + { url = "https://files.pythonhosted.org/packages/40/be/8eb4cd53e1b85ba4edc3a9321666f12b83113a178845593307a3e7891f44/kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:bb4ae2b57fc1d8cbd1cf7b1d9913803681ffa903e7488012be5b76dedf49297f", size = 2594897, upload-time = "2025-08-10T21:27:32.803Z" }, + { url = "https://files.pythonhosted.org/packages/99/dd/841e9a66c4715477ea0abc78da039832fbb09dac5c35c58dc4c41a407b8a/kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:aedff62918805fb62d43a4aa2ecd4482c380dc76cd31bd7c8878588a61bd0369", size = 2391835, upload-time = "2025-08-10T21:27:34.23Z" }, + { url = "https://files.pythonhosted.org/packages/0c/28/4b2e5c47a0da96896fdfdb006340ade064afa1e63675d01ea5ac222b6d52/kiwisolver-1.4.9-cp314-cp314t-win_amd64.whl", hash = "sha256:1fa333e8b2ce4d9660f2cda9c0e1b6bafcfb2457a9d259faa82289e73ec24891", size = 79988, upload-time = "2025-08-10T21:27:35.587Z" }, + { url = "https://files.pythonhosted.org/packages/80/be/3578e8afd18c88cdf9cb4cffde75a96d2be38c5a903f1ed0ceec061bd09e/kiwisolver-1.4.9-cp314-cp314t-win_arm64.whl", hash = "sha256:4a48a2ce79d65d363597ef7b567ce3d14d68783d2b2263d98db3d9477805ba32", size = 70260, upload-time = "2025-08-10T21:27:36.606Z" }, +] + +[[package]] +name = "matplotlib" +version = "3.10.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "contourpy" }, + { name = "cycler" }, + { name = "fonttools" }, + { name = "kiwisolver" }, + { name = "numpy" }, + { name = "packaging" }, + { name = "pillow" }, + { name = "pyparsing" }, + { name = "python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/43/91/f2939bb60b7ebf12478b030e0d7f340247390f402b3b189616aad790c366/matplotlib-3.10.5.tar.gz", hash = "sha256:352ed6ccfb7998a00881692f38b4ca083c691d3e275b4145423704c34c909076", size = 34804044, upload-time = "2025-07-31T18:09:33.805Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8d/05/4f3c1f396075f108515e45cb8d334aff011a922350e502a7472e24c52d77/matplotlib-3.10.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:354204db3f7d5caaa10e5de74549ef6a05a4550fdd1c8f831ab9bca81efd39ed", size = 8253586, upload-time = "2025-07-31T18:08:23.107Z" }, + { url = "https://files.pythonhosted.org/packages/2f/2c/e084415775aac7016c3719fe7006cdb462582c6c99ac142f27303c56e243/matplotlib-3.10.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b072aac0c3ad563a2b3318124756cb6112157017f7431626600ecbe890df57a1", size = 8110715, upload-time = "2025-07-31T18:08:24.675Z" }, + { url = "https://files.pythonhosted.org/packages/52/1b/233e3094b749df16e3e6cd5a44849fd33852e692ad009cf7de00cf58ddf6/matplotlib-3.10.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d52fd5b684d541b5a51fb276b2b97b010c75bee9aa392f96b4a07aeb491e33c7", size = 8669397, upload-time = "2025-07-31T18:08:26.778Z" }, + { url = "https://files.pythonhosted.org/packages/e8/ec/03f9e003a798f907d9f772eed9b7c6a9775d5bd00648b643ebfb88e25414/matplotlib-3.10.5-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee7a09ae2f4676276f5a65bd9f2bd91b4f9fbaedf49f40267ce3f9b448de501f", size = 9508646, upload-time = "2025-07-31T18:08:28.848Z" }, + { url = "https://files.pythonhosted.org/packages/91/e7/c051a7a386680c28487bca27d23b02d84f63e3d2a9b4d2fc478e6a42e37e/matplotlib-3.10.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ba6c3c9c067b83481d647af88b4e441d532acdb5ef22178a14935b0b881188f4", size = 9567424, upload-time = "2025-07-31T18:08:30.726Z" }, + { url = "https://files.pythonhosted.org/packages/36/c2/24302e93ff431b8f4173ee1dd88976c8d80483cadbc5d3d777cef47b3a1c/matplotlib-3.10.5-cp313-cp313-win_amd64.whl", hash = "sha256:07442d2692c9bd1cceaa4afb4bbe5b57b98a7599de4dabfcca92d3eea70f9ebe", size = 8107809, upload-time = "2025-07-31T18:08:33.928Z" }, + { url = "https://files.pythonhosted.org/packages/0b/33/423ec6a668d375dad825197557ed8fbdb74d62b432c1ed8235465945475f/matplotlib-3.10.5-cp313-cp313-win_arm64.whl", hash = "sha256:48fe6d47380b68a37ccfcc94f009530e84d41f71f5dae7eda7c4a5a84aa0a674", size = 7978078, upload-time = "2025-07-31T18:08:36.764Z" }, + { url = "https://files.pythonhosted.org/packages/51/17/521fc16ec766455c7bb52cc046550cf7652f6765ca8650ff120aa2d197b6/matplotlib-3.10.5-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3b80eb8621331449fc519541a7461987f10afa4f9cfd91afcd2276ebe19bd56c", size = 8295590, upload-time = "2025-07-31T18:08:38.521Z" }, + { url = "https://files.pythonhosted.org/packages/f8/12/23c28b2c21114c63999bae129fce7fd34515641c517ae48ce7b7dcd33458/matplotlib-3.10.5-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:47a388908e469d6ca2a6015858fa924e0e8a2345a37125948d8e93a91c47933e", size = 8158518, upload-time = "2025-07-31T18:08:40.195Z" }, + { url = "https://files.pythonhosted.org/packages/81/f8/aae4eb25e8e7190759f3cb91cbeaa344128159ac92bb6b409e24f8711f78/matplotlib-3.10.5-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8b6b49167d208358983ce26e43aa4196073b4702858670f2eb111f9a10652b4b", size = 8691815, upload-time = "2025-07-31T18:08:42.238Z" }, + { url = "https://files.pythonhosted.org/packages/d0/ba/450c39ebdd486bd33a359fc17365ade46c6a96bf637bbb0df7824de2886c/matplotlib-3.10.5-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8a8da0453a7fd8e3da114234ba70c5ba9ef0e98f190309ddfde0f089accd46ea", size = 9522814, upload-time = "2025-07-31T18:08:44.914Z" }, + { url = "https://files.pythonhosted.org/packages/89/11/9c66f6a990e27bb9aa023f7988d2d5809cb98aa39c09cbf20fba75a542ef/matplotlib-3.10.5-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:52c6573dfcb7726a9907b482cd5b92e6b5499b284ffacb04ffbfe06b3e568124", size = 9573917, upload-time = "2025-07-31T18:08:47.038Z" }, + { url = "https://files.pythonhosted.org/packages/b3/69/8b49394de92569419e5e05e82e83df9b749a0ff550d07631ea96ed2eb35a/matplotlib-3.10.5-cp313-cp313t-win_amd64.whl", hash = "sha256:a23193db2e9d64ece69cac0c8231849db7dd77ce59c7b89948cf9d0ce655a3ce", size = 8181034, upload-time = "2025-07-31T18:08:48.943Z" }, + { url = "https://files.pythonhosted.org/packages/47/23/82dc435bb98a2fc5c20dffcac8f0b083935ac28286413ed8835df40d0baa/matplotlib-3.10.5-cp313-cp313t-win_arm64.whl", hash = "sha256:56da3b102cf6da2776fef3e71cd96fcf22103a13594a18ac9a9b31314e0be154", size = 8023337, upload-time = "2025-07-31T18:08:50.791Z" }, + { url = "https://files.pythonhosted.org/packages/ac/e0/26b6cfde31f5383503ee45dcb7e691d45dadf0b3f54639332b59316a97f8/matplotlib-3.10.5-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:96ef8f5a3696f20f55597ffa91c28e2e73088df25c555f8d4754931515512715", size = 8253591, upload-time = "2025-07-31T18:08:53.254Z" }, + { url = "https://files.pythonhosted.org/packages/c1/89/98488c7ef7ea20ea659af7499628c240a608b337af4be2066d644cfd0a0f/matplotlib-3.10.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:77fab633e94b9da60512d4fa0213daeb76d5a7b05156840c4fd0399b4b818837", size = 8112566, upload-time = "2025-07-31T18:08:55.116Z" }, + { url = "https://files.pythonhosted.org/packages/52/67/42294dfedc82aea55e1a767daf3263aacfb5a125f44ba189e685bab41b6f/matplotlib-3.10.5-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:27f52634315e96b1debbfdc5c416592edcd9c4221bc2f520fd39c33db5d9f202", size = 9513281, upload-time = "2025-07-31T18:08:56.885Z" }, + { url = "https://files.pythonhosted.org/packages/e7/68/f258239e0cf34c2cbc816781c7ab6fca768452e6bf1119aedd2bd4a882a3/matplotlib-3.10.5-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:525f6e28c485c769d1f07935b660c864de41c37fd716bfa64158ea646f7084bb", size = 9780873, upload-time = "2025-07-31T18:08:59.241Z" }, + { url = "https://files.pythonhosted.org/packages/89/64/f4881554006bd12e4558bd66778bdd15d47b00a1f6c6e8b50f6208eda4b3/matplotlib-3.10.5-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:1f5f3ec4c191253c5f2b7c07096a142c6a1c024d9f738247bfc8e3f9643fc975", size = 9568954, upload-time = "2025-07-31T18:09:01.244Z" }, + { url = "https://files.pythonhosted.org/packages/06/f8/42779d39c3f757e1f012f2dda3319a89fb602bd2ef98ce8faf0281f4febd/matplotlib-3.10.5-cp314-cp314-win_amd64.whl", hash = "sha256:707f9c292c4cd4716f19ab8a1f93f26598222cd931e0cd98fbbb1c5994bf7667", size = 8237465, upload-time = "2025-07-31T18:09:03.206Z" }, + { url = "https://files.pythonhosted.org/packages/cf/f8/153fd06b5160f0cd27c8b9dd797fcc9fb56ac6a0ebf3c1f765b6b68d3c8a/matplotlib-3.10.5-cp314-cp314-win_arm64.whl", hash = "sha256:21a95b9bf408178d372814de7baacd61c712a62cae560b5e6f35d791776f6516", size = 8108898, upload-time = "2025-07-31T18:09:05.231Z" }, + { url = "https://files.pythonhosted.org/packages/9a/ee/c4b082a382a225fe0d2a73f1f57cf6f6f132308805b493a54c8641006238/matplotlib-3.10.5-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:a6b310f95e1102a8c7c817ef17b60ee5d1851b8c71b63d9286b66b177963039e", size = 8295636, upload-time = "2025-07-31T18:09:07.306Z" }, + { url = "https://files.pythonhosted.org/packages/30/73/2195fa2099718b21a20da82dfc753bf2af58d596b51aefe93e359dd5915a/matplotlib-3.10.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:94986a242747a0605cb3ff1cb98691c736f28a59f8ffe5175acaeb7397c49a5a", size = 8158575, upload-time = "2025-07-31T18:09:09.083Z" }, + { url = "https://files.pythonhosted.org/packages/f6/e9/a08cdb34618a91fa08f75e6738541da5cacde7c307cea18ff10f0d03fcff/matplotlib-3.10.5-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1ff10ea43288f0c8bab608a305dc6c918cc729d429c31dcbbecde3b9f4d5b569", size = 9522815, upload-time = "2025-07-31T18:09:11.191Z" }, + { url = "https://files.pythonhosted.org/packages/4e/bb/34d8b7e0d1bb6d06ef45db01dfa560d5a67b1c40c0b998ce9ccde934bb09/matplotlib-3.10.5-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f6adb644c9d040ffb0d3434e440490a66cf73dbfa118a6f79cd7568431f7a012", size = 9783514, upload-time = "2025-07-31T18:09:13.307Z" }, + { url = "https://files.pythonhosted.org/packages/12/09/d330d1e55dcca2e11b4d304cc5227f52e2512e46828d6249b88e0694176e/matplotlib-3.10.5-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:4fa40a8f98428f789a9dcacd625f59b7bc4e3ef6c8c7c80187a7a709475cf592", size = 9573932, upload-time = "2025-07-31T18:09:15.335Z" }, + { url = "https://files.pythonhosted.org/packages/eb/3b/f70258ac729aa004aca673800a53a2b0a26d49ca1df2eaa03289a1c40f81/matplotlib-3.10.5-cp314-cp314t-win_amd64.whl", hash = "sha256:95672a5d628b44207aab91ec20bf59c26da99de12b88f7e0b1fb0a84a86ff959", size = 8322003, upload-time = "2025-07-31T18:09:17.416Z" }, + { url = "https://files.pythonhosted.org/packages/5b/60/3601f8ce6d76a7c81c7f25a0e15fde0d6b66226dd187aa6d2838e6374161/matplotlib-3.10.5-cp314-cp314t-win_arm64.whl", hash = "sha256:2efaf97d72629e74252e0b5e3c46813e9eeaa94e011ecf8084a971a31a97f40b", size = 8153849, upload-time = "2025-07-31T18:09:19.673Z" }, +] + +[[package]] +name = "matplotlib-inline" +version = "0.1.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/99/5b/a36a337438a14116b16480db471ad061c36c3694df7c2084a0da7ba538b7/matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90", size = 8159, upload-time = "2024-04-15T13:44:44.803Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899, upload-time = "2024-04-15T13:44:43.265Z" }, +] + +[[package]] +name = "nest-asyncio" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/83/f8/51569ac65d696c8ecbee95938f89d4abf00f47d58d48f6fbabfe8f0baefe/nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe", size = 7418, upload-time = "2024-01-21T14:25:19.227Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195, upload-time = "2024-01-21T14:25:17.223Z" }, +] + +[[package]] +name = "numpy" +version = "2.3.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/37/7d/3fec4199c5ffb892bed55cff901e4f39a58c81df9c44c280499e92cad264/numpy-2.3.2.tar.gz", hash = "sha256:e0486a11ec30cdecb53f184d496d1c6a20786c81e55e41640270130056f8ee48", size = 20489306, upload-time = "2025-07-24T21:32:07.553Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1c/c0/c6bb172c916b00700ed3bf71cb56175fd1f7dbecebf8353545d0b5519f6c/numpy-2.3.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c8d9727f5316a256425892b043736d63e89ed15bbfe6556c5ff4d9d4448ff3b3", size = 20949074, upload-time = "2025-07-24T20:43:07.813Z" }, + { url = "https://files.pythonhosted.org/packages/20/4e/c116466d22acaf4573e58421c956c6076dc526e24a6be0903219775d862e/numpy-2.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:efc81393f25f14d11c9d161e46e6ee348637c0a1e8a54bf9dedc472a3fae993b", size = 14177311, upload-time = "2025-07-24T20:43:29.335Z" }, + { url = "https://files.pythonhosted.org/packages/78/45/d4698c182895af189c463fc91d70805d455a227261d950e4e0f1310c2550/numpy-2.3.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:dd937f088a2df683cbb79dda9a772b62a3e5a8a7e76690612c2737f38c6ef1b6", size = 5106022, upload-time = "2025-07-24T20:43:37.999Z" }, + { url = "https://files.pythonhosted.org/packages/9f/76/3e6880fef4420179309dba72a8c11f6166c431cf6dee54c577af8906f914/numpy-2.3.2-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:11e58218c0c46c80509186e460d79fbdc9ca1eb8d8aee39d8f2dc768eb781089", size = 6640135, upload-time = "2025-07-24T20:43:49.28Z" }, + { url = "https://files.pythonhosted.org/packages/34/fa/87ff7f25b3c4ce9085a62554460b7db686fef1e0207e8977795c7b7d7ba1/numpy-2.3.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5ad4ebcb683a1f99f4f392cc522ee20a18b2bb12a2c1c42c3d48d5a1adc9d3d2", size = 14278147, upload-time = "2025-07-24T20:44:10.328Z" }, + { url = "https://files.pythonhosted.org/packages/1d/0f/571b2c7a3833ae419fe69ff7b479a78d313581785203cc70a8db90121b9a/numpy-2.3.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:938065908d1d869c7d75d8ec45f735a034771c6ea07088867f713d1cd3bbbe4f", size = 16635989, upload-time = "2025-07-24T20:44:34.88Z" }, + { url = "https://files.pythonhosted.org/packages/24/5a/84ae8dca9c9a4c592fe11340b36a86ffa9fd3e40513198daf8a97839345c/numpy-2.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:66459dccc65d8ec98cc7df61307b64bf9e08101f9598755d42d8ae65d9a7a6ee", size = 16053052, upload-time = "2025-07-24T20:44:58.872Z" }, + { url = "https://files.pythonhosted.org/packages/57/7c/e5725d99a9133b9813fcf148d3f858df98511686e853169dbaf63aec6097/numpy-2.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a7af9ed2aa9ec5950daf05bb11abc4076a108bd3c7db9aa7251d5f107079b6a6", size = 18577955, upload-time = "2025-07-24T20:45:26.714Z" }, + { url = "https://files.pythonhosted.org/packages/ae/11/7c546fcf42145f29b71e4d6f429e96d8d68e5a7ba1830b2e68d7418f0bbd/numpy-2.3.2-cp313-cp313-win32.whl", hash = "sha256:906a30249315f9c8e17b085cc5f87d3f369b35fedd0051d4a84686967bdbbd0b", size = 6311843, upload-time = "2025-07-24T20:49:24.444Z" }, + { url = "https://files.pythonhosted.org/packages/aa/6f/a428fd1cb7ed39b4280d057720fed5121b0d7754fd2a9768640160f5517b/numpy-2.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:c63d95dc9d67b676e9108fe0d2182987ccb0f11933c1e8959f42fa0da8d4fa56", size = 12782876, upload-time = "2025-07-24T20:49:43.227Z" }, + { url = "https://files.pythonhosted.org/packages/65/85/4ea455c9040a12595fb6c43f2c217257c7b52dd0ba332c6a6c1d28b289fe/numpy-2.3.2-cp313-cp313-win_arm64.whl", hash = "sha256:b05a89f2fb84d21235f93de47129dd4f11c16f64c87c33f5e284e6a3a54e43f2", size = 10192786, upload-time = "2025-07-24T20:49:59.443Z" }, + { url = "https://files.pythonhosted.org/packages/80/23/8278f40282d10c3f258ec3ff1b103d4994bcad78b0cba9208317f6bb73da/numpy-2.3.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4e6ecfeddfa83b02318f4d84acf15fbdbf9ded18e46989a15a8b6995dfbf85ab", size = 21047395, upload-time = "2025-07-24T20:45:58.821Z" }, + { url = "https://files.pythonhosted.org/packages/1f/2d/624f2ce4a5df52628b4ccd16a4f9437b37c35f4f8a50d00e962aae6efd7a/numpy-2.3.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:508b0eada3eded10a3b55725b40806a4b855961040180028f52580c4729916a2", size = 14300374, upload-time = "2025-07-24T20:46:20.207Z" }, + { url = "https://files.pythonhosted.org/packages/f6/62/ff1e512cdbb829b80a6bd08318a58698867bca0ca2499d101b4af063ee97/numpy-2.3.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:754d6755d9a7588bdc6ac47dc4ee97867271b17cee39cb87aef079574366db0a", size = 5228864, upload-time = "2025-07-24T20:46:30.58Z" }, + { url = "https://files.pythonhosted.org/packages/7d/8e/74bc18078fff03192d4032cfa99d5a5ca937807136d6f5790ce07ca53515/numpy-2.3.2-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:a9f66e7d2b2d7712410d3bc5684149040ef5f19856f20277cd17ea83e5006286", size = 6737533, upload-time = "2025-07-24T20:46:46.111Z" }, + { url = "https://files.pythonhosted.org/packages/19/ea/0731efe2c9073ccca5698ef6a8c3667c4cf4eea53fcdcd0b50140aba03bc/numpy-2.3.2-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:de6ea4e5a65d5a90c7d286ddff2b87f3f4ad61faa3db8dabe936b34c2275b6f8", size = 14352007, upload-time = "2025-07-24T20:47:07.1Z" }, + { url = "https://files.pythonhosted.org/packages/cf/90/36be0865f16dfed20f4bc7f75235b963d5939707d4b591f086777412ff7b/numpy-2.3.2-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a3ef07ec8cbc8fc9e369c8dcd52019510c12da4de81367d8b20bc692aa07573a", size = 16701914, upload-time = "2025-07-24T20:47:32.459Z" }, + { url = "https://files.pythonhosted.org/packages/94/30/06cd055e24cb6c38e5989a9e747042b4e723535758e6153f11afea88c01b/numpy-2.3.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:27c9f90e7481275c7800dc9c24b7cc40ace3fdb970ae4d21eaff983a32f70c91", size = 16132708, upload-time = "2025-07-24T20:47:58.129Z" }, + { url = "https://files.pythonhosted.org/packages/9a/14/ecede608ea73e58267fd7cb78f42341b3b37ba576e778a1a06baffbe585c/numpy-2.3.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:07b62978075b67eee4065b166d000d457c82a1efe726cce608b9db9dd66a73a5", size = 18651678, upload-time = "2025-07-24T20:48:25.402Z" }, + { url = "https://files.pythonhosted.org/packages/40/f3/2fe6066b8d07c3685509bc24d56386534c008b462a488b7f503ba82b8923/numpy-2.3.2-cp313-cp313t-win32.whl", hash = "sha256:c771cfac34a4f2c0de8e8c97312d07d64fd8f8ed45bc9f5726a7e947270152b5", size = 6441832, upload-time = "2025-07-24T20:48:37.181Z" }, + { url = "https://files.pythonhosted.org/packages/0b/ba/0937d66d05204d8f28630c9c60bc3eda68824abde4cf756c4d6aad03b0c6/numpy-2.3.2-cp313-cp313t-win_amd64.whl", hash = "sha256:72dbebb2dcc8305c431b2836bcc66af967df91be793d63a24e3d9b741374c450", size = 12927049, upload-time = "2025-07-24T20:48:56.24Z" }, + { url = "https://files.pythonhosted.org/packages/e9/ed/13542dd59c104d5e654dfa2ac282c199ba64846a74c2c4bcdbc3a0f75df1/numpy-2.3.2-cp313-cp313t-win_arm64.whl", hash = "sha256:72c6df2267e926a6d5286b0a6d556ebe49eae261062059317837fda12ddf0c1a", size = 10262935, upload-time = "2025-07-24T20:49:13.136Z" }, + { url = "https://files.pythonhosted.org/packages/c9/7c/7659048aaf498f7611b783e000c7268fcc4dcf0ce21cd10aad7b2e8f9591/numpy-2.3.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:448a66d052d0cf14ce9865d159bfc403282c9bc7bb2a31b03cc18b651eca8b1a", size = 20950906, upload-time = "2025-07-24T20:50:30.346Z" }, + { url = "https://files.pythonhosted.org/packages/80/db/984bea9d4ddf7112a04cfdfb22b1050af5757864cfffe8e09e44b7f11a10/numpy-2.3.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:546aaf78e81b4081b2eba1d105c3b34064783027a06b3ab20b6eba21fb64132b", size = 14185607, upload-time = "2025-07-24T20:50:51.923Z" }, + { url = "https://files.pythonhosted.org/packages/e4/76/b3d6f414f4eca568f469ac112a3b510938d892bc5a6c190cb883af080b77/numpy-2.3.2-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:87c930d52f45df092f7578889711a0768094debf73cfcde105e2d66954358125", size = 5114110, upload-time = "2025-07-24T20:51:01.041Z" }, + { url = "https://files.pythonhosted.org/packages/9e/d2/6f5e6826abd6bca52392ed88fe44a4b52aacb60567ac3bc86c67834c3a56/numpy-2.3.2-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:8dc082ea901a62edb8f59713c6a7e28a85daddcb67454c839de57656478f5b19", size = 6642050, upload-time = "2025-07-24T20:51:11.64Z" }, + { url = "https://files.pythonhosted.org/packages/c4/43/f12b2ade99199e39c73ad182f103f9d9791f48d885c600c8e05927865baf/numpy-2.3.2-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:af58de8745f7fa9ca1c0c7c943616c6fe28e75d0c81f5c295810e3c83b5be92f", size = 14296292, upload-time = "2025-07-24T20:51:33.488Z" }, + { url = "https://files.pythonhosted.org/packages/5d/f9/77c07d94bf110a916b17210fac38680ed8734c236bfed9982fd8524a7b47/numpy-2.3.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fed5527c4cf10f16c6d0b6bee1f89958bccb0ad2522c8cadc2efd318bcd545f5", size = 16638913, upload-time = "2025-07-24T20:51:58.517Z" }, + { url = "https://files.pythonhosted.org/packages/9b/d1/9d9f2c8ea399cc05cfff8a7437453bd4e7d894373a93cdc46361bbb49a7d/numpy-2.3.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:095737ed986e00393ec18ec0b21b47c22889ae4b0cd2d5e88342e08b01141f58", size = 16071180, upload-time = "2025-07-24T20:52:22.827Z" }, + { url = "https://files.pythonhosted.org/packages/4c/41/82e2c68aff2a0c9bf315e47d61951099fed65d8cb2c8d9dc388cb87e947e/numpy-2.3.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b5e40e80299607f597e1a8a247ff8d71d79c5b52baa11cc1cce30aa92d2da6e0", size = 18576809, upload-time = "2025-07-24T20:52:51.015Z" }, + { url = "https://files.pythonhosted.org/packages/14/14/4b4fd3efb0837ed252d0f583c5c35a75121038a8c4e065f2c259be06d2d8/numpy-2.3.2-cp314-cp314-win32.whl", hash = "sha256:7d6e390423cc1f76e1b8108c9b6889d20a7a1f59d9a60cac4a050fa734d6c1e2", size = 6366410, upload-time = "2025-07-24T20:56:44.949Z" }, + { url = "https://files.pythonhosted.org/packages/11/9e/b4c24a6b8467b61aced5c8dc7dcfce23621baa2e17f661edb2444a418040/numpy-2.3.2-cp314-cp314-win_amd64.whl", hash = "sha256:b9d0878b21e3918d76d2209c924ebb272340da1fb51abc00f986c258cd5e957b", size = 12918821, upload-time = "2025-07-24T20:57:06.479Z" }, + { url = "https://files.pythonhosted.org/packages/0e/0f/0dc44007c70b1007c1cef86b06986a3812dd7106d8f946c09cfa75782556/numpy-2.3.2-cp314-cp314-win_arm64.whl", hash = "sha256:2738534837c6a1d0c39340a190177d7d66fdf432894f469728da901f8f6dc910", size = 10477303, upload-time = "2025-07-24T20:57:22.879Z" }, + { url = "https://files.pythonhosted.org/packages/8b/3e/075752b79140b78ddfc9c0a1634d234cfdbc6f9bbbfa6b7504e445ad7d19/numpy-2.3.2-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:4d002ecf7c9b53240be3bb69d80f86ddbd34078bae04d87be81c1f58466f264e", size = 21047524, upload-time = "2025-07-24T20:53:22.086Z" }, + { url = "https://files.pythonhosted.org/packages/fe/6d/60e8247564a72426570d0e0ea1151b95ce5bd2f1597bb878a18d32aec855/numpy-2.3.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:293b2192c6bcce487dbc6326de5853787f870aeb6c43f8f9c6496db5b1781e45", size = 14300519, upload-time = "2025-07-24T20:53:44.053Z" }, + { url = "https://files.pythonhosted.org/packages/4d/73/d8326c442cd428d47a067070c3ac6cc3b651a6e53613a1668342a12d4479/numpy-2.3.2-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:0a4f2021a6da53a0d580d6ef5db29947025ae8b35b3250141805ea9a32bbe86b", size = 5228972, upload-time = "2025-07-24T20:53:53.81Z" }, + { url = "https://files.pythonhosted.org/packages/34/2e/e71b2d6dad075271e7079db776196829019b90ce3ece5c69639e4f6fdc44/numpy-2.3.2-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:9c144440db4bf3bb6372d2c3e49834cc0ff7bb4c24975ab33e01199e645416f2", size = 6737439, upload-time = "2025-07-24T20:54:04.742Z" }, + { url = "https://files.pythonhosted.org/packages/15/b0/d004bcd56c2c5e0500ffc65385eb6d569ffd3363cb5e593ae742749b2daa/numpy-2.3.2-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f92d6c2a8535dc4fe4419562294ff957f83a16ebdec66df0805e473ffaad8bd0", size = 14352479, upload-time = "2025-07-24T20:54:25.819Z" }, + { url = "https://files.pythonhosted.org/packages/11/e3/285142fcff8721e0c99b51686426165059874c150ea9ab898e12a492e291/numpy-2.3.2-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cefc2219baa48e468e3db7e706305fcd0c095534a192a08f31e98d83a7d45fb0", size = 16702805, upload-time = "2025-07-24T20:54:50.814Z" }, + { url = "https://files.pythonhosted.org/packages/33/c3/33b56b0e47e604af2c7cd065edca892d180f5899599b76830652875249a3/numpy-2.3.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:76c3e9501ceb50b2ff3824c3589d5d1ab4ac857b0ee3f8f49629d0de55ecf7c2", size = 16133830, upload-time = "2025-07-24T20:55:17.306Z" }, + { url = "https://files.pythonhosted.org/packages/6e/ae/7b1476a1f4d6a48bc669b8deb09939c56dd2a439db1ab03017844374fb67/numpy-2.3.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:122bf5ed9a0221b3419672493878ba4967121514b1d7d4656a7580cd11dddcbf", size = 18652665, upload-time = "2025-07-24T20:55:46.665Z" }, + { url = "https://files.pythonhosted.org/packages/14/ba/5b5c9978c4bb161034148ade2de9db44ec316fab89ce8c400db0e0c81f86/numpy-2.3.2-cp314-cp314t-win32.whl", hash = "sha256:6f1ae3dcb840edccc45af496f312528c15b1f79ac318169d094e85e4bb35fdf1", size = 6514777, upload-time = "2025-07-24T20:55:57.66Z" }, + { url = "https://files.pythonhosted.org/packages/eb/46/3dbaf0ae7c17cdc46b9f662c56da2054887b8d9e737c1476f335c83d33db/numpy-2.3.2-cp314-cp314t-win_amd64.whl", hash = "sha256:087ffc25890d89a43536f75c5fe8770922008758e8eeeef61733957041ed2f9b", size = 13111856, upload-time = "2025-07-24T20:56:17.318Z" }, + { url = "https://files.pythonhosted.org/packages/c1/9e/1652778bce745a67b5fe05adde60ed362d38eb17d919a540e813d30f6874/numpy-2.3.2-cp314-cp314t-win_arm64.whl", hash = "sha256:092aeb3449833ea9c0bf0089d70c29ae480685dd2377ec9cdbbb620257f84631", size = 10544226, upload-time = "2025-07-24T20:56:34.509Z" }, +] + +[[package]] +name = "packaging" +version = "25.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, +] + +[[package]] +name = "pandas" +version = "2.3.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "python-dateutil" }, + { name = "pytz" }, + { name = "tzdata" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/79/8e/0e90233ac205ad182bd6b422532695d2b9414944a280488105d598c70023/pandas-2.3.2.tar.gz", hash = "sha256:ab7b58f8f82706890924ccdfb5f48002b83d2b5a3845976a9fb705d36c34dcdb", size = 4488684, upload-time = "2025-08-21T10:28:29.257Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/27/64/a2f7bf678af502e16b472527735d168b22b7824e45a4d7e96a4fbb634b59/pandas-2.3.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0c6ecbac99a354a051ef21c5307601093cb9e0f4b1855984a084bfec9302699e", size = 11531061, upload-time = "2025-08-21T10:27:34.647Z" }, + { url = "https://files.pythonhosted.org/packages/54/4c/c3d21b2b7769ef2f4c2b9299fcadd601efa6729f1357a8dbce8dd949ed70/pandas-2.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c6f048aa0fd080d6a06cc7e7537c09b53be6642d330ac6f54a600c3ace857ee9", size = 10668666, upload-time = "2025-08-21T10:27:37.203Z" }, + { url = "https://files.pythonhosted.org/packages/50/e2/f775ba76ecfb3424d7f5862620841cf0edb592e9abd2d2a5387d305fe7a8/pandas-2.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0064187b80a5be6f2f9c9d6bdde29372468751dfa89f4211a3c5871854cfbf7a", size = 11332835, upload-time = "2025-08-21T10:27:40.188Z" }, + { url = "https://files.pythonhosted.org/packages/8f/52/0634adaace9be2d8cac9ef78f05c47f3a675882e068438b9d7ec7ef0c13f/pandas-2.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ac8c320bded4718b298281339c1a50fb00a6ba78cb2a63521c39bec95b0209b", size = 12057211, upload-time = "2025-08-21T10:27:43.117Z" }, + { url = "https://files.pythonhosted.org/packages/0b/9d/2df913f14b2deb9c748975fdb2491da1a78773debb25abbc7cbc67c6b549/pandas-2.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:114c2fe4f4328cf98ce5716d1532f3ab79c5919f95a9cfee81d9140064a2e4d6", size = 12749277, upload-time = "2025-08-21T10:27:45.474Z" }, + { url = "https://files.pythonhosted.org/packages/87/af/da1a2417026bd14d98c236dba88e39837182459d29dcfcea510b2ac9e8a1/pandas-2.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:48fa91c4dfb3b2b9bfdb5c24cd3567575f4e13f9636810462ffed8925352be5a", size = 13415256, upload-time = "2025-08-21T10:27:49.885Z" }, + { url = "https://files.pythonhosted.org/packages/22/3c/f2af1ce8840ef648584a6156489636b5692c162771918aa95707c165ad2b/pandas-2.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:12d039facec710f7ba305786837d0225a3444af7bbd9c15c32ca2d40d157ed8b", size = 10982579, upload-time = "2025-08-21T10:28:08.435Z" }, + { url = "https://files.pythonhosted.org/packages/f3/98/8df69c4097a6719e357dc249bf437b8efbde808038268e584421696cbddf/pandas-2.3.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:c624b615ce97864eb588779ed4046186f967374185c047070545253a52ab2d57", size = 12028163, upload-time = "2025-08-21T10:27:52.232Z" }, + { url = "https://files.pythonhosted.org/packages/0e/23/f95cbcbea319f349e10ff90db488b905c6883f03cbabd34f6b03cbc3c044/pandas-2.3.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:0cee69d583b9b128823d9514171cabb6861e09409af805b54459bd0c821a35c2", size = 11391860, upload-time = "2025-08-21T10:27:54.673Z" }, + { url = "https://files.pythonhosted.org/packages/ad/1b/6a984e98c4abee22058aa75bfb8eb90dce58cf8d7296f8bc56c14bc330b0/pandas-2.3.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2319656ed81124982900b4c37f0e0c58c015af9a7bbc62342ba5ad07ace82ba9", size = 11309830, upload-time = "2025-08-21T10:27:56.957Z" }, + { url = "https://files.pythonhosted.org/packages/15/d5/f0486090eb18dd8710bf60afeaf638ba6817047c0c8ae5c6a25598665609/pandas-2.3.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b37205ad6f00d52f16b6d09f406434ba928c1a1966e2771006a9033c736d30d2", size = 11883216, upload-time = "2025-08-21T10:27:59.302Z" }, + { url = "https://files.pythonhosted.org/packages/10/86/692050c119696da19e20245bbd650d8dfca6ceb577da027c3a73c62a047e/pandas-2.3.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:837248b4fc3a9b83b9c6214699a13f069dc13510a6a6d7f9ba33145d2841a012", size = 12699743, upload-time = "2025-08-21T10:28:02.447Z" }, + { url = "https://files.pythonhosted.org/packages/cd/d7/612123674d7b17cf345aad0a10289b2a384bff404e0463a83c4a3a59d205/pandas-2.3.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:d2c3554bd31b731cd6490d94a28f3abb8dd770634a9e06eb6d2911b9827db370", size = 13186141, upload-time = "2025-08-21T10:28:05.377Z" }, +] + +[[package]] +name = "parso" +version = "0.8.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d4/de/53e0bcf53d13e005bd8c92e7855142494f41171b34c2536b86187474184d/parso-0.8.5.tar.gz", hash = "sha256:034d7354a9a018bdce352f48b2a8a450f05e9d6ee85db84764e9b6bd96dafe5a", size = 401205, upload-time = "2025-08-23T15:15:28.028Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/16/32/f8e3c85d1d5250232a5d3477a2a28cc291968ff175caeadaf3cc19ce0e4a/parso-0.8.5-py2.py3-none-any.whl", hash = "sha256:646204b5ee239c396d040b90f9e272e9a8017c630092bf59980beb62fd033887", size = 106668, upload-time = "2025-08-23T15:15:25.663Z" }, +] + +[[package]] +name = "pexpect" +version = "4.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ptyprocess" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450, upload-time = "2023-11-25T09:07:26.339Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772, upload-time = "2023-11-25T06:56:14.81Z" }, +] + +[[package]] +name = "pillow" +version = "11.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/0d/d0d6dea55cd152ce3d6767bb38a8fc10e33796ba4ba210cbab9354b6d238/pillow-11.3.0.tar.gz", hash = "sha256:3828ee7586cd0b2091b6209e5ad53e20d0649bbe87164a459d0676e035e8f523", size = 47113069, upload-time = "2025-07-01T09:16:30.666Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/93/0952f2ed8db3a5a4c7a11f91965d6184ebc8cd7cbb7941a260d5f018cd2d/pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:1c627742b539bba4309df89171356fcb3cc5a9178355b2727d1b74a6cf155fbd", size = 2128328, upload-time = "2025-07-01T09:14:35.276Z" }, + { url = "https://files.pythonhosted.org/packages/4b/e8/100c3d114b1a0bf4042f27e0f87d2f25e857e838034e98ca98fe7b8c0a9c/pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:30b7c02f3899d10f13d7a48163c8969e4e653f8b43416d23d13d1bbfdc93b9f8", size = 2170652, upload-time = "2025-07-01T09:14:37.203Z" }, + { url = "https://files.pythonhosted.org/packages/aa/86/3f758a28a6e381758545f7cdb4942e1cb79abd271bea932998fc0db93cb6/pillow-11.3.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:7859a4cc7c9295f5838015d8cc0a9c215b77e43d07a25e460f35cf516df8626f", size = 2227443, upload-time = "2025-07-01T09:14:39.344Z" }, + { url = "https://files.pythonhosted.org/packages/01/f4/91d5b3ffa718df2f53b0dc109877993e511f4fd055d7e9508682e8aba092/pillow-11.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ec1ee50470b0d050984394423d96325b744d55c701a439d2bd66089bff963d3c", size = 5278474, upload-time = "2025-07-01T09:14:41.843Z" }, + { url = "https://files.pythonhosted.org/packages/f9/0e/37d7d3eca6c879fbd9dba21268427dffda1ab00d4eb05b32923d4fbe3b12/pillow-11.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7db51d222548ccfd274e4572fdbf3e810a5e66b00608862f947b163e613b67dd", size = 4686038, upload-time = "2025-07-01T09:14:44.008Z" }, + { url = "https://files.pythonhosted.org/packages/ff/b0/3426e5c7f6565e752d81221af9d3676fdbb4f352317ceafd42899aaf5d8a/pillow-11.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2d6fcc902a24ac74495df63faad1884282239265c6839a0a6416d33faedfae7e", size = 5864407, upload-time = "2025-07-03T13:10:15.628Z" }, + { url = "https://files.pythonhosted.org/packages/fc/c1/c6c423134229f2a221ee53f838d4be9d82bab86f7e2f8e75e47b6bf6cd77/pillow-11.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f0f5d8f4a08090c6d6d578351a2b91acf519a54986c055af27e7a93feae6d3f1", size = 7639094, upload-time = "2025-07-03T13:10:21.857Z" }, + { url = "https://files.pythonhosted.org/packages/ba/c9/09e6746630fe6372c67c648ff9deae52a2bc20897d51fa293571977ceb5d/pillow-11.3.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c37d8ba9411d6003bba9e518db0db0c58a680ab9fe5179f040b0463644bc9805", size = 5973503, upload-time = "2025-07-01T09:14:45.698Z" }, + { url = "https://files.pythonhosted.org/packages/d5/1c/a2a29649c0b1983d3ef57ee87a66487fdeb45132df66ab30dd37f7dbe162/pillow-11.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:13f87d581e71d9189ab21fe0efb5a23e9f28552d5be6979e84001d3b8505abe8", size = 6642574, upload-time = "2025-07-01T09:14:47.415Z" }, + { url = "https://files.pythonhosted.org/packages/36/de/d5cc31cc4b055b6c6fd990e3e7f0f8aaf36229a2698501bcb0cdf67c7146/pillow-11.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:023f6d2d11784a465f09fd09a34b150ea4672e85fb3d05931d89f373ab14abb2", size = 6084060, upload-time = "2025-07-01T09:14:49.636Z" }, + { url = "https://files.pythonhosted.org/packages/d5/ea/502d938cbaeec836ac28a9b730193716f0114c41325db428e6b280513f09/pillow-11.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:45dfc51ac5975b938e9809451c51734124e73b04d0f0ac621649821a63852e7b", size = 6721407, upload-time = "2025-07-01T09:14:51.962Z" }, + { url = "https://files.pythonhosted.org/packages/45/9c/9c5e2a73f125f6cbc59cc7087c8f2d649a7ae453f83bd0362ff7c9e2aee2/pillow-11.3.0-cp313-cp313-win32.whl", hash = "sha256:a4d336baed65d50d37b88ca5b60c0fa9d81e3a87d4a7930d3880d1624d5b31f3", size = 6273841, upload-time = "2025-07-01T09:14:54.142Z" }, + { url = "https://files.pythonhosted.org/packages/23/85/397c73524e0cd212067e0c969aa245b01d50183439550d24d9f55781b776/pillow-11.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:0bce5c4fd0921f99d2e858dc4d4d64193407e1b99478bc5cacecba2311abde51", size = 6978450, upload-time = "2025-07-01T09:14:56.436Z" }, + { url = "https://files.pythonhosted.org/packages/17/d2/622f4547f69cd173955194b78e4d19ca4935a1b0f03a302d655c9f6aae65/pillow-11.3.0-cp313-cp313-win_arm64.whl", hash = "sha256:1904e1264881f682f02b7f8167935cce37bc97db457f8e7849dc3a6a52b99580", size = 2423055, upload-time = "2025-07-01T09:14:58.072Z" }, + { url = "https://files.pythonhosted.org/packages/dd/80/a8a2ac21dda2e82480852978416cfacd439a4b490a501a288ecf4fe2532d/pillow-11.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4c834a3921375c48ee6b9624061076bc0a32a60b5532b322cc0ea64e639dd50e", size = 5281110, upload-time = "2025-07-01T09:14:59.79Z" }, + { url = "https://files.pythonhosted.org/packages/44/d6/b79754ca790f315918732e18f82a8146d33bcd7f4494380457ea89eb883d/pillow-11.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5e05688ccef30ea69b9317a9ead994b93975104a677a36a8ed8106be9260aa6d", size = 4689547, upload-time = "2025-07-01T09:15:01.648Z" }, + { url = "https://files.pythonhosted.org/packages/49/20/716b8717d331150cb00f7fdd78169c01e8e0c219732a78b0e59b6bdb2fd6/pillow-11.3.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1019b04af07fc0163e2810167918cb5add8d74674b6267616021ab558dc98ced", size = 5901554, upload-time = "2025-07-03T13:10:27.018Z" }, + { url = "https://files.pythonhosted.org/packages/74/cf/a9f3a2514a65bb071075063a96f0a5cf949c2f2fce683c15ccc83b1c1cab/pillow-11.3.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f944255db153ebb2b19c51fe85dd99ef0ce494123f21b9db4877ffdfc5590c7c", size = 7669132, upload-time = "2025-07-03T13:10:33.01Z" }, + { url = "https://files.pythonhosted.org/packages/98/3c/da78805cbdbee9cb43efe8261dd7cc0b4b93f2ac79b676c03159e9db2187/pillow-11.3.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1f85acb69adf2aaee8b7da124efebbdb959a104db34d3a2cb0f3793dbae422a8", size = 6005001, upload-time = "2025-07-01T09:15:03.365Z" }, + { url = "https://files.pythonhosted.org/packages/6c/fa/ce044b91faecf30e635321351bba32bab5a7e034c60187fe9698191aef4f/pillow-11.3.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:05f6ecbeff5005399bb48d198f098a9b4b6bdf27b8487c7f38ca16eeb070cd59", size = 6668814, upload-time = "2025-07-01T09:15:05.655Z" }, + { url = "https://files.pythonhosted.org/packages/7b/51/90f9291406d09bf93686434f9183aba27b831c10c87746ff49f127ee80cb/pillow-11.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a7bc6e6fd0395bc052f16b1a8670859964dbd7003bd0af2ff08342eb6e442cfe", size = 6113124, upload-time = "2025-07-01T09:15:07.358Z" }, + { url = "https://files.pythonhosted.org/packages/cd/5a/6fec59b1dfb619234f7636d4157d11fb4e196caeee220232a8d2ec48488d/pillow-11.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:83e1b0161c9d148125083a35c1c5a89db5b7054834fd4387499e06552035236c", size = 6747186, upload-time = "2025-07-01T09:15:09.317Z" }, + { url = "https://files.pythonhosted.org/packages/49/6b/00187a044f98255225f172de653941e61da37104a9ea60e4f6887717e2b5/pillow-11.3.0-cp313-cp313t-win32.whl", hash = "sha256:2a3117c06b8fb646639dce83694f2f9eac405472713fcb1ae887469c0d4f6788", size = 6277546, upload-time = "2025-07-01T09:15:11.311Z" }, + { url = "https://files.pythonhosted.org/packages/e8/5c/6caaba7e261c0d75bab23be79f1d06b5ad2a2ae49f028ccec801b0e853d6/pillow-11.3.0-cp313-cp313t-win_amd64.whl", hash = "sha256:857844335c95bea93fb39e0fa2726b4d9d758850b34075a7e3ff4f4fa3aa3b31", size = 6985102, upload-time = "2025-07-01T09:15:13.164Z" }, + { url = "https://files.pythonhosted.org/packages/f3/7e/b623008460c09a0cb38263c93b828c666493caee2eb34ff67f778b87e58c/pillow-11.3.0-cp313-cp313t-win_arm64.whl", hash = "sha256:8797edc41f3e8536ae4b10897ee2f637235c94f27404cac7297f7b607dd0716e", size = 2424803, upload-time = "2025-07-01T09:15:15.695Z" }, + { url = "https://files.pythonhosted.org/packages/73/f4/04905af42837292ed86cb1b1dabe03dce1edc008ef14c473c5c7e1443c5d/pillow-11.3.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:d9da3df5f9ea2a89b81bb6087177fb1f4d1c7146d583a3fe5c672c0d94e55e12", size = 5278520, upload-time = "2025-07-01T09:15:17.429Z" }, + { url = "https://files.pythonhosted.org/packages/41/b0/33d79e377a336247df6348a54e6d2a2b85d644ca202555e3faa0cf811ecc/pillow-11.3.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0b275ff9b04df7b640c59ec5a3cb113eefd3795a8df80bac69646ef699c6981a", size = 4686116, upload-time = "2025-07-01T09:15:19.423Z" }, + { url = "https://files.pythonhosted.org/packages/49/2d/ed8bc0ab219ae8768f529597d9509d184fe8a6c4741a6864fea334d25f3f/pillow-11.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0743841cabd3dba6a83f38a92672cccbd69af56e3e91777b0ee7f4dba4385632", size = 5864597, upload-time = "2025-07-03T13:10:38.404Z" }, + { url = "https://files.pythonhosted.org/packages/b5/3d/b932bb4225c80b58dfadaca9d42d08d0b7064d2d1791b6a237f87f661834/pillow-11.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2465a69cf967b8b49ee1b96d76718cd98c4e925414ead59fdf75cf0fd07df673", size = 7638246, upload-time = "2025-07-03T13:10:44.987Z" }, + { url = "https://files.pythonhosted.org/packages/09/b5/0487044b7c096f1b48f0d7ad416472c02e0e4bf6919541b111efd3cae690/pillow-11.3.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41742638139424703b4d01665b807c6468e23e699e8e90cffefe291c5832b027", size = 5973336, upload-time = "2025-07-01T09:15:21.237Z" }, + { url = "https://files.pythonhosted.org/packages/a8/2d/524f9318f6cbfcc79fbc004801ea6b607ec3f843977652fdee4857a7568b/pillow-11.3.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:93efb0b4de7e340d99057415c749175e24c8864302369e05914682ba642e5d77", size = 6642699, upload-time = "2025-07-01T09:15:23.186Z" }, + { url = "https://files.pythonhosted.org/packages/6f/d2/a9a4f280c6aefedce1e8f615baaa5474e0701d86dd6f1dede66726462bbd/pillow-11.3.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7966e38dcd0fa11ca390aed7c6f20454443581d758242023cf36fcb319b1a874", size = 6083789, upload-time = "2025-07-01T09:15:25.1Z" }, + { url = "https://files.pythonhosted.org/packages/fe/54/86b0cd9dbb683a9d5e960b66c7379e821a19be4ac5810e2e5a715c09a0c0/pillow-11.3.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:98a9afa7b9007c67ed84c57c9e0ad86a6000da96eaa638e4f8abe5b65ff83f0a", size = 6720386, upload-time = "2025-07-01T09:15:27.378Z" }, + { url = "https://files.pythonhosted.org/packages/e7/95/88efcaf384c3588e24259c4203b909cbe3e3c2d887af9e938c2022c9dd48/pillow-11.3.0-cp314-cp314-win32.whl", hash = "sha256:02a723e6bf909e7cea0dac1b0e0310be9d7650cd66222a5f1c571455c0a45214", size = 6370911, upload-time = "2025-07-01T09:15:29.294Z" }, + { url = "https://files.pythonhosted.org/packages/2e/cc/934e5820850ec5eb107e7b1a72dd278140731c669f396110ebc326f2a503/pillow-11.3.0-cp314-cp314-win_amd64.whl", hash = "sha256:a418486160228f64dd9e9efcd132679b7a02a5f22c982c78b6fc7dab3fefb635", size = 7117383, upload-time = "2025-07-01T09:15:31.128Z" }, + { url = "https://files.pythonhosted.org/packages/d6/e9/9c0a616a71da2a5d163aa37405e8aced9a906d574b4a214bede134e731bc/pillow-11.3.0-cp314-cp314-win_arm64.whl", hash = "sha256:155658efb5e044669c08896c0c44231c5e9abcaadbc5cd3648df2f7c0b96b9a6", size = 2511385, upload-time = "2025-07-01T09:15:33.328Z" }, + { url = "https://files.pythonhosted.org/packages/1a/33/c88376898aff369658b225262cd4f2659b13e8178e7534df9e6e1fa289f6/pillow-11.3.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:59a03cdf019efbfeeed910bf79c7c93255c3d54bc45898ac2a4140071b02b4ae", size = 5281129, upload-time = "2025-07-01T09:15:35.194Z" }, + { url = "https://files.pythonhosted.org/packages/1f/70/d376247fb36f1844b42910911c83a02d5544ebd2a8bad9efcc0f707ea774/pillow-11.3.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f8a5827f84d973d8636e9dc5764af4f0cf2318d26744b3d902931701b0d46653", size = 4689580, upload-time = "2025-07-01T09:15:37.114Z" }, + { url = "https://files.pythonhosted.org/packages/eb/1c/537e930496149fbac69efd2fc4329035bbe2e5475b4165439e3be9cb183b/pillow-11.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ee92f2fd10f4adc4b43d07ec5e779932b4eb3dbfbc34790ada5a6669bc095aa6", size = 5902860, upload-time = "2025-07-03T13:10:50.248Z" }, + { url = "https://files.pythonhosted.org/packages/bd/57/80f53264954dcefeebcf9dae6e3eb1daea1b488f0be8b8fef12f79a3eb10/pillow-11.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c96d333dcf42d01f47b37e0979b6bd73ec91eae18614864622d9b87bbd5bbf36", size = 7670694, upload-time = "2025-07-03T13:10:56.432Z" }, + { url = "https://files.pythonhosted.org/packages/70/ff/4727d3b71a8578b4587d9c276e90efad2d6fe0335fd76742a6da08132e8c/pillow-11.3.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4c96f993ab8c98460cd0c001447bff6194403e8b1d7e149ade5f00594918128b", size = 6005888, upload-time = "2025-07-01T09:15:39.436Z" }, + { url = "https://files.pythonhosted.org/packages/05/ae/716592277934f85d3be51d7256f3636672d7b1abfafdc42cf3f8cbd4b4c8/pillow-11.3.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41342b64afeba938edb034d122b2dda5db2139b9a4af999729ba8818e0056477", size = 6670330, upload-time = "2025-07-01T09:15:41.269Z" }, + { url = "https://files.pythonhosted.org/packages/e7/bb/7fe6cddcc8827b01b1a9766f5fdeb7418680744f9082035bdbabecf1d57f/pillow-11.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:068d9c39a2d1b358eb9f245ce7ab1b5c3246c7c8c7d9ba58cfa5b43146c06e50", size = 6114089, upload-time = "2025-07-01T09:15:43.13Z" }, + { url = "https://files.pythonhosted.org/packages/8b/f5/06bfaa444c8e80f1a8e4bff98da9c83b37b5be3b1deaa43d27a0db37ef84/pillow-11.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a1bc6ba083b145187f648b667e05a2534ecc4b9f2784c2cbe3089e44868f2b9b", size = 6748206, upload-time = "2025-07-01T09:15:44.937Z" }, + { url = "https://files.pythonhosted.org/packages/f0/77/bc6f92a3e8e6e46c0ca78abfffec0037845800ea38c73483760362804c41/pillow-11.3.0-cp314-cp314t-win32.whl", hash = "sha256:118ca10c0d60b06d006be10a501fd6bbdfef559251ed31b794668ed569c87e12", size = 6377370, upload-time = "2025-07-01T09:15:46.673Z" }, + { url = "https://files.pythonhosted.org/packages/4a/82/3a721f7d69dca802befb8af08b7c79ebcab461007ce1c18bd91a5d5896f9/pillow-11.3.0-cp314-cp314t-win_amd64.whl", hash = "sha256:8924748b688aa210d79883357d102cd64690e56b923a186f35a82cbc10f997db", size = 7121500, upload-time = "2025-07-01T09:15:48.512Z" }, + { url = "https://files.pythonhosted.org/packages/89/c7/5572fa4a3f45740eaab6ae86fcdf7195b55beac1371ac8c619d880cfe948/pillow-11.3.0-cp314-cp314t-win_arm64.whl", hash = "sha256:79ea0d14d3ebad43ec77ad5272e6ff9bba5b679ef73375ea760261207fa8e0aa", size = 2512835, upload-time = "2025-07-01T09:15:50.399Z" }, +] + +[[package]] +name = "platformdirs" +version = "4.3.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/8b/3c73abc9c759ecd3f1f7ceff6685840859e8070c4d947c93fae71f6a0bf2/platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc", size = 21362, upload-time = "2025-05-07T22:47:42.121Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4", size = 18567, upload-time = "2025-05-07T22:47:40.376Z" }, +] + +[[package]] +name = "prompt-toolkit" +version = "3.0.51" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wcwidth" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bb/6e/9d084c929dfe9e3bfe0c6a47e31f78a25c54627d64a66e884a8bf5474f1c/prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed", size = 428940, upload-time = "2025-04-15T09:18:47.731Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/4f/5249960887b1fbe561d9ff265496d170b55a735b76724f10ef19f9e40716/prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07", size = 387810, upload-time = "2025-04-15T09:18:44.753Z" }, +] + +[[package]] +name = "psutil" +version = "7.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2a/80/336820c1ad9286a4ded7e845b2eccfcb27851ab8ac6abece774a6ff4d3de/psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456", size = 497003, upload-time = "2025-02-13T21:54:07.946Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/e6/2d26234410f8b8abdbf891c9da62bee396583f713fb9f3325a4760875d22/psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25", size = 238051, upload-time = "2025-02-13T21:54:12.36Z" }, + { url = "https://files.pythonhosted.org/packages/04/8b/30f930733afe425e3cbfc0e1468a30a18942350c1a8816acfade80c005c4/psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da", size = 239535, upload-time = "2025-02-13T21:54:16.07Z" }, + { url = "https://files.pythonhosted.org/packages/2a/ed/d362e84620dd22876b55389248e522338ed1bf134a5edd3b8231d7207f6d/psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91", size = 275004, upload-time = "2025-02-13T21:54:18.662Z" }, + { url = "https://files.pythonhosted.org/packages/bf/b9/b0eb3f3cbcb734d930fdf839431606844a825b23eaf9a6ab371edac8162c/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b1388a4f6875d7e2aff5c4ca1cc16c545ed41dd8bb596cefea80111db353a34", size = 277986, upload-time = "2025-02-13T21:54:21.811Z" }, + { url = "https://files.pythonhosted.org/packages/eb/a2/709e0fe2f093556c17fbafda93ac032257242cabcc7ff3369e2cb76a97aa/psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993", size = 279544, upload-time = "2025-02-13T21:54:24.68Z" }, + { url = "https://files.pythonhosted.org/packages/50/e6/eecf58810b9d12e6427369784efe814a1eec0f492084ce8eb8f4d89d6d61/psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99", size = 241053, upload-time = "2025-02-13T21:54:34.31Z" }, + { url = "https://files.pythonhosted.org/packages/50/1b/6921afe68c74868b4c9fa424dad3be35b095e16687989ebbb50ce4fceb7c/psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553", size = 244885, upload-time = "2025-02-13T21:54:37.486Z" }, +] + +[[package]] +name = "ptyprocess" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762, upload-time = "2020-12-28T15:15:30.155Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993, upload-time = "2020-12-28T15:15:28.35Z" }, +] + +[[package]] +name = "pure-eval" +version = "0.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/05/0a34433a064256a578f1783a10da6df098ceaa4a57bbeaa96a6c0352786b/pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42", size = 19752, upload-time = "2024-07-21T12:58:21.801Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842, upload-time = "2024-07-21T12:58:20.04Z" }, +] + +[[package]] +name = "pycparser" +version = "2.22" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736, upload-time = "2024-03-30T13:22:22.564Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552, upload-time = "2024-03-30T13:22:20.476Z" }, +] + +[[package]] +name = "pygments" +version = "2.19.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, +] + +[[package]] +name = "pyparsing" +version = "3.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bb/22/f1129e69d94ffff626bdb5c835506b3a5b4f3d070f17ea295e12c2c6f60f/pyparsing-3.2.3.tar.gz", hash = "sha256:b9c13f1ab8b3b542f72e28f634bad4de758ab3ce4546e4301970ad6fa77c38be", size = 1088608, upload-time = "2025-03-25T05:01:28.114Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/e7/df2285f3d08fee213f2d041540fa4fc9ca6c2d44cf36d3a035bf2a8d2bcc/pyparsing-3.2.3-py3-none-any.whl", hash = "sha256:a749938e02d6fd0b59b356ca504a24982314bb090c383e3cf201c95ef7e2bfcf", size = 111120, upload-time = "2025-03-25T05:01:24.908Z" }, +] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, +] + +[[package]] +name = "pytz" +version = "2025.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884, upload-time = "2025-03-25T02:25:00.538Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225, upload-time = "2025-03-25T02:24:58.468Z" }, +] + +[[package]] +name = "pywin32" +version = "311" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a5/be/3fd5de0979fcb3994bfee0d65ed8ca9506a8a1260651b86174f6a86f52b3/pywin32-311-cp313-cp313-win32.whl", hash = "sha256:f95ba5a847cba10dd8c4d8fefa9f2a6cf283b8b88ed6178fa8a6c1ab16054d0d", size = 8705700, upload-time = "2025-07-14T20:13:26.471Z" }, + { url = "https://files.pythonhosted.org/packages/e3/28/e0a1909523c6890208295a29e05c2adb2126364e289826c0a8bc7297bd5c/pywin32-311-cp313-cp313-win_amd64.whl", hash = "sha256:718a38f7e5b058e76aee1c56ddd06908116d35147e133427e59a3983f703a20d", size = 9494700, upload-time = "2025-07-14T20:13:28.243Z" }, + { url = "https://files.pythonhosted.org/packages/04/bf/90339ac0f55726dce7d794e6d79a18a91265bdf3aa70b6b9ca52f35e022a/pywin32-311-cp313-cp313-win_arm64.whl", hash = "sha256:7b4075d959648406202d92a2310cb990fea19b535c7f4a78d3f5e10b926eeb8a", size = 8709318, upload-time = "2025-07-14T20:13:30.348Z" }, + { url = "https://files.pythonhosted.org/packages/c9/31/097f2e132c4f16d99a22bfb777e0fd88bd8e1c634304e102f313af69ace5/pywin32-311-cp314-cp314-win32.whl", hash = "sha256:b7a2c10b93f8986666d0c803ee19b5990885872a7de910fc460f9b0c2fbf92ee", size = 8840714, upload-time = "2025-07-14T20:13:32.449Z" }, + { url = "https://files.pythonhosted.org/packages/90/4b/07c77d8ba0e01349358082713400435347df8426208171ce297da32c313d/pywin32-311-cp314-cp314-win_amd64.whl", hash = "sha256:3aca44c046bd2ed8c90de9cb8427f581c479e594e99b5c0bb19b29c10fd6cb87", size = 9656800, upload-time = "2025-07-14T20:13:34.312Z" }, + { url = "https://files.pythonhosted.org/packages/c0/d2/21af5c535501a7233e734b8af901574572da66fcc254cb35d0609c9080dd/pywin32-311-cp314-cp314-win_arm64.whl", hash = "sha256:a508e2d9025764a8270f93111a970e1d0fbfc33f4153b388bb649b7eec4f9b42", size = 8932540, upload-time = "2025-07-14T20:13:36.379Z" }, +] + +[[package]] +name = "pyzmq" +version = "27.0.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "implementation_name == 'pypy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f8/66/159f38d184f08b5f971b467f87b1ab142ab1320d5200825c824b32b84b66/pyzmq-27.0.2.tar.gz", hash = "sha256:b398dd713b18de89730447347e96a0240225e154db56e35b6bb8447ffdb07798", size = 281440, upload-time = "2025-08-21T04:23:26.334Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/68/69/b3a729e7b03e412bee2b1823ab8d22e20a92593634f664afd04c6c9d9ac0/pyzmq-27.0.2-cp312-abi3-macosx_10_15_universal2.whl", hash = "sha256:5da05e3c22c95e23bfc4afeee6ff7d4be9ff2233ad6cb171a0e8257cd46b169a", size = 1305910, upload-time = "2025-08-21T04:21:27.609Z" }, + { url = "https://files.pythonhosted.org/packages/15/b7/f6a6a285193d489b223c340b38ee03a673467cb54914da21c3d7849f1b10/pyzmq-27.0.2-cp312-abi3-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:4e4520577971d01d47e2559bb3175fce1be9103b18621bf0b241abe0a933d040", size = 895507, upload-time = "2025-08-21T04:21:29.005Z" }, + { url = "https://files.pythonhosted.org/packages/17/e6/c4ed2da5ef9182cde1b1f5d0051a986e76339d71720ec1a00be0b49275ad/pyzmq-27.0.2-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:56d7de7bf73165b90bd25a8668659ccb134dd28449116bf3c7e9bab5cf8a8ec9", size = 652670, upload-time = "2025-08-21T04:21:30.71Z" }, + { url = "https://files.pythonhosted.org/packages/0e/66/d781ab0636570d32c745c4e389b1c6b713115905cca69ab6233508622edd/pyzmq-27.0.2-cp312-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:340e7cddc32f147c6c00d116a3f284ab07ee63dbd26c52be13b590520434533c", size = 840581, upload-time = "2025-08-21T04:21:32.008Z" }, + { url = "https://files.pythonhosted.org/packages/a6/df/f24790caf565d72544f5c8d8500960b9562c1dc848d6f22f3c7e122e73d4/pyzmq-27.0.2-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ba95693f9df8bb4a9826464fb0fe89033936f35fd4a8ff1edff09a473570afa0", size = 1641931, upload-time = "2025-08-21T04:21:33.371Z" }, + { url = "https://files.pythonhosted.org/packages/65/65/77d27b19fc5e845367f9100db90b9fce924f611b14770db480615944c9c9/pyzmq-27.0.2-cp312-abi3-musllinux_1_2_i686.whl", hash = "sha256:ca42a6ce2d697537da34f77a1960d21476c6a4af3e539eddb2b114c3cf65a78c", size = 2021226, upload-time = "2025-08-21T04:21:35.301Z" }, + { url = "https://files.pythonhosted.org/packages/5b/65/1ed14421ba27a4207fa694772003a311d1142b7f543179e4d1099b7eb746/pyzmq-27.0.2-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:3e44e665d78a07214b2772ccbd4b9bcc6d848d7895f1b2d7653f047b6318a4f6", size = 1878047, upload-time = "2025-08-21T04:21:36.749Z" }, + { url = "https://files.pythonhosted.org/packages/dd/dc/e578549b89b40dc78a387ec471c2a360766690c0a045cd8d1877d401012d/pyzmq-27.0.2-cp312-abi3-win32.whl", hash = "sha256:272d772d116615397d2be2b1417b3b8c8bc8671f93728c2f2c25002a4530e8f6", size = 558757, upload-time = "2025-08-21T04:21:38.2Z" }, + { url = "https://files.pythonhosted.org/packages/b5/89/06600980aefcc535c758414da969f37a5194ea4cdb73b745223f6af3acfb/pyzmq-27.0.2-cp312-abi3-win_amd64.whl", hash = "sha256:734be4f44efba0aa69bf5f015ed13eb69ff29bf0d17ea1e21588b095a3147b8e", size = 619281, upload-time = "2025-08-21T04:21:39.909Z" }, + { url = "https://files.pythonhosted.org/packages/30/84/df8a5c089552d17c9941d1aea4314b606edf1b1622361dae89aacedc6467/pyzmq-27.0.2-cp312-abi3-win_arm64.whl", hash = "sha256:41f0bd56d9279392810950feb2785a419c2920bbf007fdaaa7f4a07332ae492d", size = 552680, upload-time = "2025-08-21T04:21:41.571Z" }, + { url = "https://files.pythonhosted.org/packages/b4/7b/b79e976508517ab80dc800f7021ef1fb602a6d55e4caa2d47fb3dca5d8b6/pyzmq-27.0.2-cp313-cp313-android_24_arm64_v8a.whl", hash = "sha256:7f01118133427cd7f34ee133b5098e2af5f70303fa7519785c007bca5aa6f96a", size = 1122259, upload-time = "2025-08-21T04:21:43.063Z" }, + { url = "https://files.pythonhosted.org/packages/2b/1c/777217b9940ebcb7e71c924184ca5f31e410580a58d9fd93798589f0d31c/pyzmq-27.0.2-cp313-cp313-android_24_x86_64.whl", hash = "sha256:e4b860edf6379a7234ccbb19b4ed2c57e3ff569c3414fadfb49ae72b61a8ef07", size = 1156113, upload-time = "2025-08-21T04:21:44.566Z" }, + { url = "https://files.pythonhosted.org/packages/59/7d/654657a4c6435f41538182e71b61eac386a789a2bbb6f30171915253a9a7/pyzmq-27.0.2-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:cb77923ea163156da14295c941930bd525df0d29c96c1ec2fe3c3806b1e17cb3", size = 1341437, upload-time = "2025-08-21T04:21:46.019Z" }, + { url = "https://files.pythonhosted.org/packages/20/a0/5ed7710037f9c096017adc748bcb1698674a2d297f8b9422d38816f7b56a/pyzmq-27.0.2-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:61678b7407b04df8f9423f188156355dc94d0fb52d360ae79d02ed7e0d431eea", size = 897888, upload-time = "2025-08-21T04:21:47.362Z" }, + { url = "https://files.pythonhosted.org/packages/2c/8a/6e4699a60931c17e7406641d201d7f2c121e2a38979bc83226a6d8f1ba32/pyzmq-27.0.2-cp313-cp313t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e3c824b70925963bdc8e39a642672c15ffaa67e7d4b491f64662dd56d6271263", size = 660727, upload-time = "2025-08-21T04:21:48.734Z" }, + { url = "https://files.pythonhosted.org/packages/7b/d8/d761e438c186451bd89ce63a665cde5690c084b61cd8f5d7b51e966e875a/pyzmq-27.0.2-cp313-cp313t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c4833e02fcf2751975457be1dfa2f744d4d09901a8cc106acaa519d868232175", size = 848136, upload-time = "2025-08-21T04:21:50.416Z" }, + { url = "https://files.pythonhosted.org/packages/43/f1/a0f31684efdf3eb92f46b7dd2117e752208115e89d278f8ca5f413c5bb85/pyzmq-27.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b18045668d09cf0faa44918af2a67f0dbbef738c96f61c2f1b975b1ddb92ccfc", size = 1650402, upload-time = "2025-08-21T04:21:52.235Z" }, + { url = "https://files.pythonhosted.org/packages/41/fd/0d7f2a1732812df02c85002770da4a7864c79b210084bcdab01ea57e8d92/pyzmq-27.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:bbbb7e2f3ac5a22901324e7b086f398b8e16d343879a77b15ca3312e8cd8e6d5", size = 2024587, upload-time = "2025-08-21T04:21:54.07Z" }, + { url = "https://files.pythonhosted.org/packages/f1/73/358be69e279a382dd09e46dda29df8446365cddee4f79ef214e71e5b2b5a/pyzmq-27.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:b751914a73604d40d88a061bab042a11d4511b3ddbb7624cd83c39c8a498564c", size = 1885493, upload-time = "2025-08-21T04:21:55.588Z" }, + { url = "https://files.pythonhosted.org/packages/c5/7b/e9951ad53b3dfed8cfb4c2cfd6e0097c9b454e5c0d0e6df5f2b60d7c8c3d/pyzmq-27.0.2-cp313-cp313t-win32.whl", hash = "sha256:3e8f833dd82af11db5321c414638045c70f61009f72dd61c88db4a713c1fb1d2", size = 574934, upload-time = "2025-08-21T04:21:57.52Z" }, + { url = "https://files.pythonhosted.org/packages/55/33/1a7fc3a92f2124a63e6e2a6afa0af471a5c0c713e776b476d4eda5111b13/pyzmq-27.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:5b45153cb8eadcab14139970643a84f7a7b08dda541fbc1f6f4855c49334b549", size = 640932, upload-time = "2025-08-21T04:21:59.527Z" }, + { url = "https://files.pythonhosted.org/packages/2a/52/2598a94ac251a7c83f3887866225eea1952b0d4463a68df5032eb00ff052/pyzmq-27.0.2-cp313-cp313t-win_arm64.whl", hash = "sha256:86898f5c9730df23427c1ee0097d8aa41aa5f89539a79e48cd0d2c22d059f1b7", size = 561315, upload-time = "2025-08-21T04:22:01.295Z" }, + { url = "https://files.pythonhosted.org/packages/42/7d/10ef02ea36590b29d48ef88eb0831f0af3eb240cccca2752556faec55f59/pyzmq-27.0.2-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:d2b4b261dce10762be5c116b6ad1f267a9429765b493c454f049f33791dd8b8a", size = 1341463, upload-time = "2025-08-21T04:22:02.712Z" }, + { url = "https://files.pythonhosted.org/packages/94/36/115d18dade9a3d4d3d08dd8bfe5459561b8e02815f99df040555fdd7768e/pyzmq-27.0.2-cp314-cp314t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:4e4d88b6cff156fed468903006b24bbd85322612f9c2f7b96e72d5016fd3f543", size = 897840, upload-time = "2025-08-21T04:22:04.845Z" }, + { url = "https://files.pythonhosted.org/packages/39/66/083b37839b95c386a95f1537bb41bdbf0c002b7c55b75ee737949cecb11f/pyzmq-27.0.2-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8426c0ebbc11ed8416a6e9409c194142d677c2c5c688595f2743664e356d9e9b", size = 660704, upload-time = "2025-08-21T04:22:06.389Z" }, + { url = "https://files.pythonhosted.org/packages/76/5a/196ab46e549ba35bf3268f575e10cfac0dc86b78dcaa7a3e36407ecda752/pyzmq-27.0.2-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:565bee96a155fe6452caed5fb5f60c9862038e6b51a59f4f632562081cdb4004", size = 848037, upload-time = "2025-08-21T04:22:07.817Z" }, + { url = "https://files.pythonhosted.org/packages/70/ea/a27b9eb44b2e615a9ecb8510ebb023cc1d2d251181e4a1e50366bfbf94d6/pyzmq-27.0.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5de735c745ca5cefe9c2d1547d8f28cfe1b1926aecb7483ab1102fd0a746c093", size = 1650278, upload-time = "2025-08-21T04:22:09.269Z" }, + { url = "https://files.pythonhosted.org/packages/62/ac/3e9af036bfaf718ab5e69ded8f6332da392c5450ad43e8e3ca66797f145a/pyzmq-27.0.2-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:ea4f498f8115fd90d7bf03a3e83ae3e9898e43362f8e8e8faec93597206e15cc", size = 2024504, upload-time = "2025-08-21T04:22:10.778Z" }, + { url = "https://files.pythonhosted.org/packages/ae/e9/3202d31788df8ebaa176b23d846335eb9c768d8b43c0506bbd6265ad36a0/pyzmq-27.0.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:d00e81cb0afd672915257a3927124ee2ad117ace3c256d39cd97ca3f190152ad", size = 1885381, upload-time = "2025-08-21T04:22:12.718Z" }, + { url = "https://files.pythonhosted.org/packages/4b/ed/42de80b7ab4e8fcf13376f81206cf8041740672ac1fd2e1c598d63f595bf/pyzmq-27.0.2-cp314-cp314t-win32.whl", hash = "sha256:0f6e9b00d81b58f859fffc112365d50413954e02aefe36c5b4c8fb4af79f8cc3", size = 587526, upload-time = "2025-08-21T04:22:14.18Z" }, + { url = "https://files.pythonhosted.org/packages/ed/c8/8f3c72d6f0bfbf090aa5e283576073ca5c59839b85a5cc8c66ddb9b59801/pyzmq-27.0.2-cp314-cp314t-win_amd64.whl", hash = "sha256:2e73cf3b127a437fef4100eb3ac2ebe6b49e655bb721329f667f59eca0a26221", size = 661368, upload-time = "2025-08-21T04:22:15.677Z" }, + { url = "https://files.pythonhosted.org/packages/69/a4/7ee652ea1c77d872f5d99ed937fa8bbd1f6f4b7a39a6d3a0076c286e0c3e/pyzmq-27.0.2-cp314-cp314t-win_arm64.whl", hash = "sha256:4108785f2e5ac865d06f678a07a1901e3465611356df21a545eeea8b45f56265", size = 574901, upload-time = "2025-08-21T04:22:17.423Z" }, +] + +[[package]] +name = "scipy" +version = "1.16.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f5/4a/b927028464795439faec8eaf0b03b011005c487bb2d07409f28bf30879c4/scipy-1.16.1.tar.gz", hash = "sha256:44c76f9e8b6e8e488a586190ab38016e4ed2f8a038af7cd3defa903c0a2238b3", size = 30580861, upload-time = "2025-07-27T16:33:30.834Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/93/0b/b5c99382b839854a71ca9482c684e3472badc62620287cbbdab499b75ce6/scipy-1.16.1-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:5451606823a5e73dfa621a89948096c6528e2896e40b39248295d3a0138d594f", size = 36533717, upload-time = "2025-07-27T16:28:51.706Z" }, + { url = "https://files.pythonhosted.org/packages/eb/e5/69ab2771062c91e23e07c12e7d5033a6b9b80b0903ee709c3c36b3eb520c/scipy-1.16.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:89728678c5ca5abd610aee148c199ac1afb16e19844401ca97d43dc548a354eb", size = 28570009, upload-time = "2025-07-27T16:28:57.017Z" }, + { url = "https://files.pythonhosted.org/packages/f4/69/bd75dbfdd3cf524f4d753484d723594aed62cfaac510123e91a6686d520b/scipy-1.16.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:e756d688cb03fd07de0fffad475649b03cb89bee696c98ce508b17c11a03f95c", size = 20841942, upload-time = "2025-07-27T16:29:01.152Z" }, + { url = "https://files.pythonhosted.org/packages/ea/74/add181c87663f178ba7d6144b370243a87af8476664d5435e57d599e6874/scipy-1.16.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:5aa2687b9935da3ed89c5dbed5234576589dd28d0bf7cd237501ccfbdf1ad608", size = 23498507, upload-time = "2025-07-27T16:29:05.202Z" }, + { url = "https://files.pythonhosted.org/packages/1d/74/ece2e582a0d9550cee33e2e416cc96737dce423a994d12bbe59716f47ff1/scipy-1.16.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0851f6a1e537fe9399f35986897e395a1aa61c574b178c0d456be5b1a0f5ca1f", size = 33286040, upload-time = "2025-07-27T16:29:10.201Z" }, + { url = "https://files.pythonhosted.org/packages/e4/82/08e4076df538fb56caa1d489588d880ec7c52d8273a606bb54d660528f7c/scipy-1.16.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fedc2cbd1baed37474b1924c331b97bdff611d762c196fac1a9b71e67b813b1b", size = 35176096, upload-time = "2025-07-27T16:29:17.091Z" }, + { url = "https://files.pythonhosted.org/packages/fa/79/cd710aab8c921375711a8321c6be696e705a120e3011a643efbbcdeeabcc/scipy-1.16.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:2ef500e72f9623a6735769e4b93e9dcb158d40752cdbb077f305487e3e2d1f45", size = 35490328, upload-time = "2025-07-27T16:29:22.928Z" }, + { url = "https://files.pythonhosted.org/packages/71/73/e9cc3d35ee4526d784520d4494a3e1ca969b071fb5ae5910c036a375ceec/scipy-1.16.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:978d8311674b05a8f7ff2ea6c6bce5d8b45a0cb09d4c5793e0318f448613ea65", size = 37939921, upload-time = "2025-07-27T16:29:29.108Z" }, + { url = "https://files.pythonhosted.org/packages/21/12/c0efd2941f01940119b5305c375ae5c0fcb7ec193f806bd8f158b73a1782/scipy-1.16.1-cp313-cp313-win_amd64.whl", hash = "sha256:81929ed0fa7a5713fcdd8b2e6f73697d3b4c4816d090dd34ff937c20fa90e8ab", size = 38479462, upload-time = "2025-07-27T16:30:24.078Z" }, + { url = "https://files.pythonhosted.org/packages/7a/19/c3d08b675260046a991040e1ea5d65f91f40c7df1045fffff412dcfc6765/scipy-1.16.1-cp313-cp313t-macosx_10_14_x86_64.whl", hash = "sha256:bcc12db731858abda693cecdb3bdc9e6d4bd200213f49d224fe22df82687bdd6", size = 36938832, upload-time = "2025-07-27T16:29:35.057Z" }, + { url = "https://files.pythonhosted.org/packages/81/f2/ce53db652c033a414a5b34598dba6b95f3d38153a2417c5a3883da429029/scipy-1.16.1-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:744d977daa4becb9fc59135e75c069f8d301a87d64f88f1e602a9ecf51e77b27", size = 29093084, upload-time = "2025-07-27T16:29:40.201Z" }, + { url = "https://files.pythonhosted.org/packages/a9/ae/7a10ff04a7dc15f9057d05b33737ade244e4bd195caa3f7cc04d77b9e214/scipy-1.16.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:dc54f76ac18073bcecffb98d93f03ed6b81a92ef91b5d3b135dcc81d55a724c7", size = 21365098, upload-time = "2025-07-27T16:29:44.295Z" }, + { url = "https://files.pythonhosted.org/packages/36/ac/029ff710959932ad3c2a98721b20b405f05f752f07344622fd61a47c5197/scipy-1.16.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:367d567ee9fc1e9e2047d31f39d9d6a7a04e0710c86e701e053f237d14a9b4f6", size = 23896858, upload-time = "2025-07-27T16:29:48.784Z" }, + { url = "https://files.pythonhosted.org/packages/71/13/d1ef77b6bd7898720e1f0b6b3743cb945f6c3cafa7718eaac8841035ab60/scipy-1.16.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:4cf5785e44e19dcd32a0e4807555e1e9a9b8d475c6afff3d21c3c543a6aa84f4", size = 33438311, upload-time = "2025-07-27T16:29:54.164Z" }, + { url = "https://files.pythonhosted.org/packages/2d/e0/e64a6821ffbb00b4c5b05169f1c1fddb4800e9307efe3db3788995a82a2c/scipy-1.16.1-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3d0b80fb26d3e13a794c71d4b837e2a589d839fd574a6bbb4ee1288c213ad4a3", size = 35279542, upload-time = "2025-07-27T16:30:00.249Z" }, + { url = "https://files.pythonhosted.org/packages/57/59/0dc3c8b43e118f1e4ee2b798dcc96ac21bb20014e5f1f7a8e85cc0653bdb/scipy-1.16.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:8503517c44c18d1030d666cb70aaac1cc8913608816e06742498833b128488b7", size = 35667665, upload-time = "2025-07-27T16:30:05.916Z" }, + { url = "https://files.pythonhosted.org/packages/45/5f/844ee26e34e2f3f9f8febb9343748e72daeaec64fe0c70e9bf1ff84ec955/scipy-1.16.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:30cc4bb81c41831ecfd6dc450baf48ffd80ef5aed0f5cf3ea775740e80f16ecc", size = 38045210, upload-time = "2025-07-27T16:30:11.655Z" }, + { url = "https://files.pythonhosted.org/packages/8d/d7/210f2b45290f444f1de64bc7353aa598ece9f0e90c384b4a156f9b1a5063/scipy-1.16.1-cp313-cp313t-win_amd64.whl", hash = "sha256:c24fa02f7ed23ae514460a22c57eca8f530dbfa50b1cfdbf4f37c05b5309cc39", size = 38593661, upload-time = "2025-07-27T16:30:17.825Z" }, + { url = "https://files.pythonhosted.org/packages/81/ea/84d481a5237ed223bd3d32d6e82d7a6a96e34756492666c260cef16011d1/scipy-1.16.1-cp314-cp314-macosx_10_14_x86_64.whl", hash = "sha256:796a5a9ad36fa3a782375db8f4241ab02a091308eb079746bc0f874c9b998318", size = 36525921, upload-time = "2025-07-27T16:30:30.081Z" }, + { url = "https://files.pythonhosted.org/packages/4e/9f/d9edbdeff9f3a664807ae3aea383e10afaa247e8e6255e6d2aa4515e8863/scipy-1.16.1-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:3ea0733a2ff73fd6fdc5fecca54ee9b459f4d74f00b99aced7d9a3adb43fb1cc", size = 28564152, upload-time = "2025-07-27T16:30:35.336Z" }, + { url = "https://files.pythonhosted.org/packages/3b/95/8125bcb1fe04bc267d103e76516243e8d5e11229e6b306bda1024a5423d1/scipy-1.16.1-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:85764fb15a2ad994e708258bb4ed8290d1305c62a4e1ef07c414356a24fcfbf8", size = 20836028, upload-time = "2025-07-27T16:30:39.421Z" }, + { url = "https://files.pythonhosted.org/packages/77/9c/bf92e215701fc70bbcd3d14d86337cf56a9b912a804b9c776a269524a9e9/scipy-1.16.1-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:ca66d980469cb623b1759bdd6e9fd97d4e33a9fad5b33771ced24d0cb24df67e", size = 23489666, upload-time = "2025-07-27T16:30:43.663Z" }, + { url = "https://files.pythonhosted.org/packages/5e/00/5e941d397d9adac41b02839011594620d54d99488d1be5be755c00cde9ee/scipy-1.16.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e7cc1ffcc230f568549fc56670bcf3df1884c30bd652c5da8138199c8c76dae0", size = 33358318, upload-time = "2025-07-27T16:30:48.982Z" }, + { url = "https://files.pythonhosted.org/packages/0e/87/8db3aa10dde6e3e8e7eb0133f24baa011377d543f5b19c71469cf2648026/scipy-1.16.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3ddfb1e8d0b540cb4ee9c53fc3dea3186f97711248fb94b4142a1b27178d8b4b", size = 35185724, upload-time = "2025-07-27T16:30:54.26Z" }, + { url = "https://files.pythonhosted.org/packages/89/b4/6ab9ae443216807622bcff02690262d8184078ea467efee2f8c93288a3b1/scipy-1.16.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:4dc0e7be79e95d8ba3435d193e0d8ce372f47f774cffd882f88ea4e1e1ddc731", size = 35554335, upload-time = "2025-07-27T16:30:59.765Z" }, + { url = "https://files.pythonhosted.org/packages/9c/9a/d0e9dc03c5269a1afb60661118296a32ed5d2c24298af61b676c11e05e56/scipy-1.16.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:f23634f9e5adb51b2a77766dac217063e764337fbc816aa8ad9aaebcd4397fd3", size = 37960310, upload-time = "2025-07-27T16:31:06.151Z" }, + { url = "https://files.pythonhosted.org/packages/5e/00/c8f3130a50521a7977874817ca89e0599b1b4ee8e938bad8ae798a0e1f0d/scipy-1.16.1-cp314-cp314-win_amd64.whl", hash = "sha256:57d75524cb1c5a374958a2eae3d84e1929bb971204cc9d52213fb8589183fc19", size = 39319239, upload-time = "2025-07-27T16:31:59.942Z" }, + { url = "https://files.pythonhosted.org/packages/f2/f2/1ca3eda54c3a7e4c92f6acef7db7b3a057deb135540d23aa6343ef8ad333/scipy-1.16.1-cp314-cp314t-macosx_10_14_x86_64.whl", hash = "sha256:d8da7c3dd67bcd93f15618938f43ed0995982eb38973023d46d4646c4283ad65", size = 36939460, upload-time = "2025-07-27T16:31:11.865Z" }, + { url = "https://files.pythonhosted.org/packages/80/30/98c2840b293a132400c0940bb9e140171dcb8189588619048f42b2ce7b4f/scipy-1.16.1-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:cc1d2f2fd48ba1e0620554fe5bc44d3e8f5d4185c8c109c7fbdf5af2792cfad2", size = 29093322, upload-time = "2025-07-27T16:31:17.045Z" }, + { url = "https://files.pythonhosted.org/packages/c1/e6/1e6e006e850622cf2a039b62d1a6ddc4497d4851e58b68008526f04a9a00/scipy-1.16.1-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:21a611ced9275cb861bacadbada0b8c0623bc00b05b09eb97f23b370fc2ae56d", size = 21365329, upload-time = "2025-07-27T16:31:21.188Z" }, + { url = "https://files.pythonhosted.org/packages/8e/02/72a5aa5b820589dda9a25e329ca752842bfbbaf635e36bc7065a9b42216e/scipy-1.16.1-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:8dfbb25dffc4c3dd9371d8ab456ca81beeaf6f9e1c2119f179392f0dc1ab7695", size = 23897544, upload-time = "2025-07-27T16:31:25.408Z" }, + { url = "https://files.pythonhosted.org/packages/2b/dc/7122d806a6f9eb8a33532982234bed91f90272e990f414f2830cfe656e0b/scipy-1.16.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f0ebb7204f063fad87fc0a0e4ff4a2ff40b2a226e4ba1b7e34bf4b79bf97cd86", size = 33442112, upload-time = "2025-07-27T16:31:30.62Z" }, + { url = "https://files.pythonhosted.org/packages/24/39/e383af23564daa1021a5b3afbe0d8d6a68ec639b943661841f44ac92de85/scipy-1.16.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f1b9e5962656f2734c2b285a8745358ecb4e4efbadd00208c80a389227ec61ff", size = 35286594, upload-time = "2025-07-27T16:31:36.112Z" }, + { url = "https://files.pythonhosted.org/packages/95/47/1a0b0aff40c3056d955f38b0df5d178350c3d74734ec54f9c68d23910be5/scipy-1.16.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5e1a106f8c023d57a2a903e771228bf5c5b27b5d692088f457acacd3b54511e4", size = 35665080, upload-time = "2025-07-27T16:31:42.025Z" }, + { url = "https://files.pythonhosted.org/packages/64/df/ce88803e9ed6e27fe9b9abefa157cf2c80e4fa527cf17ee14be41f790ad4/scipy-1.16.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:709559a1db68a9abc3b2c8672c4badf1614f3b440b3ab326d86a5c0491eafae3", size = 38050306, upload-time = "2025-07-27T16:31:48.109Z" }, + { url = "https://files.pythonhosted.org/packages/6e/6c/a76329897a7cae4937d403e623aa6aaea616a0bb5b36588f0b9d1c9a3739/scipy-1.16.1-cp314-cp314t-win_amd64.whl", hash = "sha256:c0c804d60492a0aad7f5b2bb1862f4548b990049e27e828391ff2bf6f7199998", size = 39427705, upload-time = "2025-07-27T16:31:53.96Z" }, +] + +[[package]] +name = "six" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, +] + +[[package]] +name = "stack-data" +version = "0.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asttokens" }, + { name = "executing" }, + { name = "pure-eval" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/28/e3/55dcc2cfbc3ca9c29519eb6884dd1415ecb53b0e934862d3559ddcb7e20b/stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9", size = 44707, upload-time = "2023-09-30T13:58:05.479Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521, upload-time = "2023-09-30T13:58:03.53Z" }, +] + +[[package]] +name = "tornado" +version = "6.5.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/09/ce/1eb500eae19f4648281bb2186927bb062d2438c2e5093d1360391afd2f90/tornado-6.5.2.tar.gz", hash = "sha256:ab53c8f9a0fa351e2c0741284e06c7a45da86afb544133201c5cc8578eb076a0", size = 510821, upload-time = "2025-08-08T18:27:00.78Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f6/48/6a7529df2c9cc12efd2e8f5dd219516184d703b34c06786809670df5b3bd/tornado-6.5.2-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:2436822940d37cde62771cff8774f4f00b3c8024fe482e16ca8387b8a2724db6", size = 442563, upload-time = "2025-08-08T18:26:42.945Z" }, + { url = "https://files.pythonhosted.org/packages/f2/b5/9b575a0ed3e50b00c40b08cbce82eb618229091d09f6d14bce80fc01cb0b/tornado-6.5.2-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:583a52c7aa94ee046854ba81d9ebb6c81ec0fd30386d96f7640c96dad45a03ef", size = 440729, upload-time = "2025-08-08T18:26:44.473Z" }, + { url = "https://files.pythonhosted.org/packages/1b/4e/619174f52b120efcf23633c817fd3fed867c30bff785e2cd5a53a70e483c/tornado-6.5.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b0fe179f28d597deab2842b86ed4060deec7388f1fd9c1b4a41adf8af058907e", size = 444295, upload-time = "2025-08-08T18:26:46.021Z" }, + { url = "https://files.pythonhosted.org/packages/95/fa/87b41709552bbd393c85dd18e4e3499dcd8983f66e7972926db8d96aa065/tornado-6.5.2-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b186e85d1e3536d69583d2298423744740986018e393d0321df7340e71898882", size = 443644, upload-time = "2025-08-08T18:26:47.625Z" }, + { url = "https://files.pythonhosted.org/packages/f9/41/fb15f06e33d7430ca89420283a8762a4e6b8025b800ea51796ab5e6d9559/tornado-6.5.2-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e792706668c87709709c18b353da1f7662317b563ff69f00bab83595940c7108", size = 443878, upload-time = "2025-08-08T18:26:50.599Z" }, + { url = "https://files.pythonhosted.org/packages/11/92/fe6d57da897776ad2e01e279170ea8ae726755b045fe5ac73b75357a5a3f/tornado-6.5.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:06ceb1300fd70cb20e43b1ad8aaee0266e69e7ced38fa910ad2e03285009ce7c", size = 444549, upload-time = "2025-08-08T18:26:51.864Z" }, + { url = "https://files.pythonhosted.org/packages/9b/02/c8f4f6c9204526daf3d760f4aa555a7a33ad0e60843eac025ccfd6ff4a93/tornado-6.5.2-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:74db443e0f5251be86cbf37929f84d8c20c27a355dd452a5cfa2aada0d001ec4", size = 443973, upload-time = "2025-08-08T18:26:53.625Z" }, + { url = "https://files.pythonhosted.org/packages/ae/2d/f5f5707b655ce2317190183868cd0f6822a1121b4baeae509ceb9590d0bd/tornado-6.5.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b5e735ab2889d7ed33b32a459cac490eda71a1ba6857b0118de476ab6c366c04", size = 443954, upload-time = "2025-08-08T18:26:55.072Z" }, + { url = "https://files.pythonhosted.org/packages/e8/59/593bd0f40f7355806bf6573b47b8c22f8e1374c9b6fd03114bd6b7a3dcfd/tornado-6.5.2-cp39-abi3-win32.whl", hash = "sha256:c6f29e94d9b37a95013bb669616352ddb82e3bfe8326fccee50583caebc8a5f0", size = 445023, upload-time = "2025-08-08T18:26:56.677Z" }, + { url = "https://files.pythonhosted.org/packages/c7/2a/f609b420c2f564a748a2d80ebfb2ee02a73ca80223af712fca591386cafb/tornado-6.5.2-cp39-abi3-win_amd64.whl", hash = "sha256:e56a5af51cc30dd2cae649429af65ca2f6571da29504a07995175df14c18f35f", size = 445427, upload-time = "2025-08-08T18:26:57.91Z" }, + { url = "https://files.pythonhosted.org/packages/5e/4f/e1f65e8f8c76d73658b33d33b81eed4322fb5085350e4328d5c956f0c8f9/tornado-6.5.2-cp39-abi3-win_arm64.whl", hash = "sha256:d6c33dc3672e3a1f3618eb63b7ef4683a7688e7b9e6e8f0d9aa5726360a004af", size = 444456, upload-time = "2025-08-08T18:26:59.207Z" }, +] + +[[package]] +name = "traitlets" +version = "5.14.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/eb/79/72064e6a701c2183016abbbfedaba506d81e30e232a68c9f0d6f6fcd1574/traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7", size = 161621, upload-time = "2024-04-19T11:11:49.746Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359, upload-time = "2024-04-19T11:11:46.763Z" }, +] + +[[package]] +name = "tzdata" +version = "2025.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380, upload-time = "2025-03-23T13:54:43.652Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839, upload-time = "2025-03-23T13:54:41.845Z" }, +] + +[[package]] +name = "wcwidth" +version = "0.2.13" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/63/53559446a878410fc5a5974feb13d31d78d752eb18aeba59c7fef1af7598/wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5", size = 101301, upload-time = "2024-01-06T02:10:57.829Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166, upload-time = "2024-01-06T02:10:55.763Z" }, +]