Skip to content

Commit aa48816

Browse files
committed
style: make sonarcloud happy
1 parent a90ddc0 commit aa48816

File tree

2 files changed

+63
-40
lines changed

2 files changed

+63
-40
lines changed

src/client/delphi_epidata.py

+61-38
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,19 @@
2626

2727
_HEADERS = {"user-agent": "delphi_epidata/" + _version + " (Python)"}
2828

29+
30+
class EpidataException(Exception):
31+
...
32+
33+
34+
class EpidataBadRequestException(EpidataException):
35+
...
36+
37+
38+
REGIONS_EPIWEEKS_REQUIRED = "`regions` and `epiweeks` are both required"
39+
ISSUES_LAG_EXCLUSIVE = "`issues` and `lag` are mutually exclusive"
40+
LOCATIONS_EPIWEEKS_REQUIRED = "`locations` and `epiweeks` are both required"
41+
2942
# Because the API is stateless, the Epidata class only contains static methods
3043
class Epidata:
3144
"""An interface to DELPHI's Epidata API."""
@@ -90,7 +103,7 @@ def check(resp):
90103
"""Raise an Exception on error, otherwise return epidata."""
91104
if resp["result"] != 1:
92105
msg, code = resp["message"], resp["result"]
93-
raise Exception(f"Error fetching epidata: {msg}. (result={int(code)})")
106+
raise EpidataException(f"Error fetching epidata: {msg}. (result={int(code)})")
94107
return resp["epidata"]
95108

96109
# Build a `range` object (ex: dates/epiweeks)
@@ -107,9 +120,9 @@ def fluview(regions, epiweeks, issues=None, lag=None, auth=None):
107120
"""Fetch FluView data."""
108121
# Check parameters
109122
if regions is None or epiweeks is None:
110-
raise Exception("`regions` and `epiweeks` are both required")
123+
raise EpidataBadRequestException(REGIONS_EPIWEEKS_REQUIRED)
111124
if issues is not None and lag is not None:
112-
raise Exception("`issues` and `lag` are mutually exclusive")
125+
raise EpidataBadRequestException(ISSUES_LAG_EXCLUSIVE)
113126
# Set up request
114127
params = {
115128
"endpoint": "fluview",
@@ -142,9 +155,9 @@ def fluview_clinical(regions, epiweeks, issues=None, lag=None):
142155
"""Fetch FluView clinical data."""
143156
# Check parameters
144157
if regions is None or epiweeks is None:
145-
raise Exception("`regions` and `epiweeks` are both required")
158+
raise EpidataBadRequestException(REGIONS_EPIWEEKS_REQUIRED)
146159
if issues is not None and lag is not None:
147-
raise Exception("`issues` and `lag` are mutually exclusive")
160+
raise EpidataBadRequestException(REGIONS_EPIWEEKS_REQUIRED)
148161
# Set up request
149162
params = {
150163
"endpoint": "fluview_clinical",
@@ -164,9 +177,9 @@ def flusurv(locations, epiweeks, issues=None, lag=None):
164177
"""Fetch FluSurv data."""
165178
# Check parameters
166179
if locations is None or epiweeks is None:
167-
raise Exception("`locations` and `epiweeks` are both required")
180+
raise EpidataBadRequestException(LOCATIONS_EPIWEEKS_REQUIRED)
168181
if issues is not None and lag is not None:
169-
raise Exception("`issues` and `lag` are mutually exclusive")
182+
raise EpidataBadRequestException(REGIONS_EPIWEEKS_REQUIRED)
170183
# Set up request
171184
params = {
172185
"endpoint": "flusurv",
@@ -186,9 +199,9 @@ def paho_dengue(regions, epiweeks, issues=None, lag=None):
186199
"""Fetch PAHO Dengue data."""
187200
# Check parameters
188201
if regions is None or epiweeks is None:
189-
raise Exception("`regions` and `epiweeks` are both required")
202+
raise EpidataBadRequestException(REGIONS_EPIWEEKS_REQUIRED)
190203
if issues is not None and lag is not None:
191-
raise Exception("`issues` and `lag` are mutually exclusive")
204+
raise EpidataBadRequestException(REGIONS_EPIWEEKS_REQUIRED)
192205
# Set up request
193206
params = {
194207
"endpoint": "paho_dengue",
@@ -208,9 +221,9 @@ def ecdc_ili(regions, epiweeks, issues=None, lag=None):
208221
"""Fetch ECDC ILI data."""
209222
# Check parameters
210223
if regions is None or epiweeks is None:
211-
raise Exception("`regions` and `epiweeks` are both required")
224+
raise EpidataBadRequestException(REGIONS_EPIWEEKS_REQUIRED)
212225
if issues is not None and lag is not None:
213-
raise Exception("`issues` and `lag` are mutually exclusive")
226+
raise EpidataBadRequestException(REGIONS_EPIWEEKS_REQUIRED)
214227
# Set up request
215228
params = {
216229
"endpoint": "ecdc_ili",
@@ -230,9 +243,9 @@ def kcdc_ili(regions, epiweeks, issues=None, lag=None):
230243
"""Fetch KCDC ILI data."""
231244
# Check parameters
232245
if regions is None or epiweeks is None:
233-
raise Exception("`regions` and `epiweeks` are both required")
246+
raise EpidataBadRequestException(REGIONS_EPIWEEKS_REQUIRED)
234247
if issues is not None and lag is not None:
235-
raise Exception("`issues` and `lag` are mutually exclusive")
248+
raise EpidataBadRequestException(REGIONS_EPIWEEKS_REQUIRED)
236249
# Set up request
237250
params = {
238251
"endpoint": "kcdc_ili",
@@ -252,7 +265,7 @@ def gft(locations, epiweeks):
252265
"""Fetch Google Flu Trends data."""
253266
# Check parameters
254267
if locations is None or epiweeks is None:
255-
raise Exception("`locations` and `epiweeks` are both required")
268+
raise EpidataBadRequestException(LOCATIONS_EPIWEEKS_REQUIRED)
256269
# Set up request
257270
params = {
258271
"endpoint": "gft",
@@ -268,7 +281,9 @@ def ght(auth, locations, epiweeks, query):
268281
"""Fetch Google Health Trends data."""
269282
# Check parameters
270283
if auth is None or locations is None or epiweeks is None or query is None:
271-
raise Exception("`auth`, `locations`, `epiweeks`, and `query` are all required")
284+
raise EpidataBadRequestException(
285+
"`auth`, `locations`, `epiweeks`, and `query` are all required"
286+
)
272287
# Set up request
273288
params = {
274289
"endpoint": "ght",
@@ -286,9 +301,9 @@ def twitter(auth, locations, dates=None, epiweeks=None):
286301
"""Fetch HealthTweets data."""
287302
# Check parameters
288303
if auth is None or locations is None:
289-
raise Exception("`auth` and `locations` are both required")
304+
raise EpidataBadRequestException("`auth` and `locations` are both required")
290305
if not ((dates is None) ^ (epiweeks is None)):
291-
raise Exception("exactly one of `dates` and `epiweeks` is required")
306+
raise EpidataBadRequestException("exactly one of `dates` and `epiweeks` is required")
292307
# Set up request
293308
params = {
294309
"endpoint": "twitter",
@@ -308,9 +323,9 @@ def wiki(articles, dates=None, epiweeks=None, hours=None, language="en"):
308323
"""Fetch Wikipedia access data."""
309324
# Check parameters
310325
if articles is None:
311-
raise Exception("`articles` is required")
326+
raise EpidataBadRequestException("`articles` is required")
312327
if not ((dates is None) ^ (epiweeks is None)):
313-
raise Exception("exactly one of `dates` and `epiweeks` is required")
328+
raise EpidataBadRequestException("exactly one of `dates` and `epiweeks` is required")
314329
# Set up request
315330
params = {
316331
"endpoint": "wiki",
@@ -332,7 +347,7 @@ def cdc(auth, epiweeks, locations):
332347
"""Fetch CDC page hits."""
333348
# Check parameters
334349
if auth is None or epiweeks is None or locations is None:
335-
raise Exception("`auth`, `epiweeks`, and `locations` are all required")
350+
raise EpidataBadRequestException("`auth`, `epiweeks`, and `locations` are all required")
336351
# Set up request
337352
params = {
338353
"endpoint": "cdc",
@@ -349,7 +364,7 @@ def quidel(auth, epiweeks, locations):
349364
"""Fetch Quidel data."""
350365
# Check parameters
351366
if auth is None or epiweeks is None or locations is None:
352-
raise Exception("`auth`, `epiweeks`, and `locations` are all required")
367+
raise EpidataBadRequestException("`auth`, `epiweeks`, and `locations` are all required")
353368
# Set up request
354369
params = {
355370
"endpoint": "quidel",
@@ -366,7 +381,7 @@ def norostat(auth, location, epiweeks):
366381
"""Fetch NoroSTAT data (point data, no min/max)."""
367382
# Check parameters
368383
if auth is None or location is None or epiweeks is None:
369-
raise Exception("`auth`, `location`, and `epiweeks` are all required")
384+
raise EpidataBadRequestException("`auth`, `location`, and `epiweeks` are all required")
370385
# Set up request
371386
params = {
372387
"endpoint": "norostat",
@@ -383,7 +398,7 @@ def meta_norostat(auth):
383398
"""Fetch NoroSTAT metadata."""
384399
# Check parameters
385400
if auth is None:
386-
raise Exception("`auth` is required")
401+
raise EpidataBadRequestException("`auth` is required")
387402
# Set up request
388403
params = {
389404
"endpoint": "meta_norostat",
@@ -398,9 +413,9 @@ def nidss_flu(regions, epiweeks, issues=None, lag=None):
398413
"""Fetch NIDSS flu data."""
399414
# Check parameters
400415
if regions is None or epiweeks is None:
401-
raise Exception("`regions` and `epiweeks` are both required")
416+
raise EpidataBadRequestException(REGIONS_EPIWEEKS_REQUIRED)
402417
if issues is not None and lag is not None:
403-
raise Exception("`issues` and `lag` are mutually exclusive")
418+
raise EpidataBadRequestException(REGIONS_EPIWEEKS_REQUIRED)
404419
# Set up request
405420
params = {
406421
"endpoint": "nidss_flu",
@@ -420,7 +435,7 @@ def nidss_dengue(locations, epiweeks):
420435
"""Fetch NIDSS dengue data."""
421436
# Check parameters
422437
if locations is None or epiweeks is None:
423-
raise Exception("`locations` and `epiweeks` are both required")
438+
raise EpidataBadRequestException(REGIONS_EPIWEEKS_REQUIRED)
424439
# Set up request
425440
params = {
426441
"endpoint": "nidss_dengue",
@@ -436,7 +451,7 @@ def delphi(system, epiweek):
436451
"""Fetch Delphi's forecast."""
437452
# Check parameters
438453
if system is None or epiweek is None:
439-
raise Exception("`system` and `epiweek` are both required")
454+
raise EpidataBadRequestException("`system` and `epiweek` are both required")
440455
# Set up request
441456
params = {
442457
"endpoint": "delphi",
@@ -452,7 +467,9 @@ def sensors(auth, names, locations, epiweeks):
452467
"""Fetch Delphi's digital surveillance sensors."""
453468
# Check parameters
454469
if names is None or locations is None or epiweeks is None:
455-
raise Exception("`names`, `locations`, and `epiweeks` are all required")
470+
raise EpidataBadRequestException(
471+
"`names`, `locations`, and `epiweeks` are all required"
472+
)
456473
# Set up request
457474
params = {
458475
"endpoint": "sensors",
@@ -471,7 +488,9 @@ def dengue_sensors(auth, names, locations, epiweeks):
471488
"""Fetch Delphi's digital surveillance sensors."""
472489
# Check parameters
473490
if auth is None or names is None or locations is None or epiweeks is None:
474-
raise Exception("`auth`, `names`, `locations`, and `epiweeks` " "are all required")
491+
raise EpidataBadRequestException(
492+
"`auth`, `names`, `locations`, and `epiweeks` are all required"
493+
)
475494
# Set up request
476495
params = {
477496
"endpoint": "dengue_sensors",
@@ -489,7 +508,7 @@ def nowcast(locations, epiweeks):
489508
"""Fetch Delphi's wILI nowcast."""
490509
# Check parameters
491510
if locations is None or epiweeks is None:
492-
raise Exception("`locations` and `epiweeks` are both required")
511+
raise EpidataBadRequestException(REGIONS_EPIWEEKS_REQUIRED)
493512
# Set up request
494513
params = {
495514
"endpoint": "nowcast",
@@ -505,7 +524,7 @@ def dengue_nowcast(locations, epiweeks):
505524
"""Fetch Delphi's dengue nowcast."""
506525
# Check parameters
507526
if locations is None or epiweeks is None:
508-
raise Exception("`locations` and `epiweeks` are both required")
527+
raise EpidataBadRequestException(REGIONS_EPIWEEKS_REQUIRED)
509528
# Set up request
510529
params = {
511530
"endpoint": "dengue_nowcast",
@@ -541,12 +560,12 @@ def covidcast(
541560
signals = kwargs["signal"]
542561
# Check parameters
543562
if None in (data_source, signals, time_type, geo_type, time_values, geo_value):
544-
raise Exception(
563+
raise EpidataBadRequestException(
545564
"`data_source`, `signals`, `time_type`, `geo_type`, "
546565
"`time_values`, and `geo_value` are all required"
547566
)
548567
if issues is not None and lag is not None:
549-
raise Exception("`issues` and `lag` are mutually exclusive")
568+
raise EpidataBadRequestException(REGIONS_EPIWEEKS_REQUIRED)
550569
# Set up request
551570
params = {
552571
"endpoint": "covidcast",
@@ -589,7 +608,7 @@ def covid_hosp(states, dates, issues=None, as_of=None):
589608
"""Fetch COVID hospitalization data."""
590609
# Check parameters
591610
if states is None or dates is None:
592-
raise Exception("`states` and `dates` are both required")
611+
raise EpidataBadRequestException("`states` and `dates` are both required")
593612
# Set up request
594613
params = {
595614
"endpoint": "covid_hosp",
@@ -609,7 +628,9 @@ def covid_hosp_facility(hospital_pks, collection_weeks, publication_dates=None):
609628
"""Fetch COVID hospitalization data for specific facilities."""
610629
# Check parameters
611630
if hospital_pks is None or collection_weeks is None:
612-
raise Exception("`hospital_pks` and `collection_weeks` are both required")
631+
raise EpidataBadRequestException(
632+
"`hospital_pks` and `collection_weeks` are both required"
633+
)
613634
# Set up request
614635
params = {
615636
"source": "covid_hosp_facility",
@@ -638,7 +659,9 @@ def covid_hosp_facility_lookup(state=None, ccn=None, city=None, zip=None, fips_c
638659
elif fips_code is not None:
639660
params["fips_code"] = fips_code
640661
else:
641-
raise Exception("one of `state`, `ccn`, `city`, `zip`, or `fips_code` is required")
662+
raise EpidataBadRequestException(
663+
"one of `state`, `ccn`, `city`, `zip`, or `fips_code` is required"
664+
)
642665
# Make the API call
643666
return Epidata._request(params)
644667

@@ -668,12 +691,12 @@ def covidcast_nowcast(
668691
geo_value,
669692
sensor_names,
670693
):
671-
raise Exception(
694+
raise EpidataBadRequestException(
672695
"`data_source`, `signals`, `sensor_names`, `time_type`, `geo_type`, "
673696
"`time_values`, and `geo_value` are all required"
674697
)
675698
if issues is not None and lag is not None:
676-
raise Exception("`issues` and `lag` are mutually exclusive")
699+
raise EpidataBadRequestException(REGIONS_EPIWEEKS_REQUIRED)
677700
# Set up request
678701
params = {
679702
"source": "covidcast_nowcast",
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
from .delphi_epidata import Epidata
22

3-
name = 'delphi_epidata'
4-
__version__ = '4.1.4'
3+
name = "delphi_epidata"
4+
__version__ = "4.1.4"

0 commit comments

Comments
 (0)