diff --git a/02_activities/assignments/Assignment_3/All_Lakes_GLIP_1976_2024.xlsx b/02_activities/assignments/Assignment_3/All_Lakes_GLIP_1976_2024.xlsx new file mode 100644 index 000000000..9f22a6129 Binary files /dev/null and b/02_activities/assignments/Assignment_3/All_Lakes_GLIP_1976_2024.xlsx differ diff --git a/02_activities/assignments/Assignment_3/Assignment3_graph1.png b/02_activities/assignments/Assignment_3/Assignment3_graph1.png new file mode 100644 index 000000000..bc20c531f Binary files /dev/null and b/02_activities/assignments/Assignment_3/Assignment3_graph1.png differ diff --git a/02_activities/assignments/Assignment_3/Assignment3_graph2.png b/02_activities/assignments/Assignment_3/Assignment3_graph2.png new file mode 100644 index 000000000..ef560c62a Binary files /dev/null and b/02_activities/assignments/Assignment_3/Assignment3_graph2.png differ diff --git a/02_activities/assignments/Assignment_3/Assignment3_vis1_Qs.md b/02_activities/assignments/Assignment_3/Assignment3_vis1_Qs.md new file mode 100644 index 000000000..aa54fbd6e --- /dev/null +++ b/02_activities/assignments/Assignment_3/Assignment3_vis1_Qs.md @@ -0,0 +1,31 @@ +Assignment 3 + +The first image for the averaged trends across all lakes. +![Annual Chlorophyll trends](Assignment_3/Assignment3_graph1.png) + +Answering the questions + +1. What software did you use to create your data visualization? +This graph was created with python code, mostly codes learned on this course. + +2. Who is your intended audience? +The intended audience can be policy makers or researchers. + +3. What information or message are you trying to convey with your visualization? +This graph is to indicate the water nutrients in all lakes in Ontario has been declining for many years. + +4. What aspects of design did you consider when making your visualization? How did you apply them? With what elements of your plots? +Since I wanted to demonstrate the trend/dynamics of thewater nutrients, I thought the graph needs to efficiently visualize the changes between years. Therefore, my initial decision was using a line graph. Then, I was thinking how to make the graph more convincing and rigrous. Considering mean values might be biased or strongly influenced by skewness or outliers, I included a graph of median value in additional to the means. The consistency of these two graphs should support the integrity of this declining pattern. Besides, since the sampling across years was also not consistent, I included a thrid subplot to show the pattern after accounting for the different sampling frequency in different years. Lastly, I did not include error bars for the plotted averages. In this context, variability primarily reflects seasonal effects rather than random measurement error. Because seasonal variability was not the focus of this figure, including error bars could obscure the primary interannual trend and reduce interpretability. + +5. How did you ensure that your data visualizations are reproducible? If the tool you used to make your data visualization is not reproducible, how will this impact your data visualization? +Neither the data nor my graph production procedure involves randomizations, so it should be reproducible as long as the people use the same dataset and my code. + +6. How did you ensure that your data visualization is accessible? +This graph was not designed for general public. For the intended audience, terms like 'mean' or 'median' should be interpretable. Appropriate units were also included for y axis to ensure the interpretablity. + +7. Who are the individuals and communities who might be impacted by your visualization? +This graph indicates the declining trend of water neutrients, which should be an issue considered by environment departments. + +8. How did you choose which features of your chosen dataset to include or exclude from your visualization? +What ‘underwater labour’ contributed to your final data visualization product? +Chlorophyll was chosen as the representative indicator of water nutrients because it was the most consistently measured chemical in the dataset and is widely recognized as a proxy for nutrient levels. Including all measured chemicals would reduce interpretability for non-specialist readers and introduce redundancy, unless there were reason to expect opposing patterns between chlorophyll and other nutrient indicators. \ No newline at end of file diff --git a/02_activities/assignments/Assignment_3/Assignment3_vis2_Qs.md b/02_activities/assignments/Assignment_3/Assignment3_vis2_Qs.md new file mode 100644 index 000000000..0e299501a --- /dev/null +++ b/02_activities/assignments/Assignment_3/Assignment3_vis2_Qs.md @@ -0,0 +1,32 @@ +Assignment 3 + +The first image for the averaged trends across all lakes. +![Lake Specific water nutrient changes](Assignment3_graph2.png) + + +Answering the questions + +1. What software did you use to create your data visualization? +This graph was created with R code, with Rstudio. + +2. Who is your intended audience? +The intended audience can be policy makers or general publics. + +3. What information or message are you trying to convey with your visualization? +The main message is that Ontario's major lakes have distinct, relatively stable neutrient identities, indicating a strong spatial heterogeneity (instead of uniform pattern) across lakes. Besides, the overall color from warmer to colder indicates a long-term decline in neutrient(despite some modest improvement in certain lakes recently), consistent with the pattern revealed in the first visualization. + +4. What aspects of design did you consider when making your visualization? How did you apply them? With what elements of your plots? +This visualization is designed to highlight the distinct nutrient profiles of different lakes and the spatial heterogeneity of lakes across Ontario. Because temporal dynamics are not the primary focus, a heatmap was chosen instead of a multi-line graph, as it conveys the main patterns more clearly and visually. To avoid unintended emphasis from color choices, non-salient colors were selected, with warmer tones used to indicate higher nutrient levels. A numeric legend was placed on the right of the heatmap to facilitate quantitative interpretation of the patterns. + +5. How did you ensure that your data visualizations are reproducible? If the tool you used to make your data visualization is not reproducible, how will this impact your data visualization? +Same to the first visualization. Neither the data nor my graph production procedure involves randomizations, so it should be reproducible as long as the people use the same dataset and my code. + +6. How did you ensure that your data visualization is accessible? +Since the intended audience of this graph includes general public, it does not include any stats or academic term. The title was also more straightforward and message-conveying. + +7. Who are the individuals and communities who might be impacted by your visualization? +This graph highlights the distinct nutrient profiles of individual lakes, which may be of interest to water companies when evaluating potential water sources for their products. It also demonstrates substantial geographic variation in lake nutrient levels across Ontario. Investigating how nutrient concentrations relate to geographic factors—and identifying the drivers of these patterns—could help environmental agencies develop more targeted and effective strategies to improve water quality in different regions. + +8. How did you choose which features of your chosen dataset to include or exclude from your visualization? +What ‘underwater labour’ contributed to your final data visualization product? +This graph continues to use chlorophyll as a representative indicator of water nutrients. Log₁₀-transformed values, rather than raw concentrations, were displayed to improve visual interpretability. The transformation reduces the influence of extreme values, allowing variation across both low- and high-concentration lakes to be represented more evenly and preventing highly nutrient-rich lakes from dominating the color scale. diff --git a/02_activities/assignments/Assignment_3/Graphing_code_assg3.R b/02_activities/assignments/Assignment_3/Graphing_code_assg3.R new file mode 100644 index 000000000..62652b4d4 --- /dev/null +++ b/02_activities/assignments/Assignment_3/Graphing_code_assg3.R @@ -0,0 +1,48 @@ + +###### Assignment 3 Second Visualization R codes + +### import necessary pacakges +library(readr) +library(dplyr) +library(ggplot2) +library(stringr) +library(readxl) +library(viridis) + +### load the dataset +URL = "https://files.ontario.ca/moe_mapping/downloads/2Water/GLIP/All_Lakes_GLIP_1976_2024.xlsx" +temp_file <- tempfile(fileext = ".xlsx") + +download.file(URL, temp_file, mode = "wb") +water_quality <- read_excel(temp_file) + + +## obtain the data related to chlorophyll +chl <- water_quality %>% + filter(str_detect(tolower(PARAMETER),"chlorophyll")) %>% + filter(!is.na(RESULT_VALUE), !is.na(YEAR), !is.na(LAKE)) + +## calculate the lake-specific chlorophyll means + +lake_depend_chl_mean <- chl %>% + group_by(LAKE, YEAR) %>% + summarise(mean_chl = mean(RESULT_VALUE), .groups = "drop") %>% + mutate(log10_chl = log10(mean_chl)) + + +## create a heatmap graph for lake nutrient stability +ggplot(lake_depend_chl_mean, aes(x = YEAR, y = LAKE, fill = log10_chl)) + + geom_tile() + + scale_fill_viridis_c(name = "log10 Chlorophyll (mg/L)", na.value = "white") + + labs( + title = "Lake Specific Nutrient Enrichment (Chlorophyll) Dynamics from 1976 to 2024", + x = "Year", + y = "Lake" + ) + + theme_minimal(base_size = 12) + + + + + + diff --git a/02_activities/assignments/Assignment_3/Graphing_code_assg3.ipynb b/02_activities/assignments/Assignment_3/Graphing_code_assg3.ipynb new file mode 100644 index 000000000..cb3ecc74e --- /dev/null +++ b/02_activities/assignments/Assignment_3/Graphing_code_assg3.ipynb @@ -0,0 +1,162 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "e1b9c62e", + "metadata": {}, + "source": [ + "Assignment 3 Python Code for visualization" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "78c2ccbc", + "metadata": {}, + "outputs": [], + "source": [ + "# import the necessary pacagkes\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# load the data\n", + "URL = \"https://files.ontario.ca/moe_mapping/downloads/2Water/GLIP/All_Lakes_GLIP_1976_2024.xlsx\"\n", + "water_quality = pd.read_excel(URL)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "64e990e4", + "metadata": {}, + "outputs": [], + "source": [ + "# Filter the data to select chlorphyLL\n", + "chl = water_quality[water_quality['PARAMETER'].str.contains('chlorophyll', case = False, na = False)]\n", + "chl = chl.dropna(subset = ['RESULT_VALUE', 'YEAR'])\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "15bcd0dc", + "metadata": {}, + "outputs": [], + "source": [ + "# Compute the Annual Mean Values\n", + "Year_mean = (chl.groupby('YEAR')['RESULT_VALUE']\n", + " .mean()\n", + " .reset_index()\n", + " )\n", + "\n", + "# Compute the Annual Median Values\n", + "Year_median = (chl.groupby('YEAR')['RESULT_VALUE']\n", + " .median()\n", + " .reset_index())\n", + "\n", + "# Compute the station-based balancing mean values\n", + "Station_year = (chl.groupby(['STATION','YEAR'])['RESULT_VALUE']\n", + " .mean()\n", + " .reset_index()\n", + " )\n", + "\n", + "Balanced_mean = (Station_year.groupby('YEAR')['RESULT_VALUE']\n", + " .mean()\n", + " .reset_index()\n", + " )\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "751819c2", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABdEAAAHvCAYAAAC7apbEAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAA4kFJREFUeJzs3Qd8W9X1wPHjGcdJPJLYcfYmZA/CSKBsCDOMQimjoQvKSFkt5Q+UEVIKlF0omxJmKVAIe4QwAwkhi+y9p+0Mr8Tb/8+58pNlW5Il+cnSk3/fz8cfy9Kz9HT17HvfeeeeG1dTU1MjAAAAAAAAAACgkfjGdwEAAAAAAAAAAEUQHQAAAAAAAAAAHwiiAwAAAAAAAADgA0F0AAAAAAAAAAB8IIgOAAAAAAAAAIAPBNEBAAAAAAAAAPCBIDoAAAAAAAAAAD4QRAcAAAAAAAAAwAeC6AAAAAAAAAAA+EAQHQAARFxcXFxQX3369JFo9+tf/9rs61dffSXRYv78+XLyySdLRkaGuy03btwY8O9/8skncvHFF0vfvn0lNTXVfB100EFy6aWXyueff15vW33f+vzaDsFwyucbqGnTppn3dOedd4b1dY499livn6e2pd4fbftrqayslGeeeUZOPPFE6dKli7Rp00a6du0qZ5xxhrz++utSU1MjTufrs7GTfl7h/NxC/XsGAACIFYmR3gEAAAANwjY0a9YsWbdunYwcOVJGjRpV77HOnTu34N7FhqKiIpk4caLs2LHDBPV69uxpgmLt27cP6HcvvPBC+fDDD83vjBgxQg455BDz2OrVq+Wll14yX7/97W/l+eefb4F3g1iwefNmOf3002Xp0qUmeH7UUUdJdna2bN26VT799FNzvD311FPyzjvvSGZmZrNfTy8Q/OY3v5E77rijxS4SAAAAIDYQRAcAABGnwa2GNONRg+hnn302AS8b/Pjjj7J9+3b51a9+ZQLewWQKn3baaeaixuGHH26C5EOHDq23jQbSb731VvN5wdnOOeccOeKII8J+oaqgoECOOeYYk5197rnnytNPP13vNTXArsfq119/Laeeeqo5/hITnXnqon9v+/fvl+7du0d6VwAAABAiZ45EAQAAEBTN7lX9+vUL6vcefvhhE8DUwPkXX3xhSrg0pCVd3nzzTbMdnC09Pd18hdtNN91kAugnnHCCvPHGG5KQkFDv8V69esnHH38shx56qPzwww/y4IMPmt9xIn0vAAAAcDZqogMAAEfxrNmsGdC//OUvTS3l+Ph4mT59unu7FStWmGx2LVuipSJ0G9122bJlfp9TM2AvuugiycrKkrZt28rYsWPl/fff97k///73v025Gd02JyfHvObOnTt9br9p0ya58sorTeBZA9IdO3Y0Aeo//OEPsmrVqqAyxB977DFTVkVLsujXYYcdJk8++aRUVVW5t9NApb43q2TOlClT3PXQm6pvrM+jQXT1wAMPeA2ge9JyHN7s2bPHvGetda2fxbBhw0y7Beujjz6Sk046yZT2SElJkUGDBsn//d//yb59+3zWiNbPdu7cuabGdqdOncx9ixYtcm/38ssvm/1OS0sz709L1dxzzz1SWlrqt869Bnj197TddX80m3rlypV+9z+QY+utt94yr6Hb+XL55ZebbV544QWxm6+a6J7v/ZtvvpHjjz9eOnToYNpNS7IsX7484NfYvXu3vPjii+b2o48+2iiAbtHP47777nNv53lce36+S5YsMaWK9HNo166dyXD//vvv6z2XljDSUi4N/was51Baf/0///mP+T+hf5/6XPoe9e/qiSeekOrq6pCOM3810bXddJ0B/dtITk422eqTJk0K6n9BKL799luZPHmyOd613fR4PPjgg33+Pfmjtet13/U9LF68uN7f/c033yxDhgwxz68XZ/S4+eCDD7w+j5b1ueSSS8yFPv371r8T/d963XXXmTJUAAAAkUQQHQAAOJIGmTRLVQNXxx13nAmuJiUlmcc0mD569GgTqNMSERpg08UwNeNVA2IaBPRGg1zWc2qGrD6HLsapJWU+++yzRttrwOl3v/udCYQdffTR5kuDq1r2RANIDW3ZskXGjBlj6jwrLZOiAT8NLD/77LMye/bsgN67BhPPOussueaaa2Tt2rXmvevCjBrEveqqq+T88893B/w0yKsB9COPPNL8rDXm9Wf98hX0tixcuNAErzQoqAuShkIDcuPGjZP33ntPfvazn5n90P3UdnvuuecCfh4NbGuwVoO4euFAPxMtkaFBVm3vXbt2ef09/az1fepnq+9BPyO94KL0woUGLPUz1n3T59f3e8stt5hgnz6/N5p1r9uWl5fLmWeeKd26dTN1u7UMyk8//dSsY0s/V70Y8/bbb5tgc0PFxcUm0KvB6wsuuEBamgb9rbbR41cDp3pxQ9vV38UjTzqjQS9S6LHYsDRQQ1rKRYO8+rl4XvywzJs3z7S7tu+ECRNk4MCB5jPXNtagrOWUU07x+jegXwMGDDD3l5WVmYsXukiufgb62epz64W3q6++2tT898XfcebLzJkzzYWU1157zbTjz3/+c1MTXi/s6P0a6A6XG2+80ZRm0uC2tpV+FRYWmr8nfR96nAVCL9rpRQC9WKkzUTQor/QCpwbA7733Xjlw4ID5bPQ96awCbVe9KOdJ/xb07+PVV181Fy7070DbvqKiwlxACfdFBQAAgCbVAAAARKFLL720Rocqd9xxR737X3jhBXO/fk2ePLmmsrKy3uMbNmyoadeuXU379u1rZsyYUe+xjz/+uCYpKammZ8+eNWVlZV6f809/+lNNVVWV+7GHH37Y3P+zn/2s3nPNnj27Ji4uriY9Pb1mwYIF7vuLiopqjj/+ePfzffnll+7Hbr/9dvd+N7Rp06aatWvXBtQ2DzzwgHmeoUOH1uzcudN9//bt22sGDRpkHnvssce8tlvD9vTn2WefNb9zwgkn1ARL37fVBr/85S9rSktL3Y+988475v5evXo1+j29v3fv3vXumzt3bk18fLz5TOfMmeO+X5/z/PPPN7/z85//vN7v6Pu0Xv++++5r9DpvvfWWeaxbt241q1evdt+/b9++mqOOOsp9LHg7JvXrmWeecd9fXV1dc9NNN5n7R40aVe93Qjm2brnlFnO/Pu7rM7nyyivr3X/MMceY+/X496RtGcyQ39dxYr13/Rz087Po35+2vT522223BfQat956q9n+d7/7XUDbH3fccWb75557zuvn++ijj9bb/rrrrjP3/+pXvwrovVkqKirMeysvL693f25ubs3YsWPN73799ddBHWe+Ppvi4uKaLl26mPsff/zxets/9NBD5v4ePXrUHDhwoMn28dyPQP++P/roI3Ose9K/p8svv9w8z5QpU7z+PetxYJk6daq5b/jw4eZ/j+cxoffpY//4xz/qHfNr1qyp6du3b01CQkLNkiVL3PdPmjTJbK//2xpasWJFvecHAACIBDLRAQCAI+lUf82abFgK4pFHHpGSkhKTuazZ2Z40G1XLimhG+IcfftjoOTVb/e9//3u9DFIteaCZsHPmzDGZx54ZmBrzvfbaa01WsUUzv7XMipZvaCgvL898b7hf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KPPnz5f33nvPNJw///nPxY3Cjal+HzVqlLmgWLBggSxdulQKCgrMhUZJSUncxXTRokXmj+mXX35pjrWwsNDEx/ccvP/+++U///mPzJkzx6z/zTffmPPQo7i42FwQaBy/+OIL+dvf/mb+mE6ZMsW7zq5du8w6l19+uaxdu1buu+8+ue222+Sjjz4St7ERU4+f/exncuONN/p9n7y8PLNdPcdXrVolTzzxhPzud7+Tl19+WdzERjw1PnpB8eabb5rf69/85jcyefJkee655+LyHI1ntMv20S7bRbtsH+2yXbTLsIl22T7aZbtol+2jXbaLdjlMDmKS/te8++673sdbt241z23YsMH7XHFxsdOsWTNn5syZ3ufq1avnvP7666W21bhxY+86mzZtMttZsWKFd/mHH37oJCQkOPv373fcrCox/eijj5zExETn+PHj3nWOHTtm4jV//nwn3mOak5Njjn3RokXe2CQnJztz5szxrrN582azzrJly8zjDz74wMQ0Ozvbu86LL77opKWlOfn5+ebxQw895PTs2bPUe914443O6NGjHberSkx9TZ061enbt2+551944QWnUaNG3hirSZMmOV27dnXcLNx4etx5553O5Zdf7n0cz+dovKJdto922T7aZftol+2iXYYttMv20S7bR7tsH+2yXbTLlUNP9BoiPz/ffNdhJR6JiYlmWMSSJUu8zw0bNkxmz55thkvpnd9Zs2aZoRiXXXaZWb5s2TIzfGrQoEHe1+idZN3W8uXLJZ6EElNdR++q63Meur6u51knnmN6/Phx871x48beO5J6J1OP36Nbt27Stm1bEyel33v37i3Nmzf3rjN69Ghz51fvYnrW8d2GZx3PNtysKjENha576aWXSkpKSqmYak+co0ePilvZiqdux7ONeD9HcQ7tsn20y+GjXbaPdtku2mVECu2yfbTL4aNdto922S7a5cohiV5DeE5aHSKhv8A6tOfxxx+Xffv2yYEDB7zrvf322+aE19pF2pDdfvvt8u6775r6Q54acDrswletWrXMya7L4kkoMR0yZIiplTdp0iQ5ffq0GeLywAMPmCFWnnXiNaZ60alDci6++GLp1auXeU6PVxsdvUjypRcAnljod98LAs9yz7KK1tELhzNnzohbVTWmoQgl7m5jK546jFI/bPkOOY3XcxTn0S7bR7scHtpl+2iX7aJdRiTRLttHuxwe2mX7aJftol2uPJLoNURycrL885//lG3btpnGRieY+Oyzz2TMmDHmDq7Hb3/7Wzl27Jh88sknsnLlSpk4caKp8ab13lD5mOrkKFoHSutB6YQKDRs2NPHVyRF84x6PtI7Whg0bTO8N2EFMYy+e+vrrrrtOpk6damrFAR60y/bRLoeHNsQ+YmoX7TIiiXbZPtrl8NCG2EdM7aJdrrxaVXgNokRnEtaC/DpMQu8Ca4M1ePBg77AonRVbC/nrSdyzZ0/znE4SsnjxYjNRyEsvvWRmIc/JySm1XZ3lWYez6bJ4EyymSv8QaGxzc3PNHXO9I6ex6tixo1kejzG9++67vRPCtG7d2vu8Hq/GUS+cfO9c6kzOnljo96+++qrU9jwzPfuuU3Y2bX2ss7nr7M9uFE5MQxEopp5lbmMjnps2bZIrrrjC3FF/+OGHSy2Lx3MU5dEu20e7XDW0y/bRLttFu4zqQLtsH+1y1dAu20e7bBftctXE963BGkrv7mrjlZmZae6e610fpcOnVNk7vklJSd6ZsYcOHWp+GbTOkYfOoq3LtTGMV4Fi6qtp06bmj4jGSy8Cvv/978ddTHW+Gf1jq0Me9Rg7dOhQ7iJLeyx8+umn3ue0hlhWVpaJk9Lv2tPD90JKZ4XWP6Y9evTwruO7Dc86nm24iY2YhkLX1QZSh6/6xrRr167SqFEjcQtb8dR6gzqT+C233CJ/+MMfyr1PPJ2jCI522T7a5dDQLttHu2wX7TKigXbZPtrl0NAu20e7bBftcpgqOREpIujEiRPOmjVrzJf+1zz99NPm5z179pjlb7/9tvPZZ585O3bscObOneu0a9fOueGGG7yvLygocDp16uQMHz7cWb58ubN9+3bnySefNLNev//++971rrzySqd///5mnSVLljidO3d2xo4d67hRuDFVr7zyipmFWOP5xhtvmNnbJ06cWGqdeInpHXfc4TRs2NBZuHChc+DAAe/X6dOnvev84he/cNq2bessWLDAWblypTN06FDz5VFUVOT06tXLGTVqlLN27Vpn3rx5Zob3yZMne9fZuXOnU7duXefBBx80M0E///zzTlJSklnXbWzEVGVmZppz+/bbb3e6dOniPe89s4vrLNvNmzd3br75ZmfDhg3OrFmzTIxnzJjhuImNeK5fv96ckzfddFOpbejM5fF4jsYz2mX7aJftol22j3bZLtpl2ES7bB/tsl20y/bRLttFuxwekugxRBsnbbjKft1yyy1m+fTp053WrVs7ycnJ5oR++OGHvb/wHtu2bTONWkZGhjlh+/Tp47z++uul1jl8+LBpsOrXr++kpaU548ePN42nG9mI6aRJk8wfU11HG/unnnrKKSkpicuY+oulfr366qvedc6cOePceeedTqNGjcw5+IMf/MD8QfW1e/duZ8yYMU6dOnWcpk2bOv/zP//jFBYWlvu/69evn5OSkuJ07Nix1Hu4ia2Yjhgxwu92du3a5V1n3bp1ziWXXOLUrl3badWqlfOnP/3JcRsb8Zw6darfbeiHhng8R+MZ7bJ9tMt20S7bR7tsF+0ybKJdto922S7aZftol+2iXQ5Pgv4Tbm92AAAAAAAAAADciJroAAAAAAAAAAAEQBIdAAAAAAAAAIAASKIDAAAAAAAAABAASXQAAAAAAAAAAAIgiQ4AAAAAAAAAQAAk0QEAAAAAAAAACIAkOgAAAAAAAAAAAZBEBwAAAAAAAAAgAJLoAAAAAAAAAAAEQBIdQKU5jiMjR46U0aNHl1v2wgsvSHp6uuzbty8q+wYAQLyhXQYAIHbQLgPuRBIdQKUlJCTIq6++KsuXL5cZM2Z4n9+1a5c89NBD8te//lVat25t9T0LCwutbg8AALegXQYAIHbQLgPuRBIdQJW0adNGpk+fLg888IC5GNC77bfeequMGjVK+vfvL2PGjJH69etL8+bN5eabb5bc3Fzva+fNmyeXXHKJuQPfpEkTueaaa2THjh3e5bt37zYXHrNnz5YRI0ZIamqq/P3vf4/SkQIAEPtolwEAiB20y4D7JDj6mwwAVXT99dfL8ePH5YYbbpBp06bJxo0bpWfPnnLbbbfJuHHj5MyZMzJp0iQpKiqSBQsWmNe88847ptHv06ePnDx5UqZMmWIuBNauXSuJiYnm5w4dOkj79u3lqaeeMhcZemFwwQUXRPtwAQCIabTLAADEDtplwD1IogMIS05OjrkIOHLkiGnsN2zYIIsXL5aPPvrIu47We9M78Vu3bpUuXbqU24bedW/WrJmsX79eevXq5b0oePbZZ+Xee++t5iMCAKDmol0GACB20C4D7kE5FwBhycjIkNtvv126d+9u7rKvW7dOPvvsMzM0zfPVrVs3s65nCFpmZqaMHTtWOnbsKGlpaeYOusrKyiq17UGDBkXhiAAAqLlolwEAiB20y4B71Ir2DgCo+WrVqmW+lA43u/baa+Xxxx8vt55neJkub9euncycOVNatmwpJSUl5o56QUFBqfXr1atXTUcAAIB70C4DABA7aJcBdyCJDsCqAQMGmGFqerfcc6Hg6/Dhw2aYml4QDB8+3Dy3ZMmSKOwpAADuR7sMAEDsoF0Gai7KuQCw6q677jL13nT42YoVK8yQNK33Nn78eCkuLpZGjRqZGcZffvll2b59u5k8ZeLEidHebQAAXIl2GQCA2EG7DNRcJNEBWKXDzZYuXWouAEaNGiW9e/eW++67T9LT081M4vo1a9YsWbVqlRmSdv/998sTTzwR7d0GAMCVaJcBAIgdtMtAzZXgOI4T7Z0AAAAAAAAAACAW0RMdAAAAAAAAAIAASKIDAAAAAAAAABAASXQAAAAAAAAAAAIgiQ4AAAAAAAAAQAAk0QEAAAAAAAAACIAkOgAAAAAAAAAAAZBEBwAAAAAAAAAgAJLoAAAAAAAAAAAEQBIdAAAAAAAAAIAASKIDAAAAAAAAABAASXQAAAAAAAAAAAIgiQ4AAAAAAAAAgPj3/wHjM2ReBMUEQwAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Create the subplots of the mean, median, and balanced mean values\n", + "fig, ax = plt.subplots(1, 3, figsize = (15,5), sharey = True)\n", + "\n", + "# plot for mean\n", + "ax[0].plot(\n", + " Year_mean['YEAR'],\n", + " Year_mean['RESULT_VALUE'],\n", + " marker = 'o',\n", + " linewidth = 2\n", + ")\n", + "ax[0].set_title('Year Means')\n", + "ax[0].set_xlabel('Year')\n", + "ax[0].set_ylabel('Chlorophyll(mg/L)')\n", + "#ax[0].set_yscale('log')\n", + "ax[0].grid(alpha = 0.3)\n", + "\n", + "# plot for median\n", + "ax[1].plot(\n", + " Year_median['YEAR'],\n", + " Year_median['RESULT_VALUE'],\n", + " marker = 'o',\n", + " linewidth = 2\n", + ")\n", + "ax[1].set_title('Year Medians')\n", + "ax[1].set_xlabel('Year')\n", + "ax[1].set_ylabel('Chlorophyll(mg/L)')\n", + "#ax[1].set_yscale('log')\n", + "ax[1].grid(alpha = 0.3)\n", + "\n", + "# plot the balanced values\n", + "ax[2].plot(\n", + " Balanced_mean['YEAR'],\n", + " Balanced_mean['RESULT_VALUE'],\n", + " marker = 'o',\n", + " linewidth = 2\n", + ")\n", + "ax[2].set_title('Station_balanced Mean')\n", + "ax[2].set_xlabel('Year')\n", + "ax[2].set_ylabel('Chlorophyll(mg/L)')\n", + "#ax[2].set_yscale('log')\n", + "ax[2].grid(alpha = 0.3)\n", + "\n", + "fig.suptitle(\n", + " 'Trends of Chlorophyll in Ontario Lakes',\n", + " fontsize = 15\n", + ")\n", + "\n", + "plt.tight_layout(rect = [0, 0, 1, 0.93])\n", + "plt.show()\n", + "\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "visualization-env", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/02_activities/assignments/Assignment_3/assignment_3.md b/02_activities/assignments/Assignment_3/assignment_3.md new file mode 100644 index 000000000..99341bc82 --- /dev/null +++ b/02_activities/assignments/Assignment_3/assignment_3.md @@ -0,0 +1,69 @@ +# Data Visualization + +## Assignment 3: Final Project + +### Requirements: +- We will finish this class by giving you the chance to use what you have learned in a practical context, by creating data visualizations from raw data. +- Choose a dataset of interest from the [City of Toronto’s Open Data Portal](https://www.toronto.ca/city-government/data-research-maps/open-data/) or [Ontario’s Open Data Catalogue](https://data.ontario.ca/). +- Using Python and one other data visualization software (Excel or free alternative, Tableau Public, any other tool you prefer), create two distinct visualizations from your dataset of choice. +- For each visualization, describe and justify: + > What software did you use to create your data visualization? + + > Who is your intended audience? + + > What information or message are you trying to convey with your visualization? + + > What aspects of design did you consider when making your visualization? How did you apply them? With what elements of your plots? + + > How did you ensure that your data visualizations are reproducible? If the tool you used to make your data visualization is not reproducible, how will this impact your data visualization? + + > How did you ensure that your data visualization is accessible? + + > Who are the individuals and communities who might be impacted by your visualization? + + > How did you choose which features of your chosen dataset to include or exclude from your visualization? + + > What ‘underwater labour’ contributed to your final data visualization product? + +- This assignment is intentionally open-ended - you are free to create static or dynamic data visualizations, maps, or whatever form of data visualization you think best communicates your information to your audience of choice! +- Total word count should not exceed **(as a maximum) 1000 words** + +### Why am I doing this assignment?: +- This ongoing assignment ensures active participation in the course, and assesses the learning outcomes: +* Create and customize data visualizations from start to finish in Python +* Apply general design principles to create accessible and equitable data visualizations +* Use data visualization to tell a story +- This would be a great project to include in your GitHub Portfolio – put in the effort to make it something worthy of showing prospective employers! + +### Rubric: + +| Component | Scoring | Requirement | +|-------------------|----------|-----------------------------------------------------------------------------| +| Data Visualizations | Complete/Incomplete | - Data visualizations are distinct from each other
- Data visualizations are clearly identified
- Different sources/rationales (text with two images of data, if visualizations are labeled)
- High-quality visuals (high resolution and clear data)
- Data visualizations follow best practices of accessibility | +| Written Explanations | Complete/Incomplete | - All questions from assignment description are answered for each visualization
- Explanations are supported by course content or scholarly sources, where needed | +| Code | Complete/Incomplete | - All code is included as an appendix with your final submissions
- Code is clearly commented and reproducible | + +## Submission Information + +🚨 **Please review our [Assignment Submission Guide](https://github.com/UofT-DSI/onboarding/blob/main/onboarding_documents/submissions.md)** 🚨 for detailed instructions on how to format, branch, and submit your work. Following these guidelines is crucial for your submissions to be evaluated correctly. + +### Submission Parameters: +* Submission Due Date: `23:59 - 11/02/2025` +* The branch name for your repo should be: `assignment-3` +* What to submit for this assignment: + * A folder/directory containing: + * This file (assignment_3.md) + * Two data visualizations + * Two markdown files for each both visualizations with their written descriptions. + * Link to your dataset of choice. + * Complete and commented code as an appendix (for your visualization made with Python, and for the other, if relevant) +* What the pull request link should look like for this assignment: `https://github.com//visualization/pull/` + * Open a private window in your browser. Copy and paste the link to your pull request into the address bar. Make sure you can see your pull request properly. This helps the technical facilitator and learning support staff review your submission easily. + +Checklist: +- [ ] Create a branch called `assignment-3`. +- [ ] Ensure that the repository is public. +- [ ] Review [the PR description guidelines](https://github.com/UofT-DSI/onboarding/blob/main/onboarding_documents/submissions.md#guidelines-for-pull-request-descriptions) and adhere to them. +- [ ] Verify that the link is accessible in a private browser window. + +If you encounter any difficulties or have questions, please don't hesitate to reach out to our team via our Slack. Our Technical Facilitators and Learning Support staff are here to help you navigate any challenges. diff --git a/pyproject.toml b/pyproject.toml index 39957ccc6..7b83eb699 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,6 +6,7 @@ dependencies = [ "ipykernel>=6.30.1", "matplotlib>=3.10.6", "numpy>=2.3.3", + "openpyxl>=3.1.5", "pandas>=2.3.2", "seaborn>=0.13.2", ] diff --git a/uv.lock b/uv.lock index 2106c5e0a..5cbe9908b 100644 --- a/uv.lock +++ b/uv.lock @@ -1,11 +1,117 @@ version = 1 -revision = 2 +revision = 3 requires-python = ">=3.11" resolution-markers = [ "python_full_version >= '3.12'", "python_full_version < '3.12'", ] +[[package]] +name = "appnope" +version = "0.1.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/35/5d/752690df9ef5b76e169e68d6a129fa6d08a7100ca7f754c89495db3c6019/appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee", size = 4170, upload-time = "2024-02-06T09:43:11.258Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321, upload-time = "2024-02-06T09:43:09.663Z" }, +] + +[[package]] +name = "asttokens" +version = "3.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/be/a5/8e3f9b6771b0b408517c82d97aed8f2036509bc247d46114925e32fe33f0/asttokens-3.0.1.tar.gz", hash = "sha256:71a4ee5de0bde6a31d64f6b13f2293ac190344478f081c3d1bccfcf5eacb0cb7", size = 62308, upload-time = "2025-11-15T16:43:48.578Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/39/e7eaf1799466a4aef85b6a4fe7bd175ad2b1c6345066aa33f1f58d4b18d0/asttokens-3.0.1-py3-none-any.whl", hash = "sha256:15a3ebc0f43c2d0a50eeafea25e19046c68398e487b9f1f5b517f7c0f40f976a", size = 27047, upload-time = "2025-11-15T16:43:16.109Z" }, +] + +[[package]] +name = "cffi" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser", marker = "implementation_name != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588, upload-time = "2025-09-08T23:24:04.541Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/12/4a/3dfd5f7850cbf0d06dc84ba9aa00db766b52ca38d8b86e3a38314d52498c/cffi-2.0.0-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:b4c854ef3adc177950a8dfc81a86f5115d2abd545751a304c5bcf2c2c7283cfe", size = 184344, upload-time = "2025-09-08T23:22:26.456Z" }, + { url = "https://files.pythonhosted.org/packages/4f/8b/f0e4c441227ba756aafbe78f117485b25bb26b1c059d01f137fa6d14896b/cffi-2.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2de9a304e27f7596cd03d16f1b7c72219bd944e99cc52b84d0145aefb07cbd3c", size = 180560, upload-time = "2025-09-08T23:22:28.197Z" }, + { url = "https://files.pythonhosted.org/packages/b1/b7/1200d354378ef52ec227395d95c2576330fd22a869f7a70e88e1447eb234/cffi-2.0.0-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:baf5215e0ab74c16e2dd324e8ec067ef59e41125d3eade2b863d294fd5035c92", size = 209613, upload-time = "2025-09-08T23:22:29.475Z" }, + { url = "https://files.pythonhosted.org/packages/b8/56/6033f5e86e8cc9bb629f0077ba71679508bdf54a9a5e112a3c0b91870332/cffi-2.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:730cacb21e1bdff3ce90babf007d0a0917cc3e6492f336c2f0134101e0944f93", size = 216476, upload-time = "2025-09-08T23:22:31.063Z" }, + { url = "https://files.pythonhosted.org/packages/dc/7f/55fecd70f7ece178db2f26128ec41430d8720f2d12ca97bf8f0a628207d5/cffi-2.0.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:6824f87845e3396029f3820c206e459ccc91760e8fa24422f8b0c3d1731cbec5", size = 203374, upload-time = "2025-09-08T23:22:32.507Z" }, + { url = "https://files.pythonhosted.org/packages/84/ef/a7b77c8bdc0f77adc3b46888f1ad54be8f3b7821697a7b89126e829e676a/cffi-2.0.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9de40a7b0323d889cf8d23d1ef214f565ab154443c42737dfe52ff82cf857664", size = 202597, upload-time = "2025-09-08T23:22:34.132Z" }, + { url = "https://files.pythonhosted.org/packages/d7/91/500d892b2bf36529a75b77958edfcd5ad8e2ce4064ce2ecfeab2125d72d1/cffi-2.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8941aaadaf67246224cee8c3803777eed332a19d909b47e29c9842ef1e79ac26", size = 215574, upload-time = "2025-09-08T23:22:35.443Z" }, + { url = "https://files.pythonhosted.org/packages/44/64/58f6255b62b101093d5df22dcb752596066c7e89dd725e0afaed242a61be/cffi-2.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a05d0c237b3349096d3981b727493e22147f934b20f6f125a3eba8f994bec4a9", size = 218971, upload-time = "2025-09-08T23:22:36.805Z" }, + { url = "https://files.pythonhosted.org/packages/ab/49/fa72cebe2fd8a55fbe14956f9970fe8eb1ac59e5df042f603ef7c8ba0adc/cffi-2.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:94698a9c5f91f9d138526b48fe26a199609544591f859c870d477351dc7b2414", size = 211972, upload-time = "2025-09-08T23:22:38.436Z" }, + { url = "https://files.pythonhosted.org/packages/0b/28/dd0967a76aab36731b6ebfe64dec4e981aff7e0608f60c2d46b46982607d/cffi-2.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:5fed36fccc0612a53f1d4d9a816b50a36702c28a2aa880cb8a122b3466638743", size = 217078, upload-time = "2025-09-08T23:22:39.776Z" }, + { url = "https://files.pythonhosted.org/packages/2b/c0/015b25184413d7ab0a410775fdb4a50fca20f5589b5dab1dbbfa3baad8ce/cffi-2.0.0-cp311-cp311-win32.whl", hash = "sha256:c649e3a33450ec82378822b3dad03cc228b8f5963c0c12fc3b1e0ab940f768a5", size = 172076, upload-time = "2025-09-08T23:22:40.95Z" }, + { url = "https://files.pythonhosted.org/packages/ae/8f/dc5531155e7070361eb1b7e4c1a9d896d0cb21c49f807a6c03fd63fc877e/cffi-2.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:66f011380d0e49ed280c789fbd08ff0d40968ee7b665575489afa95c98196ab5", size = 182820, upload-time = "2025-09-08T23:22:42.463Z" }, + { url = "https://files.pythonhosted.org/packages/95/5c/1b493356429f9aecfd56bc171285a4c4ac8697f76e9bbbbb105e537853a1/cffi-2.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c6638687455baf640e37344fe26d37c404db8b80d037c3d29f58fe8d1c3b194d", size = 177635, upload-time = "2025-09-08T23:22:43.623Z" }, + { url = "https://files.pythonhosted.org/packages/ea/47/4f61023ea636104d4f16ab488e268b93008c3d0bb76893b1b31db1f96802/cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d", size = 185271, upload-time = "2025-09-08T23:22:44.795Z" }, + { url = "https://files.pythonhosted.org/packages/df/a2/781b623f57358e360d62cdd7a8c681f074a71d445418a776eef0aadb4ab4/cffi-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c", size = 181048, upload-time = "2025-09-08T23:22:45.938Z" }, + { url = "https://files.pythonhosted.org/packages/ff/df/a4f0fbd47331ceeba3d37c2e51e9dfc9722498becbeec2bd8bc856c9538a/cffi-2.0.0-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe", size = 212529, upload-time = "2025-09-08T23:22:47.349Z" }, + { url = "https://files.pythonhosted.org/packages/d5/72/12b5f8d3865bf0f87cf1404d8c374e7487dcf097a1c91c436e72e6badd83/cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062", size = 220097, upload-time = "2025-09-08T23:22:48.677Z" }, + { url = "https://files.pythonhosted.org/packages/c2/95/7a135d52a50dfa7c882ab0ac17e8dc11cec9d55d2c18dda414c051c5e69e/cffi-2.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e", size = 207983, upload-time = "2025-09-08T23:22:50.06Z" }, + { url = "https://files.pythonhosted.org/packages/3a/c8/15cb9ada8895957ea171c62dc78ff3e99159ee7adb13c0123c001a2546c1/cffi-2.0.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037", size = 206519, upload-time = "2025-09-08T23:22:51.364Z" }, + { url = "https://files.pythonhosted.org/packages/78/2d/7fa73dfa841b5ac06c7b8855cfc18622132e365f5b81d02230333ff26e9e/cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba", size = 219572, upload-time = "2025-09-08T23:22:52.902Z" }, + { url = "https://files.pythonhosted.org/packages/07/e0/267e57e387b4ca276b90f0434ff88b2c2241ad72b16d31836adddfd6031b/cffi-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94", size = 222963, upload-time = "2025-09-08T23:22:54.518Z" }, + { url = "https://files.pythonhosted.org/packages/b6/75/1f2747525e06f53efbd878f4d03bac5b859cbc11c633d0fb81432d98a795/cffi-2.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187", size = 221361, upload-time = "2025-09-08T23:22:55.867Z" }, + { url = "https://files.pythonhosted.org/packages/7b/2b/2b6435f76bfeb6bbf055596976da087377ede68df465419d192acf00c437/cffi-2.0.0-cp312-cp312-win32.whl", hash = "sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18", size = 172932, upload-time = "2025-09-08T23:22:57.188Z" }, + { url = "https://files.pythonhosted.org/packages/f8/ed/13bd4418627013bec4ed6e54283b1959cf6db888048c7cf4b4c3b5b36002/cffi-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5", size = 183557, upload-time = "2025-09-08T23:22:58.351Z" }, + { url = "https://files.pythonhosted.org/packages/95/31/9f7f93ad2f8eff1dbc1c3656d7ca5bfd8fb52c9d786b4dcf19b2d02217fa/cffi-2.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6", size = 177762, upload-time = "2025-09-08T23:22:59.668Z" }, + { url = "https://files.pythonhosted.org/packages/4b/8d/a0a47a0c9e413a658623d014e91e74a50cdd2c423f7ccfd44086ef767f90/cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb", size = 185230, upload-time = "2025-09-08T23:23:00.879Z" }, + { url = "https://files.pythonhosted.org/packages/4a/d2/a6c0296814556c68ee32009d9c2ad4f85f2707cdecfd7727951ec228005d/cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca", size = 181043, upload-time = "2025-09-08T23:23:02.231Z" }, + { url = "https://files.pythonhosted.org/packages/b0/1e/d22cc63332bd59b06481ceaac49d6c507598642e2230f201649058a7e704/cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b", size = 212446, upload-time = "2025-09-08T23:23:03.472Z" }, + { url = "https://files.pythonhosted.org/packages/a9/f5/a2c23eb03b61a0b8747f211eb716446c826ad66818ddc7810cc2cc19b3f2/cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b", size = 220101, upload-time = "2025-09-08T23:23:04.792Z" }, + { url = "https://files.pythonhosted.org/packages/f2/7f/e6647792fc5850d634695bc0e6ab4111ae88e89981d35ac269956605feba/cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2", size = 207948, upload-time = "2025-09-08T23:23:06.127Z" }, + { url = "https://files.pythonhosted.org/packages/cb/1e/a5a1bd6f1fb30f22573f76533de12a00bf274abcdc55c8edab639078abb6/cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3", size = 206422, upload-time = "2025-09-08T23:23:07.753Z" }, + { url = "https://files.pythonhosted.org/packages/98/df/0a1755e750013a2081e863e7cd37e0cdd02664372c754e5560099eb7aa44/cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26", size = 219499, upload-time = "2025-09-08T23:23:09.648Z" }, + { url = "https://files.pythonhosted.org/packages/50/e1/a969e687fcf9ea58e6e2a928ad5e2dd88cc12f6f0ab477e9971f2309b57c/cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c", size = 222928, upload-time = "2025-09-08T23:23:10.928Z" }, + { url = "https://files.pythonhosted.org/packages/36/54/0362578dd2c9e557a28ac77698ed67323ed5b9775ca9d3fe73fe191bb5d8/cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b", size = 221302, upload-time = "2025-09-08T23:23:12.42Z" }, + { url = "https://files.pythonhosted.org/packages/eb/6d/bf9bda840d5f1dfdbf0feca87fbdb64a918a69bca42cfa0ba7b137c48cb8/cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27", size = 172909, upload-time = "2025-09-08T23:23:14.32Z" }, + { url = "https://files.pythonhosted.org/packages/37/18/6519e1ee6f5a1e579e04b9ddb6f1676c17368a7aba48299c3759bbc3c8b3/cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75", size = 183402, upload-time = "2025-09-08T23:23:15.535Z" }, + { url = "https://files.pythonhosted.org/packages/cb/0e/02ceeec9a7d6ee63bb596121c2c8e9b3a9e150936f4fbef6ca1943e6137c/cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91", size = 177780, upload-time = "2025-09-08T23:23:16.761Z" }, + { url = "https://files.pythonhosted.org/packages/92/c4/3ce07396253a83250ee98564f8d7e9789fab8e58858f35d07a9a2c78de9f/cffi-2.0.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5", size = 185320, upload-time = "2025-09-08T23:23:18.087Z" }, + { url = "https://files.pythonhosted.org/packages/59/dd/27e9fa567a23931c838c6b02d0764611c62290062a6d4e8ff7863daf9730/cffi-2.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13", size = 181487, upload-time = "2025-09-08T23:23:19.622Z" }, + { url = "https://files.pythonhosted.org/packages/d6/43/0e822876f87ea8a4ef95442c3d766a06a51fc5298823f884ef87aaad168c/cffi-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b", size = 220049, upload-time = "2025-09-08T23:23:20.853Z" }, + { url = "https://files.pythonhosted.org/packages/b4/89/76799151d9c2d2d1ead63c2429da9ea9d7aac304603de0c6e8764e6e8e70/cffi-2.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c", size = 207793, upload-time = "2025-09-08T23:23:22.08Z" }, + { url = "https://files.pythonhosted.org/packages/bb/dd/3465b14bb9e24ee24cb88c9e3730f6de63111fffe513492bf8c808a3547e/cffi-2.0.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef", size = 206300, upload-time = "2025-09-08T23:23:23.314Z" }, + { url = "https://files.pythonhosted.org/packages/47/d9/d83e293854571c877a92da46fdec39158f8d7e68da75bf73581225d28e90/cffi-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775", size = 219244, upload-time = "2025-09-08T23:23:24.541Z" }, + { url = "https://files.pythonhosted.org/packages/2b/0f/1f177e3683aead2bb00f7679a16451d302c436b5cbf2505f0ea8146ef59e/cffi-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205", size = 222828, upload-time = "2025-09-08T23:23:26.143Z" }, + { url = "https://files.pythonhosted.org/packages/c6/0f/cafacebd4b040e3119dcb32fed8bdef8dfe94da653155f9d0b9dc660166e/cffi-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1", size = 220926, upload-time = "2025-09-08T23:23:27.873Z" }, + { url = "https://files.pythonhosted.org/packages/3e/aa/df335faa45b395396fcbc03de2dfcab242cd61a9900e914fe682a59170b1/cffi-2.0.0-cp314-cp314-win32.whl", hash = "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f", size = 175328, upload-time = "2025-09-08T23:23:44.61Z" }, + { url = "https://files.pythonhosted.org/packages/bb/92/882c2d30831744296ce713f0feb4c1cd30f346ef747b530b5318715cc367/cffi-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25", size = 185650, upload-time = "2025-09-08T23:23:45.848Z" }, + { url = "https://files.pythonhosted.org/packages/9f/2c/98ece204b9d35a7366b5b2c6539c350313ca13932143e79dc133ba757104/cffi-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad", size = 180687, upload-time = "2025-09-08T23:23:47.105Z" }, + { url = "https://files.pythonhosted.org/packages/3e/61/c768e4d548bfa607abcda77423448df8c471f25dbe64fb2ef6d555eae006/cffi-2.0.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9", size = 188773, upload-time = "2025-09-08T23:23:29.347Z" }, + { url = "https://files.pythonhosted.org/packages/2c/ea/5f76bce7cf6fcd0ab1a1058b5af899bfbef198bea4d5686da88471ea0336/cffi-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d", size = 185013, upload-time = "2025-09-08T23:23:30.63Z" }, + { url = "https://files.pythonhosted.org/packages/be/b4/c56878d0d1755cf9caa54ba71e5d049479c52f9e4afc230f06822162ab2f/cffi-2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c", size = 221593, upload-time = "2025-09-08T23:23:31.91Z" }, + { url = "https://files.pythonhosted.org/packages/e0/0d/eb704606dfe8033e7128df5e90fee946bbcb64a04fcdaa97321309004000/cffi-2.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8", size = 209354, upload-time = "2025-09-08T23:23:33.214Z" }, + { url = "https://files.pythonhosted.org/packages/d8/19/3c435d727b368ca475fb8742ab97c9cb13a0de600ce86f62eab7fa3eea60/cffi-2.0.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc", size = 208480, upload-time = "2025-09-08T23:23:34.495Z" }, + { url = "https://files.pythonhosted.org/packages/d0/44/681604464ed9541673e486521497406fadcc15b5217c3e326b061696899a/cffi-2.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592", size = 221584, upload-time = "2025-09-08T23:23:36.096Z" }, + { url = "https://files.pythonhosted.org/packages/25/8e/342a504ff018a2825d395d44d63a767dd8ebc927ebda557fecdaca3ac33a/cffi-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512", size = 224443, upload-time = "2025-09-08T23:23:37.328Z" }, + { url = "https://files.pythonhosted.org/packages/e1/5e/b666bacbbc60fbf415ba9988324a132c9a7a0448a9a8f125074671c0f2c3/cffi-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4", size = 223437, upload-time = "2025-09-08T23:23:38.945Z" }, + { url = "https://files.pythonhosted.org/packages/a0/1d/ec1a60bd1a10daa292d3cd6bb0b359a81607154fb8165f3ec95fe003b85c/cffi-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e", size = 180487, upload-time = "2025-09-08T23:23:40.423Z" }, + { url = "https://files.pythonhosted.org/packages/bf/41/4c1168c74fac325c0c8156f04b6749c8b6a8f405bbf91413ba088359f60d/cffi-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6", size = 191726, upload-time = "2025-09-08T23:23:41.742Z" }, + { url = "https://files.pythonhosted.org/packages/ae/3a/dbeec9d1ee0844c679f6bb5d6ad4e9f198b1224f4e7a32825f47f6192b0c/cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9", size = 184195, upload-time = "2025-09-08T23:23:43.004Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "comm" +version = "0.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4c/13/7d740c5849255756bc17888787313b61fd38a0a8304fc4f073dfc46122aa/comm-0.2.3.tar.gz", hash = "sha256:2dc8048c10962d55d7ad693be1e7045d891b7ce8d999c97963a5e3e99c055971", size = 6319, upload-time = "2025-07-25T14:02:04.452Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/60/97/891a0971e1e4a8c5d2b20bbe0e524dc04548d2307fee33cdeba148fd4fc7/comm-0.2.3-py3-none-any.whl", hash = "sha256:c615d91d75f7f04f095b30d1c1711babd43bdc6419c1be9886a85f2f4e489417", size = 7294, upload-time = "2025-07-25T14:02:02.896Z" }, +] + [[package]] name = "contourpy" version = "1.3.3" @@ -97,6 +203,58 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321, upload-time = "2023-10-07T05:32:16.783Z" }, ] +[[package]] +name = "debugpy" +version = "1.8.20" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/b7/cd8080344452e4874aae67c40d8940e2b4d47b01601a8fd9f44786c757c7/debugpy-1.8.20.tar.gz", hash = "sha256:55bc8701714969f1ab89a6d5f2f3d40c36f91b2cbe2f65d98bf8196f6a6a2c33", size = 1645207, upload-time = "2026-01-29T23:03:28.199Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/51/56/c3baf5cbe4dd77427fd9aef99fcdade259ad128feeb8a786c246adb838e5/debugpy-1.8.20-cp311-cp311-macosx_15_0_universal2.whl", hash = "sha256:eada6042ad88fa1571b74bd5402ee8b86eded7a8f7b827849761700aff171f1b", size = 2208318, upload-time = "2026-01-29T23:03:36.481Z" }, + { url = "https://files.pythonhosted.org/packages/9a/7d/4fa79a57a8e69fe0d9763e98d1110320f9ecd7f1f362572e3aafd7417c9d/debugpy-1.8.20-cp311-cp311-manylinux_2_34_x86_64.whl", hash = "sha256:7de0b7dfeedc504421032afba845ae2a7bcc32ddfb07dae2c3ca5442f821c344", size = 3171493, upload-time = "2026-01-29T23:03:37.775Z" }, + { url = "https://files.pythonhosted.org/packages/7d/f2/1e8f8affe51e12a26f3a8a8a4277d6e60aa89d0a66512f63b1e799d424a4/debugpy-1.8.20-cp311-cp311-win32.whl", hash = "sha256:773e839380cf459caf73cc533ea45ec2737a5cc184cf1b3b796cd4fd98504fec", size = 5209240, upload-time = "2026-01-29T23:03:39.109Z" }, + { url = "https://files.pythonhosted.org/packages/d5/92/1cb532e88560cbee973396254b21bece8c5d7c2ece958a67afa08c9f10dc/debugpy-1.8.20-cp311-cp311-win_amd64.whl", hash = "sha256:1f7650546e0eded1902d0f6af28f787fa1f1dbdbc97ddabaf1cd963a405930cb", size = 5233481, upload-time = "2026-01-29T23:03:40.659Z" }, + { url = "https://files.pythonhosted.org/packages/14/57/7f34f4736bfb6e00f2e4c96351b07805d83c9a7b33d28580ae01374430f7/debugpy-1.8.20-cp312-cp312-macosx_15_0_universal2.whl", hash = "sha256:4ae3135e2089905a916909ef31922b2d733d756f66d87345b3e5e52b7a55f13d", size = 2550686, upload-time = "2026-01-29T23:03:42.023Z" }, + { url = "https://files.pythonhosted.org/packages/ab/78/b193a3975ca34458f6f0e24aaf5c3e3da72f5401f6054c0dfd004b41726f/debugpy-1.8.20-cp312-cp312-manylinux_2_34_x86_64.whl", hash = "sha256:88f47850a4284b88bd2bfee1f26132147d5d504e4e86c22485dfa44b97e19b4b", size = 4310588, upload-time = "2026-01-29T23:03:43.314Z" }, + { url = "https://files.pythonhosted.org/packages/c1/55/f14deb95eaf4f30f07ef4b90a8590fc05d9e04df85ee379712f6fb6736d7/debugpy-1.8.20-cp312-cp312-win32.whl", hash = "sha256:4057ac68f892064e5f98209ab582abfee3b543fb55d2e87610ddc133a954d390", size = 5331372, upload-time = "2026-01-29T23:03:45.526Z" }, + { url = "https://files.pythonhosted.org/packages/a1/39/2bef246368bd42f9bd7cba99844542b74b84dacbdbea0833e610f384fee8/debugpy-1.8.20-cp312-cp312-win_amd64.whl", hash = "sha256:a1a8f851e7cf171330679ef6997e9c579ef6dd33c9098458bd9986a0f4ca52e3", size = 5372835, upload-time = "2026-01-29T23:03:47.245Z" }, + { url = "https://files.pythonhosted.org/packages/15/e2/fc500524cc6f104a9d049abc85a0a8b3f0d14c0a39b9c140511c61e5b40b/debugpy-1.8.20-cp313-cp313-macosx_15_0_universal2.whl", hash = "sha256:5dff4bb27027821fdfcc9e8f87309a28988231165147c31730128b1c983e282a", size = 2539560, upload-time = "2026-01-29T23:03:48.738Z" }, + { url = "https://files.pythonhosted.org/packages/90/83/fb33dcea789ed6018f8da20c5a9bc9d82adc65c0c990faed43f7c955da46/debugpy-1.8.20-cp313-cp313-manylinux_2_34_x86_64.whl", hash = "sha256:84562982dd7cf5ebebfdea667ca20a064e096099997b175fe204e86817f64eaf", size = 4293272, upload-time = "2026-01-29T23:03:50.169Z" }, + { url = "https://files.pythonhosted.org/packages/a6/25/b1e4a01bfb824d79a6af24b99ef291e24189080c93576dfd9b1a2815cd0f/debugpy-1.8.20-cp313-cp313-win32.whl", hash = "sha256:da11dea6447b2cadbf8ce2bec59ecea87cc18d2c574980f643f2d2dfe4862393", size = 5331208, upload-time = "2026-01-29T23:03:51.547Z" }, + { url = "https://files.pythonhosted.org/packages/13/f7/a0b368ce54ffff9e9028c098bd2d28cfc5b54f9f6c186929083d4c60ba58/debugpy-1.8.20-cp313-cp313-win_amd64.whl", hash = "sha256:eb506e45943cab2efb7c6eafdd65b842f3ae779f020c82221f55aca9de135ed7", size = 5372930, upload-time = "2026-01-29T23:03:53.585Z" }, + { url = "https://files.pythonhosted.org/packages/33/2e/f6cb9a8a13f5058f0a20fe09711a7b726232cd5a78c6a7c05b2ec726cff9/debugpy-1.8.20-cp314-cp314-macosx_15_0_universal2.whl", hash = "sha256:9c74df62fc064cd5e5eaca1353a3ef5a5d50da5eb8058fcef63106f7bebe6173", size = 2538066, upload-time = "2026-01-29T23:03:54.999Z" }, + { url = "https://files.pythonhosted.org/packages/c5/56/6ddca50b53624e1ca3ce1d1e49ff22db46c47ea5fb4c0cc5c9b90a616364/debugpy-1.8.20-cp314-cp314-manylinux_2_34_x86_64.whl", hash = "sha256:077a7447589ee9bc1ff0cdf443566d0ecf540ac8aa7333b775ebcb8ce9f4ecad", size = 4269425, upload-time = "2026-01-29T23:03:56.518Z" }, + { url = "https://files.pythonhosted.org/packages/c5/d9/d64199c14a0d4c476df46c82470a3ce45c8d183a6796cfb5e66533b3663c/debugpy-1.8.20-cp314-cp314-win32.whl", hash = "sha256:352036a99dd35053b37b7803f748efc456076f929c6a895556932eaf2d23b07f", size = 5331407, upload-time = "2026-01-29T23:03:58.481Z" }, + { url = "https://files.pythonhosted.org/packages/e0/d9/1f07395b54413432624d61524dfd98c1a7c7827d2abfdb8829ac92638205/debugpy-1.8.20-cp314-cp314-win_amd64.whl", hash = "sha256:a98eec61135465b062846112e5ecf2eebb855305acc1dfbae43b72903b8ab5be", size = 5372521, upload-time = "2026-01-29T23:03:59.864Z" }, + { url = "https://files.pythonhosted.org/packages/e0/c3/7f67dea8ccf8fdcb9c99033bbe3e90b9e7395415843accb81428c441be2d/debugpy-1.8.20-py2.py3-none-any.whl", hash = "sha256:5be9bed9ae3be00665a06acaa48f8329d2b9632f15fd09f6a9a8c8d9907e54d7", size = 5337658, upload-time = "2026-01-29T23:04:17.404Z" }, +] + +[[package]] +name = "decorator" +version = "5.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711, upload-time = "2025-02-24T04:41:34.073Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190, upload-time = "2025-02-24T04:41:32.565Z" }, +] + +[[package]] +name = "et-xmlfile" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d3/38/af70d7ab1ae9d4da450eeec1fa3918940a5fafb9055e934af8d6eb0c2313/et_xmlfile-2.0.0.tar.gz", hash = "sha256:dab3f4764309081ce75662649be815c4c9081e88f0837825f90fd28317d4da54", size = 17234, upload-time = "2024-10-25T17:25:40.039Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/8b/5fe2cc11fee489817272089c4203e679c63b570a5aaeb18d852ae3cbba6a/et_xmlfile-2.0.0-py3-none-any.whl", hash = "sha256:7a91720bc756843502c3b7504c77b8fe44217c85c537d85037f0f536151b2caa", size = 18059, upload-time = "2024-10-25T17:25:39.051Z" }, +] + +[[package]] +name = "executing" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cc/28/c14e053b6762b1044f34a13aab6859bbf40456d37d23aa286ac24cfd9a5d/executing-2.2.1.tar.gz", hash = "sha256:3632cc370565f6648cc328b32435bd120a1e4ebb20c77e3fdde9a13cd1e533c4", size = 1129488, upload-time = "2025-09-01T09:48:10.866Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl", hash = "sha256:760643d3452b4d777d295bb167ccc74c64a81df23fb5e08eff250c425a4b2017", size = 28317, upload-time = "2025-09-01T09:48:08.5Z" }, +] + [[package]] name = "fonttools" version = "4.59.2" @@ -146,6 +304,105 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/65/a4/d2f7be3c86708912c02571db0b550121caab8cd88a3c0aacb9cfa15ea66e/fonttools-4.59.2-py3-none-any.whl", hash = "sha256:8bd0f759020e87bb5d323e6283914d9bf4ae35a7307dafb2cbd1e379e720ad37", size = 1132315, upload-time = "2025-08-27T16:40:28.984Z" }, ] +[[package]] +name = "ipykernel" +version = "7.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "appnope", marker = "sys_platform == 'darwin'" }, + { name = "comm" }, + { name = "debugpy" }, + { name = "ipython" }, + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "matplotlib-inline" }, + { name = "nest-asyncio" }, + { name = "packaging" }, + { name = "psutil" }, + { name = "pyzmq" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b9/a4/4948be6eb88628505b83a1f2f40d90254cab66abf2043b3c40fa07dfce0f/ipykernel-7.1.0.tar.gz", hash = "sha256:58a3fc88533d5930c3546dc7eac66c6d288acde4f801e2001e65edc5dc9cf0db", size = 174579, upload-time = "2025-10-27T09:46:39.471Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a3/17/20c2552266728ceba271967b87919664ecc0e33efca29c3efc6baf88c5f9/ipykernel-7.1.0-py3-none-any.whl", hash = "sha256:763b5ec6c5b7776f6a8d7ce09b267693b4e5ce75cb50ae696aaefb3c85e1ea4c", size = 117968, upload-time = "2025-10-27T09:46:37.805Z" }, +] + +[[package]] +name = "ipython" +version = "9.10.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "decorator" }, + { name = "ipython-pygments-lexers" }, + { name = "jedi" }, + { name = "matplotlib-inline" }, + { name = "pexpect", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "prompt-toolkit" }, + { name = "pygments" }, + { name = "stack-data" }, + { name = "traitlets" }, + { name = "typing-extensions", marker = "python_full_version < '3.12'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a6/60/2111715ea11f39b1535bed6024b7dec7918b71e5e5d30855a5b503056b50/ipython-9.10.0.tar.gz", hash = "sha256:cd9e656be97618a0676d058134cd44e6dc7012c0e5cb36a9ce96a8c904adaf77", size = 4426526, upload-time = "2026-02-02T10:00:33.594Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3d/aa/898dec789a05731cd5a9f50605b7b44a72bd198fd0d4528e11fc610177cc/ipython-9.10.0-py3-none-any.whl", hash = "sha256:c6ab68cc23bba8c7e18e9b932797014cc61ea7fd6f19de180ab9ba73e65ee58d", size = 622774, upload-time = "2026-02-02T10:00:31.503Z" }, +] + +[[package]] +name = "ipython-pygments-lexers" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393, upload-time = "2025-01-17T11:24:34.505Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074, upload-time = "2025-01-17T11:24:33.271Z" }, +] + +[[package]] +name = "jedi" +version = "0.19.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "parso" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/72/3a/79a912fbd4d8dd6fbb02bf69afd3bb72cf0c729bb3063c6f4498603db17a/jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0", size = 1231287, upload-time = "2024-11-11T01:41:42.873Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278, upload-time = "2024-11-11T01:41:40.175Z" }, +] + +[[package]] +name = "jupyter-client" +version = "8.8.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-core" }, + { name = "python-dateutil" }, + { name = "pyzmq" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/05/e4/ba649102a3bc3fbca54e7239fb924fd434c766f855693d86de0b1f2bec81/jupyter_client-8.8.0.tar.gz", hash = "sha256:d556811419a4f2d96c869af34e854e3f059b7cc2d6d01a9cd9c85c267691be3e", size = 348020, upload-time = "2026-01-08T13:55:47.938Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2d/0b/ceb7694d864abc0a047649aec263878acb9f792e1fec3e676f22dc9015e3/jupyter_client-8.8.0-py3-none-any.whl", hash = "sha256:f93a5b99c5e23a507b773d3a1136bd6e16c67883ccdbd9a829b0bbdb98cd7d7a", size = 107371, upload-time = "2026-01-08T13:55:45.562Z" }, +] + +[[package]] +name = "jupyter-core" +version = "5.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "platformdirs" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/02/49/9d1284d0dc65e2c757b74c6687b6d319b02f822ad039e5c512df9194d9dd/jupyter_core-5.9.1.tar.gz", hash = "sha256:4d09aaff303b9566c3ce657f580bd089ff5c91f5f89cf7d8846c3cdf465b5508", size = 89814, upload-time = "2025-10-16T19:19:18.444Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/e7/80988e32bf6f73919a113473a604f5a8f09094de312b9d52b79c2df7612b/jupyter_core-5.9.1-py3-none-any.whl", hash = "sha256:ebf87fdc6073d142e114c72c9e29a9d7ca03fad818c5d300ce2adc1fb0743407", size = 29032, upload-time = "2025-10-16T19:19:16.783Z" }, +] + [[package]] name = "kiwisolver" version = "1.4.9" @@ -300,6 +557,27 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/16/53/8d8fa0ea32a8c8239e04d022f6c059ee5e1b77517769feccd50f1df43d6d/matplotlib-3.10.6-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4d6ca6ef03dfd269f4ead566ec6f3fb9becf8dab146fb999022ed85ee9f6b3eb", size = 8693933, upload-time = "2025-08-30T00:14:22.942Z" }, ] +[[package]] +name = "matplotlib-inline" +version = "0.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c7/74/97e72a36efd4ae2bccb3463284300f8953f199b5ffbc04cbbb0ec78f74b1/matplotlib_inline-0.2.1.tar.gz", hash = "sha256:e1ee949c340d771fc39e241ea75683deb94762c8fa5f2927ec57c83c4dffa9fe", size = 8110, upload-time = "2025-10-23T09:00:22.126Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/af/33/ee4519fa02ed11a94aef9559552f3b17bb863f2ecfe1a35dc7f548cde231/matplotlib_inline-0.2.1-py3-none-any.whl", hash = "sha256:d56ce5156ba6085e00a9d54fead6ed29a9c47e215cd1bba2e976ef39f5710a76", size = 9516, upload-time = "2025-10-23T09:00:20.675Z" }, +] + +[[package]] +name = "nest-asyncio" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/83/f8/51569ac65d696c8ecbee95938f89d4abf00f47d58d48f6fbabfe8f0baefe/nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe", size = 7418, upload-time = "2024-01-21T14:25:19.227Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195, upload-time = "2024-01-21T14:25:17.223Z" }, +] + [[package]] name = "numpy" version = "2.3.3" @@ -381,6 +659,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/af/11/0cc63f9f321ccf63886ac203336777140011fb669e739da36d8db3c53b98/numpy-2.3.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:2e267c7da5bf7309670523896df97f93f6e469fb931161f483cd6882b3b1a5dc", size = 12971844, upload-time = "2025-09-09T15:58:57.359Z" }, ] +[[package]] +name = "openpyxl" +version = "3.1.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "et-xmlfile" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3d/f9/88d94a75de065ea32619465d2f77b29a0469500e99012523b91cc4141cd1/openpyxl-3.1.5.tar.gz", hash = "sha256:cf0e3cf56142039133628b5acffe8ef0c12bc902d2aadd3e0fe5878dc08d1050", size = 186464, upload-time = "2024-06-28T14:03:44.161Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/da/977ded879c29cbd04de313843e76868e6e13408a94ed6b987245dc7c8506/openpyxl-3.1.5-py2.py3-none-any.whl", hash = "sha256:5282c12b107bffeef825f4617dc029afaf41d0ea60823bbb665ef3079dc79de2", size = 250910, upload-time = "2024-06-28T14:03:41.161Z" }, +] + [[package]] name = "packaging" version = "25.0" @@ -431,6 +721,27 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/cd/d7/612123674d7b17cf345aad0a10289b2a384bff404e0463a83c4a3a59d205/pandas-2.3.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:d2c3554bd31b731cd6490d94a28f3abb8dd770634a9e06eb6d2911b9827db370", size = 13186141, upload-time = "2025-08-21T10:28:05.377Z" }, ] +[[package]] +name = "parso" +version = "0.8.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d4/de/53e0bcf53d13e005bd8c92e7855142494f41171b34c2536b86187474184d/parso-0.8.5.tar.gz", hash = "sha256:034d7354a9a018bdce352f48b2a8a450f05e9d6ee85db84764e9b6bd96dafe5a", size = 401205, upload-time = "2025-08-23T15:15:28.028Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/16/32/f8e3c85d1d5250232a5d3477a2a28cc291968ff175caeadaf3cc19ce0e4a/parso-0.8.5-py2.py3-none-any.whl", hash = "sha256:646204b5ee239c396d040b90f9e272e9a8017c630092bf59980beb62fd033887", size = 106668, upload-time = "2025-08-23T15:15:25.663Z" }, +] + +[[package]] +name = "pexpect" +version = "4.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ptyprocess" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450, upload-time = "2023-11-25T09:07:26.339Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772, upload-time = "2023-11-25T06:56:14.81Z" }, +] + [[package]] name = "pillow" version = "11.3.0" @@ -515,6 +826,91 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/34/e7/ae39f538fd6844e982063c3a5e4598b8ced43b9633baa3a85ef33af8c05c/pillow-11.3.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:c84d689db21a1c397d001aa08241044aa2069e7587b398c8cc63020390b1c1b8", size = 6984598, upload-time = "2025-07-01T09:16:27.732Z" }, ] +[[package]] +name = "platformdirs" +version = "4.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cf/86/0248f086a84f01b37aaec0fa567b397df1a119f73c16f6c7a9aac73ea309/platformdirs-4.5.1.tar.gz", hash = "sha256:61d5cdcc6065745cdd94f0f878977f8de9437be93de97c1c12f853c9c0cdcbda", size = 21715, upload-time = "2025-12-05T13:52:58.638Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/28/3bfe2fa5a7b9c46fe7e13c97bda14c895fb10fa2ebf1d0abb90e0cea7ee1/platformdirs-4.5.1-py3-none-any.whl", hash = "sha256:d03afa3963c806a9bed9d5125c8f4cb2fdaf74a55ab60e5d59b3fde758104d31", size = 18731, upload-time = "2025-12-05T13:52:56.823Z" }, +] + +[[package]] +name = "prompt-toolkit" +version = "3.0.52" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wcwidth" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a1/96/06e01a7b38dce6fe1db213e061a4602dd6032a8a97ef6c1a862537732421/prompt_toolkit-3.0.52.tar.gz", hash = "sha256:28cde192929c8e7321de85de1ddbe736f1375148b02f2e17edd840042b1be855", size = 434198, upload-time = "2025-08-27T15:24:02.057Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl", hash = "sha256:9aac639a3bbd33284347de5ad8d68ecc044b91a762dc39b7c21095fcd6a19955", size = 391431, upload-time = "2025-08-27T15:23:59.498Z" }, +] + +[[package]] +name = "psutil" +version = "7.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/aa/c6/d1ddf4abb55e93cebc4f2ed8b5d6dbad109ecb8d63748dd2b20ab5e57ebe/psutil-7.2.2.tar.gz", hash = "sha256:0746f5f8d406af344fd547f1c8daa5f5c33dbc293bb8d6a16d80b4bb88f59372", size = 493740, upload-time = "2026-01-28T18:14:54.428Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/51/08/510cbdb69c25a96f4ae523f733cdc963ae654904e8db864c07585ef99875/psutil-7.2.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2edccc433cbfa046b980b0df0171cd25bcaeb3a68fe9022db0979e7aa74a826b", size = 130595, upload-time = "2026-01-28T18:14:57.293Z" }, + { url = "https://files.pythonhosted.org/packages/d6/f5/97baea3fe7a5a9af7436301f85490905379b1c6f2dd51fe3ecf24b4c5fbf/psutil-7.2.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e78c8603dcd9a04c7364f1a3e670cea95d51ee865e4efb3556a3a63adef958ea", size = 131082, upload-time = "2026-01-28T18:14:59.732Z" }, + { url = "https://files.pythonhosted.org/packages/37/d6/246513fbf9fa174af531f28412297dd05241d97a75911ac8febefa1a53c6/psutil-7.2.2-cp313-cp313t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1a571f2330c966c62aeda00dd24620425d4b0cc86881c89861fbc04549e5dc63", size = 181476, upload-time = "2026-01-28T18:15:01.884Z" }, + { url = "https://files.pythonhosted.org/packages/b8/b5/9182c9af3836cca61696dabe4fd1304e17bc56cb62f17439e1154f225dd3/psutil-7.2.2-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:917e891983ca3c1887b4ef36447b1e0873e70c933afc831c6b6da078ba474312", size = 184062, upload-time = "2026-01-28T18:15:04.436Z" }, + { url = "https://files.pythonhosted.org/packages/16/ba/0756dca669f5a9300d0cbcbfae9a4c30e446dfc7440ffe43ded5724bfd93/psutil-7.2.2-cp313-cp313t-win_amd64.whl", hash = "sha256:ab486563df44c17f5173621c7b198955bd6b613fb87c71c161f827d3fb149a9b", size = 139893, upload-time = "2026-01-28T18:15:06.378Z" }, + { url = "https://files.pythonhosted.org/packages/1c/61/8fa0e26f33623b49949346de05ec1ddaad02ed8ba64af45f40a147dbfa97/psutil-7.2.2-cp313-cp313t-win_arm64.whl", hash = "sha256:ae0aefdd8796a7737eccea863f80f81e468a1e4cf14d926bd9b6f5f2d5f90ca9", size = 135589, upload-time = "2026-01-28T18:15:08.03Z" }, + { url = "https://files.pythonhosted.org/packages/81/69/ef179ab5ca24f32acc1dac0c247fd6a13b501fd5534dbae0e05a1c48b66d/psutil-7.2.2-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:eed63d3b4d62449571547b60578c5b2c4bcccc5387148db46e0c2313dad0ee00", size = 130664, upload-time = "2026-01-28T18:15:09.469Z" }, + { url = "https://files.pythonhosted.org/packages/7b/64/665248b557a236d3fa9efc378d60d95ef56dd0a490c2cd37dafc7660d4a9/psutil-7.2.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7b6d09433a10592ce39b13d7be5a54fbac1d1228ed29abc880fb23df7cb694c9", size = 131087, upload-time = "2026-01-28T18:15:11.724Z" }, + { url = "https://files.pythonhosted.org/packages/d5/2e/e6782744700d6759ebce3043dcfa661fb61e2fb752b91cdeae9af12c2178/psutil-7.2.2-cp314-cp314t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1fa4ecf83bcdf6e6c8f4449aff98eefb5d0604bf88cb883d7da3d8d2d909546a", size = 182383, upload-time = "2026-01-28T18:15:13.445Z" }, + { url = "https://files.pythonhosted.org/packages/57/49/0a41cefd10cb7505cdc04dab3eacf24c0c2cb158a998b8c7b1d27ee2c1f5/psutil-7.2.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e452c464a02e7dc7822a05d25db4cde564444a67e58539a00f929c51eddda0cf", size = 185210, upload-time = "2026-01-28T18:15:16.002Z" }, + { url = "https://files.pythonhosted.org/packages/dd/2c/ff9bfb544f283ba5f83ba725a3c5fec6d6b10b8f27ac1dc641c473dc390d/psutil-7.2.2-cp314-cp314t-win_amd64.whl", hash = "sha256:c7663d4e37f13e884d13994247449e9f8f574bc4655d509c3b95e9ec9e2b9dc1", size = 141228, upload-time = "2026-01-28T18:15:18.385Z" }, + { url = "https://files.pythonhosted.org/packages/f2/fc/f8d9c31db14fcec13748d373e668bc3bed94d9077dbc17fb0eebc073233c/psutil-7.2.2-cp314-cp314t-win_arm64.whl", hash = "sha256:11fe5a4f613759764e79c65cf11ebdf26e33d6dd34336f8a337aa2996d71c841", size = 136284, upload-time = "2026-01-28T18:15:19.912Z" }, + { url = "https://files.pythonhosted.org/packages/e7/36/5ee6e05c9bd427237b11b3937ad82bb8ad2752d72c6969314590dd0c2f6e/psutil-7.2.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ed0cace939114f62738d808fdcecd4c869222507e266e574799e9c0faa17d486", size = 129090, upload-time = "2026-01-28T18:15:22.168Z" }, + { url = "https://files.pythonhosted.org/packages/80/c4/f5af4c1ca8c1eeb2e92ccca14ce8effdeec651d5ab6053c589b074eda6e1/psutil-7.2.2-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:1a7b04c10f32cc88ab39cbf606e117fd74721c831c98a27dc04578deb0c16979", size = 129859, upload-time = "2026-01-28T18:15:23.795Z" }, + { url = "https://files.pythonhosted.org/packages/b5/70/5d8df3b09e25bce090399cf48e452d25c935ab72dad19406c77f4e828045/psutil-7.2.2-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:076a2d2f923fd4821644f5ba89f059523da90dc9014e85f8e45a5774ca5bc6f9", size = 155560, upload-time = "2026-01-28T18:15:25.976Z" }, + { url = "https://files.pythonhosted.org/packages/63/65/37648c0c158dc222aba51c089eb3bdfa238e621674dc42d48706e639204f/psutil-7.2.2-cp36-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b0726cecd84f9474419d67252add4ac0cd9811b04d61123054b9fb6f57df6e9e", size = 156997, upload-time = "2026-01-28T18:15:27.794Z" }, + { url = "https://files.pythonhosted.org/packages/8e/13/125093eadae863ce03c6ffdbae9929430d116a246ef69866dad94da3bfbc/psutil-7.2.2-cp36-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:fd04ef36b4a6d599bbdb225dd1d3f51e00105f6d48a28f006da7f9822f2606d8", size = 148972, upload-time = "2026-01-28T18:15:29.342Z" }, + { url = "https://files.pythonhosted.org/packages/04/78/0acd37ca84ce3ddffaa92ef0f571e073faa6d8ff1f0559ab1272188ea2be/psutil-7.2.2-cp36-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b58fabe35e80b264a4e3bb23e6b96f9e45a3df7fb7eed419ac0e5947c61e47cc", size = 148266, upload-time = "2026-01-28T18:15:31.597Z" }, + { url = "https://files.pythonhosted.org/packages/b4/90/e2159492b5426be0c1fef7acba807a03511f97c5f86b3caeda6ad92351a7/psutil-7.2.2-cp37-abi3-win_amd64.whl", hash = "sha256:eb7e81434c8d223ec4a219b5fc1c47d0417b12be7ea866e24fb5ad6e84b3d988", size = 137737, upload-time = "2026-01-28T18:15:33.849Z" }, + { url = "https://files.pythonhosted.org/packages/8c/c7/7bb2e321574b10df20cbde462a94e2b71d05f9bbda251ef27d104668306a/psutil-7.2.2-cp37-abi3-win_arm64.whl", hash = "sha256:8c233660f575a5a89e6d4cb65d9f938126312bca76d8fe087b947b3a1aaac9ee", size = 134617, upload-time = "2026-01-28T18:15:36.514Z" }, +] + +[[package]] +name = "ptyprocess" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762, upload-time = "2020-12-28T15:15:30.155Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993, upload-time = "2020-12-28T15:15:28.35Z" }, +] + +[[package]] +name = "pure-eval" +version = "0.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/05/0a34433a064256a578f1783a10da6df098ceaa4a57bbeaa96a6c0352786b/pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42", size = 19752, upload-time = "2024-07-21T12:58:21.801Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842, upload-time = "2024-07-21T12:58:20.04Z" }, +] + +[[package]] +name = "pycparser" +version = "3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1b/7d/92392ff7815c21062bea51aa7b87d45576f649f16458d78b7cf94b9ab2e6/pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29", size = 103492, upload-time = "2026-01-21T14:26:51.89Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992", size = 48172, upload-time = "2026-01-21T14:26:50.693Z" }, +] + +[[package]] +name = "pygments" +version = "2.19.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, +] + [[package]] name = "pyparsing" version = "3.2.3" @@ -545,6 +941,64 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225, upload-time = "2025-03-25T02:24:58.468Z" }, ] +[[package]] +name = "pyzmq" +version = "27.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "implementation_name == 'pypy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/04/0b/3c9baedbdf613ecaa7aa07027780b8867f57b6293b6ee50de316c9f3222b/pyzmq-27.1.0.tar.gz", hash = "sha256:ac0765e3d44455adb6ddbf4417dcce460fc40a05978c08efdf2948072f6db540", size = 281750, upload-time = "2025-09-08T23:10:18.157Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/06/5d/305323ba86b284e6fcb0d842d6adaa2999035f70f8c38a9b6d21ad28c3d4/pyzmq-27.1.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:226b091818d461a3bef763805e75685e478ac17e9008f49fce2d3e52b3d58b86", size = 1333328, upload-time = "2025-09-08T23:07:45.946Z" }, + { url = "https://files.pythonhosted.org/packages/bd/a0/fc7e78a23748ad5443ac3275943457e8452da67fda347e05260261108cbc/pyzmq-27.1.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:0790a0161c281ca9723f804871b4027f2e8b5a528d357c8952d08cd1a9c15581", size = 908803, upload-time = "2025-09-08T23:07:47.551Z" }, + { url = "https://files.pythonhosted.org/packages/7e/22/37d15eb05f3bdfa4abea6f6d96eb3bb58585fbd3e4e0ded4e743bc650c97/pyzmq-27.1.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c895a6f35476b0c3a54e3eb6ccf41bf3018de937016e6e18748317f25d4e925f", size = 668836, upload-time = "2025-09-08T23:07:49.436Z" }, + { url = "https://files.pythonhosted.org/packages/b1/c4/2a6fe5111a01005fc7af3878259ce17684fabb8852815eda6225620f3c59/pyzmq-27.1.0-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5bbf8d3630bf96550b3be8e1fc0fea5cbdc8d5466c1192887bd94869da17a63e", size = 857038, upload-time = "2025-09-08T23:07:51.234Z" }, + { url = "https://files.pythonhosted.org/packages/cb/eb/bfdcb41d0db9cd233d6fb22dc131583774135505ada800ebf14dfb0a7c40/pyzmq-27.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:15c8bd0fe0dabf808e2d7a681398c4e5ded70a551ab47482067a572c054c8e2e", size = 1657531, upload-time = "2025-09-08T23:07:52.795Z" }, + { url = "https://files.pythonhosted.org/packages/ab/21/e3180ca269ed4a0de5c34417dfe71a8ae80421198be83ee619a8a485b0c7/pyzmq-27.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:bafcb3dd171b4ae9f19ee6380dfc71ce0390fefaf26b504c0e5f628d7c8c54f2", size = 2034786, upload-time = "2025-09-08T23:07:55.047Z" }, + { url = "https://files.pythonhosted.org/packages/3b/b1/5e21d0b517434b7f33588ff76c177c5a167858cc38ef740608898cd329f2/pyzmq-27.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e829529fcaa09937189178115c49c504e69289abd39967cd8a4c215761373394", size = 1894220, upload-time = "2025-09-08T23:07:57.172Z" }, + { url = "https://files.pythonhosted.org/packages/03/f2/44913a6ff6941905efc24a1acf3d3cb6146b636c546c7406c38c49c403d4/pyzmq-27.1.0-cp311-cp311-win32.whl", hash = "sha256:6df079c47d5902af6db298ec92151db82ecb557af663098b92f2508c398bb54f", size = 567155, upload-time = "2025-09-08T23:07:59.05Z" }, + { url = "https://files.pythonhosted.org/packages/23/6d/d8d92a0eb270a925c9b4dd039c0b4dc10abc2fcbc48331788824ef113935/pyzmq-27.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:190cbf120fbc0fc4957b56866830def56628934a9d112aec0e2507aa6a032b97", size = 633428, upload-time = "2025-09-08T23:08:00.663Z" }, + { url = "https://files.pythonhosted.org/packages/ae/14/01afebc96c5abbbd713ecfc7469cfb1bc801c819a74ed5c9fad9a48801cb/pyzmq-27.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:eca6b47df11a132d1745eb3b5b5e557a7dae2c303277aa0e69c6ba91b8736e07", size = 559497, upload-time = "2025-09-08T23:08:02.15Z" }, + { url = "https://files.pythonhosted.org/packages/92/e7/038aab64a946d535901103da16b953c8c9cc9c961dadcbf3609ed6428d23/pyzmq-27.1.0-cp312-abi3-macosx_10_15_universal2.whl", hash = "sha256:452631b640340c928fa343801b0d07eb0c3789a5ffa843f6e1a9cee0ba4eb4fc", size = 1306279, upload-time = "2025-09-08T23:08:03.807Z" }, + { url = "https://files.pythonhosted.org/packages/e8/5e/c3c49fdd0f535ef45eefcc16934648e9e59dace4a37ee88fc53f6cd8e641/pyzmq-27.1.0-cp312-abi3-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1c179799b118e554b66da67d88ed66cd37a169f1f23b5d9f0a231b4e8d44a113", size = 895645, upload-time = "2025-09-08T23:08:05.301Z" }, + { url = "https://files.pythonhosted.org/packages/f8/e5/b0b2504cb4e903a74dcf1ebae157f9e20ebb6ea76095f6cfffea28c42ecd/pyzmq-27.1.0-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3837439b7f99e60312f0c926a6ad437b067356dc2bc2ec96eb395fd0fe804233", size = 652574, upload-time = "2025-09-08T23:08:06.828Z" }, + { url = "https://files.pythonhosted.org/packages/f8/9b/c108cdb55560eaf253f0cbdb61b29971e9fb34d9c3499b0e96e4e60ed8a5/pyzmq-27.1.0-cp312-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:43ad9a73e3da1fab5b0e7e13402f0b2fb934ae1c876c51d0afff0e7c052eca31", size = 840995, upload-time = "2025-09-08T23:08:08.396Z" }, + { url = "https://files.pythonhosted.org/packages/c2/bb/b79798ca177b9eb0825b4c9998c6af8cd2a7f15a6a1a4272c1d1a21d382f/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:0de3028d69d4cdc475bfe47a6128eb38d8bc0e8f4d69646adfbcd840facbac28", size = 1642070, upload-time = "2025-09-08T23:08:09.989Z" }, + { url = "https://files.pythonhosted.org/packages/9c/80/2df2e7977c4ede24c79ae39dcef3899bfc5f34d1ca7a5b24f182c9b7a9ca/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_i686.whl", hash = "sha256:cf44a7763aea9298c0aa7dbf859f87ed7012de8bda0f3977b6fb1d96745df856", size = 2021121, upload-time = "2025-09-08T23:08:11.907Z" }, + { url = "https://files.pythonhosted.org/packages/46/bd/2d45ad24f5f5ae7e8d01525eb76786fa7557136555cac7d929880519e33a/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:f30f395a9e6fbca195400ce833c731e7b64c3919aa481af4d88c3759e0cb7496", size = 1878550, upload-time = "2025-09-08T23:08:13.513Z" }, + { url = "https://files.pythonhosted.org/packages/e6/2f/104c0a3c778d7c2ab8190e9db4f62f0b6957b53c9d87db77c284b69f33ea/pyzmq-27.1.0-cp312-abi3-win32.whl", hash = "sha256:250e5436a4ba13885494412b3da5d518cd0d3a278a1ae640e113c073a5f88edd", size = 559184, upload-time = "2025-09-08T23:08:15.163Z" }, + { url = "https://files.pythonhosted.org/packages/fc/7f/a21b20d577e4100c6a41795842028235998a643b1ad406a6d4163ea8f53e/pyzmq-27.1.0-cp312-abi3-win_amd64.whl", hash = "sha256:9ce490cf1d2ca2ad84733aa1d69ce6855372cb5ce9223802450c9b2a7cba0ccf", size = 619480, upload-time = "2025-09-08T23:08:17.192Z" }, + { url = "https://files.pythonhosted.org/packages/78/c2/c012beae5f76b72f007a9e91ee9401cb88c51d0f83c6257a03e785c81cc2/pyzmq-27.1.0-cp312-abi3-win_arm64.whl", hash = "sha256:75a2f36223f0d535a0c919e23615fc85a1e23b71f40c7eb43d7b1dedb4d8f15f", size = 552993, upload-time = "2025-09-08T23:08:18.926Z" }, + { url = "https://files.pythonhosted.org/packages/60/cb/84a13459c51da6cec1b7b1dc1a47e6db6da50b77ad7fd9c145842750a011/pyzmq-27.1.0-cp313-cp313-android_24_arm64_v8a.whl", hash = "sha256:93ad4b0855a664229559e45c8d23797ceac03183c7b6f5b4428152a6b06684a5", size = 1122436, upload-time = "2025-09-08T23:08:20.801Z" }, + { url = "https://files.pythonhosted.org/packages/dc/b6/94414759a69a26c3dd674570a81813c46a078767d931a6c70ad29fc585cb/pyzmq-27.1.0-cp313-cp313-android_24_x86_64.whl", hash = "sha256:fbb4f2400bfda24f12f009cba62ad5734148569ff4949b1b6ec3b519444342e6", size = 1156301, upload-time = "2025-09-08T23:08:22.47Z" }, + { url = "https://files.pythonhosted.org/packages/a5/ad/15906493fd40c316377fd8a8f6b1f93104f97a752667763c9b9c1b71d42d/pyzmq-27.1.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:e343d067f7b151cfe4eb3bb796a7752c9d369eed007b91231e817071d2c2fec7", size = 1341197, upload-time = "2025-09-08T23:08:24.286Z" }, + { url = "https://files.pythonhosted.org/packages/14/1d/d343f3ce13db53a54cb8946594e567410b2125394dafcc0268d8dda027e0/pyzmq-27.1.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:08363b2011dec81c354d694bdecaef4770e0ae96b9afea70b3f47b973655cc05", size = 897275, upload-time = "2025-09-08T23:08:26.063Z" }, + { url = "https://files.pythonhosted.org/packages/69/2d/d83dd6d7ca929a2fc67d2c3005415cdf322af7751d773524809f9e585129/pyzmq-27.1.0-cp313-cp313t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d54530c8c8b5b8ddb3318f481297441af102517602b569146185fa10b63f4fa9", size = 660469, upload-time = "2025-09-08T23:08:27.623Z" }, + { url = "https://files.pythonhosted.org/packages/3e/cd/9822a7af117f4bc0f1952dbe9ef8358eb50a24928efd5edf54210b850259/pyzmq-27.1.0-cp313-cp313t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6f3afa12c392f0a44a2414056d730eebc33ec0926aae92b5ad5cf26ebb6cc128", size = 847961, upload-time = "2025-09-08T23:08:29.672Z" }, + { url = "https://files.pythonhosted.org/packages/9a/12/f003e824a19ed73be15542f172fd0ec4ad0b60cf37436652c93b9df7c585/pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c65047adafe573ff023b3187bb93faa583151627bc9c51fc4fb2c561ed689d39", size = 1650282, upload-time = "2025-09-08T23:08:31.349Z" }, + { url = "https://files.pythonhosted.org/packages/d5/4a/e82d788ed58e9a23995cee70dbc20c9aded3d13a92d30d57ec2291f1e8a3/pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:90e6e9441c946a8b0a667356f7078d96411391a3b8f80980315455574177ec97", size = 2024468, upload-time = "2025-09-08T23:08:33.543Z" }, + { url = "https://files.pythonhosted.org/packages/d9/94/2da0a60841f757481e402b34bf4c8bf57fa54a5466b965de791b1e6f747d/pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:add071b2d25f84e8189aaf0882d39a285b42fa3853016ebab234a5e78c7a43db", size = 1885394, upload-time = "2025-09-08T23:08:35.51Z" }, + { url = "https://files.pythonhosted.org/packages/4f/6f/55c10e2e49ad52d080dc24e37adb215e5b0d64990b57598abc2e3f01725b/pyzmq-27.1.0-cp313-cp313t-win32.whl", hash = "sha256:7ccc0700cfdf7bd487bea8d850ec38f204478681ea02a582a8da8171b7f90a1c", size = 574964, upload-time = "2025-09-08T23:08:37.178Z" }, + { url = "https://files.pythonhosted.org/packages/87/4d/2534970ba63dd7c522d8ca80fb92777f362c0f321900667c615e2067cb29/pyzmq-27.1.0-cp313-cp313t-win_amd64.whl", hash = "sha256:8085a9fba668216b9b4323be338ee5437a235fe275b9d1610e422ccc279733e2", size = 641029, upload-time = "2025-09-08T23:08:40.595Z" }, + { url = "https://files.pythonhosted.org/packages/f6/fa/f8aea7a28b0641f31d40dea42d7ef003fded31e184ef47db696bc74cd610/pyzmq-27.1.0-cp313-cp313t-win_arm64.whl", hash = "sha256:6bb54ca21bcfe361e445256c15eedf083f153811c37be87e0514934d6913061e", size = 561541, upload-time = "2025-09-08T23:08:42.668Z" }, + { url = "https://files.pythonhosted.org/packages/87/45/19efbb3000956e82d0331bafca5d9ac19ea2857722fa2caacefb6042f39d/pyzmq-27.1.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:ce980af330231615756acd5154f29813d553ea555485ae712c491cd483df6b7a", size = 1341197, upload-time = "2025-09-08T23:08:44.973Z" }, + { url = "https://files.pythonhosted.org/packages/48/43/d72ccdbf0d73d1343936296665826350cb1e825f92f2db9db3e61c2162a2/pyzmq-27.1.0-cp314-cp314t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1779be8c549e54a1c38f805e56d2a2e5c009d26de10921d7d51cfd1c8d4632ea", size = 897175, upload-time = "2025-09-08T23:08:46.601Z" }, + { url = "https://files.pythonhosted.org/packages/2f/2e/a483f73a10b65a9ef0161e817321d39a770b2acf8bcf3004a28d90d14a94/pyzmq-27.1.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7200bb0f03345515df50d99d3db206a0a6bee1955fbb8c453c76f5bf0e08fb96", size = 660427, upload-time = "2025-09-08T23:08:48.187Z" }, + { url = "https://files.pythonhosted.org/packages/f5/d2/5f36552c2d3e5685abe60dfa56f91169f7a2d99bbaf67c5271022ab40863/pyzmq-27.1.0-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01c0e07d558b06a60773744ea6251f769cd79a41a97d11b8bf4ab8f034b0424d", size = 847929, upload-time = "2025-09-08T23:08:49.76Z" }, + { url = "https://files.pythonhosted.org/packages/c4/2a/404b331f2b7bf3198e9945f75c4c521f0c6a3a23b51f7a4a401b94a13833/pyzmq-27.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:80d834abee71f65253c91540445d37c4c561e293ba6e741b992f20a105d69146", size = 1650193, upload-time = "2025-09-08T23:08:51.7Z" }, + { url = "https://files.pythonhosted.org/packages/1c/0b/f4107e33f62a5acf60e3ded67ed33d79b4ce18de432625ce2fc5093d6388/pyzmq-27.1.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:544b4e3b7198dde4a62b8ff6685e9802a9a1ebf47e77478a5eb88eca2a82f2fd", size = 2024388, upload-time = "2025-09-08T23:08:53.393Z" }, + { url = "https://files.pythonhosted.org/packages/0d/01/add31fe76512642fd6e40e3a3bd21f4b47e242c8ba33efb6809e37076d9b/pyzmq-27.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:cedc4c68178e59a4046f97eca31b148ddcf51e88677de1ef4e78cf06c5376c9a", size = 1885316, upload-time = "2025-09-08T23:08:55.702Z" }, + { url = "https://files.pythonhosted.org/packages/c4/59/a5f38970f9bf07cee96128de79590bb354917914a9be11272cfc7ff26af0/pyzmq-27.1.0-cp314-cp314t-win32.whl", hash = "sha256:1f0b2a577fd770aa6f053211a55d1c47901f4d537389a034c690291485e5fe92", size = 587472, upload-time = "2025-09-08T23:08:58.18Z" }, + { url = "https://files.pythonhosted.org/packages/70/d8/78b1bad170f93fcf5e3536e70e8fadac55030002275c9a29e8f5719185de/pyzmq-27.1.0-cp314-cp314t-win_amd64.whl", hash = "sha256:19c9468ae0437f8074af379e986c5d3d7d7bfe033506af442e8c879732bedbe0", size = 661401, upload-time = "2025-09-08T23:08:59.802Z" }, + { url = "https://files.pythonhosted.org/packages/81/d6/4bfbb40c9a0b42fc53c7cf442f6385db70b40f74a783130c5d0a5aa62228/pyzmq-27.1.0-cp314-cp314t-win_arm64.whl", hash = "sha256:dc5dbf68a7857b59473f7df42650c621d7e8923fb03fa74a526890f4d33cc4d7", size = 575170, upload-time = "2025-09-08T23:09:01.418Z" }, + { url = "https://files.pythonhosted.org/packages/4c/c6/c4dcdecdbaa70969ee1fdced6d7b8f60cfabe64d25361f27ac4665a70620/pyzmq-27.1.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:18770c8d3563715387139060d37859c02ce40718d1faf299abddcdcc6a649066", size = 836265, upload-time = "2025-09-08T23:09:49.376Z" }, + { url = "https://files.pythonhosted.org/packages/3e/79/f38c92eeaeb03a2ccc2ba9866f0439593bb08c5e3b714ac1d553e5c96e25/pyzmq-27.1.0-pp311-pypy311_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:ac25465d42f92e990f8d8b0546b01c391ad431c3bf447683fdc40565941d0604", size = 800208, upload-time = "2025-09-08T23:09:51.073Z" }, + { url = "https://files.pythonhosted.org/packages/49/0e/3f0d0d335c6b3abb9b7b723776d0b21fa7f3a6c819a0db6097059aada160/pyzmq-27.1.0-pp311-pypy311_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53b40f8ae006f2734ee7608d59ed661419f087521edbfc2149c3932e9c14808c", size = 567747, upload-time = "2025-09-08T23:09:52.698Z" }, + { url = "https://files.pythonhosted.org/packages/a1/cf/f2b3784d536250ffd4be70e049f3b60981235d70c6e8ce7e3ef21e1adb25/pyzmq-27.1.0-pp311-pypy311_pp73-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f605d884e7c8be8fe1aa94e0a783bf3f591b84c24e4bc4f3e7564c82ac25e271", size = 747371, upload-time = "2025-09-08T23:09:54.563Z" }, + { url = "https://files.pythonhosted.org/packages/01/1b/5dbe84eefc86f48473947e2f41711aded97eecef1231f4558f1f02713c12/pyzmq-27.1.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:c9f7f6e13dff2e44a6afeaf2cf54cee5929ad64afaf4d40b50f93c58fc687355", size = 544862, upload-time = "2025-09-08T23:09:56.509Z" }, +] + [[package]] name = "seaborn" version = "0.13.2" @@ -568,6 +1022,57 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, ] +[[package]] +name = "stack-data" +version = "0.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asttokens" }, + { name = "executing" }, + { name = "pure-eval" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/28/e3/55dcc2cfbc3ca9c29519eb6884dd1415ecb53b0e934862d3559ddcb7e20b/stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9", size = 44707, upload-time = "2023-09-30T13:58:05.479Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521, upload-time = "2023-09-30T13:58:03.53Z" }, +] + +[[package]] +name = "tornado" +version = "6.5.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/37/1d/0a336abf618272d53f62ebe274f712e213f5a03c0b2339575430b8362ef2/tornado-6.5.4.tar.gz", hash = "sha256:a22fa9047405d03260b483980635f0b041989d8bcc9a313f8fe18b411d84b1d7", size = 513632, upload-time = "2025-12-15T19:21:03.836Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ab/a9/e94a9d5224107d7ce3cc1fab8d5dc97f5ea351ccc6322ee4fb661da94e35/tornado-6.5.4-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d6241c1a16b1c9e4cc28148b1cda97dd1c6cb4fb7068ac1bedc610768dff0ba9", size = 443909, upload-time = "2025-12-15T19:20:48.382Z" }, + { url = "https://files.pythonhosted.org/packages/db/7e/f7b8d8c4453f305a51f80dbb49014257bb7d28ccb4bbb8dd328ea995ecad/tornado-6.5.4-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:2d50f63dda1d2cac3ae1fa23d254e16b5e38153758470e9956cbc3d813d40843", size = 442163, upload-time = "2025-12-15T19:20:49.791Z" }, + { url = "https://files.pythonhosted.org/packages/ba/b5/206f82d51e1bfa940ba366a8d2f83904b15942c45a78dd978b599870ab44/tornado-6.5.4-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1cf66105dc6acb5af613c054955b8137e34a03698aa53272dbda4afe252be17", size = 445746, upload-time = "2025-12-15T19:20:51.491Z" }, + { url = "https://files.pythonhosted.org/packages/8e/9d/1a3338e0bd30ada6ad4356c13a0a6c35fbc859063fa7eddb309183364ac1/tornado-6.5.4-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50ff0a58b0dc97939d29da29cd624da010e7f804746621c78d14b80238669335", size = 445083, upload-time = "2025-12-15T19:20:52.778Z" }, + { url = "https://files.pythonhosted.org/packages/50/d4/e51d52047e7eb9a582da59f32125d17c0482d065afd5d3bc435ff2120dc5/tornado-6.5.4-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5fb5e04efa54cf0baabdd10061eb4148e0be137166146fff835745f59ab9f7f", size = 445315, upload-time = "2025-12-15T19:20:53.996Z" }, + { url = "https://files.pythonhosted.org/packages/27/07/2273972f69ca63dbc139694a3fc4684edec3ea3f9efabf77ed32483b875c/tornado-6.5.4-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9c86b1643b33a4cd415f8d0fe53045f913bf07b4a3ef646b735a6a86047dda84", size = 446003, upload-time = "2025-12-15T19:20:56.101Z" }, + { url = "https://files.pythonhosted.org/packages/d1/83/41c52e47502bf7260044413b6770d1a48dda2f0246f95ee1384a3cd9c44a/tornado-6.5.4-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:6eb82872335a53dd063a4f10917b3efd28270b56a33db69009606a0312660a6f", size = 445412, upload-time = "2025-12-15T19:20:57.398Z" }, + { url = "https://files.pythonhosted.org/packages/10/c7/bc96917f06cbee182d44735d4ecde9c432e25b84f4c2086143013e7b9e52/tornado-6.5.4-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:6076d5dda368c9328ff41ab5d9dd3608e695e8225d1cd0fd1e006f05da3635a8", size = 445392, upload-time = "2025-12-15T19:20:58.692Z" }, + { url = "https://files.pythonhosted.org/packages/0c/1a/d7592328d037d36f2d2462f4bc1fbb383eec9278bc786c1b111cbbd44cfa/tornado-6.5.4-cp39-abi3-win32.whl", hash = "sha256:1768110f2411d5cd281bac0a090f707223ce77fd110424361092859e089b38d1", size = 446481, upload-time = "2025-12-15T19:21:00.008Z" }, + { url = "https://files.pythonhosted.org/packages/d6/6d/c69be695a0a64fd37a97db12355a035a6d90f79067a3cf936ec2b1dc38cd/tornado-6.5.4-cp39-abi3-win_amd64.whl", hash = "sha256:fa07d31e0cd85c60713f2b995da613588aa03e1303d75705dca6af8babc18ddc", size = 446886, upload-time = "2025-12-15T19:21:01.287Z" }, + { url = "https://files.pythonhosted.org/packages/50/49/8dc3fd90902f70084bd2cd059d576ddb4f8bb44c2c7c0e33a11422acb17e/tornado-6.5.4-cp39-abi3-win_arm64.whl", hash = "sha256:053e6e16701eb6cbe641f308f4c1a9541f91b6261991160391bfc342e8a551a1", size = 445910, upload-time = "2025-12-15T19:21:02.571Z" }, +] + +[[package]] +name = "traitlets" +version = "5.14.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/eb/79/72064e6a701c2183016abbbfedaba506d81e30e232a68c9f0d6f6fcd1574/traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7", size = 161621, upload-time = "2024-04-19T11:11:49.746Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359, upload-time = "2024-04-19T11:11:46.763Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.15.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, +] + [[package]] name = "tzdata" version = "2025.2" @@ -582,16 +1087,29 @@ name = "visualization-env" version = "0.1.0" source = { virtual = "." } dependencies = [ + { name = "ipykernel" }, { name = "matplotlib" }, { name = "numpy" }, + { name = "openpyxl" }, { name = "pandas" }, { name = "seaborn" }, ] [package.metadata] requires-dist = [ + { name = "ipykernel", specifier = ">=6.30.1" }, { name = "matplotlib", specifier = ">=3.10.6" }, { name = "numpy", specifier = ">=2.3.3" }, + { name = "openpyxl", specifier = ">=3.1.5" }, { name = "pandas", specifier = ">=2.3.2" }, { name = "seaborn", specifier = ">=0.13.2" }, ] + +[[package]] +name = "wcwidth" +version = "0.5.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c2/62/a7c072fbfefb2980a00f99ca994279cb9ecf310cb2e6b2a4d2a28fe192b3/wcwidth-0.5.3.tar.gz", hash = "sha256:53123b7af053c74e9fe2e92ac810301f6139e64379031f7124574212fb3b4091", size = 157587, upload-time = "2026-01-31T03:52:10.92Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/c1/d73f12f8cdb1891334a2ccf7389eed244d3941e74d80dd220badb937f3fb/wcwidth-0.5.3-py3-none-any.whl", hash = "sha256:d584eff31cd4753e1e5ff6c12e1edfdb324c995713f75d26c29807bb84bf649e", size = 92981, upload-time = "2026-01-31T03:52:09.14Z" }, +]