diff --git a/help.md b/help.md new file mode 100644 index 0000000..82ce9a5 --- /dev/null +++ b/help.md @@ -0,0 +1 @@ +IS_SANDBOX=1 claude --dangerously-skip-permissions diff --git a/price_model.ipynb b/price_model.ipynb new file mode 100644 index 0000000..0cc5d2a --- /dev/null +++ b/price_model.ipynb @@ -0,0 +1,3017 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "5c1271a9", + "metadata": {}, + "source": [ + "# Price Model\n", + "\n", + "Aim: estimate current prices of a property, given historical data\n", + "Assumptions:\n", + "- parallel trends\n", + "- only heterogenious effects exist between Postcodes " + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "b4bc1a1e", + "metadata": {}, + "outputs": [], + "source": [ + "import polars as pl\n", + "import pandas as pd\n", + "\n", + "import random\n", + "\n", + "import matplotlib.pyplot as plt\n", + "\n", + "\n", + "pd.set_option('display.max_columns', None)\n", + "pd.set_option('display.max_colwidth', 60)" + ] + }, + { + "cell_type": "markdown", + "id": "6b103e9e", + "metadata": {}, + "source": [ + "# PARAMETERS" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "c30127d3", + "metadata": {}, + "outputs": [], + "source": [ + "param_import_path = '/bulk/wide-2.parquet'\n", + "\n", + "param_lookback = 3" + ] + }, + { + "cell_type": "markdown", + "id": "f3268e1d", + "metadata": {}, + "source": [ + "# EXPLORE" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "c27367e0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "shape: (1, 1)\n", + "┌──────────┐\n", + "│ len │\n", + "│ --- │\n", + "│ u32 │\n", + "╞══════════╡\n", + "│ 12718926 │\n", + "└──────────┘\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "shape: (5, 54)
Address per Property RegisterPostcodehistorical_pricesLeashold/FreeholdLast known priceAddress per EPCCurrent energy ratingPotential energy ratingProperty typeTotal floor area (sqm)Rooms (including bedrooms & bathrooms)Approximate construction agelatlonpublic_transport_easy_minutespublic_transport_quick_minutescycling_minutesIndex of Multiple Deprivation (IMD) ScoreIncome Score (rate)Employment Score (rate)Education, Skills and Training ScoreHealth Deprivation and Disability ScoreCrime ScoreLiving Environment ScoreIndoors Sub-domain ScoreOutdoors Sub-domain Score% Asian% Black% Mixed% White% OtherPossession of weapons (avg/yr)Public order (avg/yr)Criminal damage and arson (avg/yr)Anti-social behaviour (avg/yr)Robbery (avg/yr)Violence and sexual offences (avg/yr)Other theft (avg/yr)Other crime (avg/yr)Burglary (avg/yr)Bicycle theft (avg/yr)Drugs (avg/yr)Vehicle crime (avg/yr)Shoplifting (avg/yr)Theft from the person (avg/yr)Restaurants within 2kmGroceries within 2kmParks within 2kmPublic transport within 2kmGood+ primary schools within 2kmGood+ secondary schools within 2kmMax available download speed (Mbps)Property type/built formPrice per sqm
strstrlist[struct[2]]stri64strstrstrstrf64i64u16f64f64i64i64i64f64f64f64f64f64f64f64f64f64f64f64f64f64f64f64f64f64f64f64f64f64f64f64f64f64f64f64f64i32i32i32i32i32i32u16stri32
" 7 APSLEY CLOSE""HA2 6AP"[{1996,57500}, {2009,205000}]"Leasehold"205000"7 APSLEY CLOSE, HARROW""C""C""Flat"64.02195051.586672-0.35407977526313.1440.2340.0934.663-0.486-0.64619.6430.219-0.3345.27.33.836.57.22.08.37.721.04.744.75.52.06.31.56.717.011.75.0118730601051000"Flats/Maisonettes/End-Terrace"3203
" 17 BLAENNANTYGROES ROAD""CF44 0EA"[{1995,32000}, {2021,150000}, {2025,156750}]"Freehold"156750"17 Blaennantygroes Road""D""B""House"91.04190051.710814-3.412275nullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull1.014.07.523.5null35.06.23.33.51.04.55.01.01.06502001000"Terraced/Mid-Terrace"1723
" LAURELS THE STREET""IP7 6QN"[{2003,211000}]"Freehold"211000"Chapel House, The Street, What…"D""C""House"167.06190052.0799960.954498nullnullnull12.6720.0880.06510.376-0.907-1.41531.8260.678-0.2780.90.51.596.70.41.52.76.72.7null26.75.02.05.7null1.02.02.01.000001030"Detached"1263
"APARTMENT 71 WILLOW RISE ROUGH…"L33 8WZ"[{2007,105860}]"Leasehold"105860"Apartment 71 Willow Rise, Roug…"E""C""Flat"65.04195053.484638-2.881501nullnullnull62.7050.5430.3764.7932.2891.33210.33-0.303-0.2111.60.81.795.30.62.519.313.817.82.060.08.02.03.02.023.51.33.5null520137230"Flats/Maisonettes/End-Terrace"1629
" 17 GREENRIDGE""BS39 5PE"[{2015,257950}]"Freehold"257950"17, Greenridge, Clutton""D""B""House"121.07196751.331247-2.5383nullnullnull10.9620.1150.099.264-0.416-0.70311.069-0.055-1.3423.31.02.792.20.8null4.03.58.01.037.72.71.02.5null1.04.0nullnull0000201000"Semi-Detached"2132
" + ], + "text/plain": [ + "shape: (5, 54)\n", + "┌───────────┬──────────┬───────────┬───────────┬───┬───────────┬───────────┬───────────┬───────────┐\n", + "│ Address ┆ Postcode ┆ historica ┆ Leashold/ ┆ … ┆ Good+ ┆ Max ┆ Property ┆ Price per │\n", + "│ per ┆ --- ┆ l_prices ┆ Freehold ┆ ┆ secondary ┆ available ┆ type/buil ┆ sqm │\n", + "│ Property ┆ str ┆ --- ┆ --- ┆ ┆ schools ┆ download ┆ t form ┆ --- │\n", + "│ Register ┆ ┆ list[stru ┆ str ┆ ┆ within… ┆ speed (… ┆ --- ┆ i32 │\n", + "│ --- ┆ ┆ ct[2]] ┆ ┆ ┆ --- ┆ --- ┆ str ┆ │\n", + "│ str ┆ ┆ ┆ ┆ ┆ i32 ┆ u16 ┆ ┆ │\n", + "╞═══════════╪══════════╪═══════════╪═══════════╪═══╪═══════════╪═══════════╪═══════════╪═══════════╡\n", + "│ 7 APSLEY ┆ HA2 6AP ┆ [{1996,57 ┆ Leasehold ┆ … ┆ 5 ┆ 1000 ┆ Flats/Mai ┆ 3203 │\n", + "│ CLOSE ┆ ┆ 500}, {20 ┆ ┆ ┆ ┆ ┆ sonettes/ ┆ │\n", + "│ ┆ ┆ 09,205000 ┆ ┆ ┆ ┆ ┆ End-Terra ┆ │\n", + "│ ┆ ┆ }] ┆ ┆ ┆ ┆ ┆ ce ┆ │\n", + "│ 17 BLAENN ┆ CF44 0EA ┆ [{1995,32 ┆ Freehold ┆ … ┆ 0 ┆ 1000 ┆ Terraced/ ┆ 1723 │\n", + "│ ANTYGROES ┆ ┆ 000}, {20 ┆ ┆ ┆ ┆ ┆ Mid-Terra ┆ │\n", + "│ ROAD ┆ ┆ 21,150000 ┆ ┆ ┆ ┆ ┆ ce ┆ │\n", + "│ ┆ ┆ }, … ┆ ┆ ┆ ┆ ┆ ┆ │\n", + "│ LAURELS ┆ IP7 6QN ┆ [{2003,21 ┆ Freehold ┆ … ┆ 0 ┆ 30 ┆ Detached ┆ 1263 │\n", + "│ THE ┆ ┆ 1000}] ┆ ┆ ┆ ┆ ┆ ┆ │\n", + "│ STREET ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", + "│ APARTMENT ┆ L33 8WZ ┆ [{2007,10 ┆ Leasehold ┆ … ┆ 2 ┆ 30 ┆ Flats/Mai ┆ 1629 │\n", + "│ 71 WILLOW ┆ ┆ 5860}] ┆ ┆ ┆ ┆ ┆ sonettes/ ┆ │\n", + "│ RISE ┆ ┆ ┆ ┆ ┆ ┆ ┆ End-Terra ┆ │\n", + "│ ROUGH… ┆ ┆ ┆ ┆ ┆ ┆ ┆ ce ┆ │\n", + "│ 17 GREENR ┆ BS39 5PE ┆ [{2015,25 ┆ Freehold ┆ … ┆ 0 ┆ 1000 ┆ Semi-Deta ┆ 2132 │\n", + "│ IDGE ┆ ┆ 7950}] ┆ ┆ ┆ ┆ ┆ ched ┆ │\n", + "└───────────┴──────────┴───────────┴───────────┴───┴───────────┴───────────┴───────────┴───────────┘" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data = pl.scan_parquet(param_import_path).unique(subset=[\"Postcode\", \"Address per EPC\"])\n", + "data = data.filter(pl.col('Total floor area (sqm)') > 10)\n", + "\n", + "# print(data.collect_schema()) # column names and types\n", + "print(data.select(pl.len()).collect()) # row count\n", + "data.head().collect()\n", + "\n", + "# data.head(2).collect().select(pl.col('historical_prices').map_elements(repr, return_dtype=pl.String).alias('historical_prices_str'), pl.exclude('historical_prices')).transpose()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "f63522b7", + "metadata": {}, + "outputs": [], + "source": [ + "columns_required = [\n", + " # absolute neccesity \n", + " 'Postcode',\n", + " 'Address per EPC',\n", + " 'historical_prices',\n", + " 'Price per sqm',\n", + "\n", + " # faily fixed attributes\n", + " 'Property type', # or 'epc_property_type' or 'built_form'\n", + " 'Leashold/Freehold',\n", + " 'Total floor area (sqm)',\n", + " 'Rooms (including bedrooms & bathrooms)',\n", + " 'Approximate construction age',\n", + "\n", + " # latest\n", + " # 'date_of_transfer'\n", + " 'Last known price'\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "b5af8a79", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PostcodeAddress per EPChistorical_pricesPrice per sqmProperty typeLeashold/FreeholdTotal floor area (sqm)Rooms (including bedrooms & bathrooms)Approximate construction ageyearprice
0PR8 3HS4 Stable Court, 4d, Station Road, Ainsdale{'year': 2025, 'price': 132500}1540.697674FlatLeasehold86.05.01900.02025132500
1BB2 4DW24, Stephen Street{'year': 2001, 'price': 27950}358.333333HouseFreehold78.05.01900.0200127950
1BB2 4DW24, Stephen Street{'year': 2007, 'price': 94000}1205.128205HouseFreehold78.05.01900.0200794000
1BB2 4DW24, Stephen Street{'year': 2025, 'price': 93000}1192.307692HouseFreehold78.05.01900.0202593000
2SN2 2FW27 Olympus House, Fire Fly Avenue{'year': 2017, 'price': 187500}3073.770492FlatLeasehold61.0NaNNaN2017187500
....................................
196754NE38 8RX21, Briarfield{'year': 1995, 'price': 73000}737.373737HouseFreehold99.04.01976.0199573000
196755BA11 4FL11 Tadley Meadow, Critch Hill{'year': 2019, 'price': 585000}3111.702128HouseFreehold188.0NaNNaN2019585000
196756WV2 3JB90a, Fowler Street{'year': 2019, 'price': 100000}1298.701299HouseFreehold77.05.01930.02019100000
196756WV2 3JB90a, Fowler Street{'year': 2020, 'price': 99000}1285.714286HouseFreehold77.05.01930.0202099000
196756WV2 3JB90a, Fowler Street{'year': 2020, 'price': 105000}1363.636364HouseFreehold77.05.01930.02020105000
\n", + "

395236 rows × 11 columns

\n", + "
" + ], + "text/plain": [ + " Postcode Address per EPC \\\n", + "0 PR8 3HS 4 Stable Court, 4d, Station Road, Ainsdale \n", + "1 BB2 4DW 24, Stephen Street \n", + "1 BB2 4DW 24, Stephen Street \n", + "1 BB2 4DW 24, Stephen Street \n", + "2 SN2 2FW 27 Olympus House, Fire Fly Avenue \n", + "... ... ... \n", + "196754 NE38 8RX 21, Briarfield \n", + "196755 BA11 4FL 11 Tadley Meadow, Critch Hill \n", + "196756 WV2 3JB 90a, Fowler Street \n", + "196756 WV2 3JB 90a, Fowler Street \n", + "196756 WV2 3JB 90a, Fowler Street \n", + "\n", + " historical_prices Price per sqm Property type \\\n", + "0 {'year': 2025, 'price': 132500} 1540.697674 Flat \n", + "1 {'year': 2001, 'price': 27950} 358.333333 House \n", + "1 {'year': 2007, 'price': 94000} 1205.128205 House \n", + "1 {'year': 2025, 'price': 93000} 1192.307692 House \n", + "2 {'year': 2017, 'price': 187500} 3073.770492 Flat \n", + "... ... ... ... \n", + "196754 {'year': 1995, 'price': 73000} 737.373737 House \n", + "196755 {'year': 2019, 'price': 585000} 3111.702128 House \n", + "196756 {'year': 2019, 'price': 100000} 1298.701299 House \n", + "196756 {'year': 2020, 'price': 99000} 1285.714286 House \n", + "196756 {'year': 2020, 'price': 105000} 1363.636364 House \n", + "\n", + " Leashold/Freehold Total floor area (sqm) \\\n", + "0 Leasehold 86.0 \n", + "1 Freehold 78.0 \n", + "1 Freehold 78.0 \n", + "1 Freehold 78.0 \n", + "2 Leasehold 61.0 \n", + "... ... ... \n", + "196754 Freehold 99.0 \n", + "196755 Freehold 188.0 \n", + "196756 Freehold 77.0 \n", + "196756 Freehold 77.0 \n", + "196756 Freehold 77.0 \n", + "\n", + " Rooms (including bedrooms & bathrooms) Approximate construction age \\\n", + "0 5.0 1900.0 \n", + "1 5.0 1900.0 \n", + "1 5.0 1900.0 \n", + "1 5.0 1900.0 \n", + "2 NaN NaN \n", + "... ... ... \n", + "196754 4.0 1976.0 \n", + "196755 NaN NaN \n", + "196756 5.0 1930.0 \n", + "196756 5.0 1930.0 \n", + "196756 5.0 1930.0 \n", + "\n", + " year price \n", + "0 2025 132500 \n", + "1 2001 27950 \n", + "1 2007 94000 \n", + "1 2025 93000 \n", + "2 2017 187500 \n", + "... ... ... \n", + "196754 1995 73000 \n", + "196755 2019 585000 \n", + "196756 2019 100000 \n", + "196756 2020 99000 \n", + "196756 2020 105000 \n", + "\n", + "[395236 rows x 11 columns]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# temp_Postcodes = [\"LE5 4ED\", \"E14 9GU\", \"YO8 9PW\", \"SW1P 3AN\", \"BH3 7DX\", \"E14 2DG\"]\n", + "temp_Postcodes = data.select('Postcode').collect().sample(10000)['Postcode'].to_list()\n", + "data_small = data.filter(pl.col(\"Postcode\").is_in(temp_Postcodes)).select(columns_required).collect().to_pandas()\n", + "data_small = data_small.explode(\"historical_prices\")\n", + "data_small[\"year\"] = data_small[\"historical_prices\"].apply(lambda x: x[\"year\"])\n", + "data_small[\"price\"] = data_small[\"historical_prices\"].apply(lambda x: x[\"price\"])\n", + "data_small[\"Price per sqm\"] = data_small[\"price\"] / data_small[\"Total floor area (sqm)\"]\n", + "data_small = data_small.drop(columns=[\"Last known price\"])\n", + "data_small" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "3692ab7b", + "metadata": {}, + "outputs": [], + "source": [ + "# data_small[\n", + "# (data_small['Postcode'] == 'E14 2DG') \n", + "# & data_small['epc_address'].str.contains('76')\n", + "# ]" + ] + }, + { + "cell_type": "markdown", + "id": "ed6b63af", + "metadata": {}, + "source": [ + "# Calculate $PC\\_AVG_t$" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "64e1890e", + "metadata": {}, + "outputs": [], + "source": [ + "# pc_avg_simple = data_small.groupby(['Postcode', 'year'])['Price per sqm'].mean().reset_index().sort_values(by=['Postcode', 'year'], ascending=False)\n", + "# temp_df = pc_avg_simple[pc_avg_simple['Postcode'] == data_small['Postcode'].iloc[0]]\n", + "# print(data_small['Postcode'].iloc[0])\n", + "# temp_df.plot.line(x='year', y='Price per sqm')\n", + "# display(pc_avg_simple)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "ba841c10", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "rolling periods (relative): [-3, -2, -1, 0]\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Postcodeyearppsqm_sumppsqm_count
161853YO8 9DZ20247159.0261152
161852YO8 9DZ20233300.9708741
161851YO8 9DZ20223651.4712942
161850YO8 9DZ202112400.6483314
161849YO8 9DZ202012033.0411965
...............
4AL1 3BH200211543.5663714
3AL1 3BH1999857.1428571
2AL1 3BH19982031.2500001
1AL1 3BH19974876.2129283
0AL1 3BH1995823.9436621
\n", + "

161854 rows × 4 columns

\n", + "
" + ], + "text/plain": [ + " Postcode year ppsqm_sum ppsqm_count\n", + "161853 YO8 9DZ 2024 7159.026115 2\n", + "161852 YO8 9DZ 2023 3300.970874 1\n", + "161851 YO8 9DZ 2022 3651.471294 2\n", + "161850 YO8 9DZ 2021 12400.648331 4\n", + "161849 YO8 9DZ 2020 12033.041196 5\n", + "... ... ... ... ...\n", + "4 AL1 3BH 2002 11543.566371 4\n", + "3 AL1 3BH 1999 857.142857 1\n", + "2 AL1 3BH 1998 2031.250000 1\n", + "1 AL1 3BH 1997 4876.212928 3\n", + "0 AL1 3BH 1995 823.943662 1\n", + "\n", + "[161854 rows x 4 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Postcodeyearppsqm_sumppsqm_count
161853YO8 9DZ20217159.0261152
161852YO8 9DZ20203300.9708741
161851YO8 9DZ20193651.4712942
161850YO8 9DZ201812400.6483314
161849YO8 9DZ201712033.0411965
...............
4AL1 3BH200211543.5663714
3AL1 3BH1999857.1428571
2AL1 3BH19982031.2500001
1AL1 3BH19974876.2129283
0AL1 3BH1995823.9436621
\n", + "

647416 rows × 4 columns

\n", + "
" + ], + "text/plain": [ + " Postcode year ppsqm_sum ppsqm_count\n", + "161853 YO8 9DZ 2021 7159.026115 2\n", + "161852 YO8 9DZ 2020 3300.970874 1\n", + "161851 YO8 9DZ 2019 3651.471294 2\n", + "161850 YO8 9DZ 2018 12400.648331 4\n", + "161849 YO8 9DZ 2017 12033.041196 5\n", + "... ... ... ... ...\n", + "4 AL1 3BH 2002 11543.566371 4\n", + "3 AL1 3BH 1999 857.142857 1\n", + "2 AL1 3BH 1998 2031.250000 1\n", + "1 AL1 3BH 1997 4876.212928 3\n", + "0 AL1 3BH 1995 823.943662 1\n", + "\n", + "[647416 rows x 4 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PostcodeyearPrice per sqm PC AVG
264352YO8 9DZ20243579.513057
264351YO8 9DZ20233486.665663
264350YO8 9DZ20222822.293657
264349YO8 9DZ20212945.790735
264348YO8 9DZ20202615.510975
............
4AL1 3BH19961552.921157
3AL1 3BH19951546.281318
2AL1 3BH19941425.039148
1AL1 3BH1993823.943662
0AL1 3BH1992823.943662
\n", + "

264353 rows × 3 columns

\n", + "
" + ], + "text/plain": [ + " Postcode year Price per sqm PC AVG\n", + "264352 YO8 9DZ 2024 3579.513057\n", + "264351 YO8 9DZ 2023 3486.665663\n", + "264350 YO8 9DZ 2022 2822.293657\n", + "264349 YO8 9DZ 2021 2945.790735\n", + "264348 YO8 9DZ 2020 2615.510975\n", + "... ... ... ...\n", + "4 AL1 3BH 1996 1552.921157\n", + "3 AL1 3BH 1995 1546.281318\n", + "2 AL1 3BH 1994 1425.039148\n", + "1 AL1 3BH 1993 823.943662\n", + "0 AL1 3BH 1992 823.943662\n", + "\n", + "[264353 rows x 3 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "PR8 3HS\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from typing import Any\n", + "from pandas.core.frame import DataFrame\n", + "\n", + "print(f'rolling periods (relative): {[i for i in range(-param_lookback, 1)]}')\n", + "\n", + "# Rolling average (±2 year), weighted by number of sales per year\n", + "pc_avg_raw = data_small.groupby(['Postcode', 'year']).agg(\n", + " ppsqm_sum=('Price per sqm', 'sum'),\n", + " ppsqm_count=('Price per sqm', 'count')\n", + ").reset_index().sort_values(by=['Postcode', 'year'], ascending=False)\n", + "\n", + "display(pc_avg_raw)\n", + "\n", + "# Each year's totals contribute to year-1, year, and year+1\n", + "pc_avg_expanded = pd.concat([\n", + " pc_avg_raw.assign(year=pc_avg_raw['year'] + offset) for offset in range(-param_lookback, 1) # \n", + "])\n", + "\n", + "display(pc_avg_expanded)\n", + "\n", + "# Sum counts and sums, then divide to get weighted mean\n", + "pc_avg_complex = pc_avg_expanded.groupby(['Postcode', 'year']).agg(\n", + " ppsqm_sum=('ppsqm_sum', 'sum'),\n", + " ppsqm_count=('ppsqm_count', 'sum')\n", + ").reset_index()\n", + "pc_avg_complex['Price per sqm PC AVG'] = pc_avg_complex['ppsqm_sum'] / pc_avg_complex['ppsqm_count']\n", + "pc_avg_complex: Any | DataFrame = pc_avg_complex[['Postcode', 'year', 'Price per sqm PC AVG']].sort_values(by=['Postcode', 'year'], ascending=False)\n", + "display(pc_avg_complex)\n", + "\n", + "temp_df = pc_avg_complex[pc_avg_complex['Postcode'] == data_small['Postcode'].iloc[0]]\n", + "print(data_small['Postcode'].iloc[0])\n", + "temp_df.plot.line(x='year', y='Price per sqm PC AVG')" + ] + }, + { + "cell_type": "markdown", + "id": "e3beccbc", + "metadata": {}, + "source": [ + "# Calculate $C_x$" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "112da774", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PostcodeAddress per EPCPrice per sqmPrice per sqm PC AVGc
0PR8 3HS4 Stable Court, 4d, Station Road, Ainsdale1540.6976741829.6886580.842055
1BB2 4DW24, Stephen Street358.333333456.5216280.784921
2BB2 4DW24, Stephen Street1205.128205791.6235651.522350
3BB2 4DW24, Stephen Street1192.307692834.2490841.429199
4SN2 2FW27 Olympus House, Fire Fly Avenue3073.7704923292.0890600.933684
..................
395231NE38 8RX21, Briarfield737.373737628.5552901.173125
395232BA11 4FL11 Tadley Meadow, Critch Hill3111.7021283343.4720410.930680
395233WV2 3JB90a, Fowler Street1298.7012991297.9629131.000569
395234WV2 3JB90a, Fowler Street1285.7142861317.7994090.975652
395235WV2 3JB90a, Fowler Street1363.6363641317.7994091.034783
\n", + "

395236 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " Postcode Address per EPC Price per sqm \\\n", + "0 PR8 3HS 4 Stable Court, 4d, Station Road, Ainsdale 1540.697674 \n", + "1 BB2 4DW 24, Stephen Street 358.333333 \n", + "2 BB2 4DW 24, Stephen Street 1205.128205 \n", + "3 BB2 4DW 24, Stephen Street 1192.307692 \n", + "4 SN2 2FW 27 Olympus House, Fire Fly Avenue 3073.770492 \n", + "... ... ... ... \n", + "395231 NE38 8RX 21, Briarfield 737.373737 \n", + "395232 BA11 4FL 11 Tadley Meadow, Critch Hill 3111.702128 \n", + "395233 WV2 3JB 90a, Fowler Street 1298.701299 \n", + "395234 WV2 3JB 90a, Fowler Street 1285.714286 \n", + "395235 WV2 3JB 90a, Fowler Street 1363.636364 \n", + "\n", + " Price per sqm PC AVG c \n", + "0 1829.688658 0.842055 \n", + "1 456.521628 0.784921 \n", + "2 791.623565 1.522350 \n", + "3 834.249084 1.429199 \n", + "4 3292.089060 0.933684 \n", + "... ... ... \n", + "395231 628.555290 1.173125 \n", + "395232 3343.472041 0.930680 \n", + "395233 1297.962913 1.000569 \n", + "395234 1317.799409 0.975652 \n", + "395235 1317.799409 1.034783 \n", + "\n", + "[395236 rows x 5 columns]" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data_small = data_small.merge(pc_avg_complex, on=['Postcode', 'year'], suffixes=('', ' pc_avg_complex'))\n", + "data_small['c'] = data_small['Price per sqm'] / data_small['Price per sqm PC AVG']\n", + "data_small[['Postcode', 'Address per EPC', 'Price per sqm', 'Price per sqm PC AVG', 'c']]" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "12b1d00a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
n_salesyear_minyear_maxc_meanc_stdc_cv
PostcodeAddress per EPC
CR7 8QQ17, Hythe Road3199520080.3635000.6070801.670097
WS12 2ER117 BANK STREET, HEATH HAYES2202220220.6639620.9389771.414202
S11 7AU71, Louth Road2199620110.6896070.9715521.408849
TR7 1JT23, St. Johns Road2199620160.3823240.5377221.406457
SW11 5TR2, Glycena Road2199519960.5779700.8032691.389811
N3 1HJ57, Dollis Park2199620210.5411850.7442291.375186
SW2 1ER70a Saltoun Road2200120020.7495161.0300291.374259
SW14 7HG3a Rosemary Terrace, Rosemary Lane2199720140.2462910.3383161.373642
WA14 4RFApartment 2400, 30, Woodfield Road2200720130.7042910.9670861.373133
BN22 8DHGround Floor Flat, 60 Dursley Road2199619990.3845620.5249181.364974
WA14 4RFApartment 2512, 30 Woodfield Road2200720120.4657890.6232851.338126
CF23 5BXFlat 1, 10 Marlborough Road2199519970.5545430.7406821.335662
WA14 4RFApartment 2514, 30 Woodfield Road2200720130.4837270.6445351.332435
N10 3NRFlat 2, 6 Queens Avenue2199720020.3724520.4949681.328944
NE8 4NH34, Eastbourne Avenue4200320170.4913470.6521531.327276
NW8 9UL82 Hamilton Terrace8199520020.2152880.2759091.281581
SE13 5QZ13b Manor Park2201220150.2263220.2893591.278528
TA14 6SB29 NEW ROAD, NORTON SUB HAMDON2199820220.5275380.6681621.266566
SW11 4GH51 Fitzroy House, 6 Palmer Road2202320230.5338320.6710001.256950
SK10 2PQ11 Roewood Lane2200720250.5527380.6698521.211879
\n", + "
" + ], + "text/plain": [ + " n_sales year_min year_max \\\n", + "Postcode Address per EPC \n", + "CR7 8QQ 17, Hythe Road 3 1995 2008 \n", + "WS12 2ER 117 BANK STREET, HEATH HAYES 2 2022 2022 \n", + "S11 7AU 71, Louth Road 2 1996 2011 \n", + "TR7 1JT 23, St. Johns Road 2 1996 2016 \n", + "SW11 5TR 2, Glycena Road 2 1995 1996 \n", + "N3 1HJ 57, Dollis Park 2 1996 2021 \n", + "SW2 1ER 70a Saltoun Road 2 2001 2002 \n", + "SW14 7HG 3a Rosemary Terrace, Rosemary Lane 2 1997 2014 \n", + "WA14 4RF Apartment 2400, 30, Woodfield Road 2 2007 2013 \n", + "BN22 8DH Ground Floor Flat, 60 Dursley Road 2 1996 1999 \n", + "WA14 4RF Apartment 2512, 30 Woodfield Road 2 2007 2012 \n", + "CF23 5BX Flat 1, 10 Marlborough Road 2 1995 1997 \n", + "WA14 4RF Apartment 2514, 30 Woodfield Road 2 2007 2013 \n", + "N10 3NR Flat 2, 6 Queens Avenue 2 1997 2002 \n", + "NE8 4NH 34, Eastbourne Avenue 4 2003 2017 \n", + "NW8 9UL 82 Hamilton Terrace 8 1995 2002 \n", + "SE13 5QZ 13b Manor Park 2 2012 2015 \n", + "TA14 6SB 29 NEW ROAD, NORTON SUB HAMDON 2 1998 2022 \n", + "SW11 4GH 51 Fitzroy House, 6 Palmer Road 2 2023 2023 \n", + "SK10 2PQ 11 Roewood Lane 2 2007 2025 \n", + "\n", + " c_mean c_std c_cv \n", + "Postcode Address per EPC \n", + "CR7 8QQ 17, Hythe Road 0.363500 0.607080 1.670097 \n", + "WS12 2ER 117 BANK STREET, HEATH HAYES 0.663962 0.938977 1.414202 \n", + "S11 7AU 71, Louth Road 0.689607 0.971552 1.408849 \n", + "TR7 1JT 23, St. Johns Road 0.382324 0.537722 1.406457 \n", + "SW11 5TR 2, Glycena Road 0.577970 0.803269 1.389811 \n", + "N3 1HJ 57, Dollis Park 0.541185 0.744229 1.375186 \n", + "SW2 1ER 70a Saltoun Road 0.749516 1.030029 1.374259 \n", + "SW14 7HG 3a Rosemary Terrace, Rosemary Lane 0.246291 0.338316 1.373642 \n", + "WA14 4RF Apartment 2400, 30, Woodfield Road 0.704291 0.967086 1.373133 \n", + "BN22 8DH Ground Floor Flat, 60 Dursley Road 0.384562 0.524918 1.364974 \n", + "WA14 4RF Apartment 2512, 30 Woodfield Road 0.465789 0.623285 1.338126 \n", + "CF23 5BX Flat 1, 10 Marlborough Road 0.554543 0.740682 1.335662 \n", + "WA14 4RF Apartment 2514, 30 Woodfield Road 0.483727 0.644535 1.332435 \n", + "N10 3NR Flat 2, 6 Queens Avenue 0.372452 0.494968 1.328944 \n", + "NE8 4NH 34, Eastbourne Avenue 0.491347 0.652153 1.327276 \n", + "NW8 9UL 82 Hamilton Terrace 0.215288 0.275909 1.281581 \n", + "SE13 5QZ 13b Manor Park 0.226322 0.289359 1.278528 \n", + "TA14 6SB 29 NEW ROAD, NORTON SUB HAMDON 0.527538 0.668162 1.266566 \n", + "SW11 4GH 51 Fitzroy House, 6 Palmer Road 0.533832 0.671000 1.256950 \n", + "SK10 2PQ 11 Roewood Lane 0.552738 0.669852 1.211879 " + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 1. Coefficient of Variation (std/mean) per property, filtered to 3+ sales\n", + "c_stats = data_small.groupby(['Postcode', 'Address per EPC']).agg(\n", + " n_sales=('c', 'count'),\n", + " year_min=('year', 'min'),\n", + " year_max=('year', 'max'),\n", + " c_mean=('c', 'mean'),\n", + " c_std=('c', 'std'),\n", + ").dropna()\n", + "c_stats['c_cv'] = c_stats['c_std'] / c_stats['c_mean']\n", + "# c_stats_3plus = c_stats[c_stats['n_sales'] >= 3]\n", + "# print(f\"Properties with 3+ sales: {len(c_stats_3plus)} / {len(c_stats)}\")\n", + "c_stats.sort_values('c_cv', ascending=False).head(20)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "3e05ec4d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
n_salesyear_minyear_maxc_meanc_stdc_cv
PostcodeAddress per EPC
PE21 0NL10, Taylor Close, Fishtoft4199820160.9760470.0949510.097281
\n", + "
" + ], + "text/plain": [ + " n_sales year_min year_max c_mean \\\n", + "Postcode Address per EPC \n", + "PE21 0NL 10, Taylor Close, Fishtoft 4 1998 2016 0.976047 \n", + "\n", + " c_std c_cv \n", + "Postcode Address per EPC \n", + "PE21 0NL 10, Taylor Close, Fishtoft 0.094951 0.097281 " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PostcodeyearPrice per sqm PC AVG
169803PE21 0NL1992731.213575
169804PE21 0NL1993697.236555
169805PE21 0NL1994677.437038
169806PE21 0NL1995684.642494
169807PE21 0NL1996674.185418
169808PE21 0NL1997686.452859
169809PE21 0NL1998733.844136
169810PE21 0NL1999856.361907
169811PE21 0NL2000976.879148
169812PE21 0NL20011162.692206
169813PE21 0NL20021346.033001
169814PE21 0NL20031587.966106
169815PE21 0NL20041848.089455
169816PE21 0NL20051914.984730
169817PE21 0NL20061890.326867
169818PE21 0NL20071875.755089
169819PE21 0NL20081798.166249
169820PE21 0NL20091798.166249
169821PE21 0NL20101765.089784
169822PE21 0NL20111779.319706
169823PE21 0NL20121790.335529
169824PE21 0NL20131893.197535
169825PE21 0NL20142020.973785
169826PE21 0NL20152063.516791
169827PE21 0NL20162060.261867
169828PE21 0NL20172049.718318
169829PE21 0NL20182016.935188
169830PE21 0NL20192086.229596
169831PE21 0NL20202459.953269
169832PE21 0NL20212471.471387
169833PE21 0NL20222577.664318
169834PE21 0NL20232556.530515
169835PE21 0NL20242491.131686
169836PE21 0NL20252477.925599
\n", + "
" + ], + "text/plain": [ + " Postcode year Price per sqm PC AVG\n", + "169803 PE21 0NL 1992 731.213575\n", + "169804 PE21 0NL 1993 697.236555\n", + "169805 PE21 0NL 1994 677.437038\n", + "169806 PE21 0NL 1995 684.642494\n", + "169807 PE21 0NL 1996 674.185418\n", + "169808 PE21 0NL 1997 686.452859\n", + "169809 PE21 0NL 1998 733.844136\n", + "169810 PE21 0NL 1999 856.361907\n", + "169811 PE21 0NL 2000 976.879148\n", + "169812 PE21 0NL 2001 1162.692206\n", + "169813 PE21 0NL 2002 1346.033001\n", + "169814 PE21 0NL 2003 1587.966106\n", + "169815 PE21 0NL 2004 1848.089455\n", + "169816 PE21 0NL 2005 1914.984730\n", + "169817 PE21 0NL 2006 1890.326867\n", + "169818 PE21 0NL 2007 1875.755089\n", + "169819 PE21 0NL 2008 1798.166249\n", + "169820 PE21 0NL 2009 1798.166249\n", + "169821 PE21 0NL 2010 1765.089784\n", + "169822 PE21 0NL 2011 1779.319706\n", + "169823 PE21 0NL 2012 1790.335529\n", + "169824 PE21 0NL 2013 1893.197535\n", + "169825 PE21 0NL 2014 2020.973785\n", + "169826 PE21 0NL 2015 2063.516791\n", + "169827 PE21 0NL 2016 2060.261867\n", + "169828 PE21 0NL 2017 2049.718318\n", + "169829 PE21 0NL 2018 2016.935188\n", + "169830 PE21 0NL 2019 2086.229596\n", + "169831 PE21 0NL 2020 2459.953269\n", + "169832 PE21 0NL 2021 2471.471387\n", + "169833 PE21 0NL 2022 2577.664318\n", + "169834 PE21 0NL 2023 2556.530515\n", + "169835 PE21 0NL 2024 2491.131686\n", + "169836 PE21 0NL 2025 2477.925599" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PostcodeAddress per EPChistorical_pricesPrice per sqmProperty typeLeashold/FreeholdTotal floor area (sqm)Rooms (including bedrooms & bathrooms)Approximate construction ageyearpricePrice per sqm PC AVGc
58633PE21 0NL10, Taylor Close, Fishtoft{'year': 1998, 'price': 39995}727.181818HouseFreehold55.04.01991.0199839995733.8441360.990921
58634PE21 0NL10, Taylor Close, Fishtoft{'year': 2000, 'price': 45000}818.181818HouseFreehold55.04.01991.0200045000976.8791480.837547
58635PE21 0NL10, Taylor Close, Fishtoft{'year': 2006, 'price': 108000}1963.636364HouseFreehold55.04.01991.020061080001890.3268671.038781
58636PE21 0NL10, Taylor Close, Fishtoft{'year': 2016, 'price': 117500}2136.363636HouseFreehold55.04.01991.020161175002060.2618671.036938
\n", + "
" + ], + "text/plain": [ + " Postcode Address per EPC historical_prices \\\n", + "58633 PE21 0NL 10, Taylor Close, Fishtoft {'year': 1998, 'price': 39995} \n", + "58634 PE21 0NL 10, Taylor Close, Fishtoft {'year': 2000, 'price': 45000} \n", + "58635 PE21 0NL 10, Taylor Close, Fishtoft {'year': 2006, 'price': 108000} \n", + "58636 PE21 0NL 10, Taylor Close, Fishtoft {'year': 2016, 'price': 117500} \n", + "\n", + " Price per sqm Property type Leashold/Freehold Total floor area (sqm) \\\n", + "58633 727.181818 House Freehold 55.0 \n", + "58634 818.181818 House Freehold 55.0 \n", + "58635 1963.636364 House Freehold 55.0 \n", + "58636 2136.363636 House Freehold 55.0 \n", + "\n", + " Rooms (including bedrooms & bathrooms) Approximate construction age \\\n", + "58633 4.0 1991.0 \n", + "58634 4.0 1991.0 \n", + "58635 4.0 1991.0 \n", + "58636 4.0 1991.0 \n", + "\n", + " year price Price per sqm PC AVG c \n", + "58633 1998 39995 733.844136 0.990921 \n", + "58634 2000 45000 976.879148 0.837547 \n", + "58635 2006 108000 1890.326867 1.038781 \n", + "58636 2016 117500 2060.261867 1.036938 " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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2NwRkSqsX78eg4ODOHfunLLMarWitLQUX3zxBS5fvozk5GRs27YN9fX1KCwshNFoRFZWlhKv0WiQn5+Puro6nDhxAiaTCRkZGTbb6enpgcFgwHfffYe6ujq89dZbLsuRiMgRE0RE3L0TRETOkJ6ejtbWVly4cAHAsyNxR48eRXNzMz744APEx8cjMzNTiT958iQyMjJw7949u+v7+eefsXnzZnR0dAB4duRuw4YNsFgsiI6OHv2EiIhGgM0dEamG2WxGbGwsbt++jenTpyMqKgrr16/HV199BZ1Oh+7ubnh4eCjxg4OD6O3txePHj6HValFeXo7s7GzcuHEDDx8+xMDAgM240WhEamoqent7MWHCBDdmSkT0//3H3TtAROQsCxYsQHR0NIqKipCQkIC6ujqUlpYCALq7u7F//36sXbv2hc95e3ujtbUVq1atQlpaGrKyshAYGIgrV65g48aN6Ovrg1arBQD4+PiwsSOiMY3NHRGpypdffolvv/0Wd+/exYoVKxASEgIAiImJQWNjI2bOnGn3c9XV1RgaGkJOTg40mmenI58+fdpl+01E5Cxs7ohIVT777DPs2rULx44dQ1FRkbL866+/xqpVqxAaGop169ZBo9Hg+vXrqK2txYEDBzBz5kz09/fjyJEj+Oijj3D16lUUFBS4MRMiopHh1bJEpCp+fn745JNPMHnyZCQmJirLP/zwQ5w/fx6///47YmNjsXjxYuTl5SEsLAwAEB0djdzcXBgMBsydOxc//PADsrOz3ZQFEdHI8YIKIlKd+Ph4vPvuu8jPz3f3rhARuRybOyJSjc7OTly6dAnr1q1DfX09IiIi3L1LREQux3PuiEg1FixYgM7OThgMBjZ2RDRu8cgdERERkYrwggoiIiIiFWFzR0RERKQibO6IiIiIVITNHREREZGKsLkjIiIiUhE2d0REREQqwuaOiIiISEXY3BERERGpCJs7IiIiIhX5L6WKQZkjsooeAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "random_c = c_stats.sample(1)\n", + "display(random_c)\n", + "\n", + "# pc avg trend\n", + "temp_pc_avg = pc_avg_complex[pc_avg_complex['Postcode'] == random_c.index[0][0]].sort_values(by='year')\n", + "display(temp_pc_avg)\n", + "\n", + "# c for specific address\n", + "temp_address = data_small[\n", + " (data_small['Postcode'] == random_c.index[0][0]) \n", + " & (data_small['Address per EPC'] == random_c.index[0][1]) \n", + "].sort_values(by='year')\n", + "display(temp_address)\n", + "\n", + "# plot\n", + "\n", + "fig, ax1 = plt.subplots()\n", + "\n", + "temp_pc_avg.plot.line(x='year', y='Price per sqm PC AVG', ax=ax1, color='black')\n", + "temp_address.plot.line(x='year', y='Price per sqm', ax=ax1, color='green') \n", + "\n", + "ax2 = ax1.twinx()\n", + "ax2.set_ylim(0, 3)\n", + "temp_address.plot.line(x='year', y='c', ax=ax2, color='red', style=':')\n", + "\n", + "ax1.set_ylabel('Price per sqm')\n", + "ax2.set_ylabel('c')\n", + "\n", + "plt.show()\n" + ] + }, + { + "cell_type": "markdown", + "id": "b0b74a2e", + "metadata": {}, + "source": [ + "## investigation: is it constant over time?" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "7ljy1kmdcwn", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
n_salesyear_minyear_maxc_meanc_stdc_cv
PostcodeAddress per EPC
CR7 8QQ17, Hythe Road3199520080.3635000.6070801.670097
WS12 2ER117 BANK STREET, HEATH HAYES2202220220.6639620.9389771.414202
S11 7AU71, Louth Road2199620110.6896070.9715521.408849
TR7 1JT23, St. Johns Road2199620160.3823240.5377221.406457
SW11 5TR2, Glycena Road2199519960.5779700.8032691.389811
N3 1HJ57, Dollis Park2199620210.5411850.7442291.375186
SW2 1ER70a Saltoun Road2200120020.7495161.0300291.374259
SW14 7HG3a Rosemary Terrace, Rosemary Lane2199720140.2462910.3383161.373642
WA14 4RFApartment 2400, 30, Woodfield Road2200720130.7042910.9670861.373133
BN22 8DHGround Floor Flat, 60 Dursley Road2199619990.3845620.5249181.364974
WA14 4RFApartment 2512, 30 Woodfield Road2200720120.4657890.6232851.338126
CF23 5BXFlat 1, 10 Marlborough Road2199519970.5545430.7406821.335662
WA14 4RFApartment 2514, 30 Woodfield Road2200720130.4837270.6445351.332435
N10 3NRFlat 2, 6 Queens Avenue2199720020.3724520.4949681.328944
NE8 4NH34, Eastbourne Avenue4200320170.4913470.6521531.327276
NW8 9UL82 Hamilton Terrace8199520020.2152880.2759091.281581
SE13 5QZ13b Manor Park2201220150.2263220.2893591.278528
TA14 6SB29 NEW ROAD, NORTON SUB HAMDON2199820220.5275380.6681621.266566
SW11 4GH51 Fitzroy House, 6 Palmer Road2202320230.5338320.6710001.256950
SK10 2PQ11 Roewood Lane2200720250.5527380.6698521.211879
\n", + "
" + ], + "text/plain": [ + " n_sales year_min year_max \\\n", + "Postcode Address per EPC \n", + "CR7 8QQ 17, Hythe Road 3 1995 2008 \n", + "WS12 2ER 117 BANK STREET, HEATH HAYES 2 2022 2022 \n", + "S11 7AU 71, Louth Road 2 1996 2011 \n", + "TR7 1JT 23, St. Johns Road 2 1996 2016 \n", + "SW11 5TR 2, Glycena Road 2 1995 1996 \n", + "N3 1HJ 57, Dollis Park 2 1996 2021 \n", + "SW2 1ER 70a Saltoun Road 2 2001 2002 \n", + "SW14 7HG 3a Rosemary Terrace, Rosemary Lane 2 1997 2014 \n", + "WA14 4RF Apartment 2400, 30, Woodfield Road 2 2007 2013 \n", + "BN22 8DH Ground Floor Flat, 60 Dursley Road 2 1996 1999 \n", + "WA14 4RF Apartment 2512, 30 Woodfield Road 2 2007 2012 \n", + "CF23 5BX Flat 1, 10 Marlborough Road 2 1995 1997 \n", + "WA14 4RF Apartment 2514, 30 Woodfield Road 2 2007 2013 \n", + "N10 3NR Flat 2, 6 Queens Avenue 2 1997 2002 \n", + "NE8 4NH 34, Eastbourne Avenue 4 2003 2017 \n", + "NW8 9UL 82 Hamilton Terrace 8 1995 2002 \n", + "SE13 5QZ 13b Manor Park 2 2012 2015 \n", + "TA14 6SB 29 NEW ROAD, NORTON SUB HAMDON 2 1998 2022 \n", + "SW11 4GH 51 Fitzroy House, 6 Palmer Road 2 2023 2023 \n", + "SK10 2PQ 11 Roewood Lane 2 2007 2025 \n", + "\n", + " c_mean c_std c_cv \n", + "Postcode Address per EPC \n", + "CR7 8QQ 17, Hythe Road 0.363500 0.607080 1.670097 \n", + "WS12 2ER 117 BANK STREET, HEATH HAYES 0.663962 0.938977 1.414202 \n", + "S11 7AU 71, Louth Road 0.689607 0.971552 1.408849 \n", + "TR7 1JT 23, St. Johns Road 0.382324 0.537722 1.406457 \n", + "SW11 5TR 2, Glycena Road 0.577970 0.803269 1.389811 \n", + "N3 1HJ 57, Dollis Park 0.541185 0.744229 1.375186 \n", + "SW2 1ER 70a Saltoun Road 0.749516 1.030029 1.374259 \n", + "SW14 7HG 3a Rosemary Terrace, Rosemary Lane 0.246291 0.338316 1.373642 \n", + "WA14 4RF Apartment 2400, 30, Woodfield Road 0.704291 0.967086 1.373133 \n", + "BN22 8DH Ground Floor Flat, 60 Dursley Road 0.384562 0.524918 1.364974 \n", + "WA14 4RF Apartment 2512, 30 Woodfield Road 0.465789 0.623285 1.338126 \n", + "CF23 5BX Flat 1, 10 Marlborough Road 0.554543 0.740682 1.335662 \n", + "WA14 4RF Apartment 2514, 30 Woodfield Road 0.483727 0.644535 1.332435 \n", + "N10 3NR Flat 2, 6 Queens Avenue 0.372452 0.494968 1.328944 \n", + "NE8 4NH 34, Eastbourne Avenue 0.491347 0.652153 1.327276 \n", + "NW8 9UL 82 Hamilton Terrace 0.215288 0.275909 1.281581 \n", + "SE13 5QZ 13b Manor Park 0.226322 0.289359 1.278528 \n", + "TA14 6SB 29 NEW ROAD, NORTON SUB HAMDON 0.527538 0.668162 1.266566 \n", + "SW11 4GH 51 Fitzroy House, 6 Palmer Road 0.533832 0.671000 1.256950 \n", + "SK10 2PQ 11 Roewood Lane 0.552738 0.669852 1.211879 " + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 1. Coefficient of Variation (std/mean) per property, filtered to 3+ sales\n", + "c_stats = data_small.groupby(['Postcode', 'Address per EPC']).agg(\n", + " n_sales=('c', 'count'),\n", + " year_min=('year', 'min'),\n", + " year_max=('year', 'max'),\n", + " c_mean=('c', 'mean'),\n", + " c_std=('c', 'std'),\n", + ").dropna()\n", + "c_stats['c_cv'] = c_stats['c_std'] / c_stats['c_mean']\n", + "# c_stats_3plus = c_stats[c_stats['n_sales'] >= 3]\n", + "# print(f\"Properties with 3+ sales: {len(c_stats_3plus)} / {len(c_stats)}\")\n", + "c_stats.sort_values('c_cv', ascending=False).head(20)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "qe21ukn7u5n", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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A2Fubg5HR0eMHTsWmZmZL+ynYcOGMDc3zzfBLEy/+/fvR926daFUKuHp6YlVq1Zpbf/3338xatQouLu7w8zMDA0bNsTJkye12iQmJqJ///7SpPpt2rTB1atXtdpcv34d7733HsqWLQsrKyt88MEHSExM1GpToUIFyGQyrdfMmTO12gghMGfOHLz11ltQKpUoV64cpk2bptUmLS0NEyZMgLu7O5RKJSpUqIAVK1ZI2zdv3ox69erBxsYGFhYWqF27Nn7++edcn19sbCw6dOgAa2trWFhY4O2330Z8fLy0/fvvv0fz5s1hZWWllfQ/b/v27ahfvz7MzMxga2ubq/jxou/p8OHDaNSoEezt7WFmZoaqVati/vz5Wn2o1WpMmjQJHh4eMDMzQ6VKlTB16lQIIaQ2EydOxBdffAFNAbcV6SvpISpNcuZN2a+c/xYQvQzmO8Wb7yxZsgReXl4wMzNDlSpV8NNPP2lt/+GHH9CkSRPY2trC1tYWfn5+OHHihFabzZs3o3Xr1rC3t8/3b+WL8p3sQmFer+z86vLly2jRogWcnJxgamqKihUrYuLEifnO4bNu3TrIZLICL658/PHHkMlkuQoSV65cQceOHeHg4AArKys0btwYERERWm1OnjyJli1bwsbGBra2tvD398fZs2el7ampqejfvz+8vb1hbGycZxybN29Gq1atpM/F19cXu3bt0mpz8OBBtG/fHi4uLnkWRjIyMjBu3Dh4e3vDwsICLi4u6Nu3L+7cuaPV7kU/M9WqVUODBg0wb968fD8voHAXtah4sShVSsTHx6NKVS/4+PjAx8cHjRo3lrbdvn3bgJER/Z+rqyvWrVuHZzkmik1NTcWaNWvg5uam9+OZmZnB0dFR7/0+7+nTp1i+fDkGDRokrVOr1QgMDER6ejqOHj2K1atXY9WqVZg8eXKBfaWnp6Nr164YOnRontsL029cXBwCAwPRokULREdHY9SoURg8eLBWkjB48GCEh4fj559/xvnz59G6dWv4+fnh77//BpBVJOrUqRNu3LiB3377DWfOnIG7uzv8/PykK1BPnjxB69atIZPJsG/fPhw5cgTp6elo3759rgJJSEgI7t69K70+/fRTre0jR47Ejz/+iDlz5uDSpUv4/fff8c4772i1+eCDD7B3714sX74cly9fxtq1a1GlShVpu52dHSZMmIDIyEic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RET/p3NR6oMPPsDixYsBAM+ePUO9evXwwQcfoGbNmvj111/1HiARERFRScW8iYiIiCh/OhelDh48iCZNmgAAtmzZAiEEHj16hIULF+Lrr7/We4BEREREJRXzJiIiIqL86VyUevz4Mezs7AAAO3fuRJcuXWBubo7AwEBcvXpV7wESERERlVTMm4iIiIjyp3NRytXVFZGRkXjy5Al27tyJ1q1bAwCSkpJgamqq9wCJiIiISirmTURERET50/npe6NGjUKvXr1QpkwZuLm5oXnz5gCyhqd7e3vrOz56SakmCjRq1g+PDqxGqrEJFIYOiIiI6A3EvKnkSzU2QauBSwAAzxKvGzgaIiKi0kXnotQnn3yCd955B7dv30arVq0gl2cNtqpYsSLnRniNCJkcly0d8ACASvbKD1kkIiKil8C8qeQTMjmulnXPen/vhoGjISIiKl10LkoBQL169VCzZk3ExcWhUqVKMDY2RmBgoL5jIyIiIirxmDcRERER5U3nITRPnz7FoEGDYG5ujurVqyM+Ph4A8Omnn2LmzJl6D5Bejok6A59fPoqvAJioMw0dDhER0RuJeVPJZ6LOxKjDYRh1OAwmGrWhwyEiIipVdC5KjR8/HmfPnsX+/fu1Juj08/PD+vXr9RocvTxjtRqfX41EMABjJlBEREQGwbyp5DPWqDHqyFqMOrIWJhqNocMhIiIqVXS+fW/r1q1Yv349GjRoAJlMJq2vXr06rl/n5I9ERERE2Zg3EREREeVP55FS//zzDxwdHXOtf/LkiVayRURERPSmY95ERERElD+di1L16tXD9u3bpeXshOrHH3+Er6+v/iIjIiIiKuGYNxERERHlT+fb96ZPn46AgABcvHgRmZmZWLBgAS5evIijR4/iwIEDRREjERERUYnEvImIiIgofzqPlGrcuDGio6ORmZkJb29v7N69G46OjoiMjISPj09RxEhERERUIjFvIiIiIsqfziOlAKBSpUr44Ycf9B0LERERUanDvImIiIgob4UqSiUnJ8PKykp6X5DsdmRYacYmaNW4Fx4dDkOakQlMDB0QERHRG4J5U+mSZmSCDn3nAQBSH9zOs01sbKzWsoODA9zc3Io8NiIiopKuUEUpW1tb3L17F46OjrCxscnzaTFCCMhkMqjVar0HSbrTyI1wxkaFBwBUcp3v0iQiIqKXxLypdNHI5Tin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Xo3IyEijHi8RERHZBl4pRURERGTmhBD19nF0dERcXBzi4uJq7ePn54ft27fXuZ3w8HBkZmbqHCMRERGRrnilFBERERERERERGR2vlLJSKpkMma5eqLhzDUImM3U4RERERBZJyGQ47t0OAKCyoJQqOztb+tvDwwOtWrUyYTRERESasShlpUodFBjUZyJubF0O70ZyKEwdEBEREZEFut9IjlFRKx78fXqPiaOpX2XRLUAmw8SJE6U2Rydn5JzNZmGKiIjMDotSRERERERWQlVaBAgB9xGvwsHdF+U3LuPG1uUoKChgUYqIiMwOi1JERERERFbGwd0XCu+2pg6DiIioTixKWSnH8vvYm/IZVAAGVJRBZeqAiIiIiCyQU0UZ9sZPAQCE9n7WxNEQERFZFxalrJRMAK1KCh880eJnpImIiIhIAyHQsvA6gAf5FREREemPnakDICIiIiIiIiIi28OiFBERERERERERGR2LUkREREREREREZHRcU4oaLDs7W+25h4cHf2qYiIiIyAwxbyMiInPEohTprLLoFiCTYeLEiWrtjk7OyDmbzQSHiIiIyEwwbyMiInPGopSVEjLgbBN3VBbdAGQyvW5bVVoECAH3Ea/Cwd0XAFB+4zJubF2OgoICJjdERERkPWQynHN/kNsI/aZURsG8jYiIzJlZrym1ZMkS9OrVCy4uLvD09MTo0aORk5Oj1ic8PBwymUztMWPGDLU+eXl5GD58OJydneHp6YnXX38dFRUVan3S0tLQvXt3KBQKtG3bFgkJCYY+PIO67+CIP4VPRmcAJY3kBtmHg7svFN5tofBuKyU5RERERNakpJEcg6f+G4On/hsl9g6mDqfBmLcREZE5MuuiVHp6OmJiYnDo0CEkJyejvLwcgwcPRnFxsVq/adOm4erVq9Jj2bJl0muVlZUYPnw4ysrKcPDgQaxbtw4JCQl46623pD65ubkYPnw4+vfvj6ysLMyZMwdTp07Fzp07jXasRERERERERES2xKxv39uxY4fa84SEBHh6euLo0aPo27ev1O7s7Axvb2+N29i1axfOnDmD3bt3w8vLC127dsU777yDN998E4sWLYJcLseqVavQunVrLF++HADQsWNH7N+/HytWrEBkZKThDpCIiIiIiIiIyEaZ9ZVS1d25cwcA4Obmptb+1VdfwcPDA507d8b8+fNx79496bWM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Tg4KCgpQXl6O5557DjKZDNOmTcOZM2ewfft2vP/++2r7+v7772tcJdUQEyZMgIeHB0aNGoV9+/YhNzcXaWlpeOmll6RlFdq1a4cvvvgC2dnZOHz4MCZMmNCgK9YvXbqEK1euICIi4pHjJiIWpYjISjRp0gQhISFYsWIF+vbti86dO2PhwoWYNm0aPv74Y6nf8uXLkZycDF9fX+kbrnHjxmHhwoV444030KNHD/z666948cUX69zfY489hu3bt+PIkSMICgrCjBkzEB0djQULFugUd/v27bFr1y4cP34cwcHBCA0NRVJSEho1aqT7IBAREZFRtWnTBseOHUP//v3x6quvonPnzhg0aBBSUlIQHx+v1lcmk2HKlCm4desWpkyZUu+2nZ2dsXPnTty8eRO9evXCM888g4EDB6rlNdpwd3dHamoqioqK0K9fP/To0QOfffZZnWtMTZ06FRs3bpRuW1Mqldi7dy+GDRuG9u3bY8GCBVi+fDmGDh0KAJg2bRr8/f3Rs2dPNG/eXPr1ux9++AEnT55Et27d8Le//Q3vvvuu2n70VZRydnbG3r170apVKzz99NPo2LEjoqOjcf/+fSiVSgDA559/jlu3bqF79+6YNGkSXnrpJXh6euq8rw0bNmDw4MHw8/N75LiJCJAJXVboIyIiIiIiIqsmhEBISAheeeUVjB8/3iD7OHbsGAYMGIA//vhD60XYTa2srAzt2rXD+vXr0bt3b1OHQ2QVeKUUERERERERSWQyGT799FNUVFQYbB8VFRX46KOPLKYgBQB5eXn461//yoIUkR7xSikiIiIiIiIiIjI6XilFRERERERERERGx6IUEREREREREREZHYtSRERERERERERkdCxKERERERERERGR0bEoRURERERERERERseiFBERERERERERGR2LUkREREREREREZHQsShERERERERERkdGxKEVEREREREREREbHohQRERERERERERnd/wMkzPN8mk3w8QAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "45.9% of properties have CV < 0.1\n", + "79.3% of properties have CV < 0.2\n", + "91.8% of properties have CV < 0.3\n" + ] + } + ], + "source": [ + "# 2. Histogram of std and CV across all properties (3+ sales)\n", + "import matplotlib.pyplot as plt\n", + "\n", + "fig, axes = plt.subplots(1, 2, figsize=(12, 4))\n", + "\n", + "axes[0].hist(c_stats['c_std'], bins=100, edgecolor='black')\n", + "axes[0].set_xlabel('Std of c')\n", + "axes[0].set_ylabel('Number of properties')\n", + "axes[0].set_title('Distribution of c stability (std)')\n", + "axes[0].axvline(x=c_stats['c_std'].median(), color='red', linestyle='--', label=f'Median ({c_stats['c_std'].median()}) threshold')\n", + "axes[0].legend()\n", + "\n", + "axes[1].hist(c_stats['c_cv'], bins=100, edgecolor='black')\n", + "axes[1].set_xlabel('CV of c (std/mean)')\n", + "axes[1].set_ylabel('Number of properties')\n", + "axes[1].set_title('Distribution of c stability (CV)')\n", + "axes[1].axvline(x=c_stats['c_cv'].median(), color='red', linestyle='--', label=f'Median ({c_stats['c_cv'].median()}) threshold')\n", + "axes[1].legend()\n", + "\n", + "plt.tight_layout()\n", + "plt.show()\n", + "\n", + "# output text\n", + "pct_stable = (c_stats['c_cv'] < 0.1).mean() * 100\n", + "print(f\"{pct_stable:.1f}% of properties have CV < 0.1\")\n", + "\n", + "pct_stable = (c_stats['c_cv'] < 0.2).mean() * 100\n", + "print(f\"{pct_stable:.1f}% of properties have CV < 0.2\")\n", + "\n", + "pct_stable = (c_stats['c_cv'] < 0.3).mean() * 100\n", + "print(f\"{pct_stable:.1f}% of properties have CV < 0.3\")" + ] + }, + { + "cell_type": "markdown", + "id": "567b53f1", + "metadata": {}, + "source": [ + "So about half are very stable. Now investigate - of the unstable c values, was it stable for a period, then a sudden change but is at a new stable value afterwards? If so, then could suggest an underlying attribute has materially changed (e.g. renovation)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "129dbfd2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Postcode Address per EPC \n", + "CR7 8QQ 17, Hythe Road 1.670097\n", + "WS12 2ER 117 BANK STREET, HEATH HAYES 1.414202\n", + "S11 7AU 71, Louth Road 1.408849\n", + "TR7 1JT 23, St. Johns Road 1.406457\n", + "SW11 5TR 2, Glycena Road 1.389811\n", + "N3 1HJ 57, Dollis Park 1.375186\n", + "SW2 1ER 70a Saltoun Road 1.374259\n", + "SW14 7HG 3a Rosemary Terrace, Rosemary Lane 1.373642\n", + "WA14 4RF Apartment 2400, 30, Woodfield Road 1.373133\n", + "BN22 8DH Ground Floor Flat, 60 Dursley Road 1.364974\n", + "WA14 4RF Apartment 2512, 30 Woodfield Road 1.338126\n", + "CF23 5BX Flat 1, 10 Marlborough Road 1.335662\n", + "WA14 4RF Apartment 2514, 30 Woodfield Road 1.332435\n", + "N10 3NR Flat 2, 6 Queens Avenue 1.328944\n", + "NE8 4NH 34, Eastbourne Avenue 1.327276\n", + "NW8 9UL 82 Hamilton Terrace 1.281581\n", + "SE13 5QZ 13b Manor Park 1.278528\n", + "TA14 6SB 29 NEW ROAD, NORTON SUB HAMDON 1.266566\n", + "SW11 4GH 51 Fitzroy House, 6 Palmer Road 1.256950\n", + "SK10 2PQ 11 Roewood Lane 1.211879\n", + "Name: c_cv, dtype: float64" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "CR7 8QQ\n", + "17, Hythe Road\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PostcodeyearPrice per sqm PC AVG
51491CR7 8QQ1992473.023604
51492CR7 8QQ1993514.075905
51493CR7 8QQ1994541.437159
51494CR7 8QQ1995596.849365
51495CR7 8QQ1996630.620027
51496CR7 8QQ1997758.806960
51497CR7 8QQ1998867.570335
51498CR7 8QQ19991267.363366
51499CR7 8QQ20001626.797910
51500CR7 8QQ20011787.503388
51501CR7 8QQ20021969.576143
51502CR7 8QQ20032090.396442
51503CR7 8QQ20042350.718158
51504CR7 8QQ20052604.744208
51505CR7 8QQ20062740.657499
51506CR7 8QQ20072781.780870
51507CR7 8QQ20082591.891320
51508CR7 8QQ20092357.055961
51509CR7 8QQ20102240.171816
51510CR7 8QQ20112240.171816
51511CR7 8QQ20122123.287671
51512CR7 8QQ20132943.482982
51513CR7 8QQ20144065.712443
51514CR7 8QQ20154199.498834
51515CR7 8QQ20164202.574697
51516CR7 8QQ20174559.912875
51517CR7 8QQ20184541.040147
51518CR7 8QQ20194347.435897
51519CR7 8QQ20204730.769231
51520CR7 8QQ20214688.021779
51521CR7 8QQ20224688.021779
51522CR7 8QQ20234688.021779
51523CR7 8QQ20244610.027223
\n", + "
" + ], + "text/plain": [ + " Postcode year Price per sqm PC AVG\n", + "51491 CR7 8QQ 1992 473.023604\n", + "51492 CR7 8QQ 1993 514.075905\n", + "51493 CR7 8QQ 1994 541.437159\n", + "51494 CR7 8QQ 1995 596.849365\n", + "51495 CR7 8QQ 1996 630.620027\n", + "51496 CR7 8QQ 1997 758.806960\n", + "51497 CR7 8QQ 1998 867.570335\n", + "51498 CR7 8QQ 1999 1267.363366\n", + "51499 CR7 8QQ 2000 1626.797910\n", + "51500 CR7 8QQ 2001 1787.503388\n", + "51501 CR7 8QQ 2002 1969.576143\n", + "51502 CR7 8QQ 2003 2090.396442\n", + "51503 CR7 8QQ 2004 2350.718158\n", + "51504 CR7 8QQ 2005 2604.744208\n", + "51505 CR7 8QQ 2006 2740.657499\n", + "51506 CR7 8QQ 2007 2781.780870\n", + "51507 CR7 8QQ 2008 2591.891320\n", + "51508 CR7 8QQ 2009 2357.055961\n", + "51509 CR7 8QQ 2010 2240.171816\n", + "51510 CR7 8QQ 2011 2240.171816\n", + "51511 CR7 8QQ 2012 2123.287671\n", + "51512 CR7 8QQ 2013 2943.482982\n", + "51513 CR7 8QQ 2014 4065.712443\n", + "51514 CR7 8QQ 2015 4199.498834\n", + "51515 CR7 8QQ 2016 4202.574697\n", + "51516 CR7 8QQ 2017 4559.912875\n", + "51517 CR7 8QQ 2018 4541.040147\n", + "51518 CR7 8QQ 2019 4347.435897\n", + "51519 CR7 8QQ 2020 4730.769231\n", + "51520 CR7 8QQ 2021 4688.021779\n", + "51521 CR7 8QQ 2022 4688.021779\n", + "51522 CR7 8QQ 2023 4688.021779\n", + "51523 CR7 8QQ 2024 4610.027223" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PostcodeAddress per EPChistorical_pricesPrice per sqmProperty typeLeashold/FreeholdTotal floor area (sqm)Rooms (including bedrooms & bathrooms)Approximate construction ageyearpricePrice per sqm PC AVGc
252108CR7 8QQ17, Hythe Road{'year': 1995, 'price': 600}9.196812MaisonetteLeasehold65.244.01930.01995600596.8493650.015409
252109CR7 8QQ17, Hythe Road{'year': 1998, 'price': 600}9.196812MaisonetteLeasehold65.244.01930.01998600867.5703350.010601
252110CR7 8QQ17, Hythe Road{'year': 2008, 'price': 180000}2759.043532MaisonetteLeasehold65.244.01930.020081800002591.8913201.064490
\n", + "
" + ], + "text/plain": [ + " Postcode Address per EPC historical_prices \\\n", + "252108 CR7 8QQ 17, Hythe Road {'year': 1995, 'price': 600} \n", + "252109 CR7 8QQ 17, Hythe Road {'year': 1998, 'price': 600} \n", + "252110 CR7 8QQ 17, Hythe Road {'year': 2008, 'price': 180000} \n", + "\n", + " Price per sqm Property type Leashold/Freehold Total floor area (sqm) \\\n", + "252108 9.196812 Maisonette Leasehold 65.24 \n", + "252109 9.196812 Maisonette Leasehold 65.24 \n", + "252110 2759.043532 Maisonette Leasehold 65.24 \n", + "\n", + " Rooms (including bedrooms & bathrooms) Approximate construction age \\\n", + "252108 4.0 1930.0 \n", + "252109 4.0 1930.0 \n", + "252110 4.0 1930.0 \n", + "\n", + " year price Price per sqm PC AVG c \n", + "252108 1995 600 596.849365 0.015409 \n", + "252109 1998 600 867.570335 0.010601 \n", + "252110 2008 180000 2591.891320 1.064490 " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "unstable_c = c_stats.sort_values('c_cv', ascending=False)['c_cv'][:20]\n", + "display(unstable_c)\n", + "\n", + "unstable_c_specific = random.randint(0, 20)\n", + "print(unstable_c_specific)\n", + "print(unstable_c.index[unstable_c_specific][0])\n", + "print(unstable_c.index[unstable_c_specific][1])\n", + "\n", + "# pc avg trend\n", + "temp_pc_avg = pc_avg_complex[pc_avg_complex['Postcode'] == unstable_c.index[unstable_c_specific][0]].sort_values(by='year')\n", + "display(temp_pc_avg)\n", + "\n", + "# c for specific address\n", + "temp_address = data_small[\n", + " (data_small['Postcode'] == unstable_c.index[unstable_c_specific][0]) \n", + " & (data_small['Address per EPC'] == unstable_c.index[unstable_c_specific][1]) \n", + "].sort_values(by='year')\n", + "display(temp_address)\n", + "\n", + "# plot\n", + "\n", + "fig, ax1 = plt.subplots()\n", + "\n", + "temp_pc_avg.plot.line(x='year', y='Price per sqm PC AVG', ax=ax1, color='black')\n", + "temp_address.plot.line(x='year', y='Price per sqm', ax=ax1, color='green') \n", + "\n", + "ax2 = ax1.twinx()\n", + "temp_address.plot.line(x='year', y='c', ax=ax2, color='red', style=':')\n", + "\n", + "ax1.set_ylabel('Price per sqm')\n", + "ax2.set_ylabel('c')\n", + "\n", + "plt.show()\n" + ] + }, + { + "cell_type": "markdown", + "id": "8f38e273", + "metadata": {}, + "source": [ + "# Predict latest" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6f3acea0", + "metadata": {}, + "outputs": [], + "source": [ + "# select random address\n", + "one_property = data_small.sample(1)[['Postcode', 'Address per EPC']].iloc[0]\n", + "postcode = one_property['Postcode']\n", + "address = one_property['Address per EPC']\n", + "print(f'Postcode: {postcode}')\n", + "print(f'Address: {address}')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4ac06bd6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Postcode: N3 3EW\n", + "Address: 53, Edgewood Mews\n", + "Latest year of data: 2022\n", + "\n", + "data_small.shape = (395236, 13)\n", + "data_small_train.shape = (395235, 13)\n", + "data_small_test.shape = (1, 13)\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PostcodeAddress per EPChistorical_pricesPrice per sqmProperty typeLeashold/FreeholdTotal floor area (sqm)Rooms (including bedrooms & bathrooms)Approximate construction ageyearpricePrice per sqm PC AVGc
393849N3 3EW53, Edgewood Mews{'year': 2022, 'price': 880000}8301.886792MaisonetteLeasehold106.0NaN2022.020228800008127.7288351.021428
\n", + "
" + ], + "text/plain": [ + " Postcode Address per EPC historical_prices \\\n", + "393849 N3 3EW 53, Edgewood Mews {'year': 2022, 'price': 880000} \n", + "\n", + " Price per sqm Property type Leashold/Freehold Total floor area (sqm) \\\n", + "393849 8301.886792 Maisonette Leasehold 106.0 \n", + "\n", + " Rooms (including bedrooms & bathrooms) Approximate construction age \\\n", + "393849 NaN 2022.0 \n", + "\n", + " year price Price per sqm PC AVG c \n", + "393849 2022 880000 8127.728835 1.021428 " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "property_data = data_small[\n", + " (data_small['Postcode'] == postcode) \n", + " & (data_small['Address per EPC'] == address) \n", + "]\n", + "latest_year = property_data['year'].max()\n", + "print(f'Latest year of data: {latest_year}')\n", + "\n", + "# remove latest for this postcode from the data and \n", + "data_small_train = data_small.drop(property_data.index)\n", + "data_small_test = property_data[property_data['year'] == latest_year]\n", + "\n", + "print()\n", + "print(f'data_small.shape = {data_small.shape}')\n", + "print(f'data_small_train.shape = {data_small_train.shape}')\n", + "print(f'data_small_test.shape = {data_small_test.shape}')\n", + "display(data_small_test)\n", + "data_small.shape[0] == data_small_test.shape[0] + data_small_train.shape[0]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fd1ba4ee", + "metadata": {}, + "outputs": [], + "source": [ + "# get latest c \n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "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.12.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/pyproject.toml b/pyproject.toml index 9d8bdd9..bb4d209 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,6 +23,8 @@ dependencies = [ "h3>=3.7.0", "overturemaps>=0.18.0", "fastexcel>=0.19.0", + "scipy>=1.17.0", + "matplotlib>=3.10.8", ] [dependency-groups] diff --git a/uv.lock b/uv.lock index fedd70a..6d13f3a 100644 --- a/uv.lock +++ b/uv.lock @@ -325,6 +325,81 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/60/97/891a0971e1e4a8c5d2b20bbe0e524dc04548d2307fee33cdeba148fd4fc7/comm-0.2.3-py3-none-any.whl", hash = "sha256:c615d91d75f7f04f095b30d1c1711babd43bdc6419c1be9886a85f2f4e489417", size = 7294, upload-time = "2025-07-25T14:02:02.896Z" }, ] +[[package]] +name = "contourpy" +version = "1.3.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/58/01/1253e6698a07380cd31a736d248a3f2a50a7c88779a1813da27503cadc2a/contourpy-1.3.3.tar.gz", hash = "sha256:083e12155b210502d0bca491432bb04d56dc3432f95a979b429f2848c3dbe880", size = 13466174, upload-time = "2025-07-26T12:03:12.549Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/be/45/adfee365d9ea3d853550b2e735f9d66366701c65db7855cd07621732ccfc/contourpy-1.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b08a32ea2f8e42cf1d4be3169a98dd4be32bafe4f22b6c4cb4ba810fa9e5d2cb", size = 293419, upload-time = "2025-07-26T12:01:21.16Z" }, + { url = "https://files.pythonhosted.org/packages/53/3e/405b59cfa13021a56bba395a6b3aca8cec012b45bf177b0eaf7a202cde2c/contourpy-1.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:556dba8fb6f5d8742f2923fe9457dbdd51e1049c4a43fd3986a0b14a1d815fc6", size = 273979, upload-time = "2025-07-26T12:01:22.448Z" }, + { url = "https://files.pythonhosted.org/packages/d4/1c/a12359b9b2ca3a845e8f7f9ac08bdf776114eb931392fcad91743e2ea17b/contourpy-1.3.3-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:92d9abc807cf7d0e047b95ca5d957cf4792fcd04e920ca70d48add15c1a90ea7", size = 332653, upload-time = "2025-07-26T12:01:24.155Z" }, + { url = "https://files.pythonhosted.org/packages/63/12/897aeebfb475b7748ea67b61e045accdfcf0d971f8a588b67108ed7f5512/contourpy-1.3.3-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b2e8faa0ed68cb29af51edd8e24798bb661eac3bd9f65420c1887b6ca89987c8", size = 379536, upload-time = "2025-07-26T12:01:25.91Z" }, + { url = "https://files.pythonhosted.org/packages/43/8a/a8c584b82deb248930ce069e71576fc09bd7174bbd35183b7943fb1064fd/contourpy-1.3.3-cp312-cp312-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:626d60935cf668e70a5ce6ff184fd713e9683fb458898e4249b63be9e28286ea", size = 384397, upload-time = "2025-07-26T12:01:27.152Z" }, + { url = "https://files.pythonhosted.org/packages/cc/8f/ec6289987824b29529d0dfda0d74a07cec60e54b9c92f3c9da4c0ac732de/contourpy-1.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4d00e655fcef08aba35ec9610536bfe90267d7ab5ba944f7032549c55a146da1", size = 362601, upload-time = "2025-07-26T12:01:28.808Z" }, + { url = "https://files.pythonhosted.org/packages/05/0a/a3fe3be3ee2dceb3e615ebb4df97ae6f3828aa915d3e10549ce016302bd1/contourpy-1.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:451e71b5a7d597379ef572de31eeb909a87246974d960049a9848c3bc6c41bf7", size = 1331288, upload-time = "2025-07-26T12:01:31.198Z" }, + { url = "https://files.pythonhosted.org/packages/33/1d/acad9bd4e97f13f3e2b18a3977fe1b4a37ecf3d38d815333980c6c72e963/contourpy-1.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:459c1f020cd59fcfe6650180678a9993932d80d44ccde1fa1868977438f0b411", size = 1403386, upload-time = "2025-07-26T12:01:33.947Z" }, + { url = "https://files.pythonhosted.org/packages/cf/8f/5847f44a7fddf859704217a99a23a4f6417b10e5ab1256a179264561540e/contourpy-1.3.3-cp312-cp312-win32.whl", hash = "sha256:023b44101dfe49d7d53932be418477dba359649246075c996866106da069af69", size = 185018, upload-time = "2025-07-26T12:01:35.64Z" }, + { url = "https://files.pythonhosted.org/packages/19/e8/6026ed58a64563186a9ee3f29f41261fd1828f527dd93d33b60feca63352/contourpy-1.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:8153b8bfc11e1e4d75bcb0bff1db232f9e10b274e0929de9d608027e0d34ff8b", size = 226567, upload-time = "2025-07-26T12:01:36.804Z" }, + { url = "https://files.pythonhosted.org/packages/d1/e2/f05240d2c39a1ed228d8328a78b6f44cd695f7ef47beb3e684cf93604f86/contourpy-1.3.3-cp312-cp312-win_arm64.whl", hash = "sha256:07ce5ed73ecdc4a03ffe3e1b3e3c1166db35ae7584be76f65dbbe28a7791b0cc", size = 193655, upload-time = "2025-07-26T12:01:37.999Z" }, + { url = "https://files.pythonhosted.org/packages/68/35/0167aad910bbdb9599272bd96d01a9ec6852f36b9455cf2ca67bd4cc2d23/contourpy-1.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:177fb367556747a686509d6fef71d221a4b198a3905fe824430e5ea0fda54eb5", size = 293257, upload-time = "2025-07-26T12:01:39.367Z" }, + { url = "https://files.pythonhosted.org/packages/96/e4/7adcd9c8362745b2210728f209bfbcf7d91ba868a2c5f40d8b58f54c509b/contourpy-1.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d002b6f00d73d69333dac9d0b8d5e84d9724ff9ef044fd63c5986e62b7c9e1b1", size = 274034, upload-time = "2025-07-26T12:01:40.645Z" }, + { url = "https://files.pythonhosted.org/packages/73/23/90e31ceeed1de63058a02cb04b12f2de4b40e3bef5e082a7c18d9c8ae281/contourpy-1.3.3-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:348ac1f5d4f1d66d3322420f01d42e43122f43616e0f194fc1c9f5d830c5b286", size = 334672, upload-time = "2025-07-26T12:01:41.942Z" }, + { url = "https://files.pythonhosted.org/packages/ed/93/b43d8acbe67392e659e1d984700e79eb67e2acb2bd7f62012b583a7f1b55/contourpy-1.3.3-cp313-cp313-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:655456777ff65c2c548b7c454af9c6f33f16c8884f11083244b5819cc214f1b5", size = 381234, upload-time = "2025-07-26T12:01:43.499Z" }, + { url = "https://files.pythonhosted.org/packages/46/3b/bec82a3ea06f66711520f75a40c8fc0b113b2a75edb36aa633eb11c4f50f/contourpy-1.3.3-cp313-cp313-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:644a6853d15b2512d67881586bd03f462c7ab755db95f16f14d7e238f2852c67", size = 385169, upload-time = "2025-07-26T12:01:45.219Z" }, + { url = "https://files.pythonhosted.org/packages/4b/32/e0f13a1c5b0f8572d0ec6ae2f6c677b7991fafd95da523159c19eff0696a/contourpy-1.3.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4debd64f124ca62069f313a9cb86656ff087786016d76927ae2cf37846b006c9", size = 362859, upload-time = "2025-07-26T12:01:46.519Z" }, + { url = "https://files.pythonhosted.org/packages/33/71/e2a7945b7de4e58af42d708a219f3b2f4cff7386e6b6ab0a0fa0033c49a9/contourpy-1.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a15459b0f4615b00bbd1e91f1b9e19b7e63aea7483d03d804186f278c0af2659", size = 1332062, upload-time = "2025-07-26T12:01:48.964Z" }, + { url = "https://files.pythonhosted.org/packages/12/fc/4e87ac754220ccc0e807284f88e943d6d43b43843614f0a8afa469801db0/contourpy-1.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ca0fdcd73925568ca027e0b17ab07aad764be4706d0a925b89227e447d9737b7", size = 1403932, upload-time = "2025-07-26T12:01:51.979Z" }, + { url = "https://files.pythonhosted.org/packages/a6/2e/adc197a37443f934594112222ac1aa7dc9a98faf9c3842884df9a9d8751d/contourpy-1.3.3-cp313-cp313-win32.whl", hash = "sha256:b20c7c9a3bf701366556e1b1984ed2d0cedf999903c51311417cf5f591d8c78d", size = 185024, upload-time = "2025-07-26T12:01:53.245Z" }, + { url = "https://files.pythonhosted.org/packages/18/0b/0098c214843213759692cc638fce7de5c289200a830e5035d1791d7a2338/contourpy-1.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:1cadd8b8969f060ba45ed7c1b714fe69185812ab43bd6b86a9123fe8f99c3263", size = 226578, upload-time = "2025-07-26T12:01:54.422Z" }, + { url = "https://files.pythonhosted.org/packages/8a/9a/2f6024a0c5995243cd63afdeb3651c984f0d2bc727fd98066d40e141ad73/contourpy-1.3.3-cp313-cp313-win_arm64.whl", hash = "sha256:fd914713266421b7536de2bfa8181aa8c699432b6763a0ea64195ebe28bff6a9", size = 193524, upload-time = "2025-07-26T12:01:55.73Z" }, + { url = "https://files.pythonhosted.org/packages/c0/b3/f8a1a86bd3298513f500e5b1f5fd92b69896449f6cab6a146a5d52715479/contourpy-1.3.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:88df9880d507169449d434c293467418b9f6cbe82edd19284aa0409e7fdb933d", size = 306730, upload-time = "2025-07-26T12:01:57.051Z" }, + { url = "https://files.pythonhosted.org/packages/3f/11/4780db94ae62fc0c2053909b65dc3246bd7cecfc4f8a20d957ad43aa4ad8/contourpy-1.3.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:d06bb1f751ba5d417047db62bca3c8fde202b8c11fb50742ab3ab962c81e8216", size = 287897, upload-time = "2025-07-26T12:01:58.663Z" }, + { url = "https://files.pythonhosted.org/packages/ae/15/e59f5f3ffdd6f3d4daa3e47114c53daabcb18574a26c21f03dc9e4e42ff0/contourpy-1.3.3-cp313-cp313t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e4e6b05a45525357e382909a4c1600444e2a45b4795163d3b22669285591c1ae", size = 326751, upload-time = "2025-07-26T12:02:00.343Z" }, + { url = "https://files.pythonhosted.org/packages/0f/81/03b45cfad088e4770b1dcf72ea78d3802d04200009fb364d18a493857210/contourpy-1.3.3-cp313-cp313t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ab3074b48c4e2cf1a960e6bbeb7f04566bf36b1861d5c9d4d8ac04b82e38ba20", size = 375486, upload-time = "2025-07-26T12:02:02.128Z" }, + { url = "https://files.pythonhosted.org/packages/0c/ba/49923366492ffbdd4486e970d421b289a670ae8cf539c1ea9a09822b371a/contourpy-1.3.3-cp313-cp313t-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6c3d53c796f8647d6deb1abe867daeb66dcc8a97e8455efa729516b997b8ed99", size = 388106, upload-time = "2025-07-26T12:02:03.615Z" }, + { url = "https://files.pythonhosted.org/packages/9f/52/5b00ea89525f8f143651f9f03a0df371d3cbd2fccd21ca9b768c7a6500c2/contourpy-1.3.3-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:50ed930df7289ff2a8d7afeb9603f8289e5704755c7e5c3bbd929c90c817164b", size = 352548, upload-time = "2025-07-26T12:02:05.165Z" }, + { url = "https://files.pythonhosted.org/packages/32/1d/a209ec1a3a3452d490f6b14dd92e72280c99ae3d1e73da74f8277d4ee08f/contourpy-1.3.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4feffb6537d64b84877da813a5c30f1422ea5739566abf0bd18065ac040e120a", size = 1322297, upload-time = "2025-07-26T12:02:07.379Z" }, + { url = "https://files.pythonhosted.org/packages/bc/9e/46f0e8ebdd884ca0e8877e46a3f4e633f6c9c8c4f3f6e72be3fe075994aa/contourpy-1.3.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:2b7e9480ffe2b0cd2e787e4df64270e3a0440d9db8dc823312e2c940c167df7e", size = 1391023, upload-time = "2025-07-26T12:02:10.171Z" }, + { url = "https://files.pythonhosted.org/packages/b9/70/f308384a3ae9cd2209e0849f33c913f658d3326900d0ff5d378d6a1422d2/contourpy-1.3.3-cp313-cp313t-win32.whl", hash = "sha256:283edd842a01e3dcd435b1c5116798d661378d83d36d337b8dde1d16a5fc9ba3", size = 196157, upload-time = "2025-07-26T12:02:11.488Z" }, + { url = "https://files.pythonhosted.org/packages/b2/dd/880f890a6663b84d9e34a6f88cded89d78f0091e0045a284427cb6b18521/contourpy-1.3.3-cp313-cp313t-win_amd64.whl", hash = "sha256:87acf5963fc2b34825e5b6b048f40e3635dd547f590b04d2ab317c2619ef7ae8", size = 240570, upload-time = "2025-07-26T12:02:12.754Z" }, + { url = "https://files.pythonhosted.org/packages/80/99/2adc7d8ffead633234817ef8e9a87115c8a11927a94478f6bb3d3f4d4f7d/contourpy-1.3.3-cp313-cp313t-win_arm64.whl", hash = "sha256:3c30273eb2a55024ff31ba7d052dde990d7d8e5450f4bbb6e913558b3d6c2301", size = 199713, upload-time = "2025-07-26T12:02:14.4Z" }, + { url = "https://files.pythonhosted.org/packages/72/8b/4546f3ab60f78c514ffb7d01a0bd743f90de36f0019d1be84d0a708a580a/contourpy-1.3.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fde6c716d51c04b1c25d0b90364d0be954624a0ee9d60e23e850e8d48353d07a", size = 292189, upload-time = "2025-07-26T12:02:16.095Z" }, + { url = "https://files.pythonhosted.org/packages/fd/e1/3542a9cb596cadd76fcef413f19c79216e002623158befe6daa03dbfa88c/contourpy-1.3.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:cbedb772ed74ff5be440fa8eee9bd49f64f6e3fc09436d9c7d8f1c287b121d77", size = 273251, upload-time = "2025-07-26T12:02:17.524Z" }, + { url = "https://files.pythonhosted.org/packages/b1/71/f93e1e9471d189f79d0ce2497007731c1e6bf9ef6d1d61b911430c3db4e5/contourpy-1.3.3-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:22e9b1bd7a9b1d652cd77388465dc358dafcd2e217d35552424aa4f996f524f5", size = 335810, upload-time = "2025-07-26T12:02:18.9Z" }, + { url = "https://files.pythonhosted.org/packages/91/f9/e35f4c1c93f9275d4e38681a80506b5510e9327350c51f8d4a5a724d178c/contourpy-1.3.3-cp314-cp314-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a22738912262aa3e254e4f3cb079a95a67132fc5a063890e224393596902f5a4", size = 382871, upload-time = "2025-07-26T12:02:20.418Z" }, + { url = "https://files.pythonhosted.org/packages/b5/71/47b512f936f66a0a900d81c396a7e60d73419868fba959c61efed7a8ab46/contourpy-1.3.3-cp314-cp314-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:afe5a512f31ee6bd7d0dda52ec9864c984ca3d66664444f2d72e0dc4eb832e36", size = 386264, upload-time = "2025-07-26T12:02:21.916Z" }, + { url = "https://files.pythonhosted.org/packages/04/5f/9ff93450ba96b09c7c2b3f81c94de31c89f92292f1380261bd7195bea4ea/contourpy-1.3.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f64836de09927cba6f79dcd00fdd7d5329f3fccc633468507079c829ca4db4e3", size = 363819, upload-time = "2025-07-26T12:02:23.759Z" }, + { url = "https://files.pythonhosted.org/packages/3e/a6/0b185d4cc480ee494945cde102cb0149ae830b5fa17bf855b95f2e70ad13/contourpy-1.3.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1fd43c3be4c8e5fd6e4f2baeae35ae18176cf2e5cced681cca908addf1cdd53b", size = 1333650, upload-time = "2025-07-26T12:02:26.181Z" }, + { url = "https://files.pythonhosted.org/packages/43/d7/afdc95580ca56f30fbcd3060250f66cedbde69b4547028863abd8aa3b47e/contourpy-1.3.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:6afc576f7b33cf00996e5c1102dc2a8f7cc89e39c0b55df93a0b78c1bd992b36", size = 1404833, upload-time = "2025-07-26T12:02:28.782Z" }, + { url = "https://files.pythonhosted.org/packages/e2/e2/366af18a6d386f41132a48f033cbd2102e9b0cf6345d35ff0826cd984566/contourpy-1.3.3-cp314-cp314-win32.whl", hash = "sha256:66c8a43a4f7b8df8b71ee1840e4211a3c8d93b214b213f590e18a1beca458f7d", size = 189692, upload-time = "2025-07-26T12:02:30.128Z" }, + { url = "https://files.pythonhosted.org/packages/7d/c2/57f54b03d0f22d4044b8afb9ca0e184f8b1afd57b4f735c2fa70883dc601/contourpy-1.3.3-cp314-cp314-win_amd64.whl", hash = "sha256:cf9022ef053f2694e31d630feaacb21ea24224be1c3ad0520b13d844274614fd", size = 232424, upload-time = "2025-07-26T12:02:31.395Z" }, + { url = "https://files.pythonhosted.org/packages/18/79/a9416650df9b525737ab521aa181ccc42d56016d2123ddcb7b58e926a42c/contourpy-1.3.3-cp314-cp314-win_arm64.whl", hash = "sha256:95b181891b4c71de4bb404c6621e7e2390745f887f2a026b2d99e92c17892339", size = 198300, upload-time = "2025-07-26T12:02:32.956Z" }, + { url = "https://files.pythonhosted.org/packages/1f/42/38c159a7d0f2b7b9c04c64ab317042bb6952b713ba875c1681529a2932fe/contourpy-1.3.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:33c82d0138c0a062380332c861387650c82e4cf1747aaa6938b9b6516762e772", size = 306769, upload-time = "2025-07-26T12:02:34.2Z" }, + { url = "https://files.pythonhosted.org/packages/c3/6c/26a8205f24bca10974e77460de68d3d7c63e282e23782f1239f226fcae6f/contourpy-1.3.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:ea37e7b45949df430fe649e5de8351c423430046a2af20b1c1961cae3afcda77", size = 287892, upload-time = "2025-07-26T12:02:35.807Z" }, + { url = "https://files.pythonhosted.org/packages/66/06/8a475c8ab718ebfd7925661747dbb3c3ee9c82ac834ccb3570be49d129f4/contourpy-1.3.3-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d304906ecc71672e9c89e87c4675dc5c2645e1f4269a5063b99b0bb29f232d13", size = 326748, upload-time = "2025-07-26T12:02:37.193Z" }, + { url = "https://files.pythonhosted.org/packages/b4/a3/c5ca9f010a44c223f098fccd8b158bb1cb287378a31ac141f04730dc49be/contourpy-1.3.3-cp314-cp314t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ca658cd1a680a5c9ea96dc61cdbae1e85c8f25849843aa799dfd3cb370ad4fbe", size = 375554, upload-time = "2025-07-26T12:02:38.894Z" }, + { url = "https://files.pythonhosted.org/packages/80/5b/68bd33ae63fac658a4145088c1e894405e07584a316738710b636c6d0333/contourpy-1.3.3-cp314-cp314t-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ab2fd90904c503739a75b7c8c5c01160130ba67944a7b77bbf36ef8054576e7f", size = 388118, upload-time = "2025-07-26T12:02:40.642Z" }, + { url = "https://files.pythonhosted.org/packages/40/52/4c285a6435940ae25d7410a6c36bda5145839bc3f0beb20c707cda18b9d2/contourpy-1.3.3-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7301b89040075c30e5768810bc96a8e8d78085b47d8be6e4c3f5a0b4ed478a0", size = 352555, upload-time = "2025-07-26T12:02:42.25Z" }, + { url = "https://files.pythonhosted.org/packages/24/ee/3e81e1dd174f5c7fefe50e85d0892de05ca4e26ef1c9a59c2a57e43b865a/contourpy-1.3.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:2a2a8b627d5cc6b7c41a4beff6c5ad5eb848c88255fda4a8745f7e901b32d8e4", size = 1322295, upload-time = "2025-07-26T12:02:44.668Z" }, + { url = "https://files.pythonhosted.org/packages/3c/b2/6d913d4d04e14379de429057cd169e5e00f6c2af3bb13e1710bcbdb5da12/contourpy-1.3.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:fd6ec6be509c787f1caf6b247f0b1ca598bef13f4ddeaa126b7658215529ba0f", size = 1391027, upload-time = "2025-07-26T12:02:47.09Z" }, + { url = "https://files.pythonhosted.org/packages/93/8a/68a4ec5c55a2971213d29a9374913f7e9f18581945a7a31d1a39b5d2dfe5/contourpy-1.3.3-cp314-cp314t-win32.whl", hash = "sha256:e74a9a0f5e3fff48fb5a7f2fd2b9b70a3fe014a67522f79b7cca4c0c7e43c9ae", size = 202428, upload-time = "2025-07-26T12:02:48.691Z" }, + { url = "https://files.pythonhosted.org/packages/fa/96/fd9f641ffedc4fa3ace923af73b9d07e869496c9cc7a459103e6e978992f/contourpy-1.3.3-cp314-cp314t-win_amd64.whl", hash = "sha256:13b68d6a62db8eafaebb8039218921399baf6e47bf85006fd8529f2a08ef33fc", size = 250331, upload-time = "2025-07-26T12:02:50.137Z" }, + { url = "https://files.pythonhosted.org/packages/ae/8c/469afb6465b853afff216f9528ffda78a915ff880ed58813ba4faf4ba0b6/contourpy-1.3.3-cp314-cp314t-win_arm64.whl", hash = "sha256:b7448cb5a725bb1e35ce88771b86fba35ef418952474492cf7c764059933ff8b", size = 203831, upload-time = "2025-07-26T12:02:51.449Z" }, +] + +[[package]] +name = "cycler" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a9/95/a3dbbb5028f35eafb79008e7522a75244477d2838f38cbb722248dabc2a8/cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c", size = 7615, upload-time = "2023-10-07T05:32:18.335Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321, upload-time = "2023-10-07T05:32:16.783Z" }, +] + [[package]] name = "debugpy" version = "1.8.19" @@ -556,6 +631,47 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/cb/a8/20d0723294217e47de6d9e2e40fd4a9d2f7c4b6ef974babd482a59743694/fastjsonschema-2.21.2-py3-none-any.whl", hash = "sha256:1c797122d0a86c5cace2e54bf4e819c36223b552017172f32c5c024a6b77e463", size = 24024, upload-time = "2025-08-14T18:49:34.776Z" }, ] +[[package]] +name = "fonttools" +version = "4.61.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ec/ca/cf17b88a8df95691275a3d77dc0a5ad9907f328ae53acbe6795da1b2f5ed/fonttools-4.61.1.tar.gz", hash = "sha256:6675329885c44657f826ef01d9e4fb33b9158e9d93c537d84ad8399539bc6f69", size = 3565756, upload-time = "2025-12-12T17:31:24.246Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6f/16/7decaa24a1bd3a70c607b2e29f0adc6159f36a7e40eaba59846414765fd4/fonttools-4.61.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f3cb4a569029b9f291f88aafc927dd53683757e640081ca8c412781ea144565e", size = 2851593, upload-time = "2025-12-12T17:30:04.225Z" }, + { url = "https://files.pythonhosted.org/packages/94/98/3c4cb97c64713a8cf499b3245c3bf9a2b8fd16a3e375feff2aed78f96259/fonttools-4.61.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41a7170d042e8c0024703ed13b71893519a1a6d6e18e933e3ec7507a2c26a4b2", size = 2400231, upload-time = "2025-12-12T17:30:06.47Z" }, + { url = "https://files.pythonhosted.org/packages/b7/37/82dbef0f6342eb01f54bca073ac1498433d6ce71e50c3c3282b655733b31/fonttools-4.61.1-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:10d88e55330e092940584774ee5e8a6971b01fc2f4d3466a1d6c158230880796", size = 4954103, upload-time = "2025-12-12T17:30:08.432Z" }, + { url = "https://files.pythonhosted.org/packages/6c/44/f3aeac0fa98e7ad527f479e161aca6c3a1e47bb6996b053d45226fe37bf2/fonttools-4.61.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:15acc09befd16a0fb8a8f62bc147e1a82817542d72184acca9ce6e0aeda9fa6d", size = 5004295, upload-time = "2025-12-12T17:30:10.56Z" }, + { url = "https://files.pythonhosted.org/packages/14/e8/7424ced75473983b964d09f6747fa09f054a6d656f60e9ac9324cf40c743/fonttools-4.61.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e6bcdf33aec38d16508ce61fd81838f24c83c90a1d1b8c68982857038673d6b8", size = 4944109, upload-time = "2025-12-12T17:30:12.874Z" }, + { url = "https://files.pythonhosted.org/packages/c8/8b/6391b257fa3d0b553d73e778f953a2f0154292a7a7a085e2374b111e5410/fonttools-4.61.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5fade934607a523614726119164ff621e8c30e8fa1ffffbbd358662056ba69f0", size = 5093598, upload-time = "2025-12-12T17:30:15.79Z" }, + { url = "https://files.pythonhosted.org/packages/d9/71/fd2ea96cdc512d92da5678a1c98c267ddd4d8c5130b76d0f7a80f9a9fde8/fonttools-4.61.1-cp312-cp312-win32.whl", hash = "sha256:75da8f28eff26defba42c52986de97b22106cb8f26515b7c22443ebc9c2d3261", size = 2269060, upload-time = "2025-12-12T17:30:18.058Z" }, + { url = "https://files.pythonhosted.org/packages/80/3b/a3e81b71aed5a688e89dfe0e2694b26b78c7d7f39a5ffd8a7d75f54a12a8/fonttools-4.61.1-cp312-cp312-win_amd64.whl", hash = "sha256:497c31ce314219888c0e2fce5ad9178ca83fe5230b01a5006726cdf3ac9f24d9", size = 2319078, upload-time = "2025-12-12T17:30:22.862Z" }, + { url = "https://files.pythonhosted.org/packages/4b/cf/00ba28b0990982530addb8dc3e9e6f2fa9cb5c20df2abdda7baa755e8fe1/fonttools-4.61.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8c56c488ab471628ff3bfa80964372fc13504ece601e0d97a78ee74126b2045c", size = 2846454, upload-time = "2025-12-12T17:30:24.938Z" }, + { url = "https://files.pythonhosted.org/packages/5a/ca/468c9a8446a2103ae645d14fee3f610567b7042aba85031c1c65e3ef7471/fonttools-4.61.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:dc492779501fa723b04d0ab1f5be046797fee17d27700476edc7ee9ae535a61e", size = 2398191, upload-time = "2025-12-12T17:30:27.343Z" }, + { url = "https://files.pythonhosted.org/packages/a3/4b/d67eedaed19def5967fade3297fed8161b25ba94699efc124b14fb68cdbc/fonttools-4.61.1-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:64102ca87e84261419c3747a0d20f396eb024bdbeb04c2bfb37e2891f5fadcb5", size = 4928410, upload-time = "2025-12-12T17:30:29.771Z" }, + { url = "https://files.pythonhosted.org/packages/b0/8d/6fb3494dfe61a46258cd93d979cf4725ded4eb46c2a4ca35e4490d84daea/fonttools-4.61.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4c1b526c8d3f615a7b1867f38a9410849c8f4aef078535742198e942fba0e9bd", size = 4984460, upload-time = "2025-12-12T17:30:32.073Z" }, + { url = "https://files.pythonhosted.org/packages/f7/f1/a47f1d30b3dc00d75e7af762652d4cbc3dff5c2697a0dbd5203c81afd9c3/fonttools-4.61.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:41ed4b5ec103bd306bb68f81dc166e77409e5209443e5773cb4ed837bcc9b0d3", size = 4925800, upload-time = "2025-12-12T17:30:34.339Z" }, + { url = "https://files.pythonhosted.org/packages/a7/01/e6ae64a0981076e8a66906fab01539799546181e32a37a0257b77e4aa88b/fonttools-4.61.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b501c862d4901792adaec7c25b1ecc749e2662543f68bb194c42ba18d6eec98d", size = 5067859, upload-time = "2025-12-12T17:30:36.593Z" }, + { url = "https://files.pythonhosted.org/packages/73/aa/28e40b8d6809a9b5075350a86779163f074d2b617c15d22343fce81918db/fonttools-4.61.1-cp313-cp313-win32.whl", hash = "sha256:4d7092bb38c53bbc78e9255a59158b150bcdc115a1e3b3ce0b5f267dc35dd63c", size = 2267821, upload-time = "2025-12-12T17:30:38.478Z" }, + { url = "https://files.pythonhosted.org/packages/1a/59/453c06d1d83dc0951b69ef692d6b9f1846680342927df54e9a1ca91c6f90/fonttools-4.61.1-cp313-cp313-win_amd64.whl", hash = "sha256:21e7c8d76f62ab13c9472ccf74515ca5b9a761d1bde3265152a6dc58700d895b", size = 2318169, upload-time = "2025-12-12T17:30:40.951Z" }, + { url = "https://files.pythonhosted.org/packages/32/8f/4e7bf82c0cbb738d3c2206c920ca34ca74ef9dabde779030145d28665104/fonttools-4.61.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:fff4f534200a04b4a36e7ae3cb74493afe807b517a09e99cb4faa89a34ed6ecd", size = 2846094, upload-time = "2025-12-12T17:30:43.511Z" }, + { url = "https://files.pythonhosted.org/packages/71/09/d44e45d0a4f3a651f23a1e9d42de43bc643cce2971b19e784cc67d823676/fonttools-4.61.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:d9203500f7c63545b4ce3799319fe4d9feb1a1b89b28d3cb5abd11b9dd64147e", size = 2396589, upload-time = "2025-12-12T17:30:45.681Z" }, + { url = "https://files.pythonhosted.org/packages/89/18/58c64cafcf8eb677a99ef593121f719e6dcbdb7d1c594ae5a10d4997ca8a/fonttools-4.61.1-cp314-cp314-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:fa646ecec9528bef693415c79a86e733c70a4965dd938e9a226b0fc64c9d2e6c", size = 4877892, upload-time = "2025-12-12T17:30:47.709Z" }, + { url = "https://files.pythonhosted.org/packages/8a/ec/9e6b38c7ba1e09eb51db849d5450f4c05b7e78481f662c3b79dbde6f3d04/fonttools-4.61.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:11f35ad7805edba3aac1a3710d104592df59f4b957e30108ae0ba6c10b11dd75", size = 4972884, upload-time = "2025-12-12T17:30:49.656Z" }, + { url = "https://files.pythonhosted.org/packages/5e/87/b5339da8e0256734ba0dbbf5b6cdebb1dd79b01dc8c270989b7bcd465541/fonttools-4.61.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b931ae8f62db78861b0ff1ac017851764602288575d65b8e8ff1963fed419063", size = 4924405, upload-time = "2025-12-12T17:30:51.735Z" }, + { url = "https://files.pythonhosted.org/packages/0b/47/e3409f1e1e69c073a3a6fd8cb886eb18c0bae0ee13db2c8d5e7f8495e8b7/fonttools-4.61.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b148b56f5de675ee16d45e769e69f87623a4944f7443850bf9a9376e628a89d2", size = 5035553, upload-time = "2025-12-12T17:30:54.823Z" }, + { url = "https://files.pythonhosted.org/packages/bf/b6/1f6600161b1073a984294c6c031e1a56ebf95b6164249eecf30012bb2e38/fonttools-4.61.1-cp314-cp314-win32.whl", hash = "sha256:9b666a475a65f4e839d3d10473fad6d47e0a9db14a2f4a224029c5bfde58ad2c", size = 2271915, upload-time = "2025-12-12T17:30:57.913Z" }, + { url = "https://files.pythonhosted.org/packages/52/7b/91e7b01e37cc8eb0e1f770d08305b3655e4f002fc160fb82b3390eabacf5/fonttools-4.61.1-cp314-cp314-win_amd64.whl", hash = "sha256:4f5686e1fe5fce75d82d93c47a438a25bf0d1319d2843a926f741140b2b16e0c", size = 2323487, upload-time = "2025-12-12T17:30:59.804Z" }, + { url = "https://files.pythonhosted.org/packages/39/5c/908ad78e46c61c3e3ed70c3b58ff82ab48437faf84ec84f109592cabbd9f/fonttools-4.61.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:e76ce097e3c57c4bcb67c5aa24a0ecdbd9f74ea9219997a707a4061fbe2707aa", size = 2929571, upload-time = "2025-12-12T17:31:02.574Z" }, + { url = "https://files.pythonhosted.org/packages/bd/41/975804132c6dea64cdbfbaa59f3518a21c137a10cccf962805b301ac6ab2/fonttools-4.61.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:9cfef3ab326780c04d6646f68d4b4742aae222e8b8ea1d627c74e38afcbc9d91", size = 2435317, upload-time = "2025-12-12T17:31:04.974Z" }, + { url = "https://files.pythonhosted.org/packages/b0/5a/aef2a0a8daf1ebaae4cfd83f84186d4a72ee08fd6a8451289fcd03ffa8a4/fonttools-4.61.1-cp314-cp314t-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:a75c301f96db737e1c5ed5fd7d77d9c34466de16095a266509e13da09751bd19", size = 4882124, upload-time = "2025-12-12T17:31:07.456Z" }, + { url = "https://files.pythonhosted.org/packages/80/33/d6db3485b645b81cea538c9d1c9219d5805f0877fda18777add4671c5240/fonttools-4.61.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:91669ccac46bbc1d09e9273546181919064e8df73488ea087dcac3e2968df9ba", size = 5100391, upload-time = "2025-12-12T17:31:09.732Z" }, + { url = "https://files.pythonhosted.org/packages/6c/d6/675ba631454043c75fcf76f0ca5463eac8eb0666ea1d7badae5fea001155/fonttools-4.61.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:c33ab3ca9d3ccd581d58e989d67554e42d8d4ded94ab3ade3508455fe70e65f7", size = 4978800, upload-time = "2025-12-12T17:31:11.681Z" }, + { url = "https://files.pythonhosted.org/packages/7f/33/d3ec753d547a8d2bdaedd390d4a814e8d5b45a093d558f025c6b990b554c/fonttools-4.61.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:664c5a68ec406f6b1547946683008576ef8b38275608e1cee6c061828171c118", size = 5006426, upload-time = "2025-12-12T17:31:13.764Z" }, + { url = "https://files.pythonhosted.org/packages/b4/40/cc11f378b561a67bea850ab50063366a0d1dd3f6d0a30ce0f874b0ad5664/fonttools-4.61.1-cp314-cp314t-win32.whl", hash = "sha256:aed04cabe26f30c1647ef0e8fbb207516fd40fe9472e9439695f5c6998e60ac5", size = 2335377, upload-time = "2025-12-12T17:31:16.49Z" }, + { url = "https://files.pythonhosted.org/packages/e4/ff/c9a2b66b39f8628531ea58b320d66d951267c98c6a38684daa8f50fb02f8/fonttools-4.61.1-cp314-cp314t-win_amd64.whl", hash = "sha256:2180f14c141d2f0f3da43f3a81bc8aa4684860f6b0e6f9e165a4831f24e6a23b", size = 2400613, upload-time = "2025-12-12T17:31:18.769Z" }, + { url = "https://files.pythonhosted.org/packages/c7/4e/ce75a57ff3aebf6fc1f4e9d508b8e5810618a33d900ad6c19eb30b290b97/fonttools-4.61.1-py3-none-any.whl", hash = "sha256:17d2bf5d541add43822bcf0c43d7d847b160c9bb01d15d5007d84e2217aaa371", size = 1148996, upload-time = "2025-12-12T17:31:21.03Z" }, +] + [[package]] name = "fqdn" version = "1.5.1" @@ -1051,6 +1167,78 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ab/b5/36c712098e6191d1b4e349304ef73a8d06aed77e56ceaac8c0a306c7bda1/jupyterlab_widgets-3.0.16-py3-none-any.whl", hash = "sha256:45fa36d9c6422cf2559198e4db481aa243c7a32d9926b500781c830c80f7ecf8", size = 914926, upload-time = "2025-11-01T21:11:28.008Z" }, ] +[[package]] +name = "kiwisolver" +version = "1.4.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5c/3c/85844f1b0feb11ee581ac23fe5fce65cd049a200c1446708cc1b7f922875/kiwisolver-1.4.9.tar.gz", hash = "sha256:c3b22c26c6fd6811b0ae8363b95ca8ce4ea3c202d3d0975b2914310ceb1bcc4d", size = 97564, upload-time = "2025-08-10T21:27:49.279Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/86/c9/13573a747838aeb1c76e3267620daa054f4152444d1f3d1a2324b78255b5/kiwisolver-1.4.9-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ac5a486ac389dddcc5bef4f365b6ae3ffff2c433324fb38dd35e3fab7c957999", size = 123686, upload-time = "2025-08-10T21:26:10.034Z" }, + { url = "https://files.pythonhosted.org/packages/51/ea/2ecf727927f103ffd1739271ca19c424d0e65ea473fbaeea1c014aea93f6/kiwisolver-1.4.9-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f2ba92255faa7309d06fe44c3a4a97efe1c8d640c2a79a5ef728b685762a6fd2", size = 66460, upload-time = "2025-08-10T21:26:11.083Z" }, + { url = "https://files.pythonhosted.org/packages/5b/5a/51f5464373ce2aeb5194508298a508b6f21d3867f499556263c64c621914/kiwisolver-1.4.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a2899935e724dd1074cb568ce7ac0dce28b2cd6ab539c8e001a8578eb106d14", size = 64952, upload-time = "2025-08-10T21:26:12.058Z" }, + { url = "https://files.pythonhosted.org/packages/70/90/6d240beb0f24b74371762873e9b7f499f1e02166a2d9c5801f4dbf8fa12e/kiwisolver-1.4.9-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f6008a4919fdbc0b0097089f67a1eb55d950ed7e90ce2cc3e640abadd2757a04", size = 1474756, upload-time = "2025-08-10T21:26:13.096Z" }, + { url = "https://files.pythonhosted.org/packages/12/42/f36816eaf465220f683fb711efdd1bbf7a7005a2473d0e4ed421389bd26c/kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:67bb8b474b4181770f926f7b7d2f8c0248cbcb78b660fdd41a47054b28d2a752", size = 1276404, upload-time = "2025-08-10T21:26:14.457Z" }, + { url = "https://files.pythonhosted.org/packages/2e/64/bc2de94800adc830c476dce44e9b40fd0809cddeef1fde9fcf0f73da301f/kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2327a4a30d3ee07d2fbe2e7933e8a37c591663b96ce42a00bc67461a87d7df77", size = 1294410, upload-time = "2025-08-10T21:26:15.73Z" }, + { url = "https://files.pythonhosted.org/packages/5f/42/2dc82330a70aa8e55b6d395b11018045e58d0bb00834502bf11509f79091/kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7a08b491ec91b1d5053ac177afe5290adacf1f0f6307d771ccac5de30592d198", size = 1343631, upload-time = "2025-08-10T21:26:17.045Z" }, + { url = "https://files.pythonhosted.org/packages/22/fd/f4c67a6ed1aab149ec5a8a401c323cee7a1cbe364381bb6c9c0d564e0e20/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d8fc5c867c22b828001b6a38d2eaeb88160bf5783c6cb4a5e440efc981ce286d", size = 2224963, upload-time = "2025-08-10T21:26:18.737Z" }, + { url = "https://files.pythonhosted.org/packages/45/aa/76720bd4cb3713314677d9ec94dcc21ced3f1baf4830adde5bb9b2430a5f/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:3b3115b2581ea35bb6d1f24a4c90af37e5d9b49dcff267eeed14c3893c5b86ab", size = 2321295, upload-time = "2025-08-10T21:26:20.11Z" }, + { url = "https://files.pythonhosted.org/packages/80/19/d3ec0d9ab711242f56ae0dc2fc5d70e298bb4a1f9dfab44c027668c673a1/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:858e4c22fb075920b96a291928cb7dea5644e94c0ee4fcd5af7e865655e4ccf2", size = 2487987, upload-time = "2025-08-10T21:26:21.49Z" }, + { url = "https://files.pythonhosted.org/packages/39/e9/61e4813b2c97e86b6fdbd4dd824bf72d28bcd8d4849b8084a357bc0dd64d/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ed0fecd28cc62c54b262e3736f8bb2512d8dcfdc2bcf08be5f47f96bf405b145", size = 2291817, upload-time = "2025-08-10T21:26:22.812Z" }, + { url = "https://files.pythonhosted.org/packages/a0/41/85d82b0291db7504da3c2defe35c9a8a5c9803a730f297bd823d11d5fb77/kiwisolver-1.4.9-cp312-cp312-win_amd64.whl", hash = "sha256:f68208a520c3d86ea51acf688a3e3002615a7f0238002cccc17affecc86a8a54", size = 73895, upload-time = "2025-08-10T21:26:24.37Z" }, + { url = "https://files.pythonhosted.org/packages/e2/92/5f3068cf15ee5cb624a0c7596e67e2a0bb2adee33f71c379054a491d07da/kiwisolver-1.4.9-cp312-cp312-win_arm64.whl", hash = "sha256:2c1a4f57df73965f3f14df20b80ee29e6a7930a57d2d9e8491a25f676e197c60", size = 64992, upload-time = "2025-08-10T21:26:25.732Z" }, + { url = "https://files.pythonhosted.org/packages/31/c1/c2686cda909742ab66c7388e9a1a8521a59eb89f8bcfbee28fc980d07e24/kiwisolver-1.4.9-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a5d0432ccf1c7ab14f9949eec60c5d1f924f17c037e9f8b33352fa05799359b8", size = 123681, upload-time = "2025-08-10T21:26:26.725Z" }, + { url = "https://files.pythonhosted.org/packages/ca/f0/f44f50c9f5b1a1860261092e3bc91ecdc9acda848a8b8c6abfda4a24dd5c/kiwisolver-1.4.9-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efb3a45b35622bb6c16dbfab491a8f5a391fe0e9d45ef32f4df85658232ca0e2", size = 66464, upload-time = "2025-08-10T21:26:27.733Z" }, + { url = "https://files.pythonhosted.org/packages/2d/7a/9d90a151f558e29c3936b8a47ac770235f436f2120aca41a6d5f3d62ae8d/kiwisolver-1.4.9-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1a12cf6398e8a0a001a059747a1cbf24705e18fe413bc22de7b3d15c67cffe3f", size = 64961, upload-time = "2025-08-10T21:26:28.729Z" }, + { url = "https://files.pythonhosted.org/packages/e9/e9/f218a2cb3a9ffbe324ca29a9e399fa2d2866d7f348ec3a88df87fc248fc5/kiwisolver-1.4.9-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b67e6efbf68e077dd71d1a6b37e43e1a99d0bff1a3d51867d45ee8908b931098", size = 1474607, upload-time = "2025-08-10T21:26:29.798Z" }, + { url = "https://files.pythonhosted.org/packages/d9/28/aac26d4c882f14de59041636292bc838db8961373825df23b8eeb807e198/kiwisolver-1.4.9-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5656aa670507437af0207645273ccdfee4f14bacd7f7c67a4306d0dcaeaf6eed", size = 1276546, upload-time = "2025-08-10T21:26:31.401Z" }, + { url = "https://files.pythonhosted.org/packages/8b/ad/8bfc1c93d4cc565e5069162f610ba2f48ff39b7de4b5b8d93f69f30c4bed/kiwisolver-1.4.9-cp313-cp313-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:bfc08add558155345129c7803b3671cf195e6a56e7a12f3dde7c57d9b417f525", size = 1294482, upload-time = "2025-08-10T21:26:32.721Z" }, + { url = "https://files.pythonhosted.org/packages/da/f1/6aca55ff798901d8ce403206d00e033191f63d82dd708a186e0ed2067e9c/kiwisolver-1.4.9-cp313-cp313-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:40092754720b174e6ccf9e845d0d8c7d8e12c3d71e7fc35f55f3813e96376f78", size = 1343720, upload-time = "2025-08-10T21:26:34.032Z" }, + { url = "https://files.pythonhosted.org/packages/d1/91/eed031876c595c81d90d0f6fc681ece250e14bf6998c3d7c419466b523b7/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:497d05f29a1300d14e02e6441cf0f5ee81c1ff5a304b0d9fb77423974684e08b", size = 2224907, upload-time = "2025-08-10T21:26:35.824Z" }, + { url = "https://files.pythonhosted.org/packages/e9/ec/4d1925f2e49617b9cca9c34bfa11adefad49d00db038e692a559454dfb2e/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:bdd1a81a1860476eb41ac4bc1e07b3f07259e6d55bbf739b79c8aaedcf512799", size = 2321334, upload-time = "2025-08-10T21:26:37.534Z" }, + { url = "https://files.pythonhosted.org/packages/43/cb/450cd4499356f68802750c6ddc18647b8ea01ffa28f50d20598e0befe6e9/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:e6b93f13371d341afee3be9f7c5964e3fe61d5fa30f6a30eb49856935dfe4fc3", size = 2488313, upload-time = "2025-08-10T21:26:39.191Z" }, + { url = "https://files.pythonhosted.org/packages/71/67/fc76242bd99f885651128a5d4fa6083e5524694b7c88b489b1b55fdc491d/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d75aa530ccfaa593da12834b86a0724f58bff12706659baa9227c2ccaa06264c", size = 2291970, upload-time = "2025-08-10T21:26:40.828Z" }, + { url = "https://files.pythonhosted.org/packages/75/bd/f1a5d894000941739f2ae1b65a32892349423ad49c2e6d0771d0bad3fae4/kiwisolver-1.4.9-cp313-cp313-win_amd64.whl", hash = "sha256:dd0a578400839256df88c16abddf9ba14813ec5f21362e1fe65022e00c883d4d", size = 73894, upload-time = "2025-08-10T21:26:42.33Z" }, + { url = "https://files.pythonhosted.org/packages/95/38/dce480814d25b99a391abbddadc78f7c117c6da34be68ca8b02d5848b424/kiwisolver-1.4.9-cp313-cp313-win_arm64.whl", hash = "sha256:d4188e73af84ca82468f09cadc5ac4db578109e52acb4518d8154698d3a87ca2", size = 64995, upload-time = "2025-08-10T21:26:43.889Z" }, + { url = "https://files.pythonhosted.org/packages/e2/37/7d218ce5d92dadc5ebdd9070d903e0c7cf7edfe03f179433ac4d13ce659c/kiwisolver-1.4.9-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:5a0f2724dfd4e3b3ac5a82436a8e6fd16baa7d507117e4279b660fe8ca38a3a1", size = 126510, upload-time = "2025-08-10T21:26:44.915Z" }, + { url = "https://files.pythonhosted.org/packages/23/b0/e85a2b48233daef4b648fb657ebbb6f8367696a2d9548a00b4ee0eb67803/kiwisolver-1.4.9-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:1b11d6a633e4ed84fc0ddafd4ebfd8ea49b3f25082c04ad12b8315c11d504dc1", size = 67903, upload-time = "2025-08-10T21:26:45.934Z" }, + { url = "https://files.pythonhosted.org/packages/44/98/f2425bc0113ad7de24da6bb4dae1343476e95e1d738be7c04d31a5d037fd/kiwisolver-1.4.9-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61874cdb0a36016354853593cffc38e56fc9ca5aa97d2c05d3dcf6922cd55a11", size = 66402, upload-time = "2025-08-10T21:26:47.101Z" }, + { url = "https://files.pythonhosted.org/packages/98/d8/594657886df9f34c4177cc353cc28ca7e6e5eb562d37ccc233bff43bbe2a/kiwisolver-1.4.9-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:60c439763a969a6af93b4881db0eed8fadf93ee98e18cbc35bc8da868d0c4f0c", size = 1582135, upload-time = "2025-08-10T21:26:48.665Z" }, + { url = "https://files.pythonhosted.org/packages/5c/c6/38a115b7170f8b306fc929e166340c24958347308ea3012c2b44e7e295db/kiwisolver-1.4.9-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:92a2f997387a1b79a75e7803aa7ded2cfbe2823852ccf1ba3bcf613b62ae3197", size = 1389409, upload-time = "2025-08-10T21:26:50.335Z" }, + { url = "https://files.pythonhosted.org/packages/bf/3b/e04883dace81f24a568bcee6eb3001da4ba05114afa622ec9b6fafdc1f5e/kiwisolver-1.4.9-cp313-cp313t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a31d512c812daea6d8b3be3b2bfcbeb091dbb09177706569bcfc6240dcf8b41c", size = 1401763, upload-time = "2025-08-10T21:26:51.867Z" }, + { url = "https://files.pythonhosted.org/packages/9f/80/20ace48e33408947af49d7d15c341eaee69e4e0304aab4b7660e234d6288/kiwisolver-1.4.9-cp313-cp313t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:52a15b0f35dad39862d376df10c5230155243a2c1a436e39eb55623ccbd68185", size = 1453643, upload-time = "2025-08-10T21:26:53.592Z" }, + { url = "https://files.pythonhosted.org/packages/64/31/6ce4380a4cd1f515bdda976a1e90e547ccd47b67a1546d63884463c92ca9/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a30fd6fdef1430fd9e1ba7b3398b5ee4e2887783917a687d86ba69985fb08748", size = 2330818, upload-time = "2025-08-10T21:26:55.051Z" }, + { url = "https://files.pythonhosted.org/packages/fa/e9/3f3fcba3bcc7432c795b82646306e822f3fd74df0ee81f0fa067a1f95668/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:cc9617b46837c6468197b5945e196ee9ca43057bb7d9d1ae688101e4e1dddf64", size = 2419963, upload-time = "2025-08-10T21:26:56.421Z" }, + { url = "https://files.pythonhosted.org/packages/99/43/7320c50e4133575c66e9f7dadead35ab22d7c012a3b09bb35647792b2a6d/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:0ab74e19f6a2b027ea4f845a78827969af45ce790e6cb3e1ebab71bdf9f215ff", size = 2594639, upload-time = "2025-08-10T21:26:57.882Z" }, + { url = "https://files.pythonhosted.org/packages/65/d6/17ae4a270d4a987ef8a385b906d2bdfc9fce502d6dc0d3aea865b47f548c/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dba5ee5d3981160c28d5490f0d1b7ed730c22470ff7f6cc26cfcfaacb9896a07", size = 2391741, upload-time = "2025-08-10T21:26:59.237Z" }, + { url = "https://files.pythonhosted.org/packages/2a/8f/8f6f491d595a9e5912971f3f863d81baddccc8a4d0c3749d6a0dd9ffc9df/kiwisolver-1.4.9-cp313-cp313t-win_arm64.whl", hash = "sha256:0749fd8f4218ad2e851e11cc4dc05c7cbc0cbc4267bdfdb31782e65aace4ee9c", size = 68646, upload-time = "2025-08-10T21:27:00.52Z" }, + { url = "https://files.pythonhosted.org/packages/6b/32/6cc0fbc9c54d06c2969faa9c1d29f5751a2e51809dd55c69055e62d9b426/kiwisolver-1.4.9-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:9928fe1eb816d11ae170885a74d074f57af3a0d65777ca47e9aeb854a1fba386", size = 123806, upload-time = "2025-08-10T21:27:01.537Z" }, + { url = "https://files.pythonhosted.org/packages/b2/dd/2bfb1d4a4823d92e8cbb420fe024b8d2167f72079b3bb941207c42570bdf/kiwisolver-1.4.9-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:d0005b053977e7b43388ddec89fa567f43d4f6d5c2c0affe57de5ebf290dc552", size = 66605, upload-time = "2025-08-10T21:27:03.335Z" }, + { url = "https://files.pythonhosted.org/packages/f7/69/00aafdb4e4509c2ca6064646cba9cd4b37933898f426756adb2cb92ebbed/kiwisolver-1.4.9-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:2635d352d67458b66fd0667c14cb1d4145e9560d503219034a18a87e971ce4f3", size = 64925, upload-time = "2025-08-10T21:27:04.339Z" }, + { url = "https://files.pythonhosted.org/packages/43/dc/51acc6791aa14e5cb6d8a2e28cefb0dc2886d8862795449d021334c0df20/kiwisolver-1.4.9-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:767c23ad1c58c9e827b649a9ab7809fd5fd9db266a9cf02b0e926ddc2c680d58", size = 1472414, upload-time = "2025-08-10T21:27:05.437Z" }, + { url = "https://files.pythonhosted.org/packages/3d/bb/93fa64a81db304ac8a246f834d5094fae4b13baf53c839d6bb6e81177129/kiwisolver-1.4.9-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:72d0eb9fba308b8311685c2268cf7d0a0639a6cd027d8128659f72bdd8a024b4", size = 1281272, upload-time = "2025-08-10T21:27:07.063Z" }, + { url = "https://files.pythonhosted.org/packages/70/e6/6df102916960fb8d05069d4bd92d6d9a8202d5a3e2444494e7cd50f65b7a/kiwisolver-1.4.9-cp314-cp314-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f68e4f3eeca8fb22cc3d731f9715a13b652795ef657a13df1ad0c7dc0e9731df", size = 1298578, upload-time = "2025-08-10T21:27:08.452Z" }, + { url = "https://files.pythonhosted.org/packages/7c/47/e142aaa612f5343736b087864dbaebc53ea8831453fb47e7521fa8658f30/kiwisolver-1.4.9-cp314-cp314-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d84cd4061ae292d8ac367b2c3fa3aad11cb8625a95d135fe93f286f914f3f5a6", size = 1345607, upload-time = "2025-08-10T21:27:10.125Z" }, + { url = "https://files.pythonhosted.org/packages/54/89/d641a746194a0f4d1a3670fb900d0dbaa786fb98341056814bc3f058fa52/kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:a60ea74330b91bd22a29638940d115df9dc00af5035a9a2a6ad9399ffb4ceca5", size = 2230150, upload-time = "2025-08-10T21:27:11.484Z" }, + { url = "https://files.pythonhosted.org/packages/aa/6b/5ee1207198febdf16ac11f78c5ae40861b809cbe0e6d2a8d5b0b3044b199/kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:ce6a3a4e106cf35c2d9c4fa17c05ce0b180db622736845d4315519397a77beaf", size = 2325979, upload-time = "2025-08-10T21:27:12.917Z" }, + { url = "https://files.pythonhosted.org/packages/fc/ff/b269eefd90f4ae14dcc74973d5a0f6d28d3b9bb1afd8c0340513afe6b39a/kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:77937e5e2a38a7b48eef0585114fe7930346993a88060d0bf886086d2aa49ef5", size = 2491456, upload-time = "2025-08-10T21:27:14.353Z" }, + { url = "https://files.pythonhosted.org/packages/fc/d4/10303190bd4d30de547534601e259a4fbf014eed94aae3e5521129215086/kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:24c175051354f4a28c5d6a31c93906dc653e2bf234e8a4bbfb964892078898ce", size = 2294621, upload-time = "2025-08-10T21:27:15.808Z" }, + { url = "https://files.pythonhosted.org/packages/28/e0/a9a90416fce5c0be25742729c2ea52105d62eda6c4be4d803c2a7be1fa50/kiwisolver-1.4.9-cp314-cp314-win_amd64.whl", hash = "sha256:0763515d4df10edf6d06a3c19734e2566368980d21ebec439f33f9eb936c07b7", size = 75417, upload-time = "2025-08-10T21:27:17.436Z" }, + { url = "https://files.pythonhosted.org/packages/1f/10/6949958215b7a9a264299a7db195564e87900f709db9245e4ebdd3c70779/kiwisolver-1.4.9-cp314-cp314-win_arm64.whl", hash = "sha256:0e4e2bf29574a6a7b7f6cb5fa69293b9f96c928949ac4a53ba3f525dffb87f9c", size = 66582, upload-time = "2025-08-10T21:27:18.436Z" }, + { url = "https://files.pythonhosted.org/packages/ec/79/60e53067903d3bc5469b369fe0dfc6b3482e2133e85dae9daa9527535991/kiwisolver-1.4.9-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:d976bbb382b202f71c67f77b0ac11244021cfa3f7dfd9e562eefcea2df711548", size = 126514, upload-time = "2025-08-10T21:27:19.465Z" }, + { url = "https://files.pythonhosted.org/packages/25/d1/4843d3e8d46b072c12a38c97c57fab4608d36e13fe47d47ee96b4d61ba6f/kiwisolver-1.4.9-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:2489e4e5d7ef9a1c300a5e0196e43d9c739f066ef23270607d45aba368b91f2d", size = 67905, upload-time = "2025-08-10T21:27:20.51Z" }, + { url = "https://files.pythonhosted.org/packages/8c/ae/29ffcbd239aea8b93108de1278271ae764dfc0d803a5693914975f200596/kiwisolver-1.4.9-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:e2ea9f7ab7fbf18fffb1b5434ce7c69a07582f7acc7717720f1d69f3e806f90c", size = 66399, upload-time = "2025-08-10T21:27:21.496Z" }, + { url = "https://files.pythonhosted.org/packages/a1/ae/d7ba902aa604152c2ceba5d352d7b62106bedbccc8e95c3934d94472bfa3/kiwisolver-1.4.9-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b34e51affded8faee0dfdb705416153819d8ea9250bbbf7ea1b249bdeb5f1122", size = 1582197, upload-time = "2025-08-10T21:27:22.604Z" }, + { url = "https://files.pythonhosted.org/packages/f2/41/27c70d427eddb8bc7e4f16420a20fefc6f480312122a59a959fdfe0445ad/kiwisolver-1.4.9-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d8aacd3d4b33b772542b2e01beb50187536967b514b00003bdda7589722d2a64", size = 1390125, upload-time = "2025-08-10T21:27:24.036Z" }, + { url = "https://files.pythonhosted.org/packages/41/42/b3799a12bafc76d962ad69083f8b43b12bf4fe78b097b12e105d75c9b8f1/kiwisolver-1.4.9-cp314-cp314t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7cf974dd4e35fa315563ac99d6287a1024e4dc2077b8a7d7cd3d2fb65d283134", size = 1402612, upload-time = "2025-08-10T21:27:25.773Z" }, + { url = "https://files.pythonhosted.org/packages/d2/b5/a210ea073ea1cfaca1bb5c55a62307d8252f531beb364e18aa1e0888b5a0/kiwisolver-1.4.9-cp314-cp314t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:85bd218b5ecfbee8c8a82e121802dcb519a86044c9c3b2e4aef02fa05c6da370", size = 1453990, upload-time = "2025-08-10T21:27:27.089Z" }, + { url = "https://files.pythonhosted.org/packages/5f/ce/a829eb8c033e977d7ea03ed32fb3c1781b4fa0433fbadfff29e39c676f32/kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:0856e241c2d3df4efef7c04a1e46b1936b6120c9bcf36dd216e3acd84bc4fb21", size = 2331601, upload-time = "2025-08-10T21:27:29.343Z" }, + { url = "https://files.pythonhosted.org/packages/e0/4b/b5e97eb142eb9cd0072dacfcdcd31b1c66dc7352b0f7c7255d339c0edf00/kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:9af39d6551f97d31a4deebeac6f45b156f9755ddc59c07b402c148f5dbb6482a", size = 2422041, upload-time = "2025-08-10T21:27:30.754Z" }, + { url = "https://files.pythonhosted.org/packages/40/be/8eb4cd53e1b85ba4edc3a9321666f12b83113a178845593307a3e7891f44/kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:bb4ae2b57fc1d8cbd1cf7b1d9913803681ffa903e7488012be5b76dedf49297f", size = 2594897, upload-time = "2025-08-10T21:27:32.803Z" }, + { url = "https://files.pythonhosted.org/packages/99/dd/841e9a66c4715477ea0abc78da039832fbb09dac5c35c58dc4c41a407b8a/kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:aedff62918805fb62d43a4aa2ecd4482c380dc76cd31bd7c8878588a61bd0369", size = 2391835, upload-time = "2025-08-10T21:27:34.23Z" }, + { url = "https://files.pythonhosted.org/packages/0c/28/4b2e5c47a0da96896fdfdb006340ade064afa1e63675d01ea5ac222b6d52/kiwisolver-1.4.9-cp314-cp314t-win_amd64.whl", hash = "sha256:1fa333e8b2ce4d9660f2cda9c0e1b6bafcfb2457a9d259faa82289e73ec24891", size = 79988, upload-time = "2025-08-10T21:27:35.587Z" }, + { url = "https://files.pythonhosted.org/packages/80/be/3578e8afd18c88cdf9cb4cffde75a96d2be38c5a903f1ed0ceec061bd09e/kiwisolver-1.4.9-cp314-cp314t-win_arm64.whl", hash = "sha256:4a48a2ce79d65d363597ef7b567ce3d14d68783d2b2263d98db3d9477805ba32", size = 70260, upload-time = "2025-08-10T21:27:36.606Z" }, +] + [[package]] name = "lark" version = "1.3.1" @@ -1135,6 +1323,60 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/70/bc/6f1c2f612465f5fa89b95bead1f44dcb607670fd42891d8fdcd5d039f4f4/markupsafe-3.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:32001d6a8fc98c8cb5c947787c5d08b0a50663d139f1305bac5885d98d9b40fa", size = 14146, upload-time = "2025-09-27T18:37:28.327Z" }, ] +[[package]] +name = "matplotlib" +version = "3.10.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "contourpy" }, + { name = "cycler" }, + { name = "fonttools" }, + { name = "kiwisolver" }, + { name = "numpy" }, + { name = "packaging" }, + { name = "pillow" }, + { name = "pyparsing" }, + { name = "python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8a/76/d3c6e3a13fe484ebe7718d14e269c9569c4eb0020a968a327acb3b9a8fe6/matplotlib-3.10.8.tar.gz", hash = "sha256:2299372c19d56bcd35cf05a2738308758d32b9eaed2371898d8f5bd33f084aa3", size = 34806269, upload-time = "2025-12-10T22:56:51.155Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/67/f997cdcbb514012eb0d10cd2b4b332667997fb5ebe26b8d41d04962fa0e6/matplotlib-3.10.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:64fcc24778ca0404ce0cb7b6b77ae1f4c7231cdd60e6778f999ee05cbd581b9a", size = 8260453, upload-time = "2025-12-10T22:55:30.709Z" }, + { url = "https://files.pythonhosted.org/packages/7e/65/07d5f5c7f7c994f12c768708bd2e17a4f01a2b0f44a1c9eccad872433e2e/matplotlib-3.10.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b9a5ca4ac220a0cdd1ba6bcba3608547117d30468fefce49bb26f55c1a3d5c58", size = 8148321, upload-time = "2025-12-10T22:55:33.265Z" }, + { url = "https://files.pythonhosted.org/packages/3e/f3/c5195b1ae57ef85339fd7285dfb603b22c8b4e79114bae5f4f0fcf688677/matplotlib-3.10.8-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3ab4aabc72de4ff77b3ec33a6d78a68227bf1123465887f9905ba79184a1cc04", size = 8716944, upload-time = "2025-12-10T22:55:34.922Z" }, + { url = "https://files.pythonhosted.org/packages/00/f9/7638f5cc82ec8a7aa005de48622eecc3ed7c9854b96ba15bd76b7fd27574/matplotlib-3.10.8-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:24d50994d8c5816ddc35411e50a86ab05f575e2530c02752e02538122613371f", size = 9550099, upload-time = "2025-12-10T22:55:36.789Z" }, + { url = "https://files.pythonhosted.org/packages/57/61/78cd5920d35b29fd2a0fe894de8adf672ff52939d2e9b43cb83cd5ce1bc7/matplotlib-3.10.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:99eefd13c0dc3b3c1b4d561c1169e65fe47aab7b8158754d7c084088e2329466", size = 9613040, upload-time = "2025-12-10T22:55:38.715Z" }, + { url = "https://files.pythonhosted.org/packages/30/4e/c10f171b6e2f44d9e3a2b96efa38b1677439d79c99357600a62cc1e9594e/matplotlib-3.10.8-cp312-cp312-win_amd64.whl", hash = "sha256:dd80ecb295460a5d9d260df63c43f4afbdd832d725a531f008dad1664f458adf", size = 8142717, upload-time = "2025-12-10T22:55:41.103Z" }, + { url = "https://files.pythonhosted.org/packages/f1/76/934db220026b5fef85f45d51a738b91dea7d70207581063cd9bd8fafcf74/matplotlib-3.10.8-cp312-cp312-win_arm64.whl", hash = "sha256:3c624e43ed56313651bc18a47f838b60d7b8032ed348911c54906b130b20071b", size = 8012751, upload-time = "2025-12-10T22:55:42.684Z" }, + { url = "https://files.pythonhosted.org/packages/3d/b9/15fd5541ef4f5b9a17eefd379356cf12175fe577424e7b1d80676516031a/matplotlib-3.10.8-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:3f2e409836d7f5ac2f1c013110a4d50b9f7edc26328c108915f9075d7d7a91b6", size = 8261076, upload-time = "2025-12-10T22:55:44.648Z" }, + { url = "https://files.pythonhosted.org/packages/8d/a0/2ba3473c1b66b9c74dc7107c67e9008cb1782edbe896d4c899d39ae9cf78/matplotlib-3.10.8-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:56271f3dac49a88d7fca5060f004d9d22b865f743a12a23b1e937a0be4818ee1", size = 8148794, upload-time = "2025-12-10T22:55:46.252Z" }, + { url = "https://files.pythonhosted.org/packages/75/97/a471f1c3eb1fd6f6c24a31a5858f443891d5127e63a7788678d14e249aea/matplotlib-3.10.8-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a0a7f52498f72f13d4a25ea70f35f4cb60642b466cbb0a9be951b5bc3f45a486", size = 8718474, upload-time = "2025-12-10T22:55:47.864Z" }, + { url = "https://files.pythonhosted.org/packages/01/be/cd478f4b66f48256f42927d0acbcd63a26a893136456cd079c0cc24fbabf/matplotlib-3.10.8-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:646d95230efb9ca614a7a594d4fcacde0ac61d25e37dd51710b36477594963ce", size = 9549637, upload-time = "2025-12-10T22:55:50.048Z" }, + { url = "https://files.pythonhosted.org/packages/5d/7c/8dc289776eae5109e268c4fb92baf870678dc048a25d4ac903683b86d5bf/matplotlib-3.10.8-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f89c151aab2e2e23cb3fe0acad1e8b82841fd265379c4cecd0f3fcb34c15e0f6", size = 9613678, upload-time = "2025-12-10T22:55:52.21Z" }, + { url = "https://files.pythonhosted.org/packages/64/40/37612487cc8a437d4dd261b32ca21fe2d79510fe74af74e1f42becb1bdb8/matplotlib-3.10.8-cp313-cp313-win_amd64.whl", hash = "sha256:e8ea3e2d4066083e264e75c829078f9e149fa119d27e19acd503de65e0b13149", size = 8142686, upload-time = "2025-12-10T22:55:54.253Z" }, + { url = "https://files.pythonhosted.org/packages/66/52/8d8a8730e968185514680c2a6625943f70269509c3dcfc0dcf7d75928cb8/matplotlib-3.10.8-cp313-cp313-win_arm64.whl", hash = "sha256:c108a1d6fa78a50646029cb6d49808ff0fc1330fda87fa6f6250c6b5369b6645", size = 8012917, upload-time = "2025-12-10T22:55:56.268Z" }, + { url = "https://files.pythonhosted.org/packages/b5/27/51fe26e1062f298af5ef66343d8ef460e090a27fea73036c76c35821df04/matplotlib-3.10.8-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:ad3d9833a64cf48cc4300f2b406c3d0f4f4724a91c0bd5640678a6ba7c102077", size = 8305679, upload-time = "2025-12-10T22:55:57.856Z" }, + { url = "https://files.pythonhosted.org/packages/2c/1e/4de865bc591ac8e3062e835f42dd7fe7a93168d519557837f0e37513f629/matplotlib-3.10.8-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:eb3823f11823deade26ce3b9f40dcb4a213da7a670013929f31d5f5ed1055b22", size = 8198336, upload-time = "2025-12-10T22:55:59.371Z" }, + { url = "https://files.pythonhosted.org/packages/c6/cb/2f7b6e75fb4dce87ef91f60cac4f6e34f4c145ab036a22318ec837971300/matplotlib-3.10.8-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d9050fee89a89ed57b4fb2c1bfac9a3d0c57a0d55aed95949eedbc42070fea39", size = 8731653, upload-time = "2025-12-10T22:56:01.032Z" }, + { url = "https://files.pythonhosted.org/packages/46/b3/bd9c57d6ba670a37ab31fb87ec3e8691b947134b201f881665b28cc039ff/matplotlib-3.10.8-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b44d07310e404ba95f8c25aa5536f154c0a8ec473303535949e52eb71d0a1565", size = 9561356, upload-time = "2025-12-10T22:56:02.95Z" }, + { url = "https://files.pythonhosted.org/packages/c0/3d/8b94a481456dfc9dfe6e39e93b5ab376e50998cddfd23f4ae3b431708f16/matplotlib-3.10.8-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:0a33deb84c15ede243aead39f77e990469fff93ad1521163305095b77b72ce4a", size = 9614000, upload-time = "2025-12-10T22:56:05.411Z" }, + { url = "https://files.pythonhosted.org/packages/bd/cd/bc06149fe5585ba800b189a6a654a75f1f127e8aab02fd2be10df7fa500c/matplotlib-3.10.8-cp313-cp313t-win_amd64.whl", hash = "sha256:3a48a78d2786784cc2413e57397981fb45c79e968d99656706018d6e62e57958", size = 8220043, upload-time = "2025-12-10T22:56:07.551Z" }, + { url = "https://files.pythonhosted.org/packages/e3/de/b22cf255abec916562cc04eef457c13e58a1990048de0c0c3604d082355e/matplotlib-3.10.8-cp313-cp313t-win_arm64.whl", hash = "sha256:15d30132718972c2c074cd14638c7f4592bd98719e2308bccea40e0538bc0cb5", size = 8062075, upload-time = "2025-12-10T22:56:09.178Z" }, + { url = "https://files.pythonhosted.org/packages/3c/43/9c0ff7a2f11615e516c3b058e1e6e8f9614ddeca53faca06da267c48345d/matplotlib-3.10.8-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:b53285e65d4fa4c86399979e956235deb900be5baa7fc1218ea67fbfaeaadd6f", size = 8262481, upload-time = "2025-12-10T22:56:10.885Z" }, + { url = "https://files.pythonhosted.org/packages/6f/ca/e8ae28649fcdf039fda5ef554b40a95f50592a3c47e6f7270c9561c12b07/matplotlib-3.10.8-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:32f8dce744be5569bebe789e46727946041199030db8aeb2954d26013a0eb26b", size = 8151473, upload-time = "2025-12-10T22:56:12.377Z" }, + { url = "https://files.pythonhosted.org/packages/f1/6f/009d129ae70b75e88cbe7e503a12a4c0670e08ed748a902c2568909e9eb5/matplotlib-3.10.8-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4cf267add95b1c88300d96ca837833d4112756045364f5c734a2276038dae27d", size = 9553896, upload-time = "2025-12-10T22:56:14.432Z" }, + { url = "https://files.pythonhosted.org/packages/f5/26/4221a741eb97967bc1fd5e4c52b9aa5a91b2f4ec05b59f6def4d820f9df9/matplotlib-3.10.8-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2cf5bd12cecf46908f286d7838b2abc6c91cda506c0445b8223a7c19a00df008", size = 9824193, upload-time = "2025-12-10T22:56:16.29Z" }, + { url = "https://files.pythonhosted.org/packages/1f/f3/3abf75f38605772cf48a9daf5821cd4f563472f38b4b828c6fba6fa6d06e/matplotlib-3.10.8-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:41703cc95688f2516b480f7f339d8851a6035f18e100ee6a32bc0b8536a12a9c", size = 9615444, upload-time = "2025-12-10T22:56:18.155Z" }, + { url = "https://files.pythonhosted.org/packages/93/a5/de89ac80f10b8dc615807ee1133cd99ac74082581196d4d9590bea10690d/matplotlib-3.10.8-cp314-cp314-win_amd64.whl", hash = "sha256:83d282364ea9f3e52363da262ce32a09dfe241e4080dcedda3c0db059d3c1f11", size = 8272719, upload-time = "2025-12-10T22:56:20.366Z" }, + { url = "https://files.pythonhosted.org/packages/69/ce/b006495c19ccc0a137b48083168a37bd056392dee02f87dba0472f2797fe/matplotlib-3.10.8-cp314-cp314-win_arm64.whl", hash = "sha256:2c1998e92cd5999e295a731bcb2911c75f597d937341f3030cc24ef2733d78a8", size = 8144205, upload-time = "2025-12-10T22:56:22.239Z" }, + { url = "https://files.pythonhosted.org/packages/68/d9/b31116a3a855bd313c6fcdb7226926d59b041f26061c6c5b1be66a08c826/matplotlib-3.10.8-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:b5a2b97dbdc7d4f353ebf343744f1d1f1cca8aa8bfddb4262fcf4306c3761d50", size = 8305785, upload-time = "2025-12-10T22:56:24.218Z" }, + { url = "https://files.pythonhosted.org/packages/1e/90/6effe8103f0272685767ba5f094f453784057072f49b393e3ea178fe70a5/matplotlib-3.10.8-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:3f5c3e4da343bba819f0234186b9004faba952cc420fbc522dc4e103c1985908", size = 8198361, upload-time = "2025-12-10T22:56:26.787Z" }, + { url = "https://files.pythonhosted.org/packages/d7/65/a73188711bea603615fc0baecca1061429ac16940e2385433cc778a9d8e7/matplotlib-3.10.8-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f62550b9a30afde8c1c3ae450e5eb547d579dd69b25c2fc7a1c67f934c1717a", size = 9561357, upload-time = "2025-12-10T22:56:28.953Z" }, + { url = "https://files.pythonhosted.org/packages/f4/3d/b5c5d5d5be8ce63292567f0e2c43dde9953d3ed86ac2de0a72e93c8f07a1/matplotlib-3.10.8-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:495672de149445ec1b772ff2c9ede9b769e3cb4f0d0aa7fa730d7f59e2d4e1c1", size = 9823610, upload-time = "2025-12-10T22:56:31.455Z" }, + { url = "https://files.pythonhosted.org/packages/4d/4b/e7beb6bbd49f6bae727a12b270a2654d13c397576d25bd6786e47033300f/matplotlib-3.10.8-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:595ba4d8fe983b88f0eec8c26a241e16d6376fe1979086232f481f8f3f67494c", size = 9614011, upload-time = "2025-12-10T22:56:33.85Z" }, + { url = "https://files.pythonhosted.org/packages/7c/e6/76f2813d31f032e65f6f797e3f2f6e4aab95b65015924b1c51370395c28a/matplotlib-3.10.8-cp314-cp314t-win_amd64.whl", hash = "sha256:25d380fe8b1dc32cf8f0b1b448470a77afb195438bafdf1d858bfb876f3edf7b", size = 8362801, upload-time = "2025-12-10T22:56:36.107Z" }, + { url = "https://files.pythonhosted.org/packages/5d/49/d651878698a0b67f23aa28e17f45a6d6dd3d3f933fa29087fa4ce5947b5a/matplotlib-3.10.8-cp314-cp314t-win_arm64.whl", hash = "sha256:113bb52413ea508ce954a02c10ffd0d565f9c3bc7f2eddc27dfe1731e71c7b5f", size = 8192560, upload-time = "2025-12-10T22:56:38.008Z" }, +] + [[package]] name = "matplotlib-inline" version = "0.2.1" @@ -1433,6 +1675,75 @@ 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 = "12.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d0/02/d52c733a2452ef1ffcc123b68e6606d07276b0e358db70eabad7e40042b7/pillow-12.1.0.tar.gz", hash = "sha256:5c5ae0a06e9ea030ab786b0251b32c7e4ce10e58d983c0d5c56029455180b5b9", size = 46977283, upload-time = "2026-01-02T09:13:29.892Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/31/dc53fe21a2f2996e1b7d92bf671cdb157079385183ef7c1ae08b485db510/pillow-12.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a332ac4ccb84b6dde65dbace8431f3af08874bf9770719d32a635c4ef411b18b", size = 5262642, upload-time = "2026-01-02T09:11:10.138Z" }, + { url = "https://files.pythonhosted.org/packages/ab/c1/10e45ac9cc79419cedf5121b42dcca5a50ad2b601fa080f58c22fb27626e/pillow-12.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:907bfa8a9cb790748a9aa4513e37c88c59660da3bcfffbd24a7d9e6abf224551", size = 4657464, upload-time = "2026-01-02T09:11:12.319Z" }, + { url = "https://files.pythonhosted.org/packages/ad/26/7b82c0ab7ef40ebede7a97c72d473bda5950f609f8e0c77b04af574a0ddb/pillow-12.1.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:efdc140e7b63b8f739d09a99033aa430accce485ff78e6d311973a67b6bf3208", size = 6234878, upload-time = "2026-01-02T09:11:14.096Z" }, + { url = "https://files.pythonhosted.org/packages/76/25/27abc9792615b5e886ca9411ba6637b675f1b77af3104710ac7353fe5605/pillow-12.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:bef9768cab184e7ae6e559c032e95ba8d07b3023c289f79a2bd36e8bf85605a5", size = 8044868, upload-time = "2026-01-02T09:11:15.903Z" }, + { url = "https://files.pythonhosted.org/packages/0a/ea/f200a4c36d836100e7bc738fc48cd963d3ba6372ebc8298a889e0cfc3359/pillow-12.1.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:742aea052cf5ab5034a53c3846165bc3ce88d7c38e954120db0ab867ca242661", size = 6349468, upload-time = "2026-01-02T09:11:17.631Z" }, + { url = "https://files.pythonhosted.org/packages/11/8f/48d0b77ab2200374c66d344459b8958c86693be99526450e7aee714e03e4/pillow-12.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a6dfc2af5b082b635af6e08e0d1f9f1c4e04d17d4e2ca0ef96131e85eda6eb17", size = 7041518, upload-time = "2026-01-02T09:11:19.389Z" }, + { url = "https://files.pythonhosted.org/packages/1d/23/c281182eb986b5d31f0a76d2a2c8cd41722d6fb8ed07521e802f9bba52de/pillow-12.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:609e89d9f90b581c8d16358c9087df76024cf058fa693dd3e1e1620823f39670", size = 6462829, upload-time = "2026-01-02T09:11:21.28Z" }, + { url = "https://files.pythonhosted.org/packages/25/ef/7018273e0faac099d7b00982abdcc39142ae6f3bd9ceb06de09779c4a9d6/pillow-12.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:43b4899cfd091a9693a1278c4982f3e50f7fb7cff5153b05174b4afc9593b616", size = 7166756, upload-time = "2026-01-02T09:11:23.559Z" }, + { url = "https://files.pythonhosted.org/packages/8f/c8/993d4b7ab2e341fe02ceef9576afcf5830cdec640be2ac5bee1820d693d4/pillow-12.1.0-cp312-cp312-win32.whl", hash = "sha256:aa0c9cc0b82b14766a99fbe6084409972266e82f459821cd26997a488a7261a7", size = 6328770, upload-time = "2026-01-02T09:11:25.661Z" }, + { url = "https://files.pythonhosted.org/packages/a7/87/90b358775a3f02765d87655237229ba64a997b87efa8ccaca7dd3e36e7a7/pillow-12.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:d70534cea9e7966169ad29a903b99fc507e932069a881d0965a1a84bb57f6c6d", size = 7033406, upload-time = "2026-01-02T09:11:27.474Z" }, + { url = "https://files.pythonhosted.org/packages/5d/cf/881b457eccacac9e5b2ddd97d5071fb6d668307c57cbf4e3b5278e06e536/pillow-12.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:65b80c1ee7e14a87d6a068dd3b0aea268ffcabfe0498d38661b00c5b4b22e74c", size = 2452612, upload-time = "2026-01-02T09:11:29.309Z" }, + { url = "https://files.pythonhosted.org/packages/dd/c7/2530a4aa28248623e9d7f27316b42e27c32ec410f695929696f2e0e4a778/pillow-12.1.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:7b5dd7cbae20285cdb597b10eb5a2c13aa9de6cde9bb64a3c1317427b1db1ae1", size = 4062543, upload-time = "2026-01-02T09:11:31.566Z" }, + { url = "https://files.pythonhosted.org/packages/8f/1f/40b8eae823dc1519b87d53c30ed9ef085506b05281d313031755c1705f73/pillow-12.1.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:29a4cef9cb672363926f0470afc516dbf7305a14d8c54f7abbb5c199cd8f8179", size = 4138373, upload-time = "2026-01-02T09:11:33.367Z" }, + { url = "https://files.pythonhosted.org/packages/d4/77/6fa60634cf06e52139fd0e89e5bbf055e8166c691c42fb162818b7fda31d/pillow-12.1.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:681088909d7e8fa9e31b9799aaa59ba5234c58e5e4f1951b4c4d1082a2e980e0", size = 3601241, upload-time = "2026-01-02T09:11:35.011Z" }, + { url = "https://files.pythonhosted.org/packages/4f/bf/28ab865de622e14b747f0cd7877510848252d950e43002e224fb1c9ababf/pillow-12.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:983976c2ab753166dc66d36af6e8ec15bb511e4a25856e2227e5f7e00a160587", size = 5262410, upload-time = "2026-01-02T09:11:36.682Z" }, + { url = "https://files.pythonhosted.org/packages/1c/34/583420a1b55e715937a85bd48c5c0991598247a1fd2eb5423188e765ea02/pillow-12.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:db44d5c160a90df2d24a24760bbd37607d53da0b34fb546c4c232af7192298ac", size = 4657312, upload-time = "2026-01-02T09:11:38.535Z" }, + { url = "https://files.pythonhosted.org/packages/1d/fd/f5a0896839762885b3376ff04878f86ab2b097c2f9a9cdccf4eda8ba8dc0/pillow-12.1.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:6b7a9d1db5dad90e2991645874f708e87d9a3c370c243c2d7684d28f7e133e6b", size = 6232605, upload-time = "2026-01-02T09:11:40.602Z" }, + { url = "https://files.pythonhosted.org/packages/98/aa/938a09d127ac1e70e6ed467bd03834350b33ef646b31edb7452d5de43792/pillow-12.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6258f3260986990ba2fa8a874f8b6e808cf5abb51a94015ca3dc3c68aa4f30ea", size = 8041617, upload-time = "2026-01-02T09:11:42.721Z" }, + { url = "https://files.pythonhosted.org/packages/17/e8/538b24cb426ac0186e03f80f78bc8dc7246c667f58b540bdd57c71c9f79d/pillow-12.1.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e115c15e3bc727b1ca3e641a909f77f8ca72a64fff150f666fcc85e57701c26c", size = 6346509, upload-time = "2026-01-02T09:11:44.955Z" }, + { url = "https://files.pythonhosted.org/packages/01/9a/632e58ec89a32738cabfd9ec418f0e9898a2b4719afc581f07c04a05e3c9/pillow-12.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6741e6f3074a35e47c77b23a4e4f2d90db3ed905cb1c5e6e0d49bff2045632bc", size = 7038117, upload-time = "2026-01-02T09:11:46.736Z" }, + { url = "https://files.pythonhosted.org/packages/c7/a2/d40308cf86eada842ca1f3ffa45d0ca0df7e4ab33c83f81e73f5eaed136d/pillow-12.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:935b9d1aed48fcfb3f838caac506f38e29621b44ccc4f8a64d575cb1b2a88644", size = 6460151, upload-time = "2026-01-02T09:11:48.625Z" }, + { url = "https://files.pythonhosted.org/packages/f1/88/f5b058ad6453a085c5266660a1417bdad590199da1b32fb4efcff9d33b05/pillow-12.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5fee4c04aad8932da9f8f710af2c1a15a83582cfb884152a9caa79d4efcdbf9c", size = 7164534, upload-time = "2026-01-02T09:11:50.445Z" }, + { url = "https://files.pythonhosted.org/packages/19/ce/c17334caea1db789163b5d855a5735e47995b0b5dc8745e9a3605d5f24c0/pillow-12.1.0-cp313-cp313-win32.whl", hash = "sha256:a786bf667724d84aa29b5db1c61b7bfdde380202aaca12c3461afd6b71743171", size = 6332551, upload-time = "2026-01-02T09:11:52.234Z" }, + { url = "https://files.pythonhosted.org/packages/e5/07/74a9d941fa45c90a0d9465098fe1ec85de3e2afbdc15cc4766622d516056/pillow-12.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:461f9dfdafa394c59cd6d818bdfdbab4028b83b02caadaff0ffd433faf4c9a7a", size = 7040087, upload-time = "2026-01-02T09:11:54.822Z" }, + { url = "https://files.pythonhosted.org/packages/88/09/c99950c075a0e9053d8e880595926302575bc742b1b47fe1bbcc8d388d50/pillow-12.1.0-cp313-cp313-win_arm64.whl", hash = "sha256:9212d6b86917a2300669511ed094a9406888362e085f2431a7da985a6b124f45", size = 2452470, upload-time = "2026-01-02T09:11:56.522Z" }, + { url = "https://files.pythonhosted.org/packages/b5/ba/970b7d85ba01f348dee4d65412476321d40ee04dcb51cd3735b9dc94eb58/pillow-12.1.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:00162e9ca6d22b7c3ee8e61faa3c3253cd19b6a37f126cad04f2f88b306f557d", size = 5264816, upload-time = "2026-01-02T09:11:58.227Z" }, + { url = "https://files.pythonhosted.org/packages/10/60/650f2fb55fdba7a510d836202aa52f0baac633e50ab1cf18415d332188fb/pillow-12.1.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:7d6daa89a00b58c37cb1747ec9fb7ac3bc5ffd5949f5888657dfddde6d1312e0", size = 4660472, upload-time = "2026-01-02T09:12:00.798Z" }, + { url = "https://files.pythonhosted.org/packages/2b/c0/5273a99478956a099d533c4f46cbaa19fd69d606624f4334b85e50987a08/pillow-12.1.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e2479c7f02f9d505682dc47df8c0ea1fc5e264c4d1629a5d63fe3e2334b89554", size = 6268974, upload-time = "2026-01-02T09:12:02.572Z" }, + { url = "https://files.pythonhosted.org/packages/b4/26/0bf714bc2e73d5267887d47931d53c4ceeceea6978148ed2ab2a4e6463c4/pillow-12.1.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f188d580bd870cda1e15183790d1cc2fa78f666e76077d103edf048eed9c356e", size = 8073070, upload-time = "2026-01-02T09:12:04.75Z" }, + { url = "https://files.pythonhosted.org/packages/43/cf/1ea826200de111a9d65724c54f927f3111dc5ae297f294b370a670c17786/pillow-12.1.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0fde7ec5538ab5095cc02df38ee99b0443ff0e1c847a045554cf5f9af1f4aa82", size = 6380176, upload-time = "2026-01-02T09:12:06.626Z" }, + { url = "https://files.pythonhosted.org/packages/03/e0/7938dd2b2013373fd85d96e0f38d62b7a5a262af21ac274250c7ca7847c9/pillow-12.1.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0ed07dca4a8464bada6139ab38f5382f83e5f111698caf3191cb8dbf27d908b4", size = 7067061, upload-time = "2026-01-02T09:12:08.624Z" }, + { url = "https://files.pythonhosted.org/packages/86/ad/a2aa97d37272a929a98437a8c0ac37b3cf012f4f8721e1bd5154699b2518/pillow-12.1.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:f45bd71d1fa5e5749587613037b172e0b3b23159d1c00ef2fc920da6f470e6f0", size = 6491824, upload-time = "2026-01-02T09:12:10.488Z" }, + { url = "https://files.pythonhosted.org/packages/a4/44/80e46611b288d51b115826f136fb3465653c28f491068a72d3da49b54cd4/pillow-12.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:277518bf4fe74aa91489e1b20577473b19ee70fb97c374aa50830b279f25841b", size = 7190911, upload-time = "2026-01-02T09:12:12.772Z" }, + { url = "https://files.pythonhosted.org/packages/86/77/eacc62356b4cf81abe99ff9dbc7402750044aed02cfd6a503f7c6fc11f3e/pillow-12.1.0-cp313-cp313t-win32.whl", hash = "sha256:7315f9137087c4e0ee73a761b163fc9aa3b19f5f606a7fc08d83fd3e4379af65", size = 6336445, upload-time = "2026-01-02T09:12:14.775Z" }, + { url = "https://files.pythonhosted.org/packages/e7/3c/57d81d0b74d218706dafccb87a87ea44262c43eef98eb3b164fd000e0491/pillow-12.1.0-cp313-cp313t-win_amd64.whl", hash = "sha256:0ddedfaa8b5f0b4ffbc2fa87b556dc59f6bb4ecb14a53b33f9189713ae8053c0", size = 7045354, upload-time = "2026-01-02T09:12:16.599Z" }, + { url = "https://files.pythonhosted.org/packages/ac/82/8b9b97bba2e3576a340f93b044a3a3a09841170ab4c1eb0d5c93469fd32f/pillow-12.1.0-cp313-cp313t-win_arm64.whl", hash = "sha256:80941e6d573197a0c28f394753de529bb436b1ca990ed6e765cf42426abc39f8", size = 2454547, upload-time = "2026-01-02T09:12:18.704Z" }, + { url = "https://files.pythonhosted.org/packages/8c/87/bdf971d8bbcf80a348cc3bacfcb239f5882100fe80534b0ce67a784181d8/pillow-12.1.0-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:5cb7bc1966d031aec37ddb9dcf15c2da5b2e9f7cc3ca7c54473a20a927e1eb91", size = 4062533, upload-time = "2026-01-02T09:12:20.791Z" }, + { url = "https://files.pythonhosted.org/packages/ff/4f/5eb37a681c68d605eb7034c004875c81f86ec9ef51f5be4a63eadd58859a/pillow-12.1.0-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:97e9993d5ed946aba26baf9c1e8cf18adbab584b99f452ee72f7ee8acb882796", size = 4138546, upload-time = "2026-01-02T09:12:23.664Z" }, + { url = "https://files.pythonhosted.org/packages/11/6d/19a95acb2edbace40dcd582d077b991646b7083c41b98da4ed7555b59733/pillow-12.1.0-cp314-cp314-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:414b9a78e14ffeb98128863314e62c3f24b8a86081066625700b7985b3f529bd", size = 3601163, upload-time = "2026-01-02T09:12:26.338Z" }, + { url = "https://files.pythonhosted.org/packages/fc/36/2b8138e51cb42e4cc39c3297713455548be855a50558c3ac2beebdc251dd/pillow-12.1.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:e6bdb408f7c9dd2a5ff2b14a3b0bb6d4deb29fb9961e6eb3ae2031ae9a5cec13", size = 5266086, upload-time = "2026-01-02T09:12:28.782Z" }, + { url = "https://files.pythonhosted.org/packages/53/4b/649056e4d22e1caa90816bf99cef0884aed607ed38075bd75f091a607a38/pillow-12.1.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:3413c2ae377550f5487991d444428f1a8ae92784aac79caa8b1e3b89b175f77e", size = 4657344, upload-time = "2026-01-02T09:12:31.117Z" }, + { url = "https://files.pythonhosted.org/packages/6c/6b/c5742cea0f1ade0cd61485dc3d81f05261fc2276f537fbdc00802de56779/pillow-12.1.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e5dcbe95016e88437ecf33544ba5db21ef1b8dd6e1b434a2cb2a3d605299e643", size = 6232114, upload-time = "2026-01-02T09:12:32.936Z" }, + { url = "https://files.pythonhosted.org/packages/bf/8f/9f521268ce22d63991601aafd3d48d5ff7280a246a1ef62d626d67b44064/pillow-12.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d0a7735df32ccbcc98b98a1ac785cc4b19b580be1bdf0aeb5c03223220ea09d5", size = 8042708, upload-time = "2026-01-02T09:12:34.78Z" }, + { url = "https://files.pythonhosted.org/packages/1a/eb/257f38542893f021502a1bbe0c2e883c90b5cff26cc33b1584a841a06d30/pillow-12.1.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0c27407a2d1b96774cbc4a7594129cc027339fd800cd081e44497722ea1179de", size = 6347762, upload-time = "2026-01-02T09:12:36.748Z" }, + { url = "https://files.pythonhosted.org/packages/c4/5a/8ba375025701c09b309e8d5163c5a4ce0102fa86bbf8800eb0d7ac87bc51/pillow-12.1.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:15c794d74303828eaa957ff8070846d0efe8c630901a1c753fdc63850e19ecd9", size = 7039265, upload-time = "2026-01-02T09:12:39.082Z" }, + { url = "https://files.pythonhosted.org/packages/cf/dc/cf5e4cdb3db533f539e88a7bbf9f190c64ab8a08a9bc7a4ccf55067872e4/pillow-12.1.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c990547452ee2800d8506c4150280757f88532f3de2a58e3022e9b179107862a", size = 6462341, upload-time = "2026-01-02T09:12:40.946Z" }, + { url = "https://files.pythonhosted.org/packages/d0/47/0291a25ac9550677e22eda48510cfc4fa4b2ef0396448b7fbdc0a6946309/pillow-12.1.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b63e13dd27da389ed9475b3d28510f0f954bca0041e8e551b2a4eb1eab56a39a", size = 7165395, upload-time = "2026-01-02T09:12:42.706Z" }, + { url = "https://files.pythonhosted.org/packages/4f/4c/e005a59393ec4d9416be06e6b45820403bb946a778e39ecec62f5b2b991e/pillow-12.1.0-cp314-cp314-win32.whl", hash = "sha256:1a949604f73eb07a8adab38c4fe50791f9919344398bdc8ac6b307f755fc7030", size = 6431413, upload-time = "2026-01-02T09:12:44.944Z" }, + { url = "https://files.pythonhosted.org/packages/1c/af/f23697f587ac5f9095d67e31b81c95c0249cd461a9798a061ed6709b09b5/pillow-12.1.0-cp314-cp314-win_amd64.whl", hash = "sha256:4f9f6a650743f0ddee5593ac9e954ba1bdbc5e150bc066586d4f26127853ab94", size = 7176779, upload-time = "2026-01-02T09:12:46.727Z" }, + { url = "https://files.pythonhosted.org/packages/b3/36/6a51abf8599232f3e9afbd16d52829376a68909fe14efe29084445db4b73/pillow-12.1.0-cp314-cp314-win_arm64.whl", hash = "sha256:808b99604f7873c800c4840f55ff389936ef1948e4e87645eaf3fccbc8477ac4", size = 2543105, upload-time = "2026-01-02T09:12:49.243Z" }, + { url = "https://files.pythonhosted.org/packages/82/54/2e1dd20c8749ff225080d6ba465a0cab4387f5db0d1c5fb1439e2d99923f/pillow-12.1.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:bc11908616c8a283cf7d664f77411a5ed2a02009b0097ff8abbba5e79128ccf2", size = 5268571, upload-time = "2026-01-02T09:12:51.11Z" }, + { url = "https://files.pythonhosted.org/packages/57/61/571163a5ef86ec0cf30d265ac2a70ae6fc9e28413d1dc94fa37fae6bda89/pillow-12.1.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:896866d2d436563fa2a43a9d72f417874f16b5545955c54a64941e87c1376c61", size = 4660426, upload-time = "2026-01-02T09:12:52.865Z" }, + { url = "https://files.pythonhosted.org/packages/5e/e1/53ee5163f794aef1bf84243f755ee6897a92c708505350dd1923f4afec48/pillow-12.1.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8e178e3e99d3c0ea8fc64b88447f7cac8ccf058af422a6cedc690d0eadd98c51", size = 6269908, upload-time = "2026-01-02T09:12:54.884Z" }, + { url = "https://files.pythonhosted.org/packages/bc/0b/b4b4106ff0ee1afa1dc599fde6ab230417f800279745124f6c50bcffed8e/pillow-12.1.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:079af2fb0c599c2ec144ba2c02766d1b55498e373b3ac64687e43849fbbef5bc", size = 8074733, upload-time = "2026-01-02T09:12:56.802Z" }, + { url = "https://files.pythonhosted.org/packages/19/9f/80b411cbac4a732439e629a26ad3ef11907a8c7fc5377b7602f04f6fe4e7/pillow-12.1.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bdec5e43377761c5dbca620efb69a77f6855c5a379e32ac5b158f54c84212b14", size = 6381431, upload-time = "2026-01-02T09:12:58.823Z" }, + { url = "https://files.pythonhosted.org/packages/8f/b7/d65c45db463b66ecb6abc17c6ba6917a911202a07662247e1355ce1789e7/pillow-12.1.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:565c986f4b45c020f5421a4cea13ef294dde9509a8577f29b2fc5edc7587fff8", size = 7068529, upload-time = "2026-01-02T09:13:00.885Z" }, + { url = "https://files.pythonhosted.org/packages/50/96/dfd4cd726b4a45ae6e3c669fc9e49deb2241312605d33aba50499e9d9bd1/pillow-12.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:43aca0a55ce1eefc0aefa6253661cb54571857b1a7b2964bd8a1e3ef4b729924", size = 6492981, upload-time = "2026-01-02T09:13:03.314Z" }, + { url = "https://files.pythonhosted.org/packages/4d/1c/b5dc52cf713ae46033359c5ca920444f18a6359ce1020dd3e9c553ea5bc6/pillow-12.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:0deedf2ea233722476b3a81e8cdfbad786f7adbed5d848469fa59fe52396e4ef", size = 7191878, upload-time = "2026-01-02T09:13:05.276Z" }, + { url = "https://files.pythonhosted.org/packages/53/26/c4188248bd5edaf543864fe4834aebe9c9cb4968b6f573ce014cc42d0720/pillow-12.1.0-cp314-cp314t-win32.whl", hash = "sha256:b17fbdbe01c196e7e159aacb889e091f28e61020a8abeac07b68079b6e626988", size = 6438703, upload-time = "2026-01-02T09:13:07.491Z" }, + { url = "https://files.pythonhosted.org/packages/b8/0e/69ed296de8ea05cb03ee139cee600f424ca166e632567b2d66727f08c7ed/pillow-12.1.0-cp314-cp314t-win_amd64.whl", hash = "sha256:27b9baecb428899db6c0de572d6d305cfaf38ca1596b5c0542a5182e3e74e8c6", size = 7182927, upload-time = "2026-01-02T09:13:09.841Z" }, + { url = "https://files.pythonhosted.org/packages/fc/f5/68334c015eed9b5cff77814258717dec591ded209ab5b6fb70e2ae873d1d/pillow-12.1.0-cp314-cp314t-win_arm64.whl", hash = "sha256:f61333d817698bdcdd0f9d7793e365ac3d2a21c1f1eb02b32ad6aefb8d8ea831", size = 2545104, upload-time = "2026-01-02T09:13:12.068Z" }, +] + [[package]] name = "platformdirs" version = "4.5.1" @@ -1517,6 +1828,7 @@ dependencies = [ { name = "ipywidgets" }, { name = "journey-client" }, { name = "jupyter" }, + { name = "matplotlib" }, { name = "nest-asyncio" }, { name = "numpy" }, { name = "overturemaps" }, @@ -1525,6 +1837,7 @@ dependencies = [ { name = "polars" }, { name = "pyarrow" }, { name = "python-dateutil" }, + { name = "scipy" }, { name = "tqdm" }, { name = "uvicorn" }, ] @@ -1544,6 +1857,7 @@ requires-dist = [ { name = "ipywidgets", specifier = ">=8.0.0" }, { name = "journey-client", directory = "tfl_journey_client" }, { name = "jupyter", specifier = ">=1.0.0" }, + { name = "matplotlib", specifier = ">=3.10.8" }, { name = "nest-asyncio", specifier = ">=1.6.0" }, { name = "numpy", specifier = ">=1.26.0" }, { name = "overturemaps", specifier = ">=0.18.0" }, @@ -1552,6 +1866,7 @@ requires-dist = [ { name = "polars", specifier = ">=1.37.1" }, { name = "pyarrow", specifier = ">=15.0.0" }, { name = "python-dateutil", specifier = ">=2.8.0" }, + { name = "scipy", specifier = ">=1.17.0" }, { name = "tqdm", specifier = ">=4.67.1" }, { name = "uvicorn", specifier = ">=0.34.0" }, ] @@ -1784,6 +2099,15 @@ 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.3.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/91/9c6ee907786a473bf81c5f53cf703ba0957b23ab84c264080fb5a450416f/pyparsing-3.3.2.tar.gz", hash = "sha256:c777f4d763f140633dcb6d8a3eda953bf7a214dc4eff598413c070bcdc117cbc", size = 6851574, upload-time = "2026-01-21T03:57:59.36Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl", hash = "sha256:850ba148bd908d7e2411587e247a1e4f0327839c40e2e5e6d05a007ecc69911d", size = 122781, upload-time = "2026-01-21T03:57:55.912Z" }, +] + [[package]] name = "python-dateutil" version = "2.9.0.post0" @@ -2189,6 +2513,67 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/9e/6a/40fee331a52339926a92e17ae748827270b288a35ef4a15c9c8f2ec54715/ruff-0.14.14-py3-none-win_arm64.whl", hash = "sha256:56e6981a98b13a32236a72a8da421d7839221fa308b223b9283312312e5ac76c", size = 10920448, upload-time = "2026-01-22T22:30:15.417Z" }, ] +[[package]] +name = "scipy" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/56/3e/9cca699f3486ce6bc12ff46dc2031f1ec8eb9ccc9a320fdaf925f1417426/scipy-1.17.0.tar.gz", hash = "sha256:2591060c8e648d8b96439e111ac41fd8342fdeff1876be2e19dea3fe8930454e", size = 30396830, upload-time = "2026-01-10T21:34:23.009Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/11/7241a63e73ba5a516f1930ac8d5b44cbbfabd35ac73a2d08ca206df007c4/scipy-1.17.0-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:0d5018a57c24cb1dd828bcf51d7b10e65986d549f52ef5adb6b4d1ded3e32a57", size = 31364580, upload-time = "2026-01-10T21:25:25.717Z" }, + { url = "https://files.pythonhosted.org/packages/ed/1d/5057f812d4f6adc91a20a2d6f2ebcdb517fdbc87ae3acc5633c9b97c8ba5/scipy-1.17.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:88c22af9e5d5a4f9e027e26772cc7b5922fab8bcc839edb3ae33de404feebd9e", size = 27969012, upload-time = "2026-01-10T21:25:30.921Z" }, + { url = "https://files.pythonhosted.org/packages/e3/21/f6ec556c1e3b6ec4e088da667d9987bb77cc3ab3026511f427dc8451187d/scipy-1.17.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:f3cd947f20fe17013d401b64e857c6b2da83cae567adbb75b9dcba865abc66d8", size = 20140691, upload-time = "2026-01-10T21:25:34.802Z" }, + { url = "https://files.pythonhosted.org/packages/7a/fe/5e5ad04784964ba964a96f16c8d4676aa1b51357199014dce58ab7ec5670/scipy-1.17.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:e8c0b331c2c1f531eb51f1b4fc9ba709521a712cce58f1aa627bc007421a5306", size = 22463015, upload-time = "2026-01-10T21:25:39.277Z" }, + { url = "https://files.pythonhosted.org/packages/4a/69/7c347e857224fcaf32a34a05183b9d8a7aca25f8f2d10b8a698b8388561a/scipy-1.17.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5194c445d0a1c7a6c1a4a4681b6b7c71baad98ff66d96b949097e7513c9d6742", size = 32724197, upload-time = "2026-01-10T21:25:44.084Z" }, + { url = "https://files.pythonhosted.org/packages/d1/fe/66d73b76d378ba8cc2fe605920c0c75092e3a65ae746e1e767d9d020a75a/scipy-1.17.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9eeb9b5f5997f75507814ed9d298ab23f62cf79f5a3ef90031b1ee2506abdb5b", size = 35009148, upload-time = "2026-01-10T21:25:50.591Z" }, + { url = "https://files.pythonhosted.org/packages/af/07/07dec27d9dc41c18d8c43c69e9e413431d20c53a0339c388bcf72f353c4b/scipy-1.17.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:40052543f7bbe921df4408f46003d6f01c6af109b9e2c8a66dd1cf6cf57f7d5d", size = 34798766, upload-time = "2026-01-10T21:25:59.41Z" }, + { url = "https://files.pythonhosted.org/packages/81/61/0470810c8a093cdacd4ba7504b8a218fd49ca070d79eca23a615f5d9a0b0/scipy-1.17.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0cf46c8013fec9d3694dc572f0b54100c28405d55d3e2cb15e2895b25057996e", size = 37405953, upload-time = "2026-01-10T21:26:07.75Z" }, + { url = "https://files.pythonhosted.org/packages/92/ce/672ed546f96d5d41ae78c4b9b02006cedd0b3d6f2bf5bb76ea455c320c28/scipy-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:0937a0b0d8d593a198cededd4c439a0ea216a3f36653901ea1f3e4be949056f8", size = 36328121, upload-time = "2026-01-10T21:26:16.509Z" }, + { url = "https://files.pythonhosted.org/packages/9d/21/38165845392cae67b61843a52c6455d47d0cc2a40dd495c89f4362944654/scipy-1.17.0-cp312-cp312-win_arm64.whl", hash = "sha256:f603d8a5518c7426414d1d8f82e253e454471de682ce5e39c29adb0df1efb86b", size = 24314368, upload-time = "2026-01-10T21:26:23.087Z" }, + { url = "https://files.pythonhosted.org/packages/0c/51/3468fdfd49387ddefee1636f5cf6d03ce603b75205bf439bbf0e62069bfd/scipy-1.17.0-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:65ec32f3d32dfc48c72df4291345dae4f048749bc8d5203ee0a3f347f96c5ce6", size = 31344101, upload-time = "2026-01-10T21:26:30.25Z" }, + { url = "https://files.pythonhosted.org/packages/b2/9a/9406aec58268d437636069419e6977af953d1e246df941d42d3720b7277b/scipy-1.17.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:1f9586a58039d7229ce77b52f8472c972448cded5736eaf102d5658bbac4c269", size = 27950385, upload-time = "2026-01-10T21:26:36.801Z" }, + { url = "https://files.pythonhosted.org/packages/4f/98/e7342709e17afdfd1b26b56ae499ef4939b45a23a00e471dfb5375eea205/scipy-1.17.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:9fad7d3578c877d606b1150135c2639e9de9cecd3705caa37b66862977cc3e72", size = 20122115, upload-time = "2026-01-10T21:26:42.107Z" }, + { url = "https://files.pythonhosted.org/packages/fd/0e/9eeeb5357a64fd157cbe0302c213517c541cc16b8486d82de251f3c68ede/scipy-1.17.0-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:423ca1f6584fc03936972b5f7c06961670dbba9f234e71676a7c7ccf938a0d61", size = 22442402, upload-time = "2026-01-10T21:26:48.029Z" }, + { url = "https://files.pythonhosted.org/packages/c9/10/be13397a0e434f98e0c79552b2b584ae5bb1c8b2be95db421533bbca5369/scipy-1.17.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fe508b5690e9eaaa9467fc047f833af58f1152ae51a0d0aed67aa5801f4dd7d6", size = 32696338, upload-time = "2026-01-10T21:26:55.521Z" }, + { url = "https://files.pythonhosted.org/packages/63/1e/12fbf2a3bb240161651c94bb5cdd0eae5d4e8cc6eaeceb74ab07b12a753d/scipy-1.17.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6680f2dfd4f6182e7d6db161344537da644d1cf85cf293f015c60a17ecf08752", size = 34977201, upload-time = "2026-01-10T21:27:03.501Z" }, + { url = "https://files.pythonhosted.org/packages/19/5b/1a63923e23ccd20bd32156d7dd708af5bbde410daa993aa2500c847ab2d2/scipy-1.17.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:eec3842ec9ac9de5917899b277428886042a93db0b227ebbe3a333b64ec7643d", size = 34777384, upload-time = "2026-01-10T21:27:11.423Z" }, + { url = "https://files.pythonhosted.org/packages/39/22/b5da95d74edcf81e540e467202a988c50fef41bd2011f46e05f72ba07df6/scipy-1.17.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d7425fcafbc09a03731e1bc05581f5fad988e48c6a861f441b7ab729a49a55ea", size = 37379586, upload-time = "2026-01-10T21:27:20.171Z" }, + { url = "https://files.pythonhosted.org/packages/b9/b6/8ac583d6da79e7b9e520579f03007cb006f063642afd6b2eeb16b890bf93/scipy-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:87b411e42b425b84777718cc41516b8a7e0795abfa8e8e1d573bf0ef014f0812", size = 36287211, upload-time = "2026-01-10T21:28:43.122Z" }, + { url = "https://files.pythonhosted.org/packages/55/fb/7db19e0b3e52f882b420417644ec81dd57eeef1bd1705b6f689d8ff93541/scipy-1.17.0-cp313-cp313-win_arm64.whl", hash = "sha256:357ca001c6e37601066092e7c89cca2f1ce74e2a520ca78d063a6d2201101df2", size = 24312646, upload-time = "2026-01-10T21:28:49.893Z" }, + { url = "https://files.pythonhosted.org/packages/20/b6/7feaa252c21cc7aff335c6c55e1b90ab3e3306da3f048109b8b639b94648/scipy-1.17.0-cp313-cp313t-macosx_10_14_x86_64.whl", hash = "sha256:ec0827aa4d36cb79ff1b81de898e948a51ac0b9b1c43e4a372c0508c38c0f9a3", size = 31693194, upload-time = "2026-01-10T21:27:27.454Z" }, + { url = "https://files.pythonhosted.org/packages/76/bb/bbb392005abce039fb7e672cb78ac7d158700e826b0515cab6b5b60c26fb/scipy-1.17.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:819fc26862b4b3c73a60d486dbb919202f3d6d98c87cf20c223511429f2d1a97", size = 28365415, upload-time = "2026-01-10T21:27:34.26Z" }, + { url = "https://files.pythonhosted.org/packages/37/da/9d33196ecc99fba16a409c691ed464a3a283ac454a34a13a3a57c0d66f3a/scipy-1.17.0-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:363ad4ae2853d88ebcde3ae6ec46ccca903ea9835ee8ba543f12f575e7b07e4e", size = 20537232, upload-time = "2026-01-10T21:27:40.306Z" }, + { url = "https://files.pythonhosted.org/packages/56/9d/f4b184f6ddb28e9a5caea36a6f98e8ecd2a524f9127354087ce780885d83/scipy-1.17.0-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:979c3a0ff8e5ba254d45d59ebd38cde48fce4f10b5125c680c7a4bfe177aab07", size = 22791051, upload-time = "2026-01-10T21:27:46.539Z" }, + { url = "https://files.pythonhosted.org/packages/9b/9d/025cccdd738a72140efc582b1641d0dd4caf2e86c3fb127568dc80444e6e/scipy-1.17.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:130d12926ae34399d157de777472bf82e9061c60cc081372b3118edacafe1d00", size = 32815098, upload-time = "2026-01-10T21:27:54.389Z" }, + { url = "https://files.pythonhosted.org/packages/48/5f/09b879619f8bca15ce392bfc1894bd9c54377e01d1b3f2f3b595a1b4d945/scipy-1.17.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6e886000eb4919eae3a44f035e63f0fd8b651234117e8f6f29bad1cd26e7bc45", size = 35031342, upload-time = "2026-01-10T21:28:03.012Z" }, + { url = "https://files.pythonhosted.org/packages/f2/9a/f0f0a9f0aa079d2f106555b984ff0fbb11a837df280f04f71f056ea9c6e4/scipy-1.17.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:13c4096ac6bc31d706018f06a49abe0485f96499deb82066b94d19b02f664209", size = 34893199, upload-time = "2026-01-10T21:28:10.832Z" }, + { url = "https://files.pythonhosted.org/packages/90/b8/4f0f5cf0c5ea4d7548424e6533e6b17d164f34a6e2fb2e43ffebb6697b06/scipy-1.17.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:cacbaddd91fcffde703934897c5cd2c7cb0371fac195d383f4e1f1c5d3f3bd04", size = 37438061, upload-time = "2026-01-10T21:28:19.684Z" }, + { url = "https://files.pythonhosted.org/packages/f9/cc/2bd59140ed3b2fa2882fb15da0a9cb1b5a6443d67cfd0d98d4cec83a57ec/scipy-1.17.0-cp313-cp313t-win_amd64.whl", hash = "sha256:edce1a1cf66298cccdc48a1bdf8fb10a3bf58e8b58d6c3883dd1530e103f87c0", size = 36328593, upload-time = "2026-01-10T21:28:28.007Z" }, + { url = "https://files.pythonhosted.org/packages/13/1b/c87cc44a0d2c7aaf0f003aef2904c3d097b422a96c7e7c07f5efd9073c1b/scipy-1.17.0-cp313-cp313t-win_arm64.whl", hash = "sha256:30509da9dbec1c2ed8f168b8d8aa853bc6723fede1dbc23c7d43a56f5ab72a67", size = 24625083, upload-time = "2026-01-10T21:28:35.188Z" }, + { url = "https://files.pythonhosted.org/packages/1a/2d/51006cd369b8e7879e1c630999a19d1fbf6f8b5ed3e33374f29dc87e53b3/scipy-1.17.0-cp314-cp314-macosx_10_14_x86_64.whl", hash = "sha256:c17514d11b78be8f7e6331b983a65a7f5ca1fd037b95e27b280921fe5606286a", size = 31346803, upload-time = "2026-01-10T21:28:57.24Z" }, + { url = "https://files.pythonhosted.org/packages/d6/2e/2349458c3ce445f53a6c93d4386b1c4c5c0c540917304c01222ff95ff317/scipy-1.17.0-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:4e00562e519c09da34c31685f6acc3aa384d4d50604db0f245c14e1b4488bfa2", size = 27967182, upload-time = "2026-01-10T21:29:04.107Z" }, + { url = "https://files.pythonhosted.org/packages/5e/7c/df525fbfa77b878d1cfe625249529514dc02f4fd5f45f0f6295676a76528/scipy-1.17.0-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:f7df7941d71314e60a481e02d5ebcb3f0185b8d799c70d03d8258f6c80f3d467", size = 20139125, upload-time = "2026-01-10T21:29:10.179Z" }, + { url = "https://files.pythonhosted.org/packages/33/11/fcf9d43a7ed1234d31765ec643b0515a85a30b58eddccc5d5a4d12b5f194/scipy-1.17.0-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:aabf057c632798832f071a8dde013c2e26284043934f53b00489f1773b33527e", size = 22443554, upload-time = "2026-01-10T21:29:15.888Z" }, + { url = "https://files.pythonhosted.org/packages/80/5c/ea5d239cda2dd3d31399424967a24d556cf409fbea7b5b21412b0fd0a44f/scipy-1.17.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a38c3337e00be6fd8a95b4ed66b5d988bac4ec888fd922c2ea9fe5fb1603dd67", size = 32757834, upload-time = "2026-01-10T21:29:23.406Z" }, + { url = "https://files.pythonhosted.org/packages/b8/7e/8c917cc573310e5dc91cbeead76f1b600d3fb17cf0969db02c9cf92e3cfa/scipy-1.17.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00fb5f8ec8398ad90215008d8b6009c9db9fa924fd4c7d6be307c6f945f9cd73", size = 34995775, upload-time = "2026-01-10T21:29:31.915Z" }, + { url = "https://files.pythonhosted.org/packages/c5/43/176c0c3c07b3f7df324e7cdd933d3e2c4898ca202b090bd5ba122f9fe270/scipy-1.17.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:f2a4942b0f5f7c23c7cd641a0ca1955e2ae83dedcff537e3a0259096635e186b", size = 34841240, upload-time = "2026-01-10T21:29:39.995Z" }, + { url = "https://files.pythonhosted.org/packages/44/8c/d1f5f4b491160592e7f084d997de53a8e896a3ac01cd07e59f43ca222744/scipy-1.17.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:dbf133ced83889583156566d2bdf7a07ff89228fe0c0cb727f777de92092ec6b", size = 37394463, upload-time = "2026-01-10T21:29:48.723Z" }, + { url = "https://files.pythonhosted.org/packages/9f/ec/42a6657f8d2d087e750e9a5dde0b481fd135657f09eaf1cf5688bb23c338/scipy-1.17.0-cp314-cp314-win_amd64.whl", hash = "sha256:3625c631a7acd7cfd929e4e31d2582cf00f42fcf06011f59281271746d77e061", size = 37053015, upload-time = "2026-01-10T21:30:51.418Z" }, + { url = "https://files.pythonhosted.org/packages/27/58/6b89a6afd132787d89a362d443a7bddd511b8f41336a1ae47f9e4f000dc4/scipy-1.17.0-cp314-cp314-win_arm64.whl", hash = "sha256:9244608d27eafe02b20558523ba57f15c689357c85bdcfe920b1828750aa26eb", size = 24951312, upload-time = "2026-01-10T21:30:56.771Z" }, + { url = "https://files.pythonhosted.org/packages/e9/01/f58916b9d9ae0112b86d7c3b10b9e685625ce6e8248df139d0fcb17f7397/scipy-1.17.0-cp314-cp314t-macosx_10_14_x86_64.whl", hash = "sha256:2b531f57e09c946f56ad0b4a3b2abee778789097871fc541e267d2eca081cff1", size = 31706502, upload-time = "2026-01-10T21:29:56.326Z" }, + { url = "https://files.pythonhosted.org/packages/59/8e/2912a87f94a7d1f8b38aabc0faf74b82d3b6c9e22be991c49979f0eceed8/scipy-1.17.0-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:13e861634a2c480bd237deb69333ac79ea1941b94568d4b0efa5db5e263d4fd1", size = 28380854, upload-time = "2026-01-10T21:30:01.554Z" }, + { url = "https://files.pythonhosted.org/packages/bd/1c/874137a52dddab7d5d595c1887089a2125d27d0601fce8c0026a24a92a0b/scipy-1.17.0-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:eb2651271135154aa24f6481cbae5cc8af1f0dd46e6533fb7b56aa9727b6a232", size = 20552752, upload-time = "2026-01-10T21:30:05.93Z" }, + { url = "https://files.pythonhosted.org/packages/3f/f0/7518d171cb735f6400f4576cf70f756d5b419a07fe1867da34e2c2c9c11b/scipy-1.17.0-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:c5e8647f60679790c2f5c76be17e2e9247dc6b98ad0d3b065861e082c56e078d", size = 22803972, upload-time = "2026-01-10T21:30:10.651Z" }, + { url = "https://files.pythonhosted.org/packages/7c/74/3498563a2c619e8a3ebb4d75457486c249b19b5b04a30600dfd9af06bea5/scipy-1.17.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5fb10d17e649e1446410895639f3385fd2bf4c3c7dfc9bea937bddcbc3d7b9ba", size = 32829770, upload-time = "2026-01-10T21:30:16.359Z" }, + { url = "https://files.pythonhosted.org/packages/48/d1/7b50cedd8c6c9d6f706b4b36fa8544d829c712a75e370f763b318e9638c1/scipy-1.17.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8547e7c57f932e7354a2319fab613981cde910631979f74c9b542bb167a8b9db", size = 35051093, upload-time = "2026-01-10T21:30:22.987Z" }, + { url = "https://files.pythonhosted.org/packages/e2/82/a2d684dfddb87ba1b3ea325df7c3293496ee9accb3a19abe9429bce94755/scipy-1.17.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:33af70d040e8af9d5e7a38b5ed3b772adddd281e3062ff23fec49e49681c38cf", size = 34909905, upload-time = "2026-01-10T21:30:28.704Z" }, + { url = "https://files.pythonhosted.org/packages/ef/5e/e565bd73991d42023eb82bb99e51c5b3d9e2c588ca9d4b3e2cc1d3ca62a6/scipy-1.17.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:f9eb55bb97d00f8b7ab95cb64f873eb0bf54d9446264d9f3609130381233483f", size = 37457743, upload-time = "2026-01-10T21:30:34.819Z" }, + { url = "https://files.pythonhosted.org/packages/58/a8/a66a75c3d8f1fb2b83f66007d6455a06a6f6cf5618c3dc35bc9b69dd096e/scipy-1.17.0-cp314-cp314t-win_amd64.whl", hash = "sha256:1ff269abf702f6c7e67a4b7aad981d42871a11b9dd83c58d2d2ea624efbd1088", size = 37098574, upload-time = "2026-01-10T21:30:40.782Z" }, + { url = "https://files.pythonhosted.org/packages/56/a5/df8f46ef7da168f1bc52cd86e09a9de5c6f19cc1da04454d51b7d4f43408/scipy-1.17.0-cp314-cp314t-win_arm64.whl", hash = "sha256:031121914e295d9791319a1875444d55079885bbae5bdc9c5e0f2ee5f09d34ff", size = 25246266, upload-time = "2026-01-10T21:30:45.923Z" }, +] + [[package]] name = "send2trash" version = "2.1.0"