-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmodels.py
More file actions
70 lines (57 loc) · 1.73 KB
/
models.py
File metadata and controls
70 lines (57 loc) · 1.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
"""
Define data structures for each stage of the pipeline.
"""
from typing import Optional
from pydantic import BaseModel
class AddressInput(BaseModel):
"""
A single address row from the input csv.
"""
id: str
address: str
class GeoCodeResult(BaseModel):
"""
Result from the Census Geocoder API.
"""
lat: float
lng: float
class FloodZoneResult(BaseModel):
"""
Result from the FEMA NFHL ArcGIS Layer 28
"""
flood_zone: str
flood_zone_subtype: str # ZONE_SUBTY
class NRIResult(BaseModel):
"""
Result from the FEMA National Risk Index Census Tracts feature services.
"""
nri_score: Optional[float] = None
nri_rating: Optional[str] = None
avalanche_rating: Optional[str] = None
coastal_flooding_rating: Optional[str] = None
cold_wave_rating: Optional[str] = None
drought_rating: Optional[str] = None
earthquake_rating: Optional[str] = None
hail_rating: Optional[str] = None
heat_wave_rating: Optional[str] = None
hurricane_rating: Optional[str] = None
ice_storm_rating: Optional[str] = None
landslide_rating: Optional[str] = None
lightning_rating: Optional[str] = None
riverine_flooding_rating: Optional[str] = None
strong_wind_rating: Optional[str] = None
tornado_rating: Optional[str] = None
tsunami_rating: Optional[str] = None
volcanic_activity_rating: Optional[str] = None
wildfire_rating: Optional[str] = None
winter_weather_rating: Optional[str] = None
class FinalResult(AddressInput, GeoCodeResult, FloodZoneResult, NRIResult):
"""
Combine result row written to results.csv
"""
pass
class ErrorRow(AddressInput):
"""
Failed Address written to errors.csv.
"""
error: str