From 9872088a591f0e4f1ef773c3a73ba5c03e0e48e6 Mon Sep 17 00:00:00 2001 From: kai Date: Sat, 26 Apr 2025 13:07:45 +0200 Subject: [PATCH] plots + multi_monte --- "lab06/\\" | 30 +++ lab06/mein_plot.png | Bin 0 -> 52251 bytes lab06/multi_monte.cpp | 63 ++++++ lab06/plot_monte.py | 30 +++ lab06/results/multi_monte.csv | 14 +- lab06/results/really_single_monte.csv | 2 +- pyproject.toml | 5 + uv.lock | 313 ++++++++++++++------------ 8 files changed, 297 insertions(+), 160 deletions(-) create mode 100644 "lab06/\\" create mode 100644 lab06/mein_plot.png create mode 100644 lab06/multi_monte.cpp create mode 100644 lab06/plot_monte.py diff --git "a/lab06/\\" "b/lab06/\\" new file mode 100644 index 0000000..984b773 --- /dev/null +++ "b/lab06/\\" @@ -0,0 +1,30 @@ +import json +import math +import matplotlib.pyplot as plt +import pandas + +# Path to the benchmark results JSON +plot_single = "./results/really_single_monte.csv" +plot_multi = "./results/multi_monte.csv" + + +data_single = pandas.read_csv(plot_single) +data_multi = pandas.read_csv(plot_multi) + + +def calculate_error(pi: float) -> float: + return abs(math.pi - pi) + + +data_single["error"] = data_single.apply(lambda x: calculate_error(x["pi"]), axis=1) +data_multi["error"] = data_multi.apply(lambda x: calculate_error(x["pi"]), axis=1) + +plt.figure(figsize=(8, 5)) +plt.plot(data_multi["error"], color="red", label="multi", linewidth=0.1) +plt.plot(data_single["error"], color="blue", label="single", linewidth=0.1) +plt.xlabel("time") +plt.ylabel("error") +plt.title("pin Monte Carlo Benchmark") +plt.grid(True) +plt.tight_layout() +plt.savefig("mein_plot.png") diff --git a/lab06/mein_plot.png b/lab06/mein_plot.png new file mode 100644 index 0000000000000000000000000000000000000000..10dd3c752925c0800ea1f9c35ad51e76b77de6a2 GIT binary patch literal 52251 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%0D@rSiKp|EC2*>0p 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 A?*IS* literal 0 HcmV?d00001 diff --git a/lab06/multi_monte.cpp b/lab06/multi_monte.cpp new file mode 100644 index 0000000..220ce63 --- /dev/null +++ b/lab06/multi_monte.cpp @@ -0,0 +1,63 @@ +#include "matrix.h" +#include +#include +#include +#include +#include +#include + +struct bench_result { + double time; + double pi; +}; + +double monteCarloPi(int64_t N) { + int localCount = 0; + std::mt19937 generator(std::random_device{}()); + std::uniform_real_distribution dist(0.0, 1.0); +#pragma omp parallel for reduction(+ : localCount) + for (int i = 0; i < N; ++i) { + double x = dist(generator); + double y = dist(generator); + if (x * x + y * y <= 1.0) { + localCount++; + } + } + + return 4.0 * localCount / N; +} + +bench_result benchmark(int numThreads, int64_t N, double function(int64_t)) { + omp_set_num_threads(numThreads); + + // start time measurement + auto start = std::chrono::system_clock::now(); + auto result = bench_result{0.0, 0.0}; + + // perform benchmark + const int maxNumExec = 10; + for (int nExec = 0; nExec < maxNumExec; ++nExec) { + result.pi = function(N); + } + + auto end = std::chrono::system_clock::now(); + std::chrono::duration diff = end - start; + result.time = diff.count() / maxNumExec; + + return result; +} + +int main() { + const int64_t max_n = 10000000; + const int numThreads = 12; + std::ofstream fout("multi_monte.csv", std::ios::app); + fout << "pi" << ","; + fout << "time" << "\n"; + + for (int64_t i = 1000; i <= max_n; i += 1000) { + const bench_result res = benchmark(numThreads, i, monteCarloPi); + + fout << res.pi << ","; + fout << res.time << "\n"; + } +} diff --git a/lab06/plot_monte.py b/lab06/plot_monte.py new file mode 100644 index 0000000..984b773 --- /dev/null +++ b/lab06/plot_monte.py @@ -0,0 +1,30 @@ +import json +import math +import matplotlib.pyplot as plt +import pandas + +# Path to the benchmark results JSON +plot_single = "./results/really_single_monte.csv" +plot_multi = "./results/multi_monte.csv" + + +data_single = pandas.read_csv(plot_single) +data_multi = pandas.read_csv(plot_multi) + + +def calculate_error(pi: float) -> float: + return abs(math.pi - pi) + + +data_single["error"] = data_single.apply(lambda x: calculate_error(x["pi"]), axis=1) +data_multi["error"] = data_multi.apply(lambda x: calculate_error(x["pi"]), axis=1) + +plt.figure(figsize=(8, 5)) +plt.plot(data_multi["error"], color="red", label="multi", linewidth=0.1) +plt.plot(data_single["error"], color="blue", label="single", linewidth=0.1) +plt.xlabel("time") +plt.ylabel("error") +plt.title("pin Monte Carlo Benchmark") +plt.grid(True) +plt.tight_layout() +plt.savefig("mein_plot.png") diff --git a/lab06/results/multi_monte.csv b/lab06/results/multi_monte.csv index cb83f4e..522e799 100644 --- a/lab06/results/multi_monte.csv +++ b/lab06/results/multi_monte.csv @@ -517,19 +517,7 @@ pi,time 3.13698,39.3234 3.14981,39.4036 3.13843,39.054 -3.13347,40.0366threads,max_n,time -1,10000000,374.428 -2,10000000,585.534 -3,10000000,661.239 -4,10000000,673.461 -5,10000000,678.344 -6,10000000,683.587 -7,10000000,708.514 -8,10000000,700.112 -9,10000000,729.381 -10,10000000,727.254 -11,10000000,746.513 - +3.13347,40.0366 3.14443,39.7016 3.13491,39.8782 3.13631,40.383 diff --git a/lab06/results/really_single_monte.csv b/lab06/results/really_single_monte.csv index 4de8b57..756701e 100644 --- a/lab06/results/really_single_monte.csv +++ b/lab06/results/really_single_monte.csv @@ -1,4 +1,4 @@ -pi, time +pi,time 3.224, 0.0564421 3.164, 0.103942 3.12, 0.158173 diff --git a/pyproject.toml b/pyproject.toml index a3b5932..955c52c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,3 +8,8 @@ dependencies = [ "matplotlib>=3.10.1", "pandas>=2.2.3", ] + +[dependency-groups] +dev = [ + "debugpy>=1.8.14", +] diff --git a/uv.lock b/uv.lock index 4ff2d2d..e6580c2 100644 --- a/uv.lock +++ b/uv.lock @@ -1,5 +1,5 @@ version = 1 -revision = 1 +revision = 2 requires-python = ">=3.13" [[package]] @@ -9,54 +9,67 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/66/54/eb9bfc647b19f2009dd5c7f5ec51c4e6ca831725f1aea7a993034f483147/contourpy-1.3.2.tar.gz", hash = "sha256:b6945942715a034c671b7fc54f9588126b0b8bf23db2696e3ca8328f3ff0ab54", size = 13466130 } +sdist = { url = "https://files.pythonhosted.org/packages/66/54/eb9bfc647b19f2009dd5c7f5ec51c4e6ca831725f1aea7a993034f483147/contourpy-1.3.2.tar.gz", hash = "sha256:b6945942715a034c671b7fc54f9588126b0b8bf23db2696e3ca8328f3ff0ab54", size = 13466130, upload_time = "2025-04-15T17:47:53.79Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2e/61/5673f7e364b31e4e7ef6f61a4b5121c5f170f941895912f773d95270f3a2/contourpy-1.3.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:de39db2604ae755316cb5967728f4bea92685884b1e767b7c24e983ef5f771cb", size = 271630 }, - { url = "https://files.pythonhosted.org/packages/ff/66/a40badddd1223822c95798c55292844b7e871e50f6bfd9f158cb25e0bd39/contourpy-1.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3f9e896f447c5c8618f1edb2bafa9a4030f22a575ec418ad70611450720b5b08", size = 255670 }, - { url = "https://files.pythonhosted.org/packages/1e/c7/cf9fdee8200805c9bc3b148f49cb9482a4e3ea2719e772602a425c9b09f8/contourpy-1.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71e2bd4a1c4188f5c2b8d274da78faab884b59df20df63c34f74aa1813c4427c", size = 306694 }, - { url = "https://files.pythonhosted.org/packages/dd/e7/ccb9bec80e1ba121efbffad7f38021021cda5be87532ec16fd96533bb2e0/contourpy-1.3.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de425af81b6cea33101ae95ece1f696af39446db9682a0b56daaa48cfc29f38f", size = 345986 }, - { url = "https://files.pythonhosted.org/packages/dc/49/ca13bb2da90391fa4219fdb23b078d6065ada886658ac7818e5441448b78/contourpy-1.3.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:977e98a0e0480d3fe292246417239d2d45435904afd6d7332d8455981c408b85", size = 318060 }, - { url = "https://files.pythonhosted.org/packages/c8/65/5245ce8c548a8422236c13ffcdcdada6a2a812c361e9e0c70548bb40b661/contourpy-1.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:434f0adf84911c924519d2b08fc10491dd282b20bdd3fa8f60fd816ea0b48841", size = 322747 }, - { url = "https://files.pythonhosted.org/packages/72/30/669b8eb48e0a01c660ead3752a25b44fdb2e5ebc13a55782f639170772f9/contourpy-1.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c66c4906cdbc50e9cba65978823e6e00b45682eb09adbb78c9775b74eb222422", size = 1308895 }, - { url = "https://files.pythonhosted.org/packages/05/5a/b569f4250decee6e8d54498be7bdf29021a4c256e77fe8138c8319ef8eb3/contourpy-1.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8b7fc0cd78ba2f4695fd0a6ad81a19e7e3ab825c31b577f384aa9d7817dc3bef", size = 1379098 }, - { url = "https://files.pythonhosted.org/packages/19/ba/b227c3886d120e60e41b28740ac3617b2f2b971b9f601c835661194579f1/contourpy-1.3.2-cp313-cp313-win32.whl", hash = "sha256:15ce6ab60957ca74cff444fe66d9045c1fd3e92c8936894ebd1f3eef2fff075f", size = 178535 }, - { url = "https://files.pythonhosted.org/packages/12/6e/2fed56cd47ca739b43e892707ae9a13790a486a3173be063681ca67d2262/contourpy-1.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:e1578f7eafce927b168752ed7e22646dad6cd9bca673c60bff55889fa236ebf9", size = 223096 }, - { url = "https://files.pythonhosted.org/packages/54/4c/e76fe2a03014a7c767d79ea35c86a747e9325537a8b7627e0e5b3ba266b4/contourpy-1.3.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0475b1f6604896bc7c53bb070e355e9321e1bc0d381735421a2d2068ec56531f", size = 285090 }, - { url = "https://files.pythonhosted.org/packages/7b/e2/5aba47debd55d668e00baf9651b721e7733975dc9fc27264a62b0dd26eb8/contourpy-1.3.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c85bb486e9be652314bb5b9e2e3b0d1b2e643d5eec4992c0fbe8ac71775da739", size = 268643 }, - { url = "https://files.pythonhosted.org/packages/a1/37/cd45f1f051fe6230f751cc5cdd2728bb3a203f5619510ef11e732109593c/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:745b57db7758f3ffc05a10254edd3182a2a83402a89c00957a8e8a22f5582823", size = 310443 }, - { url = "https://files.pythonhosted.org/packages/8b/a2/36ea6140c306c9ff6dd38e3bcec80b3b018474ef4d17eb68ceecd26675f4/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:970e9173dbd7eba9b4e01aab19215a48ee5dd3f43cef736eebde064a171f89a5", size = 349865 }, - { url = "https://files.pythonhosted.org/packages/95/b7/2fc76bc539693180488f7b6cc518da7acbbb9e3b931fd9280504128bf956/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c6c4639a9c22230276b7bffb6a850dfc8258a2521305e1faefe804d006b2e532", size = 321162 }, - { url = "https://files.pythonhosted.org/packages/f4/10/76d4f778458b0aa83f96e59d65ece72a060bacb20cfbee46cf6cd5ceba41/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc829960f34ba36aad4302e78eabf3ef16a3a100863f0d4eeddf30e8a485a03b", size = 327355 }, - { url = "https://files.pythonhosted.org/packages/43/a3/10cf483ea683f9f8ab096c24bad3cce20e0d1dd9a4baa0e2093c1c962d9d/contourpy-1.3.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:d32530b534e986374fc19eaa77fcb87e8a99e5431499949b828312bdcd20ac52", size = 1307935 }, - { url = "https://files.pythonhosted.org/packages/78/73/69dd9a024444489e22d86108e7b913f3528f56cfc312b5c5727a44188471/contourpy-1.3.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e298e7e70cf4eb179cc1077be1c725b5fd131ebc81181bf0c03525c8abc297fd", size = 1372168 }, - { url = "https://files.pythonhosted.org/packages/0f/1b/96d586ccf1b1a9d2004dd519b25fbf104a11589abfd05484ff12199cca21/contourpy-1.3.2-cp313-cp313t-win32.whl", hash = "sha256:d0e589ae0d55204991450bb5c23f571c64fe43adaa53f93fc902a84c96f52fe1", size = 189550 }, - { url = "https://files.pythonhosted.org/packages/b0/e6/6000d0094e8a5e32ad62591c8609e269febb6e4db83a1c75ff8868b42731/contourpy-1.3.2-cp313-cp313t-win_amd64.whl", hash = "sha256:78e9253c3de756b3f6a5174d024c4835acd59eb3f8e2ca13e775dbffe1558f69", size = 238214 }, + { url = "https://files.pythonhosted.org/packages/2e/61/5673f7e364b31e4e7ef6f61a4b5121c5f170f941895912f773d95270f3a2/contourpy-1.3.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:de39db2604ae755316cb5967728f4bea92685884b1e767b7c24e983ef5f771cb", size = 271630, upload_time = "2025-04-15T17:38:19.142Z" }, + { url = "https://files.pythonhosted.org/packages/ff/66/a40badddd1223822c95798c55292844b7e871e50f6bfd9f158cb25e0bd39/contourpy-1.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3f9e896f447c5c8618f1edb2bafa9a4030f22a575ec418ad70611450720b5b08", size = 255670, upload_time = "2025-04-15T17:38:23.688Z" }, + { url = "https://files.pythonhosted.org/packages/1e/c7/cf9fdee8200805c9bc3b148f49cb9482a4e3ea2719e772602a425c9b09f8/contourpy-1.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71e2bd4a1c4188f5c2b8d274da78faab884b59df20df63c34f74aa1813c4427c", size = 306694, upload_time = "2025-04-15T17:38:28.238Z" }, + { url = "https://files.pythonhosted.org/packages/dd/e7/ccb9bec80e1ba121efbffad7f38021021cda5be87532ec16fd96533bb2e0/contourpy-1.3.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de425af81b6cea33101ae95ece1f696af39446db9682a0b56daaa48cfc29f38f", size = 345986, upload_time = "2025-04-15T17:38:33.502Z" }, + { url = "https://files.pythonhosted.org/packages/dc/49/ca13bb2da90391fa4219fdb23b078d6065ada886658ac7818e5441448b78/contourpy-1.3.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:977e98a0e0480d3fe292246417239d2d45435904afd6d7332d8455981c408b85", size = 318060, upload_time = "2025-04-15T17:38:38.672Z" }, + { url = "https://files.pythonhosted.org/packages/c8/65/5245ce8c548a8422236c13ffcdcdada6a2a812c361e9e0c70548bb40b661/contourpy-1.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:434f0adf84911c924519d2b08fc10491dd282b20bdd3fa8f60fd816ea0b48841", size = 322747, upload_time = "2025-04-15T17:38:43.712Z" }, + { url = "https://files.pythonhosted.org/packages/72/30/669b8eb48e0a01c660ead3752a25b44fdb2e5ebc13a55782f639170772f9/contourpy-1.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c66c4906cdbc50e9cba65978823e6e00b45682eb09adbb78c9775b74eb222422", size = 1308895, upload_time = "2025-04-15T17:39:00.224Z" }, + { url = "https://files.pythonhosted.org/packages/05/5a/b569f4250decee6e8d54498be7bdf29021a4c256e77fe8138c8319ef8eb3/contourpy-1.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8b7fc0cd78ba2f4695fd0a6ad81a19e7e3ab825c31b577f384aa9d7817dc3bef", size = 1379098, upload_time = "2025-04-15T17:43:29.649Z" }, + { url = "https://files.pythonhosted.org/packages/19/ba/b227c3886d120e60e41b28740ac3617b2f2b971b9f601c835661194579f1/contourpy-1.3.2-cp313-cp313-win32.whl", hash = "sha256:15ce6ab60957ca74cff444fe66d9045c1fd3e92c8936894ebd1f3eef2fff075f", size = 178535, upload_time = "2025-04-15T17:44:44.532Z" }, + { url = "https://files.pythonhosted.org/packages/12/6e/2fed56cd47ca739b43e892707ae9a13790a486a3173be063681ca67d2262/contourpy-1.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:e1578f7eafce927b168752ed7e22646dad6cd9bca673c60bff55889fa236ebf9", size = 223096, upload_time = "2025-04-15T17:44:48.194Z" }, + { url = "https://files.pythonhosted.org/packages/54/4c/e76fe2a03014a7c767d79ea35c86a747e9325537a8b7627e0e5b3ba266b4/contourpy-1.3.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0475b1f6604896bc7c53bb070e355e9321e1bc0d381735421a2d2068ec56531f", size = 285090, upload_time = "2025-04-15T17:43:34.084Z" }, + { url = "https://files.pythonhosted.org/packages/7b/e2/5aba47debd55d668e00baf9651b721e7733975dc9fc27264a62b0dd26eb8/contourpy-1.3.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c85bb486e9be652314bb5b9e2e3b0d1b2e643d5eec4992c0fbe8ac71775da739", size = 268643, upload_time = "2025-04-15T17:43:38.626Z" }, + { url = "https://files.pythonhosted.org/packages/a1/37/cd45f1f051fe6230f751cc5cdd2728bb3a203f5619510ef11e732109593c/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:745b57db7758f3ffc05a10254edd3182a2a83402a89c00957a8e8a22f5582823", size = 310443, upload_time = "2025-04-15T17:43:44.522Z" }, + { url = "https://files.pythonhosted.org/packages/8b/a2/36ea6140c306c9ff6dd38e3bcec80b3b018474ef4d17eb68ceecd26675f4/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:970e9173dbd7eba9b4e01aab19215a48ee5dd3f43cef736eebde064a171f89a5", size = 349865, upload_time = "2025-04-15T17:43:49.545Z" }, + { url = "https://files.pythonhosted.org/packages/95/b7/2fc76bc539693180488f7b6cc518da7acbbb9e3b931fd9280504128bf956/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c6c4639a9c22230276b7bffb6a850dfc8258a2521305e1faefe804d006b2e532", size = 321162, upload_time = "2025-04-15T17:43:54.203Z" }, + { url = "https://files.pythonhosted.org/packages/f4/10/76d4f778458b0aa83f96e59d65ece72a060bacb20cfbee46cf6cd5ceba41/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc829960f34ba36aad4302e78eabf3ef16a3a100863f0d4eeddf30e8a485a03b", size = 327355, upload_time = "2025-04-15T17:44:01.025Z" }, + { url = "https://files.pythonhosted.org/packages/43/a3/10cf483ea683f9f8ab096c24bad3cce20e0d1dd9a4baa0e2093c1c962d9d/contourpy-1.3.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:d32530b534e986374fc19eaa77fcb87e8a99e5431499949b828312bdcd20ac52", size = 1307935, upload_time = "2025-04-15T17:44:17.322Z" }, + { url = "https://files.pythonhosted.org/packages/78/73/69dd9a024444489e22d86108e7b913f3528f56cfc312b5c5727a44188471/contourpy-1.3.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e298e7e70cf4eb179cc1077be1c725b5fd131ebc81181bf0c03525c8abc297fd", size = 1372168, upload_time = "2025-04-15T17:44:33.43Z" }, + { url = "https://files.pythonhosted.org/packages/0f/1b/96d586ccf1b1a9d2004dd519b25fbf104a11589abfd05484ff12199cca21/contourpy-1.3.2-cp313-cp313t-win32.whl", hash = "sha256:d0e589ae0d55204991450bb5c23f571c64fe43adaa53f93fc902a84c96f52fe1", size = 189550, upload_time = "2025-04-15T17:44:37.092Z" }, + { url = "https://files.pythonhosted.org/packages/b0/e6/6000d0094e8a5e32ad62591c8609e269febb6e4db83a1c75ff8868b42731/contourpy-1.3.2-cp313-cp313t-win_amd64.whl", hash = "sha256:78e9253c3de756b3f6a5174d024c4835acd59eb3f8e2ca13e775dbffe1558f69", size = 238214, upload_time = "2025-04-15T17:44:40.827Z" }, ] [[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 } +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 }, + { 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.14" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bd/75/087fe07d40f490a78782ff3b0a30e3968936854105487decdb33446d4b0e/debugpy-1.8.14.tar.gz", hash = "sha256:7cd287184318416850aa8b60ac90105837bb1e59531898c07569d197d2ed5322", size = 1641444, upload_time = "2025-04-10T19:46:10.981Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4d/e4/395c792b243f2367d84202dc33689aa3d910fb9826a7491ba20fc9e261f5/debugpy-1.8.14-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:329a15d0660ee09fec6786acdb6e0443d595f64f5d096fc3e3ccf09a4259033f", size = 2485676, upload_time = "2025-04-10T19:46:32.96Z" }, + { url = "https://files.pythonhosted.org/packages/ba/f1/6f2ee3f991327ad9e4c2f8b82611a467052a0fb0e247390192580e89f7ff/debugpy-1.8.14-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f920c7f9af409d90f5fd26e313e119d908b0dd2952c2393cd3247a462331f15", size = 4217514, upload_time = "2025-04-10T19:46:34.336Z" }, + { url = "https://files.pythonhosted.org/packages/79/28/b9d146f8f2dc535c236ee09ad3e5ac899adb39d7a19b49f03ac95d216beb/debugpy-1.8.14-cp313-cp313-win32.whl", hash = "sha256:3784ec6e8600c66cbdd4ca2726c72d8ca781e94bce2f396cc606d458146f8f4e", size = 5254756, upload_time = "2025-04-10T19:46:36.199Z" }, + { url = "https://files.pythonhosted.org/packages/e0/62/a7b4a57013eac4ccaef6977966e6bec5c63906dd25a86e35f155952e29a1/debugpy-1.8.14-cp313-cp313-win_amd64.whl", hash = "sha256:684eaf43c95a3ec39a96f1f5195a7ff3d4144e4a18d69bb66beeb1a6de605d6e", size = 5297119, upload_time = "2025-04-10T19:46:38.141Z" }, + { url = "https://files.pythonhosted.org/packages/97/1a/481f33c37ee3ac8040d3d51fc4c4e4e7e61cb08b8bc8971d6032acc2279f/debugpy-1.8.14-py2.py3-none-any.whl", hash = "sha256:5cd9a579d553b6cb9759a7908a41988ee6280b961f24f63336835d9418216a20", size = 5256230, upload_time = "2025-04-10T19:46:54.077Z" }, ] [[package]] name = "fonttools" version = "4.57.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/03/2d/a9a0b6e3a0cf6bd502e64fc16d894269011930cabfc89aee20d1635b1441/fonttools-4.57.0.tar.gz", hash = "sha256:727ece10e065be2f9dd239d15dd5d60a66e17eac11aea47d447f9f03fdbc42de", size = 3492448 } +sdist = { url = "https://files.pythonhosted.org/packages/03/2d/a9a0b6e3a0cf6bd502e64fc16d894269011930cabfc89aee20d1635b1441/fonttools-4.57.0.tar.gz", hash = "sha256:727ece10e065be2f9dd239d15dd5d60a66e17eac11aea47d447f9f03fdbc42de", size = 3492448, upload_time = "2025-04-03T11:07:13.898Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e9/2f/11439f3af51e4bb75ac9598c29f8601aa501902dcedf034bdc41f47dd799/fonttools-4.57.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:408ce299696012d503b714778d89aa476f032414ae57e57b42e4b92363e0b8ef", size = 2739175 }, - { url = "https://files.pythonhosted.org/packages/25/52/677b55a4c0972dc3820c8dba20a29c358197a78229daa2ea219fdb19e5d5/fonttools-4.57.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:bbceffc80aa02d9e8b99f2a7491ed8c4a783b2fc4020119dc405ca14fb5c758c", size = 2276583 }, - { url = "https://files.pythonhosted.org/packages/64/79/184555f8fa77b827b9460a4acdbbc0b5952bb6915332b84c615c3a236826/fonttools-4.57.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f022601f3ee9e1f6658ed6d184ce27fa5216cee5b82d279e0f0bde5deebece72", size = 4766437 }, - { url = "https://files.pythonhosted.org/packages/f8/ad/c25116352f456c0d1287545a7aa24e98987b6d99c5b0456c4bd14321f20f/fonttools-4.57.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4dea5893b58d4637ffa925536462ba626f8a1b9ffbe2f5c272cdf2c6ebadb817", size = 4838431 }, - { url = "https://files.pythonhosted.org/packages/53/ae/398b2a833897297797a44f519c9af911c2136eb7aa27d3f1352c6d1129fa/fonttools-4.57.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:dff02c5c8423a657c550b48231d0a48d7e2b2e131088e55983cfe74ccc2c7cc9", size = 4951011 }, - { url = "https://files.pythonhosted.org/packages/b7/5d/7cb31c4bc9ffb9a2bbe8b08f8f53bad94aeb158efad75da645b40b62cb73/fonttools-4.57.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:767604f244dc17c68d3e2dbf98e038d11a18abc078f2d0f84b6c24571d9c0b13", size = 5205679 }, - { url = "https://files.pythonhosted.org/packages/4c/e4/6934513ec2c4d3d69ca1bc3bd34d5c69dafcbf68c15388dd3bb062daf345/fonttools-4.57.0-cp313-cp313-win32.whl", hash = "sha256:8e2e12d0d862f43d51e5afb8b9751c77e6bec7d2dc00aad80641364e9df5b199", size = 2144833 }, - { url = "https://files.pythonhosted.org/packages/c4/0d/2177b7fdd23d017bcfb702fd41e47d4573766b9114da2fddbac20dcc4957/fonttools-4.57.0-cp313-cp313-win_amd64.whl", hash = "sha256:f1d6bc9c23356908db712d282acb3eebd4ae5ec6d8b696aa40342b1d84f8e9e3", size = 2190799 }, - { url = "https://files.pythonhosted.org/packages/90/27/45f8957c3132917f91aaa56b700bcfc2396be1253f685bd5c68529b6f610/fonttools-4.57.0-py3-none-any.whl", hash = "sha256:3122c604a675513c68bd24c6a8f9091f1c2376d18e8f5fe5a101746c81b3e98f", size = 1093605 }, + { url = "https://files.pythonhosted.org/packages/e9/2f/11439f3af51e4bb75ac9598c29f8601aa501902dcedf034bdc41f47dd799/fonttools-4.57.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:408ce299696012d503b714778d89aa476f032414ae57e57b42e4b92363e0b8ef", size = 2739175, upload_time = "2025-04-03T11:06:19.583Z" }, + { url = "https://files.pythonhosted.org/packages/25/52/677b55a4c0972dc3820c8dba20a29c358197a78229daa2ea219fdb19e5d5/fonttools-4.57.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:bbceffc80aa02d9e8b99f2a7491ed8c4a783b2fc4020119dc405ca14fb5c758c", size = 2276583, upload_time = "2025-04-03T11:06:21.753Z" }, + { url = "https://files.pythonhosted.org/packages/64/79/184555f8fa77b827b9460a4acdbbc0b5952bb6915332b84c615c3a236826/fonttools-4.57.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f022601f3ee9e1f6658ed6d184ce27fa5216cee5b82d279e0f0bde5deebece72", size = 4766437, upload_time = "2025-04-03T11:06:23.521Z" }, + { url = "https://files.pythonhosted.org/packages/f8/ad/c25116352f456c0d1287545a7aa24e98987b6d99c5b0456c4bd14321f20f/fonttools-4.57.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4dea5893b58d4637ffa925536462ba626f8a1b9ffbe2f5c272cdf2c6ebadb817", size = 4838431, upload_time = "2025-04-03T11:06:25.423Z" }, + { url = "https://files.pythonhosted.org/packages/53/ae/398b2a833897297797a44f519c9af911c2136eb7aa27d3f1352c6d1129fa/fonttools-4.57.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:dff02c5c8423a657c550b48231d0a48d7e2b2e131088e55983cfe74ccc2c7cc9", size = 4951011, upload_time = "2025-04-03T11:06:27.41Z" }, + { url = "https://files.pythonhosted.org/packages/b7/5d/7cb31c4bc9ffb9a2bbe8b08f8f53bad94aeb158efad75da645b40b62cb73/fonttools-4.57.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:767604f244dc17c68d3e2dbf98e038d11a18abc078f2d0f84b6c24571d9c0b13", size = 5205679, upload_time = "2025-04-03T11:06:29.804Z" }, + { url = "https://files.pythonhosted.org/packages/4c/e4/6934513ec2c4d3d69ca1bc3bd34d5c69dafcbf68c15388dd3bb062daf345/fonttools-4.57.0-cp313-cp313-win32.whl", hash = "sha256:8e2e12d0d862f43d51e5afb8b9751c77e6bec7d2dc00aad80641364e9df5b199", size = 2144833, upload_time = "2025-04-03T11:06:31.737Z" }, + { url = "https://files.pythonhosted.org/packages/c4/0d/2177b7fdd23d017bcfb702fd41e47d4573766b9114da2fddbac20dcc4957/fonttools-4.57.0-cp313-cp313-win_amd64.whl", hash = "sha256:f1d6bc9c23356908db712d282acb3eebd4ae5ec6d8b696aa40342b1d84f8e9e3", size = 2190799, upload_time = "2025-04-03T11:06:34.784Z" }, + { url = "https://files.pythonhosted.org/packages/90/27/45f8957c3132917f91aaa56b700bcfc2396be1253f685bd5c68529b6f610/fonttools-4.57.0-py3-none-any.whl", hash = "sha256:3122c604a675513c68bd24c6a8f9091f1c2376d18e8f5fe5a101746c81b3e98f", size = 1093605, upload_time = "2025-04-03T11:07:11.341Z" }, ] [[package]] @@ -68,46 +81,54 @@ dependencies = [ { name = "pandas" }, ] +[package.dev-dependencies] +dev = [ + { name = "debugpy" }, +] + [package.metadata] requires-dist = [ { name = "matplotlib", specifier = ">=3.10.1" }, { name = "pandas", specifier = ">=2.2.3" }, ] +[package.metadata.requires-dev] +dev = [{ name = "debugpy", specifier = ">=1.8.14" }] + [[package]] name = "kiwisolver" version = "1.4.8" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/82/59/7c91426a8ac292e1cdd53a63b6d9439abd573c875c3f92c146767dd33faf/kiwisolver-1.4.8.tar.gz", hash = "sha256:23d5f023bdc8c7e54eb65f03ca5d5bb25b601eac4d7f1a042888a1f45237987e", size = 97538 } +sdist = { url = "https://files.pythonhosted.org/packages/82/59/7c91426a8ac292e1cdd53a63b6d9439abd573c875c3f92c146767dd33faf/kiwisolver-1.4.8.tar.gz", hash = "sha256:23d5f023bdc8c7e54eb65f03ca5d5bb25b601eac4d7f1a042888a1f45237987e", size = 97538, upload_time = "2024-12-24T18:30:51.519Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/79/b3/e62464a652f4f8cd9006e13d07abad844a47df1e6537f73ddfbf1bc997ec/kiwisolver-1.4.8-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:1c8ceb754339793c24aee1c9fb2485b5b1f5bb1c2c214ff13368431e51fc9a09", size = 124156 }, - { url = "https://files.pythonhosted.org/packages/8d/2d/f13d06998b546a2ad4f48607a146e045bbe48030774de29f90bdc573df15/kiwisolver-1.4.8-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:54a62808ac74b5e55a04a408cda6156f986cefbcf0ada13572696b507cc92fa1", size = 66555 }, - { url = "https://files.pythonhosted.org/packages/59/e3/b8bd14b0a54998a9fd1e8da591c60998dc003618cb19a3f94cb233ec1511/kiwisolver-1.4.8-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:68269e60ee4929893aad82666821aaacbd455284124817af45c11e50a4b42e3c", size = 65071 }, - { url = "https://files.pythonhosted.org/packages/f0/1c/6c86f6d85ffe4d0ce04228d976f00674f1df5dc893bf2dd4f1928748f187/kiwisolver-1.4.8-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:34d142fba9c464bc3bbfeff15c96eab0e7310343d6aefb62a79d51421fcc5f1b", size = 1378053 }, - { url = "https://files.pythonhosted.org/packages/4e/b9/1c6e9f6dcb103ac5cf87cb695845f5fa71379021500153566d8a8a9fc291/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc373e0eef45b59197de815b1b28ef89ae3955e7722cc9710fb91cd77b7f47", size = 1472278 }, - { url = "https://files.pythonhosted.org/packages/ee/81/aca1eb176de671f8bda479b11acdc42c132b61a2ac861c883907dde6debb/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:77e6f57a20b9bd4e1e2cedda4d0b986ebd0216236f0106e55c28aea3d3d69b16", size = 1478139 }, - { url = "https://files.pythonhosted.org/packages/49/f4/e081522473671c97b2687d380e9e4c26f748a86363ce5af48b4a28e48d06/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08e77738ed7538f036cd1170cbed942ef749137b1311fa2bbe2a7fda2f6bf3cc", size = 1413517 }, - { url = "https://files.pythonhosted.org/packages/8f/e9/6a7d025d8da8c4931522922cd706105aa32b3291d1add8c5427cdcd66e63/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a5ce1e481a74b44dd5e92ff03ea0cb371ae7a0268318e202be06c8f04f4f1246", size = 1474952 }, - { url = "https://files.pythonhosted.org/packages/82/13/13fa685ae167bee5d94b415991c4fc7bb0a1b6ebea6e753a87044b209678/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:fc2ace710ba7c1dfd1a3b42530b62b9ceed115f19a1656adefce7b1782a37794", size = 2269132 }, - { url = "https://files.pythonhosted.org/packages/ef/92/bb7c9395489b99a6cb41d502d3686bac692586db2045adc19e45ee64ed23/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:3452046c37c7692bd52b0e752b87954ef86ee2224e624ef7ce6cb21e8c41cc1b", size = 2425997 }, - { url = "https://files.pythonhosted.org/packages/ed/12/87f0e9271e2b63d35d0d8524954145837dd1a6c15b62a2d8c1ebe0f182b4/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:7e9a60b50fe8b2ec6f448fe8d81b07e40141bfced7f896309df271a0b92f80f3", size = 2376060 }, - { url = "https://files.pythonhosted.org/packages/02/6e/c8af39288edbce8bf0fa35dee427b082758a4b71e9c91ef18fa667782138/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:918139571133f366e8362fa4a297aeba86c7816b7ecf0bc79168080e2bd79957", size = 2520471 }, - { url = "https://files.pythonhosted.org/packages/13/78/df381bc7b26e535c91469f77f16adcd073beb3e2dd25042efd064af82323/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e063ef9f89885a1d68dd8b2e18f5ead48653176d10a0e324e3b0030e3a69adeb", size = 2338793 }, - { url = "https://files.pythonhosted.org/packages/d0/dc/c1abe38c37c071d0fc71c9a474fd0b9ede05d42f5a458d584619cfd2371a/kiwisolver-1.4.8-cp313-cp313-win_amd64.whl", hash = "sha256:a17b7c4f5b2c51bb68ed379defd608a03954a1845dfed7cc0117f1cc8a9b7fd2", size = 71855 }, - { url = "https://files.pythonhosted.org/packages/a0/b6/21529d595b126ac298fdd90b705d87d4c5693de60023e0efcb4f387ed99e/kiwisolver-1.4.8-cp313-cp313-win_arm64.whl", hash = "sha256:3cd3bc628b25f74aedc6d374d5babf0166a92ff1317f46267f12d2ed54bc1d30", size = 65430 }, - { url = "https://files.pythonhosted.org/packages/34/bd/b89380b7298e3af9b39f49334e3e2a4af0e04819789f04b43d560516c0c8/kiwisolver-1.4.8-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:370fd2df41660ed4e26b8c9d6bbcad668fbe2560462cba151a721d49e5b6628c", size = 126294 }, - { url = "https://files.pythonhosted.org/packages/83/41/5857dc72e5e4148eaac5aa76e0703e594e4465f8ab7ec0fc60e3a9bb8fea/kiwisolver-1.4.8-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:84a2f830d42707de1d191b9490ac186bf7997a9495d4e9072210a1296345f7dc", size = 67736 }, - { url = "https://files.pythonhosted.org/packages/e1/d1/be059b8db56ac270489fb0b3297fd1e53d195ba76e9bbb30e5401fa6b759/kiwisolver-1.4.8-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:7a3ad337add5148cf51ce0b55642dc551c0b9d6248458a757f98796ca7348712", size = 66194 }, - { url = "https://files.pythonhosted.org/packages/e1/83/4b73975f149819eb7dcf9299ed467eba068ecb16439a98990dcb12e63fdd/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7506488470f41169b86d8c9aeff587293f530a23a23a49d6bc64dab66bedc71e", size = 1465942 }, - { url = "https://files.pythonhosted.org/packages/c7/2c/30a5cdde5102958e602c07466bce058b9d7cb48734aa7a4327261ac8e002/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f0121b07b356a22fb0414cec4666bbe36fd6d0d759db3d37228f496ed67c880", size = 1595341 }, - { url = "https://files.pythonhosted.org/packages/ff/9b/1e71db1c000385aa069704f5990574b8244cce854ecd83119c19e83c9586/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d6d6bd87df62c27d4185de7c511c6248040afae67028a8a22012b010bc7ad062", size = 1598455 }, - { url = "https://files.pythonhosted.org/packages/85/92/c8fec52ddf06231b31cbb779af77e99b8253cd96bd135250b9498144c78b/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:291331973c64bb9cce50bbe871fb2e675c4331dab4f31abe89f175ad7679a4d7", size = 1522138 }, - { url = "https://files.pythonhosted.org/packages/0b/51/9eb7e2cd07a15d8bdd976f6190c0164f92ce1904e5c0c79198c4972926b7/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:893f5525bb92d3d735878ec00f781b2de998333659507d29ea4466208df37bed", size = 1582857 }, - { url = "https://files.pythonhosted.org/packages/0f/95/c5a00387a5405e68ba32cc64af65ce881a39b98d73cc394b24143bebc5b8/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b47a465040146981dc9db8647981b8cb96366fbc8d452b031e4f8fdffec3f26d", size = 2293129 }, - { url = "https://files.pythonhosted.org/packages/44/83/eeb7af7d706b8347548313fa3a3a15931f404533cc54fe01f39e830dd231/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:99cea8b9dd34ff80c521aef46a1dddb0dcc0283cf18bde6d756f1e6f31772165", size = 2421538 }, - { url = "https://files.pythonhosted.org/packages/05/f9/27e94c1b3eb29e6933b6986ffc5fa1177d2cd1f0c8efc5f02c91c9ac61de/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:151dffc4865e5fe6dafce5480fab84f950d14566c480c08a53c663a0020504b6", size = 2390661 }, - { url = "https://files.pythonhosted.org/packages/d9/d4/3c9735faa36ac591a4afcc2980d2691000506050b7a7e80bcfe44048daa7/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:577facaa411c10421314598b50413aa1ebcf5126f704f1e5d72d7e4e9f020d90", size = 2546710 }, - { url = "https://files.pythonhosted.org/packages/4c/fa/be89a49c640930180657482a74970cdcf6f7072c8d2471e1babe17a222dc/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:be4816dc51c8a471749d664161b434912eee82f2ea66bd7628bd14583a833e85", size = 2349213 }, + { url = "https://files.pythonhosted.org/packages/79/b3/e62464a652f4f8cd9006e13d07abad844a47df1e6537f73ddfbf1bc997ec/kiwisolver-1.4.8-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:1c8ceb754339793c24aee1c9fb2485b5b1f5bb1c2c214ff13368431e51fc9a09", size = 124156, upload_time = "2024-12-24T18:29:45.368Z" }, + { url = "https://files.pythonhosted.org/packages/8d/2d/f13d06998b546a2ad4f48607a146e045bbe48030774de29f90bdc573df15/kiwisolver-1.4.8-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:54a62808ac74b5e55a04a408cda6156f986cefbcf0ada13572696b507cc92fa1", size = 66555, upload_time = "2024-12-24T18:29:46.37Z" }, + { url = "https://files.pythonhosted.org/packages/59/e3/b8bd14b0a54998a9fd1e8da591c60998dc003618cb19a3f94cb233ec1511/kiwisolver-1.4.8-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:68269e60ee4929893aad82666821aaacbd455284124817af45c11e50a4b42e3c", size = 65071, upload_time = "2024-12-24T18:29:47.333Z" }, + { url = "https://files.pythonhosted.org/packages/f0/1c/6c86f6d85ffe4d0ce04228d976f00674f1df5dc893bf2dd4f1928748f187/kiwisolver-1.4.8-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:34d142fba9c464bc3bbfeff15c96eab0e7310343d6aefb62a79d51421fcc5f1b", size = 1378053, upload_time = "2024-12-24T18:29:49.636Z" }, + { url = "https://files.pythonhosted.org/packages/4e/b9/1c6e9f6dcb103ac5cf87cb695845f5fa71379021500153566d8a8a9fc291/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc373e0eef45b59197de815b1b28ef89ae3955e7722cc9710fb91cd77b7f47", size = 1472278, upload_time = "2024-12-24T18:29:51.164Z" }, + { url = "https://files.pythonhosted.org/packages/ee/81/aca1eb176de671f8bda479b11acdc42c132b61a2ac861c883907dde6debb/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:77e6f57a20b9bd4e1e2cedda4d0b986ebd0216236f0106e55c28aea3d3d69b16", size = 1478139, upload_time = "2024-12-24T18:29:52.594Z" }, + { url = "https://files.pythonhosted.org/packages/49/f4/e081522473671c97b2687d380e9e4c26f748a86363ce5af48b4a28e48d06/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08e77738ed7538f036cd1170cbed942ef749137b1311fa2bbe2a7fda2f6bf3cc", size = 1413517, upload_time = "2024-12-24T18:29:53.941Z" }, + { url = "https://files.pythonhosted.org/packages/8f/e9/6a7d025d8da8c4931522922cd706105aa32b3291d1add8c5427cdcd66e63/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a5ce1e481a74b44dd5e92ff03ea0cb371ae7a0268318e202be06c8f04f4f1246", size = 1474952, upload_time = "2024-12-24T18:29:56.523Z" }, + { url = "https://files.pythonhosted.org/packages/82/13/13fa685ae167bee5d94b415991c4fc7bb0a1b6ebea6e753a87044b209678/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:fc2ace710ba7c1dfd1a3b42530b62b9ceed115f19a1656adefce7b1782a37794", size = 2269132, upload_time = "2024-12-24T18:29:57.989Z" }, + { url = "https://files.pythonhosted.org/packages/ef/92/bb7c9395489b99a6cb41d502d3686bac692586db2045adc19e45ee64ed23/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:3452046c37c7692bd52b0e752b87954ef86ee2224e624ef7ce6cb21e8c41cc1b", size = 2425997, upload_time = "2024-12-24T18:29:59.393Z" }, + { url = "https://files.pythonhosted.org/packages/ed/12/87f0e9271e2b63d35d0d8524954145837dd1a6c15b62a2d8c1ebe0f182b4/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:7e9a60b50fe8b2ec6f448fe8d81b07e40141bfced7f896309df271a0b92f80f3", size = 2376060, upload_time = "2024-12-24T18:30:01.338Z" }, + { url = "https://files.pythonhosted.org/packages/02/6e/c8af39288edbce8bf0fa35dee427b082758a4b71e9c91ef18fa667782138/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:918139571133f366e8362fa4a297aeba86c7816b7ecf0bc79168080e2bd79957", size = 2520471, upload_time = "2024-12-24T18:30:04.574Z" }, + { url = "https://files.pythonhosted.org/packages/13/78/df381bc7b26e535c91469f77f16adcd073beb3e2dd25042efd064af82323/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e063ef9f89885a1d68dd8b2e18f5ead48653176d10a0e324e3b0030e3a69adeb", size = 2338793, upload_time = "2024-12-24T18:30:06.25Z" }, + { url = "https://files.pythonhosted.org/packages/d0/dc/c1abe38c37c071d0fc71c9a474fd0b9ede05d42f5a458d584619cfd2371a/kiwisolver-1.4.8-cp313-cp313-win_amd64.whl", hash = "sha256:a17b7c4f5b2c51bb68ed379defd608a03954a1845dfed7cc0117f1cc8a9b7fd2", size = 71855, upload_time = "2024-12-24T18:30:07.535Z" }, + { url = "https://files.pythonhosted.org/packages/a0/b6/21529d595b126ac298fdd90b705d87d4c5693de60023e0efcb4f387ed99e/kiwisolver-1.4.8-cp313-cp313-win_arm64.whl", hash = "sha256:3cd3bc628b25f74aedc6d374d5babf0166a92ff1317f46267f12d2ed54bc1d30", size = 65430, upload_time = "2024-12-24T18:30:08.504Z" }, + { url = "https://files.pythonhosted.org/packages/34/bd/b89380b7298e3af9b39f49334e3e2a4af0e04819789f04b43d560516c0c8/kiwisolver-1.4.8-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:370fd2df41660ed4e26b8c9d6bbcad668fbe2560462cba151a721d49e5b6628c", size = 126294, upload_time = "2024-12-24T18:30:09.508Z" }, + { url = "https://files.pythonhosted.org/packages/83/41/5857dc72e5e4148eaac5aa76e0703e594e4465f8ab7ec0fc60e3a9bb8fea/kiwisolver-1.4.8-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:84a2f830d42707de1d191b9490ac186bf7997a9495d4e9072210a1296345f7dc", size = 67736, upload_time = "2024-12-24T18:30:11.039Z" }, + { url = "https://files.pythonhosted.org/packages/e1/d1/be059b8db56ac270489fb0b3297fd1e53d195ba76e9bbb30e5401fa6b759/kiwisolver-1.4.8-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:7a3ad337add5148cf51ce0b55642dc551c0b9d6248458a757f98796ca7348712", size = 66194, upload_time = "2024-12-24T18:30:14.886Z" }, + { url = "https://files.pythonhosted.org/packages/e1/83/4b73975f149819eb7dcf9299ed467eba068ecb16439a98990dcb12e63fdd/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7506488470f41169b86d8c9aeff587293f530a23a23a49d6bc64dab66bedc71e", size = 1465942, upload_time = "2024-12-24T18:30:18.927Z" }, + { url = "https://files.pythonhosted.org/packages/c7/2c/30a5cdde5102958e602c07466bce058b9d7cb48734aa7a4327261ac8e002/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f0121b07b356a22fb0414cec4666bbe36fd6d0d759db3d37228f496ed67c880", size = 1595341, upload_time = "2024-12-24T18:30:22.102Z" }, + { url = "https://files.pythonhosted.org/packages/ff/9b/1e71db1c000385aa069704f5990574b8244cce854ecd83119c19e83c9586/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d6d6bd87df62c27d4185de7c511c6248040afae67028a8a22012b010bc7ad062", size = 1598455, upload_time = "2024-12-24T18:30:24.947Z" }, + { url = "https://files.pythonhosted.org/packages/85/92/c8fec52ddf06231b31cbb779af77e99b8253cd96bd135250b9498144c78b/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:291331973c64bb9cce50bbe871fb2e675c4331dab4f31abe89f175ad7679a4d7", size = 1522138, upload_time = "2024-12-24T18:30:26.286Z" }, + { url = "https://files.pythonhosted.org/packages/0b/51/9eb7e2cd07a15d8bdd976f6190c0164f92ce1904e5c0c79198c4972926b7/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:893f5525bb92d3d735878ec00f781b2de998333659507d29ea4466208df37bed", size = 1582857, upload_time = "2024-12-24T18:30:28.86Z" }, + { url = "https://files.pythonhosted.org/packages/0f/95/c5a00387a5405e68ba32cc64af65ce881a39b98d73cc394b24143bebc5b8/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b47a465040146981dc9db8647981b8cb96366fbc8d452b031e4f8fdffec3f26d", size = 2293129, upload_time = "2024-12-24T18:30:30.34Z" }, + { url = "https://files.pythonhosted.org/packages/44/83/eeb7af7d706b8347548313fa3a3a15931f404533cc54fe01f39e830dd231/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:99cea8b9dd34ff80c521aef46a1dddb0dcc0283cf18bde6d756f1e6f31772165", size = 2421538, upload_time = "2024-12-24T18:30:33.334Z" }, + { url = "https://files.pythonhosted.org/packages/05/f9/27e94c1b3eb29e6933b6986ffc5fa1177d2cd1f0c8efc5f02c91c9ac61de/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:151dffc4865e5fe6dafce5480fab84f950d14566c480c08a53c663a0020504b6", size = 2390661, upload_time = "2024-12-24T18:30:34.939Z" }, + { url = "https://files.pythonhosted.org/packages/d9/d4/3c9735faa36ac591a4afcc2980d2691000506050b7a7e80bcfe44048daa7/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:577facaa411c10421314598b50413aa1ebcf5126f704f1e5d72d7e4e9f020d90", size = 2546710, upload_time = "2024-12-24T18:30:37.281Z" }, + { url = "https://files.pythonhosted.org/packages/4c/fa/be89a49c640930180657482a74970cdcf6f7072c8d2471e1babe17a222dc/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:be4816dc51c8a471749d664161b434912eee82f2ea66bd7628bd14583a833e85", size = 2349213, upload_time = "2024-12-24T18:30:40.019Z" }, ] [[package]] @@ -125,57 +146,57 @@ dependencies = [ { name = "pyparsing" }, { name = "python-dateutil" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/2f/08/b89867ecea2e305f408fbb417139a8dd941ecf7b23a2e02157c36da546f0/matplotlib-3.10.1.tar.gz", hash = "sha256:e8d2d0e3881b129268585bf4765ad3ee73a4591d77b9a18c214ac7e3a79fb2ba", size = 36743335 } +sdist = { url = "https://files.pythonhosted.org/packages/2f/08/b89867ecea2e305f408fbb417139a8dd941ecf7b23a2e02157c36da546f0/matplotlib-3.10.1.tar.gz", hash = "sha256:e8d2d0e3881b129268585bf4765ad3ee73a4591d77b9a18c214ac7e3a79fb2ba", size = 36743335, upload_time = "2025-02-27T19:19:51.038Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/60/73/6770ff5e5523d00f3bc584acb6031e29ee5c8adc2336b16cd1d003675fe0/matplotlib-3.10.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c42eee41e1b60fd83ee3292ed83a97a5f2a8239b10c26715d8a6172226988d7b", size = 8176112 }, - { url = "https://files.pythonhosted.org/packages/08/97/b0ca5da0ed54a3f6599c3ab568bdda65269bc27c21a2c97868c1625e4554/matplotlib-3.10.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4f0647b17b667ae745c13721602b540f7aadb2a32c5b96e924cd4fea5dcb90f1", size = 8046931 }, - { url = "https://files.pythonhosted.org/packages/df/9a/1acbdc3b165d4ce2dcd2b1a6d4ffb46a7220ceee960c922c3d50d8514067/matplotlib-3.10.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa3854b5f9473564ef40a41bc922be978fab217776e9ae1545c9b3a5cf2092a3", size = 8453422 }, - { url = "https://files.pythonhosted.org/packages/51/d0/2bc4368abf766203e548dc7ab57cf7e9c621f1a3c72b516cc7715347b179/matplotlib-3.10.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e496c01441be4c7d5f96d4e40f7fca06e20dcb40e44c8daa2e740e1757ad9e6", size = 8596819 }, - { url = "https://files.pythonhosted.org/packages/ab/1b/8b350f8a1746c37ab69dda7d7528d1fc696efb06db6ade9727b7887be16d/matplotlib-3.10.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5d45d3f5245be5b469843450617dcad9af75ca50568acf59997bed9311131a0b", size = 9402782 }, - { url = "https://files.pythonhosted.org/packages/89/06/f570373d24d93503988ba8d04f213a372fa1ce48381c5eb15da985728498/matplotlib-3.10.1-cp313-cp313-win_amd64.whl", hash = "sha256:8e8e25b1209161d20dfe93037c8a7f7ca796ec9aa326e6e4588d8c4a5dd1e473", size = 8063812 }, - { url = "https://files.pythonhosted.org/packages/fc/e0/8c811a925b5a7ad75135f0e5af46408b78af88bbb02a1df775100ef9bfef/matplotlib-3.10.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:19b06241ad89c3ae9469e07d77efa87041eac65d78df4fcf9cac318028009b01", size = 8214021 }, - { url = "https://files.pythonhosted.org/packages/4a/34/319ec2139f68ba26da9d00fce2ff9f27679fb799a6c8e7358539801fd629/matplotlib-3.10.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:01e63101ebb3014e6e9f80d9cf9ee361a8599ddca2c3e166c563628b39305dbb", size = 8090782 }, - { url = "https://files.pythonhosted.org/packages/77/ea/9812124ab9a99df5b2eec1110e9b2edc0b8f77039abf4c56e0a376e84a29/matplotlib-3.10.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f06bad951eea6422ac4e8bdebcf3a70c59ea0a03338c5d2b109f57b64eb3972", size = 8478901 }, - { url = "https://files.pythonhosted.org/packages/c9/db/b05bf463689134789b06dea85828f8ebe506fa1e37593f723b65b86c9582/matplotlib-3.10.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3dfb036f34873b46978f55e240cff7a239f6c4409eac62d8145bad3fc6ba5a3", size = 8613864 }, - { url = "https://files.pythonhosted.org/packages/c2/04/41ccec4409f3023a7576df3b5c025f1a8c8b81fbfe922ecfd837ac36e081/matplotlib-3.10.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dc6ab14a7ab3b4d813b88ba957fc05c79493a037f54e246162033591e770de6f", size = 9409487 }, - { url = "https://files.pythonhosted.org/packages/ac/c2/0d5aae823bdcc42cc99327ecdd4d28585e15ccd5218c453b7bcd827f3421/matplotlib-3.10.1-cp313-cp313t-win_amd64.whl", hash = "sha256:bc411ebd5889a78dabbc457b3fa153203e22248bfa6eedc6797be5df0164dbf9", size = 8134832 }, + { url = "https://files.pythonhosted.org/packages/60/73/6770ff5e5523d00f3bc584acb6031e29ee5c8adc2336b16cd1d003675fe0/matplotlib-3.10.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c42eee41e1b60fd83ee3292ed83a97a5f2a8239b10c26715d8a6172226988d7b", size = 8176112, upload_time = "2025-02-27T19:19:07.59Z" }, + { url = "https://files.pythonhosted.org/packages/08/97/b0ca5da0ed54a3f6599c3ab568bdda65269bc27c21a2c97868c1625e4554/matplotlib-3.10.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4f0647b17b667ae745c13721602b540f7aadb2a32c5b96e924cd4fea5dcb90f1", size = 8046931, upload_time = "2025-02-27T19:19:10.515Z" }, + { url = "https://files.pythonhosted.org/packages/df/9a/1acbdc3b165d4ce2dcd2b1a6d4ffb46a7220ceee960c922c3d50d8514067/matplotlib-3.10.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa3854b5f9473564ef40a41bc922be978fab217776e9ae1545c9b3a5cf2092a3", size = 8453422, upload_time = "2025-02-27T19:19:12.738Z" }, + { url = "https://files.pythonhosted.org/packages/51/d0/2bc4368abf766203e548dc7ab57cf7e9c621f1a3c72b516cc7715347b179/matplotlib-3.10.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e496c01441be4c7d5f96d4e40f7fca06e20dcb40e44c8daa2e740e1757ad9e6", size = 8596819, upload_time = "2025-02-27T19:19:15.306Z" }, + { url = "https://files.pythonhosted.org/packages/ab/1b/8b350f8a1746c37ab69dda7d7528d1fc696efb06db6ade9727b7887be16d/matplotlib-3.10.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5d45d3f5245be5b469843450617dcad9af75ca50568acf59997bed9311131a0b", size = 9402782, upload_time = "2025-02-27T19:19:17.841Z" }, + { url = "https://files.pythonhosted.org/packages/89/06/f570373d24d93503988ba8d04f213a372fa1ce48381c5eb15da985728498/matplotlib-3.10.1-cp313-cp313-win_amd64.whl", hash = "sha256:8e8e25b1209161d20dfe93037c8a7f7ca796ec9aa326e6e4588d8c4a5dd1e473", size = 8063812, upload_time = "2025-02-27T19:19:20.888Z" }, + { url = "https://files.pythonhosted.org/packages/fc/e0/8c811a925b5a7ad75135f0e5af46408b78af88bbb02a1df775100ef9bfef/matplotlib-3.10.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:19b06241ad89c3ae9469e07d77efa87041eac65d78df4fcf9cac318028009b01", size = 8214021, upload_time = "2025-02-27T19:19:23.412Z" }, + { url = "https://files.pythonhosted.org/packages/4a/34/319ec2139f68ba26da9d00fce2ff9f27679fb799a6c8e7358539801fd629/matplotlib-3.10.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:01e63101ebb3014e6e9f80d9cf9ee361a8599ddca2c3e166c563628b39305dbb", size = 8090782, upload_time = "2025-02-27T19:19:28.33Z" }, + { url = "https://files.pythonhosted.org/packages/77/ea/9812124ab9a99df5b2eec1110e9b2edc0b8f77039abf4c56e0a376e84a29/matplotlib-3.10.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f06bad951eea6422ac4e8bdebcf3a70c59ea0a03338c5d2b109f57b64eb3972", size = 8478901, upload_time = "2025-02-27T19:19:31.536Z" }, + { url = "https://files.pythonhosted.org/packages/c9/db/b05bf463689134789b06dea85828f8ebe506fa1e37593f723b65b86c9582/matplotlib-3.10.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3dfb036f34873b46978f55e240cff7a239f6c4409eac62d8145bad3fc6ba5a3", size = 8613864, upload_time = "2025-02-27T19:19:34.233Z" }, + { url = "https://files.pythonhosted.org/packages/c2/04/41ccec4409f3023a7576df3b5c025f1a8c8b81fbfe922ecfd837ac36e081/matplotlib-3.10.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dc6ab14a7ab3b4d813b88ba957fc05c79493a037f54e246162033591e770de6f", size = 9409487, upload_time = "2025-02-27T19:19:36.924Z" }, + { url = "https://files.pythonhosted.org/packages/ac/c2/0d5aae823bdcc42cc99327ecdd4d28585e15ccd5218c453b7bcd827f3421/matplotlib-3.10.1-cp313-cp313t-win_amd64.whl", hash = "sha256:bc411ebd5889a78dabbc457b3fa153203e22248bfa6eedc6797be5df0164dbf9", size = 8134832, upload_time = "2025-02-27T19:19:39.431Z" }, ] [[package]] name = "numpy" version = "2.2.5" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/dc/b2/ce4b867d8cd9c0ee84938ae1e6a6f7926ebf928c9090d036fc3c6a04f946/numpy-2.2.5.tar.gz", hash = "sha256:a9c0d994680cd991b1cb772e8b297340085466a6fe964bc9d4e80f5e2f43c291", size = 20273920 } +sdist = { url = "https://files.pythonhosted.org/packages/dc/b2/ce4b867d8cd9c0ee84938ae1e6a6f7926ebf928c9090d036fc3c6a04f946/numpy-2.2.5.tar.gz", hash = "sha256:a9c0d994680cd991b1cb772e8b297340085466a6fe964bc9d4e80f5e2f43c291", size = 20273920, upload_time = "2025-04-19T23:27:42.561Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e2/a0/0aa7f0f4509a2e07bd7a509042967c2fab635690d4f48c6c7b3afd4f448c/numpy-2.2.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:059b51b658f4414fff78c6d7b1b4e18283ab5fa56d270ff212d5ba0c561846f4", size = 20935102 }, - { url = "https://files.pythonhosted.org/packages/7e/e4/a6a9f4537542912ec513185396fce52cdd45bdcf3e9d921ab02a93ca5aa9/numpy-2.2.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:47f9ed103af0bc63182609044b0490747e03bd20a67e391192dde119bf43d52f", size = 14191709 }, - { url = "https://files.pythonhosted.org/packages/be/65/72f3186b6050bbfe9c43cb81f9df59ae63603491d36179cf7a7c8d216758/numpy-2.2.5-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:261a1ef047751bb02f29dfe337230b5882b54521ca121fc7f62668133cb119c9", size = 5149173 }, - { url = "https://files.pythonhosted.org/packages/e5/e9/83e7a9432378dde5802651307ae5e9ea07bb72b416728202218cd4da2801/numpy-2.2.5-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:4520caa3807c1ceb005d125a75e715567806fed67e315cea619d5ec6e75a4191", size = 6684502 }, - { url = "https://files.pythonhosted.org/packages/ea/27/b80da6c762394c8ee516b74c1f686fcd16c8f23b14de57ba0cad7349d1d2/numpy-2.2.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d14b17b9be5f9c9301f43d2e2a4886a33b53f4e6fdf9ca2f4cc60aeeee76372", size = 14084417 }, - { url = "https://files.pythonhosted.org/packages/aa/fc/ebfd32c3e124e6a1043e19c0ab0769818aa69050ce5589b63d05ff185526/numpy-2.2.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ba321813a00e508d5421104464510cc962a6f791aa2fca1c97b1e65027da80d", size = 16133807 }, - { url = "https://files.pythonhosted.org/packages/bf/9b/4cc171a0acbe4666f7775cfd21d4eb6bb1d36d3a0431f48a73e9212d2278/numpy-2.2.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4cbdef3ddf777423060c6f81b5694bad2dc9675f110c4b2a60dc0181543fac7", size = 15575611 }, - { url = "https://files.pythonhosted.org/packages/a3/45/40f4135341850df48f8edcf949cf47b523c404b712774f8855a64c96ef29/numpy-2.2.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:54088a5a147ab71a8e7fdfd8c3601972751ded0739c6b696ad9cb0343e21ab73", size = 17895747 }, - { url = "https://files.pythonhosted.org/packages/f8/4c/b32a17a46f0ffbde8cc82df6d3daeaf4f552e346df143e1b188a701a8f09/numpy-2.2.5-cp313-cp313-win32.whl", hash = "sha256:c8b82a55ef86a2d8e81b63da85e55f5537d2157165be1cb2ce7cfa57b6aef38b", size = 6309594 }, - { url = "https://files.pythonhosted.org/packages/13/ae/72e6276feb9ef06787365b05915bfdb057d01fceb4a43cb80978e518d79b/numpy-2.2.5-cp313-cp313-win_amd64.whl", hash = "sha256:d8882a829fd779f0f43998e931c466802a77ca1ee0fe25a3abe50278616b1471", size = 12638356 }, - { url = "https://files.pythonhosted.org/packages/79/56/be8b85a9f2adb688e7ded6324e20149a03541d2b3297c3ffc1a73f46dedb/numpy-2.2.5-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:e8b025c351b9f0e8b5436cf28a07fa4ac0204d67b38f01433ac7f9b870fa38c6", size = 20963778 }, - { url = "https://files.pythonhosted.org/packages/ff/77/19c5e62d55bff507a18c3cdff82e94fe174957bad25860a991cac719d3ab/numpy-2.2.5-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:8dfa94b6a4374e7851bbb6f35e6ded2120b752b063e6acdd3157e4d2bb922eba", size = 14207279 }, - { url = "https://files.pythonhosted.org/packages/75/22/aa11f22dc11ff4ffe4e849d9b63bbe8d4ac6d5fae85ddaa67dfe43be3e76/numpy-2.2.5-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:97c8425d4e26437e65e1d189d22dff4a079b747ff9c2788057bfb8114ce1e133", size = 5199247 }, - { url = "https://files.pythonhosted.org/packages/4f/6c/12d5e760fc62c08eded0394f62039f5a9857f758312bf01632a81d841459/numpy-2.2.5-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:352d330048c055ea6db701130abc48a21bec690a8d38f8284e00fab256dc1376", size = 6711087 }, - { url = "https://files.pythonhosted.org/packages/ef/94/ece8280cf4218b2bee5cec9567629e61e51b4be501e5c6840ceb593db945/numpy-2.2.5-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b4c0773b6ada798f51f0f8e30c054d32304ccc6e9c5d93d46cb26f3d385ab19", size = 14059964 }, - { url = "https://files.pythonhosted.org/packages/39/41/c5377dac0514aaeec69115830a39d905b1882819c8e65d97fc60e177e19e/numpy-2.2.5-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55f09e00d4dccd76b179c0f18a44f041e5332fd0e022886ba1c0bbf3ea4a18d0", size = 16121214 }, - { url = "https://files.pythonhosted.org/packages/db/54/3b9f89a943257bc8e187145c6bc0eb8e3d615655f7b14e9b490b053e8149/numpy-2.2.5-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:02f226baeefa68f7d579e213d0f3493496397d8f1cff5e2b222af274c86a552a", size = 15575788 }, - { url = "https://files.pythonhosted.org/packages/b1/c4/2e407e85df35b29f79945751b8f8e671057a13a376497d7fb2151ba0d290/numpy-2.2.5-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:c26843fd58f65da9491165072da2cccc372530681de481ef670dcc8e27cfb066", size = 17893672 }, - { url = "https://files.pythonhosted.org/packages/29/7e/d0b44e129d038dba453f00d0e29ebd6eaf2f06055d72b95b9947998aca14/numpy-2.2.5-cp313-cp313t-win32.whl", hash = "sha256:1a161c2c79ab30fe4501d5a2bbfe8b162490757cf90b7f05be8b80bc02f7bb8e", size = 6377102 }, - { url = "https://files.pythonhosted.org/packages/63/be/b85e4aa4bf42c6502851b971f1c326d583fcc68227385f92089cf50a7b45/numpy-2.2.5-cp313-cp313t-win_amd64.whl", hash = "sha256:d403c84991b5ad291d3809bace5e85f4bbf44a04bdc9a88ed2bb1807b3360bb8", size = 12750096 }, + { url = "https://files.pythonhosted.org/packages/e2/a0/0aa7f0f4509a2e07bd7a509042967c2fab635690d4f48c6c7b3afd4f448c/numpy-2.2.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:059b51b658f4414fff78c6d7b1b4e18283ab5fa56d270ff212d5ba0c561846f4", size = 20935102, upload_time = "2025-04-19T22:41:16.234Z" }, + { url = "https://files.pythonhosted.org/packages/7e/e4/a6a9f4537542912ec513185396fce52cdd45bdcf3e9d921ab02a93ca5aa9/numpy-2.2.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:47f9ed103af0bc63182609044b0490747e03bd20a67e391192dde119bf43d52f", size = 14191709, upload_time = "2025-04-19T22:41:38.472Z" }, + { url = "https://files.pythonhosted.org/packages/be/65/72f3186b6050bbfe9c43cb81f9df59ae63603491d36179cf7a7c8d216758/numpy-2.2.5-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:261a1ef047751bb02f29dfe337230b5882b54521ca121fc7f62668133cb119c9", size = 5149173, upload_time = "2025-04-19T22:41:47.823Z" }, + { url = "https://files.pythonhosted.org/packages/e5/e9/83e7a9432378dde5802651307ae5e9ea07bb72b416728202218cd4da2801/numpy-2.2.5-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:4520caa3807c1ceb005d125a75e715567806fed67e315cea619d5ec6e75a4191", size = 6684502, upload_time = "2025-04-19T22:41:58.689Z" }, + { url = "https://files.pythonhosted.org/packages/ea/27/b80da6c762394c8ee516b74c1f686fcd16c8f23b14de57ba0cad7349d1d2/numpy-2.2.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d14b17b9be5f9c9301f43d2e2a4886a33b53f4e6fdf9ca2f4cc60aeeee76372", size = 14084417, upload_time = "2025-04-19T22:42:19.897Z" }, + { url = "https://files.pythonhosted.org/packages/aa/fc/ebfd32c3e124e6a1043e19c0ab0769818aa69050ce5589b63d05ff185526/numpy-2.2.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ba321813a00e508d5421104464510cc962a6f791aa2fca1c97b1e65027da80d", size = 16133807, upload_time = "2025-04-19T22:42:44.433Z" }, + { url = "https://files.pythonhosted.org/packages/bf/9b/4cc171a0acbe4666f7775cfd21d4eb6bb1d36d3a0431f48a73e9212d2278/numpy-2.2.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4cbdef3ddf777423060c6f81b5694bad2dc9675f110c4b2a60dc0181543fac7", size = 15575611, upload_time = "2025-04-19T22:43:09.928Z" }, + { url = "https://files.pythonhosted.org/packages/a3/45/40f4135341850df48f8edcf949cf47b523c404b712774f8855a64c96ef29/numpy-2.2.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:54088a5a147ab71a8e7fdfd8c3601972751ded0739c6b696ad9cb0343e21ab73", size = 17895747, upload_time = "2025-04-19T22:43:36.983Z" }, + { url = "https://files.pythonhosted.org/packages/f8/4c/b32a17a46f0ffbde8cc82df6d3daeaf4f552e346df143e1b188a701a8f09/numpy-2.2.5-cp313-cp313-win32.whl", hash = "sha256:c8b82a55ef86a2d8e81b63da85e55f5537d2157165be1cb2ce7cfa57b6aef38b", size = 6309594, upload_time = "2025-04-19T22:47:10.523Z" }, + { url = "https://files.pythonhosted.org/packages/13/ae/72e6276feb9ef06787365b05915bfdb057d01fceb4a43cb80978e518d79b/numpy-2.2.5-cp313-cp313-win_amd64.whl", hash = "sha256:d8882a829fd779f0f43998e931c466802a77ca1ee0fe25a3abe50278616b1471", size = 12638356, upload_time = "2025-04-19T22:47:30.253Z" }, + { url = "https://files.pythonhosted.org/packages/79/56/be8b85a9f2adb688e7ded6324e20149a03541d2b3297c3ffc1a73f46dedb/numpy-2.2.5-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:e8b025c351b9f0e8b5436cf28a07fa4ac0204d67b38f01433ac7f9b870fa38c6", size = 20963778, upload_time = "2025-04-19T22:44:09.251Z" }, + { url = "https://files.pythonhosted.org/packages/ff/77/19c5e62d55bff507a18c3cdff82e94fe174957bad25860a991cac719d3ab/numpy-2.2.5-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:8dfa94b6a4374e7851bbb6f35e6ded2120b752b063e6acdd3157e4d2bb922eba", size = 14207279, upload_time = "2025-04-19T22:44:31.383Z" }, + { url = "https://files.pythonhosted.org/packages/75/22/aa11f22dc11ff4ffe4e849d9b63bbe8d4ac6d5fae85ddaa67dfe43be3e76/numpy-2.2.5-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:97c8425d4e26437e65e1d189d22dff4a079b747ff9c2788057bfb8114ce1e133", size = 5199247, upload_time = "2025-04-19T22:44:40.361Z" }, + { url = "https://files.pythonhosted.org/packages/4f/6c/12d5e760fc62c08eded0394f62039f5a9857f758312bf01632a81d841459/numpy-2.2.5-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:352d330048c055ea6db701130abc48a21bec690a8d38f8284e00fab256dc1376", size = 6711087, upload_time = "2025-04-19T22:44:51.188Z" }, + { url = "https://files.pythonhosted.org/packages/ef/94/ece8280cf4218b2bee5cec9567629e61e51b4be501e5c6840ceb593db945/numpy-2.2.5-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b4c0773b6ada798f51f0f8e30c054d32304ccc6e9c5d93d46cb26f3d385ab19", size = 14059964, upload_time = "2025-04-19T22:45:12.451Z" }, + { url = "https://files.pythonhosted.org/packages/39/41/c5377dac0514aaeec69115830a39d905b1882819c8e65d97fc60e177e19e/numpy-2.2.5-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55f09e00d4dccd76b179c0f18a44f041e5332fd0e022886ba1c0bbf3ea4a18d0", size = 16121214, upload_time = "2025-04-19T22:45:37.734Z" }, + { url = "https://files.pythonhosted.org/packages/db/54/3b9f89a943257bc8e187145c6bc0eb8e3d615655f7b14e9b490b053e8149/numpy-2.2.5-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:02f226baeefa68f7d579e213d0f3493496397d8f1cff5e2b222af274c86a552a", size = 15575788, upload_time = "2025-04-19T22:46:01.908Z" }, + { url = "https://files.pythonhosted.org/packages/b1/c4/2e407e85df35b29f79945751b8f8e671057a13a376497d7fb2151ba0d290/numpy-2.2.5-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:c26843fd58f65da9491165072da2cccc372530681de481ef670dcc8e27cfb066", size = 17893672, upload_time = "2025-04-19T22:46:28.585Z" }, + { url = "https://files.pythonhosted.org/packages/29/7e/d0b44e129d038dba453f00d0e29ebd6eaf2f06055d72b95b9947998aca14/numpy-2.2.5-cp313-cp313t-win32.whl", hash = "sha256:1a161c2c79ab30fe4501d5a2bbfe8b162490757cf90b7f05be8b80bc02f7bb8e", size = 6377102, upload_time = "2025-04-19T22:46:39.949Z" }, + { url = "https://files.pythonhosted.org/packages/63/be/b85e4aa4bf42c6502851b971f1c326d583fcc68227385f92089cf50a7b45/numpy-2.2.5-cp313-cp313t-win_amd64.whl", hash = "sha256:d403c84991b5ad291d3809bace5e85f4bbf44a04bdc9a88ed2bb1807b3360bb8", size = 12750096, upload_time = "2025-04-19T22:47:00.147Z" }, ] [[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 } +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 }, + { 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]] @@ -188,60 +209,60 @@ dependencies = [ { name = "pytz" }, { name = "tzdata" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9c/d6/9f8431bacc2e19dca897724cd097b1bb224a6ad5433784a44b587c7c13af/pandas-2.2.3.tar.gz", hash = "sha256:4f18ba62b61d7e192368b84517265a99b4d7ee8912f8708660fb4a366cc82667", size = 4399213 } +sdist = { url = "https://files.pythonhosted.org/packages/9c/d6/9f8431bacc2e19dca897724cd097b1bb224a6ad5433784a44b587c7c13af/pandas-2.2.3.tar.gz", hash = "sha256:4f18ba62b61d7e192368b84517265a99b4d7ee8912f8708660fb4a366cc82667", size = 4399213, upload_time = "2024-09-20T13:10:04.827Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/64/22/3b8f4e0ed70644e85cfdcd57454686b9057c6c38d2f74fe4b8bc2527214a/pandas-2.2.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f00d1345d84d8c86a63e476bb4955e46458b304b9575dcf71102b5c705320015", size = 12477643 }, - { url = "https://files.pythonhosted.org/packages/e4/93/b3f5d1838500e22c8d793625da672f3eec046b1a99257666c94446969282/pandas-2.2.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3508d914817e153ad359d7e069d752cdd736a247c322d932eb89e6bc84217f28", size = 11281573 }, - { url = "https://files.pythonhosted.org/packages/f5/94/6c79b07f0e5aab1dcfa35a75f4817f5c4f677931d4234afcd75f0e6a66ca/pandas-2.2.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:22a9d949bfc9a502d320aa04e5d02feab689d61da4e7764b62c30b991c42c5f0", size = 15196085 }, - { url = "https://files.pythonhosted.org/packages/e8/31/aa8da88ca0eadbabd0a639788a6da13bb2ff6edbbb9f29aa786450a30a91/pandas-2.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3a255b2c19987fbbe62a9dfd6cff7ff2aa9ccab3fc75218fd4b7530f01efa24", size = 12711809 }, - { url = "https://files.pythonhosted.org/packages/ee/7c/c6dbdb0cb2a4344cacfb8de1c5808ca885b2e4dcfde8008266608f9372af/pandas-2.2.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:800250ecdadb6d9c78eae4990da62743b857b470883fa27f652db8bdde7f6659", size = 16356316 }, - { url = "https://files.pythonhosted.org/packages/57/b7/8b757e7d92023b832869fa8881a992696a0bfe2e26f72c9ae9f255988d42/pandas-2.2.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6374c452ff3ec675a8f46fd9ab25c4ad0ba590b71cf0656f8b6daa5202bca3fb", size = 14022055 }, - { url = "https://files.pythonhosted.org/packages/3b/bc/4b18e2b8c002572c5a441a64826252ce5da2aa738855747247a971988043/pandas-2.2.3-cp313-cp313-win_amd64.whl", hash = "sha256:61c5ad4043f791b61dd4752191d9f07f0ae412515d59ba8f005832a532f8736d", size = 11481175 }, - { url = "https://files.pythonhosted.org/packages/76/a3/a5d88146815e972d40d19247b2c162e88213ef51c7c25993942c39dbf41d/pandas-2.2.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3b71f27954685ee685317063bf13c7709a7ba74fc996b84fc6821c59b0f06468", size = 12615650 }, - { url = "https://files.pythonhosted.org/packages/9c/8c/f0fd18f6140ddafc0c24122c8a964e48294acc579d47def376fef12bcb4a/pandas-2.2.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:38cf8125c40dae9d5acc10fa66af8ea6fdf760b2714ee482ca691fc66e6fcb18", size = 11290177 }, - { url = "https://files.pythonhosted.org/packages/ed/f9/e995754eab9c0f14c6777401f7eece0943840b7a9fc932221c19d1abee9f/pandas-2.2.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ba96630bc17c875161df3818780af30e43be9b166ce51c9a18c1feae342906c2", size = 14651526 }, - { url = "https://files.pythonhosted.org/packages/25/b0/98d6ae2e1abac4f35230aa756005e8654649d305df9a28b16b9ae4353bff/pandas-2.2.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1db71525a1538b30142094edb9adc10be3f3e176748cd7acc2240c2f2e5aa3a4", size = 11871013 }, - { url = "https://files.pythonhosted.org/packages/cc/57/0f72a10f9db6a4628744c8e8f0df4e6e21de01212c7c981d31e50ffc8328/pandas-2.2.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:15c0e1e02e93116177d29ff83e8b1619c93ddc9c49083f237d4312337a61165d", size = 15711620 }, - { url = "https://files.pythonhosted.org/packages/ab/5f/b38085618b950b79d2d9164a711c52b10aefc0ae6833b96f626b7021b2ed/pandas-2.2.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ad5b65698ab28ed8d7f18790a0dc58005c7629f227be9ecc1072aa74c0c1d43a", size = 13098436 }, + { url = "https://files.pythonhosted.org/packages/64/22/3b8f4e0ed70644e85cfdcd57454686b9057c6c38d2f74fe4b8bc2527214a/pandas-2.2.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f00d1345d84d8c86a63e476bb4955e46458b304b9575dcf71102b5c705320015", size = 12477643, upload_time = "2024-09-20T13:09:25.522Z" }, + { url = "https://files.pythonhosted.org/packages/e4/93/b3f5d1838500e22c8d793625da672f3eec046b1a99257666c94446969282/pandas-2.2.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3508d914817e153ad359d7e069d752cdd736a247c322d932eb89e6bc84217f28", size = 11281573, upload_time = "2024-09-20T13:09:28.012Z" }, + { url = "https://files.pythonhosted.org/packages/f5/94/6c79b07f0e5aab1dcfa35a75f4817f5c4f677931d4234afcd75f0e6a66ca/pandas-2.2.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:22a9d949bfc9a502d320aa04e5d02feab689d61da4e7764b62c30b991c42c5f0", size = 15196085, upload_time = "2024-09-20T19:02:10.451Z" }, + { url = "https://files.pythonhosted.org/packages/e8/31/aa8da88ca0eadbabd0a639788a6da13bb2ff6edbbb9f29aa786450a30a91/pandas-2.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3a255b2c19987fbbe62a9dfd6cff7ff2aa9ccab3fc75218fd4b7530f01efa24", size = 12711809, upload_time = "2024-09-20T13:09:30.814Z" }, + { url = "https://files.pythonhosted.org/packages/ee/7c/c6dbdb0cb2a4344cacfb8de1c5808ca885b2e4dcfde8008266608f9372af/pandas-2.2.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:800250ecdadb6d9c78eae4990da62743b857b470883fa27f652db8bdde7f6659", size = 16356316, upload_time = "2024-09-20T19:02:13.825Z" }, + { url = "https://files.pythonhosted.org/packages/57/b7/8b757e7d92023b832869fa8881a992696a0bfe2e26f72c9ae9f255988d42/pandas-2.2.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6374c452ff3ec675a8f46fd9ab25c4ad0ba590b71cf0656f8b6daa5202bca3fb", size = 14022055, upload_time = "2024-09-20T13:09:33.462Z" }, + { url = "https://files.pythonhosted.org/packages/3b/bc/4b18e2b8c002572c5a441a64826252ce5da2aa738855747247a971988043/pandas-2.2.3-cp313-cp313-win_amd64.whl", hash = "sha256:61c5ad4043f791b61dd4752191d9f07f0ae412515d59ba8f005832a532f8736d", size = 11481175, upload_time = "2024-09-20T13:09:35.871Z" }, + { url = "https://files.pythonhosted.org/packages/76/a3/a5d88146815e972d40d19247b2c162e88213ef51c7c25993942c39dbf41d/pandas-2.2.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3b71f27954685ee685317063bf13c7709a7ba74fc996b84fc6821c59b0f06468", size = 12615650, upload_time = "2024-09-20T13:09:38.685Z" }, + { url = "https://files.pythonhosted.org/packages/9c/8c/f0fd18f6140ddafc0c24122c8a964e48294acc579d47def376fef12bcb4a/pandas-2.2.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:38cf8125c40dae9d5acc10fa66af8ea6fdf760b2714ee482ca691fc66e6fcb18", size = 11290177, upload_time = "2024-09-20T13:09:41.141Z" }, + { url = "https://files.pythonhosted.org/packages/ed/f9/e995754eab9c0f14c6777401f7eece0943840b7a9fc932221c19d1abee9f/pandas-2.2.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ba96630bc17c875161df3818780af30e43be9b166ce51c9a18c1feae342906c2", size = 14651526, upload_time = "2024-09-20T19:02:16.905Z" }, + { url = "https://files.pythonhosted.org/packages/25/b0/98d6ae2e1abac4f35230aa756005e8654649d305df9a28b16b9ae4353bff/pandas-2.2.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1db71525a1538b30142094edb9adc10be3f3e176748cd7acc2240c2f2e5aa3a4", size = 11871013, upload_time = "2024-09-20T13:09:44.39Z" }, + { url = "https://files.pythonhosted.org/packages/cc/57/0f72a10f9db6a4628744c8e8f0df4e6e21de01212c7c981d31e50ffc8328/pandas-2.2.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:15c0e1e02e93116177d29ff83e8b1619c93ddc9c49083f237d4312337a61165d", size = 15711620, upload_time = "2024-09-20T19:02:20.639Z" }, + { url = "https://files.pythonhosted.org/packages/ab/5f/b38085618b950b79d2d9164a711c52b10aefc0ae6833b96f626b7021b2ed/pandas-2.2.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ad5b65698ab28ed8d7f18790a0dc58005c7629f227be9ecc1072aa74c0c1d43a", size = 13098436, upload_time = "2024-09-20T13:09:48.112Z" }, ] [[package]] name = "pillow" version = "11.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/af/cb/bb5c01fcd2a69335b86c22142b2bccfc3464087efb7fd382eee5ffc7fdf7/pillow-11.2.1.tar.gz", hash = "sha256:a64dd61998416367b7ef979b73d3a85853ba9bec4c2925f74e588879a58716b6", size = 47026707 } +sdist = { url = "https://files.pythonhosted.org/packages/af/cb/bb5c01fcd2a69335b86c22142b2bccfc3464087efb7fd382eee5ffc7fdf7/pillow-11.2.1.tar.gz", hash = "sha256:a64dd61998416367b7ef979b73d3a85853ba9bec4c2925f74e588879a58716b6", size = 47026707, upload_time = "2025-04-12T17:50:03.289Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/36/9c/447528ee3776e7ab8897fe33697a7ff3f0475bb490c5ac1456a03dc57956/pillow-11.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:fdec757fea0b793056419bca3e9932eb2b0ceec90ef4813ea4c1e072c389eb28", size = 3190098 }, - { url = "https://files.pythonhosted.org/packages/b5/09/29d5cd052f7566a63e5b506fac9c60526e9ecc553825551333e1e18a4858/pillow-11.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b0e130705d568e2f43a17bcbe74d90958e8a16263868a12c3e0d9c8162690830", size = 3030166 }, - { url = "https://files.pythonhosted.org/packages/71/5d/446ee132ad35e7600652133f9c2840b4799bbd8e4adba881284860da0a36/pillow-11.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bdb5e09068332578214cadd9c05e3d64d99e0e87591be22a324bdbc18925be0", size = 4408674 }, - { url = "https://files.pythonhosted.org/packages/69/5f/cbe509c0ddf91cc3a03bbacf40e5c2339c4912d16458fcb797bb47bcb269/pillow-11.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d189ba1bebfbc0c0e529159631ec72bb9e9bc041f01ec6d3233d6d82eb823bc1", size = 4496005 }, - { url = "https://files.pythonhosted.org/packages/f9/b3/dd4338d8fb8a5f312021f2977fb8198a1184893f9b00b02b75d565c33b51/pillow-11.2.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:191955c55d8a712fab8934a42bfefbf99dd0b5875078240943f913bb66d46d9f", size = 4518707 }, - { url = "https://files.pythonhosted.org/packages/13/eb/2552ecebc0b887f539111c2cd241f538b8ff5891b8903dfe672e997529be/pillow-11.2.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:ad275964d52e2243430472fc5d2c2334b4fc3ff9c16cb0a19254e25efa03a155", size = 4610008 }, - { url = "https://files.pythonhosted.org/packages/72/d1/924ce51bea494cb6e7959522d69d7b1c7e74f6821d84c63c3dc430cbbf3b/pillow-11.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:750f96efe0597382660d8b53e90dd1dd44568a8edb51cb7f9d5d918b80d4de14", size = 4585420 }, - { url = "https://files.pythonhosted.org/packages/43/ab/8f81312d255d713b99ca37479a4cb4b0f48195e530cdc1611990eb8fd04b/pillow-11.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fe15238d3798788d00716637b3d4e7bb6bde18b26e5d08335a96e88564a36b6b", size = 4667655 }, - { url = "https://files.pythonhosted.org/packages/94/86/8f2e9d2dc3d308dfd137a07fe1cc478df0a23d42a6c4093b087e738e4827/pillow-11.2.1-cp313-cp313-win32.whl", hash = "sha256:3fe735ced9a607fee4f481423a9c36701a39719252a9bb251679635f99d0f7d2", size = 2332329 }, - { url = "https://files.pythonhosted.org/packages/6d/ec/1179083b8d6067a613e4d595359b5fdea65d0a3b7ad623fee906e1b3c4d2/pillow-11.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:74ee3d7ecb3f3c05459ba95eed5efa28d6092d751ce9bf20e3e253a4e497e691", size = 2676388 }, - { url = "https://files.pythonhosted.org/packages/23/f1/2fc1e1e294de897df39fa8622d829b8828ddad938b0eaea256d65b84dd72/pillow-11.2.1-cp313-cp313-win_arm64.whl", hash = "sha256:5119225c622403afb4b44bad4c1ca6c1f98eed79db8d3bc6e4e160fc6339d66c", size = 2414950 }, - { url = "https://files.pythonhosted.org/packages/c4/3e/c328c48b3f0ead7bab765a84b4977acb29f101d10e4ef57a5e3400447c03/pillow-11.2.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8ce2e8411c7aaef53e6bb29fe98f28cd4fbd9a1d9be2eeea434331aac0536b22", size = 3192759 }, - { url = "https://files.pythonhosted.org/packages/18/0e/1c68532d833fc8b9f404d3a642991441d9058eccd5606eab31617f29b6d4/pillow-11.2.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:9ee66787e095127116d91dea2143db65c7bb1e232f617aa5957c0d9d2a3f23a7", size = 3033284 }, - { url = "https://files.pythonhosted.org/packages/b7/cb/6faf3fb1e7705fd2db74e070f3bf6f88693601b0ed8e81049a8266de4754/pillow-11.2.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9622e3b6c1d8b551b6e6f21873bdcc55762b4b2126633014cea1803368a9aa16", size = 4445826 }, - { url = "https://files.pythonhosted.org/packages/07/94/8be03d50b70ca47fb434a358919d6a8d6580f282bbb7af7e4aa40103461d/pillow-11.2.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63b5dff3a68f371ea06025a1a6966c9a1e1ee452fc8020c2cd0ea41b83e9037b", size = 4527329 }, - { url = "https://files.pythonhosted.org/packages/fd/a4/bfe78777076dc405e3bd2080bc32da5ab3945b5a25dc5d8acaa9de64a162/pillow-11.2.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:31df6e2d3d8fc99f993fd253e97fae451a8db2e7207acf97859732273e108406", size = 4549049 }, - { url = "https://files.pythonhosted.org/packages/65/4d/eaf9068dc687c24979e977ce5677e253624bd8b616b286f543f0c1b91662/pillow-11.2.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:062b7a42d672c45a70fa1f8b43d1d38ff76b63421cbbe7f88146b39e8a558d91", size = 4635408 }, - { url = "https://files.pythonhosted.org/packages/1d/26/0fd443365d9c63bc79feb219f97d935cd4b93af28353cba78d8e77b61719/pillow-11.2.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4eb92eca2711ef8be42fd3f67533765d9fd043b8c80db204f16c8ea62ee1a751", size = 4614863 }, - { url = "https://files.pythonhosted.org/packages/49/65/dca4d2506be482c2c6641cacdba5c602bc76d8ceb618fd37de855653a419/pillow-11.2.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:f91ebf30830a48c825590aede79376cb40f110b387c17ee9bd59932c961044f9", size = 4692938 }, - { url = "https://files.pythonhosted.org/packages/b3/92/1ca0c3f09233bd7decf8f7105a1c4e3162fb9142128c74adad0fb361b7eb/pillow-11.2.1-cp313-cp313t-win32.whl", hash = "sha256:e0b55f27f584ed623221cfe995c912c61606be8513bfa0e07d2c674b4516d9dd", size = 2335774 }, - { url = "https://files.pythonhosted.org/packages/a5/ac/77525347cb43b83ae905ffe257bbe2cc6fd23acb9796639a1f56aa59d191/pillow-11.2.1-cp313-cp313t-win_amd64.whl", hash = "sha256:36d6b82164c39ce5482f649b437382c0fb2395eabc1e2b1702a6deb8ad647d6e", size = 2681895 }, - { url = "https://files.pythonhosted.org/packages/67/32/32dc030cfa91ca0fc52baebbba2e009bb001122a1daa8b6a79ad830b38d3/pillow-11.2.1-cp313-cp313t-win_arm64.whl", hash = "sha256:225c832a13326e34f212d2072982bb1adb210e0cc0b153e688743018c94a2681", size = 2417234 }, + { url = "https://files.pythonhosted.org/packages/36/9c/447528ee3776e7ab8897fe33697a7ff3f0475bb490c5ac1456a03dc57956/pillow-11.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:fdec757fea0b793056419bca3e9932eb2b0ceec90ef4813ea4c1e072c389eb28", size = 3190098, upload_time = "2025-04-12T17:48:23.915Z" }, + { url = "https://files.pythonhosted.org/packages/b5/09/29d5cd052f7566a63e5b506fac9c60526e9ecc553825551333e1e18a4858/pillow-11.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b0e130705d568e2f43a17bcbe74d90958e8a16263868a12c3e0d9c8162690830", size = 3030166, upload_time = "2025-04-12T17:48:25.738Z" }, + { url = "https://files.pythonhosted.org/packages/71/5d/446ee132ad35e7600652133f9c2840b4799bbd8e4adba881284860da0a36/pillow-11.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bdb5e09068332578214cadd9c05e3d64d99e0e87591be22a324bdbc18925be0", size = 4408674, upload_time = "2025-04-12T17:48:27.908Z" }, + { url = "https://files.pythonhosted.org/packages/69/5f/cbe509c0ddf91cc3a03bbacf40e5c2339c4912d16458fcb797bb47bcb269/pillow-11.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d189ba1bebfbc0c0e529159631ec72bb9e9bc041f01ec6d3233d6d82eb823bc1", size = 4496005, upload_time = "2025-04-12T17:48:29.888Z" }, + { url = "https://files.pythonhosted.org/packages/f9/b3/dd4338d8fb8a5f312021f2977fb8198a1184893f9b00b02b75d565c33b51/pillow-11.2.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:191955c55d8a712fab8934a42bfefbf99dd0b5875078240943f913bb66d46d9f", size = 4518707, upload_time = "2025-04-12T17:48:31.874Z" }, + { url = "https://files.pythonhosted.org/packages/13/eb/2552ecebc0b887f539111c2cd241f538b8ff5891b8903dfe672e997529be/pillow-11.2.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:ad275964d52e2243430472fc5d2c2334b4fc3ff9c16cb0a19254e25efa03a155", size = 4610008, upload_time = "2025-04-12T17:48:34.422Z" }, + { url = "https://files.pythonhosted.org/packages/72/d1/924ce51bea494cb6e7959522d69d7b1c7e74f6821d84c63c3dc430cbbf3b/pillow-11.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:750f96efe0597382660d8b53e90dd1dd44568a8edb51cb7f9d5d918b80d4de14", size = 4585420, upload_time = "2025-04-12T17:48:37.641Z" }, + { url = "https://files.pythonhosted.org/packages/43/ab/8f81312d255d713b99ca37479a4cb4b0f48195e530cdc1611990eb8fd04b/pillow-11.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fe15238d3798788d00716637b3d4e7bb6bde18b26e5d08335a96e88564a36b6b", size = 4667655, upload_time = "2025-04-12T17:48:39.652Z" }, + { url = "https://files.pythonhosted.org/packages/94/86/8f2e9d2dc3d308dfd137a07fe1cc478df0a23d42a6c4093b087e738e4827/pillow-11.2.1-cp313-cp313-win32.whl", hash = "sha256:3fe735ced9a607fee4f481423a9c36701a39719252a9bb251679635f99d0f7d2", size = 2332329, upload_time = "2025-04-12T17:48:41.765Z" }, + { url = "https://files.pythonhosted.org/packages/6d/ec/1179083b8d6067a613e4d595359b5fdea65d0a3b7ad623fee906e1b3c4d2/pillow-11.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:74ee3d7ecb3f3c05459ba95eed5efa28d6092d751ce9bf20e3e253a4e497e691", size = 2676388, upload_time = "2025-04-12T17:48:43.625Z" }, + { url = "https://files.pythonhosted.org/packages/23/f1/2fc1e1e294de897df39fa8622d829b8828ddad938b0eaea256d65b84dd72/pillow-11.2.1-cp313-cp313-win_arm64.whl", hash = "sha256:5119225c622403afb4b44bad4c1ca6c1f98eed79db8d3bc6e4e160fc6339d66c", size = 2414950, upload_time = "2025-04-12T17:48:45.475Z" }, + { url = "https://files.pythonhosted.org/packages/c4/3e/c328c48b3f0ead7bab765a84b4977acb29f101d10e4ef57a5e3400447c03/pillow-11.2.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8ce2e8411c7aaef53e6bb29fe98f28cd4fbd9a1d9be2eeea434331aac0536b22", size = 3192759, upload_time = "2025-04-12T17:48:47.866Z" }, + { url = "https://files.pythonhosted.org/packages/18/0e/1c68532d833fc8b9f404d3a642991441d9058eccd5606eab31617f29b6d4/pillow-11.2.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:9ee66787e095127116d91dea2143db65c7bb1e232f617aa5957c0d9d2a3f23a7", size = 3033284, upload_time = "2025-04-12T17:48:50.189Z" }, + { url = "https://files.pythonhosted.org/packages/b7/cb/6faf3fb1e7705fd2db74e070f3bf6f88693601b0ed8e81049a8266de4754/pillow-11.2.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9622e3b6c1d8b551b6e6f21873bdcc55762b4b2126633014cea1803368a9aa16", size = 4445826, upload_time = "2025-04-12T17:48:52.346Z" }, + { url = "https://files.pythonhosted.org/packages/07/94/8be03d50b70ca47fb434a358919d6a8d6580f282bbb7af7e4aa40103461d/pillow-11.2.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63b5dff3a68f371ea06025a1a6966c9a1e1ee452fc8020c2cd0ea41b83e9037b", size = 4527329, upload_time = "2025-04-12T17:48:54.403Z" }, + { url = "https://files.pythonhosted.org/packages/fd/a4/bfe78777076dc405e3bd2080bc32da5ab3945b5a25dc5d8acaa9de64a162/pillow-11.2.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:31df6e2d3d8fc99f993fd253e97fae451a8db2e7207acf97859732273e108406", size = 4549049, upload_time = "2025-04-12T17:48:56.383Z" }, + { url = "https://files.pythonhosted.org/packages/65/4d/eaf9068dc687c24979e977ce5677e253624bd8b616b286f543f0c1b91662/pillow-11.2.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:062b7a42d672c45a70fa1f8b43d1d38ff76b63421cbbe7f88146b39e8a558d91", size = 4635408, upload_time = "2025-04-12T17:48:58.782Z" }, + { url = "https://files.pythonhosted.org/packages/1d/26/0fd443365d9c63bc79feb219f97d935cd4b93af28353cba78d8e77b61719/pillow-11.2.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4eb92eca2711ef8be42fd3f67533765d9fd043b8c80db204f16c8ea62ee1a751", size = 4614863, upload_time = "2025-04-12T17:49:00.709Z" }, + { url = "https://files.pythonhosted.org/packages/49/65/dca4d2506be482c2c6641cacdba5c602bc76d8ceb618fd37de855653a419/pillow-11.2.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:f91ebf30830a48c825590aede79376cb40f110b387c17ee9bd59932c961044f9", size = 4692938, upload_time = "2025-04-12T17:49:02.946Z" }, + { url = "https://files.pythonhosted.org/packages/b3/92/1ca0c3f09233bd7decf8f7105a1c4e3162fb9142128c74adad0fb361b7eb/pillow-11.2.1-cp313-cp313t-win32.whl", hash = "sha256:e0b55f27f584ed623221cfe995c912c61606be8513bfa0e07d2c674b4516d9dd", size = 2335774, upload_time = "2025-04-12T17:49:04.889Z" }, + { url = "https://files.pythonhosted.org/packages/a5/ac/77525347cb43b83ae905ffe257bbe2cc6fd23acb9796639a1f56aa59d191/pillow-11.2.1-cp313-cp313t-win_amd64.whl", hash = "sha256:36d6b82164c39ce5482f649b437382c0fb2395eabc1e2b1702a6deb8ad647d6e", size = 2681895, upload_time = "2025-04-12T17:49:06.635Z" }, + { url = "https://files.pythonhosted.org/packages/67/32/32dc030cfa91ca0fc52baebbba2e009bb001122a1daa8b6a79ad830b38d3/pillow-11.2.1-cp313-cp313t-win_arm64.whl", hash = "sha256:225c832a13326e34f212d2072982bb1adb210e0cc0b153e688743018c94a2681", size = 2417234, upload_time = "2025-04-12T17:49:08.399Z" }, ] [[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 } +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 }, + { 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]] @@ -251,34 +272,34 @@ 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 } +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 }, + { 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 } +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 }, + { 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 = "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 } +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 }, + { 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 = "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 } +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 }, + { 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" }, ]