Source code for cowidev.testing.incremental.maldives
import pandas as pd
from cowidev.utils.web.scraping import request_json
from cowidev.utils.clean import clean_count, extract_clean_date
from cowidev.testing import CountryTestBase
[docs]class Maldives(CountryTestBase):
location: str = "Maldives"
units: str = "samples tested"
source_label: str = "Maldives Health Protection Agency"
source_url: str = "https://covid19.health.gov.mv/v2_data.json"
source_url_ref: str = "https://covid19.health.gov.mv/en"
regex: dict = {
"date": r"(\d{1,2}\/\d{1,2}\/20\d{2})",
}
[docs] def read(self) -> pd.DataFrame:
"""Read data from source."""
data = request_json(self.source_url)
df = self._parse_data(data)
return df
[docs] def _parse_data(self, data: dict) -> pd.DataFrame:
"""Parse data."""
count = clean_count(data["samples_collected"])
date = extract_clean_date(
data["screen_updated_times"]["toplevel_page_acf-options-statistics"], self.regex["date"], "%d/%m/%Y"
)
df = {
"Date": [date],
"Daily change in cumulative total": [count],
}
return pd.DataFrame(df)
[docs] def pipeline(self, df: pd.DataFrame) -> pd.DataFrame:
"""Pipeline for data."""
return df.pipe(self.pipe_metadata)
[docs] def export(self):
"""Export data to CSV."""
df = self.read().pipe(self.pipeline)
self.export_datafile(df, attach=True)