Skip to content

Commit 541a593

Browse files
committed
FIX: DwdWeatherWarningsAPI: Exception handling when input data is None
FIX: README.md: Typo
1 parent 26bac69 commit 541a593

File tree

4 files changed

+37
-22
lines changed

4 files changed

+37
-22
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
## 1.0.1 (2020-04-20)
2+
### Fixed
3+
- DwdWeatherWarningsAPI: Exception handling when input data is None
4+
- README.md: Typo
5+
16
## 1.0.0 (2020-04-19)
27
### Added
38
- DwdWeatherWarningsAPI

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ Last update: 2020-04-18 17:57:29.274000+00:00
6969
- **`__init__(identifier)`**
7070
Create a new weather warnings API class instance
7171

72-
The `identifier` can either be a so called `warncell id` (int) or a `warncell name` (str). It is heavly advised to use `warncell id` because `warncell name` is not unique in some cases.
72+
The `identifier` can either be a so called `warncell id` (int) or a `warncell name` (str). It is heavily advised to use `warncell id` because `warncell name` is not unique in some cases.
7373
A list auf valid warncell ids and names can be found [here](https://www.dwd.de/DE/leistungen/opendata/help/warnungen/cap_warncellids_csv.html).
7474
Some of the warncells are outdated but still listed. If init fails search the list for a similar sounding warncell.
7575
Method `update()` is automatically called at the end of a successfull init.

dwdwfsapi/weatherwarnings.py

Lines changed: 30 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ def convert_warning_data(data_in):
1616
"""
1717

1818
# pylint: disable=too-many-branches
19+
# pylint: disable=too-many-statements
1920

2021
weather_severity_mapping = {
2122
"minor": 1,
@@ -38,26 +39,26 @@ def convert_warning_data(data_in):
3839
"instruction": None,
3940
"level": 0,
4041
"parameters": None,
41-
"color": None,
42+
"color": "#000000",
4243
}
4344

4445
# Convert data
4546
if "onset" in data_in:
4647
try:
4748
data_out["start_time"] = ciso8601.parse_datetime(data_in["onset"])
48-
except: # pylint: disable=bare-except
49+
except: # pylint: disable=bare-except
4950
data_out["start_time"] = None
5051
if "expires" in data_in:
5152
try:
5253
data_out["end_time"] = ciso8601.parse_datetime(data_in["expires"])
53-
except: # pylint: disable=bare-except
54+
except: # pylint: disable=bare-except
5455
data_out["end_time"] = None
5556
if "event" in data_in:
5657
data_out["event"] = data_in["event"]
5758
if "ec_ii" in data_in:
5859
try:
5960
data_out["event_code"] = int(data_in["ec_ii"])
60-
except: # pylint: disable=bare-except
61+
except: # pylint: disable=bare-except
6162
data_out["event_code"] = 0
6263
if "headline" in data_in:
6364
data_out["headline"] = data_in["headline"]
@@ -66,23 +67,32 @@ def convert_warning_data(data_in):
6667
if "instruction" in data_in:
6768
data_out["instruction"] = data_in["instruction"]
6869
if "severity" in data_in:
69-
if data_in["severity"].lower() in weather_severity_mapping:
70-
data_out["level"] = weather_severity_mapping[
71-
data_in["severity"].lower()
72-
]
70+
try:
71+
if data_in["severity"].lower() in weather_severity_mapping:
72+
data_out["level"] = weather_severity_mapping[
73+
data_in["severity"].lower()
74+
]
75+
except: # pylint: disable=bare-except
76+
data_out["level"] = 0
7377
if "parametername" in data_in and "parametervalue" in data_in:
7478
# Depending on the query the keys and values are either seperated by , or ;
75-
if "," in data_in["parametername"]:
76-
keys = data_in["parametername"].split(",")
77-
values = data_in["parametervalue"].split(",")
78-
else:
79-
keys = data_in["parametername"].split(";")
80-
values = data_in["parametervalue"].split(";")
81-
data_out["parameters"] = dict(zip(keys, values))
79+
try:
80+
if "," in data_in["parametername"]:
81+
keys = data_in["parametername"].split(",")
82+
values = data_in["parametervalue"].split(",")
83+
else:
84+
keys = data_in["parametername"].split(";")
85+
values = data_in["parametervalue"].split(";")
86+
data_out["parameters"] = dict(zip(keys, values))
87+
except: # pylint: disable=bare-except
88+
data_out["parameters"] = None
8289
if "ec_area_color" in data_in:
83-
colors = data_in["ec_area_color"].split(" ")
84-
data_out["color"] = f"#{int(colors[0]):02x}{int(colors[1]):02x}"
85-
data_out["color"] += f"{int(colors[2]):02x}"
90+
try:
91+
colors = data_in["ec_area_color"].split(" ")
92+
data_out["color"] = f"#{int(colors[0]):02x}{int(colors[1]):02x}"
93+
data_out["color"] += f"{int(colors[2]):02x}"
94+
except: # pylint: disable=bare-except
95+
data_out["color"] = "#000000"
8696

8797
return data_out
8898

@@ -274,7 +284,7 @@ def __parse_result(self, json_obj):
274284
self.last_update = ciso8601.parse_datetime(
275285
json_obj["timeStamp"]
276286
)
277-
except: # pylint: disable=bare-except
287+
except: # pylint: disable=bare-except
278288
self.last_update = datetime.datetime.now(
279289
datetime.timezone.utc
280290
)
@@ -315,7 +325,7 @@ def __parse_result(self, json_obj):
315325
self.expected_warnings = expected_warnings
316326
self.data_valid = True
317327

318-
except: # pylint: disable=bare-except
328+
except: # pylint: disable=bare-except
319329
self.data_valid = False
320330
self.last_update = None
321331
self.current_warning_level = None

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
EMAIL = "stephan192@outlook.com"
1515
AUTHOR = "stephan192"
1616
REQUIRES_PYTHON = ">=3.6"
17-
VERSION = "1.0.0"
17+
VERSION = "1.0.1"
1818

1919
# Define required packages
2020
REQUIRES = ["requests>=2.23.0,<3", "ciso8601>=2.1.3,<3", "urllib3>=1.25.8,<2"]

0 commit comments

Comments
 (0)