DATA_ROOT = "s3://463002504035-shoreline/raw/uploads"
[docs]
class BeadFpUtil:
file_path = {
"AR": [
{
"s3_key": f"{DATA_ROOT}/Arkansas/unzipped/final_proposal_20250930/",
"cai": "fp_cai.csv",
"deployment_projects": "fp_deployment_projects.csv",
"locations": "fp_locations.csv",
"no_bead_locations": "fp_no_bead_locations.csv",
"subgrantees": "fp_subgrantees.csv",
"version_date": "20250930",
},
{
"s3_key": f"{DATA_ROOT}/Arkansas/unzipped/final_proposal/20251112/",
"cai": "curing_fp_cai.csv",
"deployment_projects": "curing_fp_deployment_projects.csv",
"locations": "curing_fp_locations.csv",
"no_bead_locations": "curing_fp_no_bead_locations.csv",
"subgrantees": "curing_fp_subgrantees.csv",
"version_date": "20251112",
},
],
"VA": [
{
"s3_key": f"{DATA_ROOT}/Virginia/unzipped/final_proposal_09112025/",
"cai": "fp_cai.csv",
"locations": "fp_locations.csv",
"no_bead_locations": "fp_no_bead_locations.csv",
"subgrantees": "fp_subgrantees.csv",
"deployment_projects": "fp_deployment_projects.csv",
"version_date": "20250911",
},
{
"s3_key": f"{DATA_ROOT}/Virginia/unzipped/final_proposal_20251027/",
"cai": "fp_cai_10_27_2025.csv",
"locations": "fp_locations_10_27_2025.csv",
"no_bead_locations": "fp_no_bead_locations_10_27_2025.csv",
"subgrantees": "fp_subgrantees_10_27_2025.csv",
"deployment_projects": "fp_deployment_projects_10_27_2025.csv",
"version_date": "20251027",
},
],
"LA": [
{
"s3_key": f"{DATA_ROOT}/Louisiana/final_proposal_final/datasme_1113/",
"cai": "fp_cai_08_13_2025..csv",
"locations": "fp_locations_08_13_2025..csv",
"no_bead_locations": "fp_no_bead_locations__08_13_2025..csv",
"subgrantees": "fp_subgrantees_08_13_2025.csv",
"deployment_projects": "fp_deployment_projects_08_13_2025..csv",
"version_date": "20250813",
},
{
"s3_key": f"{DATA_ROOT}/Louisiana/final_proposal_final/",
"cai": "cai/3_fp_cai_UPDATED_2024.12.30.csv",
"locations": "locations/2_fp_locations_UPDATED_2024.12.30.csv",
"no_bead_locations": "no_bead_locations/4_fp_no_BEAD_locations_2024.12.12.csv",
"non_deployment_projects": "non_deployment_projects/1_fp_non_deployment_projects_2024.12.21.csv",
"subgrantees": "subgrantees/1_fp_subgrantees_2024.12.12.csv",
"deployment_projects": "deployment_projects/1_fp_deployment_projects_UPDATED_2024.12.30.csv",
"version_date": "20241230",
},
{
"s3_key": f"{DATA_ROOT}/Louisiana/final_proposal_final_20250825/",
"cai": "fp_cais.csv",
"locations": "fp_locations.csv",
"no_bead_locations": "fp_bead_no_locations.csv",
"subgrantees": "fp_subgrantees.csv",
"deployment_projects": "fp_deployment_projects.csv",
"version_date": "20250825",
},
{
"s3_key": f"{DATA_ROOT}/Louisiana/unzipped/bead_final_proposal/20251118/",
"cai": "fp_cais_11_18_2025.csv",
"locations": "fp_locations_11_18_2025.csv",
"no_bead_locations": "fp_no_bead_11_18_2025.csv",
"subgrantees": "fp_subgrantees_11_18_2025.csv",
"deployment_projects": "fp_deployment_projects_11_18_2025.csv",
"version_date": "20251118",
},
],
"MS": [
{
"s3_key": f"{DATA_ROOT}/Mississippi/unzipped/final_proposal/",
"cai": "Copy of Use of Funds to Serve CAI's.csv",
"locations": "Copy of BEAD-funded Locations.csv",
"no_bead_locations": "Copy of No BEAD Locations.csv",
"subgrantees": "Copy of Last-Mile Deployment Subgrantees.csv",
"deployment_projects": "Copy of Last-Mile Deployment Projects.csv",
"version_date": "20250905",
},
{
"s3_key": f"{DATA_ROOT}/Mississippi/unzipped/final_proposal/",
"cai": "Copy of Use of Funds to Serve CAI's.csv",
"locations": "Copy of BEAD-funded Locations.csv",
"no_bead_locations": "fp_no_bead_locations_09_18.csv",
"subgrantees": "Copy of Last-Mile Deployment Subgrantees.csv",
"deployment_projects": "Copy of Last-Mile Deployment Projects.csv",
"version_date": "20250918",
},
{
"s3_key": f"{DATA_ROOT}/Mississippi/unzipped/final_proposal/",
"cai": "Copy of Use of Funds to Serve CAI's.csv",
"locations": "Copy of BEAD-funded Locations.csv",
"no_bead_locations": "r_msup_fp_no_bead_locations_09_22.csv", # created using dags/general/flat_file_exporter/SQL/MS_fp_no_bead_locations_09_22.sql
"subgrantees": "Copy of Last-Mile Deployment Subgrantees.csv",
"deployment_projects": "Copy of Last-Mile Deployment Projects.csv",
"version_date": "20250922",
},
{
"s3_key": f"{DATA_ROOT}/Mississippi/unzipped/final_proposal/20251030/",
"cai": "Use of Funds to Serve CAI's - 9.23.csv",
"locations": "BEAD-funded Locations - Updated -10-28-2025(in).csv",
"no_bead_locations": "fp_no_bead_locations_10.14.csv",
"deployment_projects": "Last-Mile Deployment Projects - 10.21.csv",
"version_date": "20251030",
},
{
"s3_key": f"{DATA_ROOT}/Mississippi/unzipped/final_proposal/20251114/",
"cai": "fp_cais.csv",
"locations": "fp_locations.csv",
"no_bead_locations": "fp_no_bead_locations_10.14.csv",
"subgrantees": "Copy of Last-Mile Deployment Subgrantees.csv",
"deployment_projects": "fp_deployment_projects.csv",
"version_date": "20251114",
},
],
"MN": [
{
"s3_key": f"{DATA_ROOT}/Minnesota/unzipped/final_proposal_curing/",
"locations": "final-proposal-locations_tcm1045-703455 09152025.csv",
"no_bead_locations": "final-proposal-no-bead-locations_tcm1045-703457 09152025.csv",
"subgrantees": "final-proposal-subgrantees_tcm1045-703454 09152025.csv",
"deployment_projects": "deployment-projects_tcm1045-703453 09152025.csv",
"version_date": "20250915",
},
{
"s3_key": f"{DATA_ROOT}/Minnesota/unzipped/final_proposal_20251016/",
"deployment_projects": "fp_deployment_projects.csv",
"locations": "fp_locations.csv",
"no_bead_locations": "fp_no_bead_locations.csv",
"subgrantees": "fp_subgrantees.csv",
"version_date": "20251016",
},
],
"OK": [
{
"s3_key": f"{DATA_ROOT}/Oklahoma/final_proposal/20250912/",
"cai": "fp_cai(9-12-25).csv",
"locations": "fp_locations(9-12-25).csv",
"no_bead_locations": "fp_no_bead_locations(9-4-25).csv",
"subgrantees": "fp_subgrantees(9-12-25).csv",
"deployment_projects": "fp_deployment_projects(9-12-25).csv",
"version_date": "20250912",
},
{
"s3_key": f"{DATA_ROOT}/Oklahoma/final_proposal/20250916/",
"cai": "fp_cai.csv",
"deployment_projects": "fp_deployment_projects.csv",
"locations": "fp_locations.csv",
"no_bead_locations": "fp_no_bead_locations.csv",
"subgrantees": "fp_subgrantees.csv",
"version_date": "20250916",
},
{
"s3_key": f"{DATA_ROOT}/Oklahoma/final_proposal/20250924/",
"cai": "fp_cai.csv",
"deployment_projects": "fp_deployment_projects.csv",
"locations": "fp_locations.csv",
"no_bead_locations": "fp_no_bead_locations.csv",
"subgrantees": "fp_subgrantees.csv",
"version_date": "20250924",
},
{
"s3_key": f"{DATA_ROOT}/Oklahoma/final_proposal/20251113/",
"cai": "fp_cai.csv",
"deployment_projects": "fp_deployment_projects.csv",
"locations": "fp_locations.csv",
"no_bead_locations": "fp_no_bead_locations.csv",
"subgrantees": "fp_subgrantees.csv",
"version_date": "20251113",
},
],
"IN": [
{
"s3_key": f"{DATA_ROOT}/Indiana/unzipped/final_proposal/20250923/",
"no_bead_locations": "fp_no_bead_locations.xlsx",
"version_date": "20250923",
},
],
"TX": [
{
"s3_key": f"{DATA_ROOT}/Texas/unzipped/final_proposal/20251118/",
"cai": "FP_CAI.csv",
"locations": "FP_LOCATIONS.csv",
"no_bead_locations": "FP_NO_BEAD_LOCATIONS.csv",
"subgrantees": "FP_SUBGRANTEES.csv",
"deployment_projects": "FP_DEPLOYMENT_PROJECTS.csv",
"version_date": "20251118",
},
],
}
[docs]
@staticmethod
def get_fp_round(state: str) -> int:
round_dicts = {
"AR": 4,
"VA": -1,
"LA": -1,
"MS": 1,
"TX": 1,
"IN": 2,
"OK": 2,
"MN": 2,
}
return round_dicts.get(state, -1)
[docs]
@staticmethod
def get_fp_file_path(state: str) -> list[dict]:
paths = BeadFpUtil.file_path.get(state, [])
print("Total versions found for state", state, ":", len(paths))
return paths
[docs]
@staticmethod
def get_fp_states() -> list[str]:
return list(BeadFpUtil.file_path.keys())