-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvalidate_data.py
81 lines (68 loc) · 2.25 KB
/
validate_data.py
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
71
72
73
74
75
76
77
78
79
80
81
"""A module to validate fetched data values."""
import asyncio
from datetime import datetime
from generate_urls import generate_wfs_places_url
from fetch_data import fetch_data
def place_name_and_type(place_id):
"""
Determine if provided place_id corresponds to a known place.
Args:
place_id (str): place identifier (e.g., AK124)
Returns:
Name and type of the place if it was found, otherwise None and None
"""
if place_id is None:
return None, None
# HUC12s, not getting names from them below
if place_id.isdigit() and len(place_id) == 12:
return None, "huc12"
place = asyncio.run(
fetch_data(
[
generate_wfs_places_url(
"all_boundaries:all_areas", "name,alt_name,type", place_id, "id"
)
]
)
)
if place["numberMatched"] > 0:
place = place["features"][0]["properties"]
full_place = place["name"]
if place["alt_name"] != "":
full_place += " (" + place["alt_name"] + ")"
return full_place, place["type"]
else:
place = asyncio.run(
fetch_data(
[
generate_wfs_places_url(
"all_boundaries:all_communities",
"name,alt_name,type",
place_id,
"id",
)
]
)
)
if place["numberMatched"] > 0:
place = place["features"][0]["properties"]
full_place = place["name"]
if place["alt_name"] != "":
full_place += " (" + place["alt_name"] + ")"
return full_place, place["type"]
return None, None
def validate_seaice_timestring(timestring):
"""
Validate the timestring for the seaice coverage.
Args:
timestring (str): the timestring to validate
Returns:
datetime object of the timestring
"""
try:
parsed_date = datetime.strptime(timestring, "%Y-%m-%dT%H:%M:%S.%fZ")
return parsed_date
except ValueError:
raise ValueError(
"The timestring is not in the expected format for the seaice coverage: (YYYY-MM-DDTHH:MM:SS.sssZ)"
)