|
5 | 5 | from flask.json import loads, jsonify
|
6 | 6 | from bisect import bisect_right
|
7 | 7 | from sqlalchemy import text
|
| 8 | +from pandas import read_csv |
8 | 9 |
|
9 | 10 | from .._common import is_compatibility_mode, db
|
10 | 11 | from .._exceptions import ValidationFailedException, DatabaseErrorException
|
|
32 | 33 | require_any,
|
33 | 34 | )
|
34 | 35 | from .._db import sql_table_has_columns
|
35 |
| -from .._pandas import as_pandas |
| 36 | +from .._pandas import as_pandas, print_pandas |
36 | 37 | from .covidcast_utils import compute_trend, compute_trends, compute_correlations, compute_trend_value, CovidcastMetaEntry, AllSignalsMap
|
37 | 38 | from ..utils import shift_time_value, date_to_time_value, time_value_to_iso, time_value_to_date
|
38 | 39 |
|
@@ -534,3 +535,18 @@ def handle_coverage():
|
534 | 535 | _handle_lag_issues_as_of(q, None, None, None)
|
535 | 536 |
|
536 | 537 | return execute_query(q.query, q.params, fields_string, fields_int, [])
|
| 538 | + |
| 539 | + |
| 540 | +@bp.route("/anomalies", methods=("GET", "POST")) |
| 541 | +def handle_anomalies(): |
| 542 | + """ |
| 543 | + proxy to the excel sheet about data anomalies |
| 544 | + """ |
| 545 | + |
| 546 | + signal = parse_source_signal_arg("signal") |
| 547 | + |
| 548 | + df = read_csv( |
| 549 | + "https://docs.google.com/spreadsheets/d/e/2PACX-1vToGcf9x5PNJg-eSrxadoR5b-LM2Cqs9UML97587OGrIX0LiQDcU1HL-L2AA8o5avbU7yod106ih0_n/pub?gid=0&single=true&output=csv", skip_blank_lines=True |
| 550 | + ) |
| 551 | + df = df[df["source"].notnull() & df["published"]] |
| 552 | + return print_pandas(df) |
0 commit comments