From 6db5e0fff87c6ef5cb27d0683889da7ec2282171 Mon Sep 17 00:00:00 2001 From: dadams Date: Wed, 27 May 2026 21:57:42 -0700 Subject: [PATCH] Fix path references in scripts after reorganization Update 8 scripts to use Path(__file__).parent.parent as PROJECT_ROOT so they resolve data/, output/, and internet_cables/ relative to the project root rather than the caller's working directory. Co-Authored-By: Claude Sonnet 4.6 --- scripts/analyze_dc_tract_concentration.py | 4 +++- scripts/create_data_center_census_tract_table.py | 5 +++-- scripts/ingest_legiscan.py | 2 +- scripts/load_postgis_data_centers.py | 6 ++++-- scripts/load_postgis_internet_cables.py | 4 +++- scripts/load_postgis_osm_data_centers.py | 5 ++++- scripts/make_data_center_map.py | 4 ++-- scripts/make_internet_cables_map.py | 3 ++- 8 files changed, 22 insertions(+), 11 deletions(-) diff --git a/scripts/analyze_dc_tract_concentration.py b/scripts/analyze_dc_tract_concentration.py index 7fc7a79..7dd212b 100644 --- a/scripts/analyze_dc_tract_concentration.py +++ b/scripts/analyze_dc_tract_concentration.py @@ -12,11 +12,13 @@ import math import os import statistics from collections import Counter +from pathlib import Path import psycopg2 -CSV_PATH = "census_tract_acs_2024_selected_states.csv" +PROJECT_ROOT = Path(__file__).parent.parent +CSV_PATH = PROJECT_ROOT / "data" / "census_tract_acs_2024_selected_states.csv" def connect(): diff --git a/scripts/create_data_center_census_tract_table.py b/scripts/create_data_center_census_tract_table.py index 004f62b..11c13e6 100644 --- a/scripts/create_data_center_census_tract_table.py +++ b/scripts/create_data_center_census_tract_table.py @@ -22,11 +22,12 @@ FINAL_TABLE = "public.data_center_census_tracts_2024" ACS_YEAR = 2024 ACS_SOURCE = "ACS 2024 5-year profile" -TRACT_ZIP = Path("cb_2024_us_tract_500k.zip") +PROJECT_ROOT = Path(__file__).parent.parent +TRACT_ZIP = PROJECT_ROOT / "data" / "cb_2024_us_tract_500k.zip" TRACT_ZIP_URL = ( "https://www2.census.gov/geo/tiger/GENZ2024/shp/cb_2024_us_tract_500k.zip" ) -ACS_AUDIT_CSV = Path("census_tract_acs_2024_selected_states.csv") +ACS_AUDIT_CSV = PROJECT_ROOT / "data" / "census_tract_acs_2024_selected_states.csv" STATE_NAME_TO_CODE = { "Alabama": "AL", "Alaska": "AK", "Arizona": "AZ", "Arkansas": "AR", diff --git a/scripts/ingest_legiscan.py b/scripts/ingest_legiscan.py index 87ff943..5074da2 100644 --- a/scripts/ingest_legiscan.py +++ b/scripts/ingest_legiscan.py @@ -51,7 +51,7 @@ import requests DB_NAME = "data_centers" API_KEY = os.environ.get("LEGISCAN_API_KEY") API_BASE = "https://api.legiscan.com/" -CACHE_DIR = Path("data/legiscan_cache") +CACHE_DIR = Path(__file__).parent.parent / "data" / "legiscan_cache" MIN_YEAR_DEFAULT = 2016 RATE_LIMIT_DELAY = 0.5 # seconds between API calls diff --git a/scripts/load_postgis_data_centers.py b/scripts/load_postgis_data_centers.py index 18543db..0eb02e8 100644 --- a/scripts/load_postgis_data_centers.py +++ b/scripts/load_postgis_data_centers.py @@ -3,13 +3,15 @@ import argparse import csv import os from decimal import Decimal +from pathlib import Path import psycopg2 from psycopg2.extras import execute_values -CSV_PATH = "US_DC_Sample_geocoded.csv" -IM3_CSV_PATH = "new/IM3_Existing_DataCenters.csv" +PROJECT_ROOT = Path(__file__).parent.parent +CSV_PATH = str(PROJECT_ROOT / "data" / "US_DC_Sample_geocoded.csv") +IM3_CSV_PATH = str(PROJECT_ROOT / "new" / "IM3_Existing_DataCenters.csv") TABLE = "public.us_dc_sample_geocoded" DB_NAME = "data_centers" diff --git a/scripts/load_postgis_internet_cables.py b/scripts/load_postgis_internet_cables.py index 63d8ac1..f7f8a2e 100644 --- a/scripts/load_postgis_internet_cables.py +++ b/scripts/load_postgis_internet_cables.py @@ -14,12 +14,14 @@ import json import os import re from decimal import Decimal +from pathlib import Path import psycopg2 from psycopg2.extras import Json, execute_values -DATA_DIR = "internet_cables" +PROJECT_ROOT = Path(__file__).parent.parent +DATA_DIR = str(PROJECT_ROOT / "internet_cables") DB_NAME = "data_centers" CABLES_TABLE = "public.internet_cables" diff --git a/scripts/load_postgis_osm_data_centers.py b/scripts/load_postgis_osm_data_centers.py index fb53dad..7a60a53 100644 --- a/scripts/load_postgis_osm_data_centers.py +++ b/scripts/load_postgis_osm_data_centers.py @@ -17,12 +17,15 @@ import json import os import sys import time +from pathlib import Path from typing import Dict, List, Optional, Tuple import psycopg2 import requests from psycopg2.extras import Json, execute_values +PROJECT_ROOT = Path(__file__).parent.parent + OVERPASS_URL = "https://overpass-api.de/api/interpreter" TABLE = "public.osm_data_centers" VIEW = "public.data_centers_union" @@ -280,7 +283,7 @@ def parse_args() -> argparse.Namespace: parser = argparse.ArgumentParser(description=__doc__) parser.add_argument( "--cache-dir", - default="output", + default=str(PROJECT_ROOT / "output"), help="Directory to cache raw Overpass responses (default: output/).", ) parser.add_argument( diff --git a/scripts/make_data_center_map.py b/scripts/make_data_center_map.py index fd8af3b..a6439c3 100644 --- a/scripts/make_data_center_map.py +++ b/scripts/make_data_center_map.py @@ -222,8 +222,8 @@ def parse_args(): ) parser.add_argument( "--output", - default="data_center_map.html", - help="Output HTML path (default: data_center_map.html)", + default=str(Path(__file__).parent.parent / "output" / "data_center_map.html"), + help="Output HTML path (default: output/data_center_map.html)", ) return parser.parse_args() diff --git a/scripts/make_internet_cables_map.py b/scripts/make_internet_cables_map.py index ab6baa8..48d0d16 100644 --- a/scripts/make_internet_cables_map.py +++ b/scripts/make_internet_cables_map.py @@ -5,6 +5,7 @@ and city-level network-dominance points from PostGIS. import argparse import json import os +from pathlib import Path import psycopg2 @@ -307,7 +308,7 @@ def parse_args(): p = argparse.ArgumentParser( description="Render a Leaflet map combining data centers, submarine cables, and city dominance." ) - p.add_argument("--output", default="data_centers_cables_map.html") + p.add_argument("--output", default=str(Path(__file__).parent.parent / "output" / "data_centers_cables_map.html")) p.add_argument( "--us-cities-only", action="store_true",