예제 #1
0
 def test_code_function(self):
     assert mundi.code("Brazil") == "BR"
     assert mundi.code("brazil") == "BR"
     assert mundi.code("BR") == "BR"
     assert mundi.code("br") == "BR"
     assert mundi.code("BR-DF") == "BR-DF"
     assert mundi.code("BR/Distrito Federal") == "BR-DF"
     assert mundi.code("Brazil/Distrito Federal") == "BR-DF"
     assert mundi.code("brazil/distrito federal") == "BR-DF"
     assert mundi.code("Brazil/Brasília") == "BR-5300108"
예제 #2
0
def region_input(default: str,
                 *,
                 advanced=False,
                 text=False,
                 where=st,
                 **kwargs) -> Region:
    """
    Select region or sub-region based on mundi code.
    """
    st = where
    kwargs["where"] = where
    default = mundi.code(default)
    if text or advanced and st.checkbox(_("Advanced selection"), value=False):
        try:
            code = st.text_input(_("Select mundi region"), value=default)
            return mundi.region(code)
        except LookupError:
            st.error(_("Region not found!"))
            return mundi.region(default)
    region = mundi.region(default)

    if region.id == "BR":
        return _br_region_input(**kwargs)
    elif len(default) == 2:
        return _from_sub_regions(region, _("Location"), where=where)
    else:
        raise NotImplementedError(f"Cannot select {default!r}")
예제 #3
0
파일: covid19.py 프로젝트: pydemic/pydemic
def epidemic_curve(region, api="auto", extra=False, **kwargs):
    """
    Universal interface to all epidemic curve loaders.

    Always return a dataframe with ["cases", "deaths"] columns for the given
    region. Some API's may offer additional columns such as "recovered", "test"
    etc.
    """
    code = mundi.code(region)
    fn = EPIDEMIC_CURVES_APIS[api]
    data = fn(code, **kwargs)
    return data if extra else data[["cases", "deaths"]]
예제 #4
0
def loader(package: ModRef, db_name, idx) -> Tuple[pd.DataFrame, bool]:
    """
    Load distribution from package.

    Return a tuple of (Data, is_row). The boolean "is_row" tells
    the returned data concerns a collection of items or a single row in the
    database.
    """

    db = database(package, db_name + ".pkl.gz")

    if isinstance(idx, (pd.DataFrame, pd.Series)):
        idx = idx.index
    elif isinstance(idx, str):
        idx = mundi.code(idx)
        df, _ = loader(package, db_name, [idx])
        return df.iloc[0], True

    # Try to get from index
    reindex = db.reindex(idx)
    return reindex, False