chore: Remove TRREB references from Python modules

- Remove DimTRREBDistrict model and FactPurchases model
- Remove TRREBDistrict schema and AreaType enum
- Remove TRREBDistrictParser from geo parsers
- Remove load_trreb_districts from dimension loaders
- Remove create_district_map from choropleth figures
- Remove get_demo_districts and get_demo_purchase_data from demo_data
- Update summary metrics to remove purchase-related metrics
- Update callbacks to remove TRREB-related comments
- Update methodology page to remove TRREB data source section
- Update dashboard data notice to remove TRREB mention

Closes #49

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-16 10:11:11 -05:00
parent cb877df9e1
commit fcaefabce8
15 changed files with 16 additions and 464 deletions

View File

@@ -18,8 +18,7 @@ _CMHC_ZONES_PATH = Path("data/toronto/raw/geo/cmhc_zones.geojson")
_cmhc_parser = CMHCZoneParser(_CMHC_ZONES_PATH) if _CMHC_ZONES_PATH.exists() else None
CMHC_ZONES_GEOJSON = _cmhc_parser.get_geojson_for_choropleth() if _cmhc_parser else None
# Load Toronto neighbourhoods GeoJSON for purchase choropleth maps
# Note: This is a temporary proxy until TRREB district boundaries are digitized
# Load Toronto neighbourhoods GeoJSON for choropleth maps
_NEIGHBOURHOODS_PATH = Path("data/toronto/raw/geo/toronto_neighbourhoods.geojson")
_neighbourhood_parser = (
NeighbourhoodParser(_NEIGHBOURHOODS_PATH) if _NEIGHBOURHOODS_PATH.exists() else None
@@ -30,9 +29,7 @@ NEIGHBOURHOODS_GEOJSON = (
else None
)
# Sample purchase data for all 158 City of Toronto neighbourhoods
# Note: This is SAMPLE DATA until TRREB district boundaries are digitized (Issue #25)
# Once TRREB boundaries are available, this will be replaced with real TRREB data by district
# Sample data for all 158 City of Toronto neighbourhoods
SAMPLE_PURCHASE_DATA = [
{
"neighbourhood_id": 1,
@@ -1486,11 +1483,7 @@ SAMPLE_TIME_SERIES_DATA = [
Input("toronto-year-selector", "value"),
)
def update_purchase_choropleth(metric: str, year: str) -> go.Figure:
"""Update the purchase market choropleth map.
Note: Currently using City of Toronto neighbourhoods as a proxy.
Will switch to TRREB districts when boundaries are digitized.
"""
"""Update the neighbourhood choropleth map."""
return create_choropleth_figure(
geojson=NEIGHBOURHOODS_GEOJSON,
data=SAMPLE_PURCHASE_DATA,

View File

@@ -257,9 +257,8 @@ def create_data_notice() -> dmc.Alert:
return dmc.Alert(
children=[
dmc.Text(
"This dashboard uses TRREB and CMHC data. "
"Geographic boundaries require QGIS digitization to enable choropleth maps. "
"Sample data is shown below.",
"This dashboard displays Toronto neighbourhood and CMHC rental data. "
"Sample data is shown for demonstration purposes.",
size="sm",
),
],

View File

@@ -46,42 +46,8 @@ def layout() -> dmc.Container:
mb="lg",
children=[
dmc.Title("Data Sources", order=2, mb="md"),
# TRREB
dmc.Title("Purchase Data: TRREB", order=3, size="h4", mb="sm"),
dmc.Text(
[
"The Toronto Regional Real Estate Board (TRREB) publishes monthly ",
html.Strong("Market Watch"),
" reports containing aggregate statistics for residential real estate "
"transactions across the Greater Toronto Area.",
],
mb="sm",
),
dmc.List(
[
dmc.ListItem("Source: TRREB Market Watch Reports (PDF)"),
dmc.ListItem("Geographic granularity: ~35 TRREB Districts"),
dmc.ListItem("Temporal granularity: Monthly"),
dmc.ListItem("Coverage: 2021-present"),
dmc.ListItem(
[
"Metrics: Sales count, average/median price, new listings, ",
"active listings, days on market, sale-to-list ratio",
]
),
],
mb="md",
),
dmc.Anchor(
"TRREB Market Watch Archive",
href="https://trreb.ca/market-data/market-watch/market-watch-archive/",
target="_blank",
mb="lg",
),
# CMHC
dmc.Title(
"Rental Data: CMHC", order=3, size="h4", mb="sm", mt="md"
),
dmc.Title("Rental Data: CMHC", order=3, size="h4", mb="sm"),
dmc.Text(
[
"Canada Mortgage and Housing Corporation (CMHC) conducts the annual ",
@@ -124,28 +90,17 @@ def layout() -> dmc.Container:
mb="lg",
children=[
dmc.Title("Geographic Considerations", order=2, mb="md"),
dmc.Alert(
title="Important: Non-Aligned Geographies",
color="yellow",
mb="md",
children=[
"TRREB Districts and CMHC Zones do ",
html.Strong("not"),
" align geographically. They are displayed as separate layers and "
"should not be directly compared at the sub-regional level.",
],
),
dmc.Text(
"The dashboard presents three geographic layers:",
"The dashboard presents two geographic layers:",
mb="sm",
),
dmc.List(
[
dmc.ListItem(
[
html.Strong("TRREB Districts (~35): "),
"Used for purchase/sales data visualization. "
"Districts are defined by TRREB and labeled with codes like W01, C01, E01.",
html.Strong("City Neighbourhoods (158): "),
"Official City of Toronto neighbourhood boundaries, "
"used for neighbourhood-level analysis.",
]
),
dmc.ListItem(
@@ -155,13 +110,6 @@ def layout() -> dmc.Container:
"Zones are aligned with Census Tract boundaries.",
]
),
dmc.ListItem(
[
html.Strong("City Neighbourhoods (158): "),
"Reference overlay only. "
"These are official City of Toronto neighbourhood boundaries.",
]
),
],
),
],
@@ -212,22 +160,15 @@ def layout() -> dmc.Container:
dmc.ListItem(
[
html.Strong("Reporting Lag: "),
"TRREB data reflects closed transactions, which may lag market "
"conditions by 1-3 months. CMHC data is annual.",
]
),
dmc.ListItem(
[
html.Strong("Geographic Boundaries: "),
"TRREB district boundaries were manually digitized from reference maps "
"and may contain minor inaccuracies.",
"CMHC rental data is annual (October survey). "
"Other data sources may have different update frequencies.",
]
),
dmc.ListItem(
[
html.Strong("Data Suppression: "),
"Some cells may be suppressed for confidentiality when transaction "
"counts are below thresholds.",
"Some cells may be suppressed for confidentiality when counts "
"are below thresholds.",
]
),
],