blob: 4f27b56cc99d52319cf166da9db918b4f8cc6021 [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
import json
import string
from random import choice, randint, random, uniform
from typing import Any, Dict, List
import pandas as pd
import pytest
from pandas import DataFrame
from sqlalchemy import DateTime, String, TIMESTAMP
from superset import db
from superset.connectors.sqla.models import SqlaTable
from superset.models.core import Database
from superset.models.dashboard import Dashboard
from superset.models.slice import Slice
from superset.utils.core import get_example_database
from tests.dashboard_utils import create_dashboard, create_table_for_dashboard
from tests.test_app import app
@pytest.fixture()
def load_world_bank_dashboard_with_slices():
dash_id_to_delete, slices_ids_to_delete = _load_data()
yield
with app.app_context():
_cleanup(dash_id_to_delete, slices_ids_to_delete)
@pytest.fixture(scope="module")
def load_world_bank_dashboard_with_slices_module_scope():
dash_id_to_delete, slices_ids_to_delete = _load_data()
yield
with app.app_context():
_cleanup(dash_id_to_delete, slices_ids_to_delete)
def _load_data():
table_name = "wb_health_population"
with app.app_context():
database = get_example_database()
df = _get_dataframe(database)
dtype = {
"year": DateTime if database.backend != "presto" else String(255),
"country_code": String(3),
"country_name": String(255),
"region": String(255),
}
table = create_table_for_dashboard(df, table_name, database, dtype)
slices = _create_world_bank_slices(table)
dash = _create_world_bank_dashboard(table, slices)
slices_ids_to_delete = [slice.id for slice in slices]
dash_id_to_delete = dash.id
return dash_id_to_delete, slices_ids_to_delete
def _create_world_bank_slices(table: SqlaTable) -> List[Slice]:
from superset.examples.world_bank import create_slices
slices = create_slices(table)
_commit_slices(slices)
return slices
def _commit_slices(slices: List[Slice]):
for slice in slices:
o = db.session.query(Slice).filter_by(slice_name=slice.slice_name).one_or_none()
if o:
db.session.delete(o)
db.session.add(slice)
db.session.commit()
def _create_world_bank_dashboard(table: SqlaTable, slices: List[Slice]) -> Dashboard:
from superset.examples.world_bank import dashboard_positions
pos = dashboard_positions
from superset.examples.helpers import update_slice_ids
update_slice_ids(pos, slices)
table.fetch_metadata()
dash = create_dashboard(
"world_health", "World Bank's Data", json.dumps(pos), slices
)
dash.json_metadata = '{"mock_key": "mock_value"}'
db.session.commit()
return dash
def _cleanup(dash_id: int, slices_ids: List[int]) -> None:
engine = get_example_database().get_sqla_engine()
engine.execute("DROP TABLE IF EXISTS wb_health_population")
dash = db.session.query(Dashboard).filter_by(id=dash_id).first()
db.session.delete(dash)
for slice_id in slices_ids:
db.session.query(Slice).filter_by(id=slice_id).delete()
db.session.commit()
def _get_dataframe(database: Database) -> DataFrame:
data = _get_world_bank_data()
df = pd.DataFrame.from_dict(data)
if database.backend == "presto":
df.year = pd.to_datetime(df.year)
df.year = df.year.dt.strftime("%Y-%m-%d %H:%M%:%S")
else:
df.year = pd.to_datetime(df.year)
return df
def _get_world_bank_data() -> List[Dict[Any, Any]]:
data = []
for _ in range(100):
data.append(
{
"country_name": "".join(
choice(string.ascii_uppercase + string.ascii_lowercase + " ")
for _ in range(randint(3, 10))
),
"country_code": "".join(
choice(string.ascii_uppercase + string.ascii_lowercase)
for _ in range(3)
),
"region": "".join(
choice(string.ascii_uppercase + string.ascii_lowercase)
for _ in range(randint(3, 10))
),
"year": "-".join(
[str(randint(1900, 2020)), str(randint(1, 12)), str(randint(1, 28))]
),
"NY_GNP_PCAP_CD": get_random_float_or_none(0, 100, 0.3),
"SE_ADT_1524_LT_FM_ZS": get_random_float_or_none(0, 100, 0.3),
"SE_ADT_1524_LT_MA_ZS": get_random_float_or_none(0, 100, 0.3),
"SE_ADT_1524_LT_ZS": get_random_float_or_none(0, 100, 0.3),
"SE_ADT_LITR_FE_ZS": get_random_float_or_none(0, 100, 0.3),
"SE_ADT_LITR_MA_ZS": get_random_float_or_none(0, 100, 0.3),
"SE_ADT_LITR_ZS": get_random_float_or_none(0, 100, 0.3),
"SE_ENR_ORPH": get_random_float_or_none(0, 100, 0.3),
"SE_PRM_CMPT_FE_ZS": get_random_float_or_none(0, 100, 0.3),
"SE_PRM_CMPT_MA_ZS": get_random_float_or_none(0, 100, 0.3),
"SE_PRM_CMPT_ZS": get_random_float_or_none(0, 100, 0.3),
"SE_PRM_ENRR": get_random_float_or_none(0, 100, 0.3),
"SE_PRM_ENRR_FE": get_random_float_or_none(0, 100, 0.3),
"SE_PRM_ENRR_MA": get_random_float_or_none(0, 100, 0.3),
"SE_PRM_NENR": get_random_float_or_none(0, 100, 0.3),
"SE_PRM_NENR_FE": get_random_float_or_none(0, 100, 0.3),
"SE_PRM_NENR_MA": get_random_float_or_none(0, 100, 0.3),
"SE_SEC_ENRR": get_random_float_or_none(0, 100, 0.3),
"SE_SEC_ENRR_FE": get_random_float_or_none(0, 100, 0.3),
"SE_SEC_ENRR_MA": get_random_float_or_none(0, 100, 0.3),
"SE_SEC_NENR": get_random_float_or_none(0, 100, 0.3),
"SE_SEC_NENR_FE": get_random_float_or_none(0, 100, 0.3),
"SE_SEC_NENR_MA": get_random_float_or_none(0, 100, 0.3),
"SE_TER_ENRR": get_random_float_or_none(0, 100, 0.3),
"SE_TER_ENRR_FE": get_random_float_or_none(0, 100, 0.3),
"SE_XPD_TOTL_GD_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_ANM_CHLD_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_ANM_NPRG_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_CON_1524_FE_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_CON_1524_MA_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_CON_AIDS_FE_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_CON_AIDS_MA_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_DTH_COMM_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_DTH_IMRT": get_random_float_or_none(0, 100, 0.3),
"SH_DTH_INJR_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_DTH_MORT": get_random_float_or_none(0, 100, 0.3),
"SH_DTH_NCOM_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_DTH_NMRT": get_random_float_or_none(0, 100, 0.3),
"SH_DYN_AIDS": get_random_float_or_none(0, 100, 0.3),
"SH_DYN_AIDS_DH": get_random_float_or_none(0, 100, 0.3),
"SH_DYN_AIDS_FE_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_DYN_AIDS_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_DYN_MORT": get_random_float_or_none(0, 100, 0.3),
"SH_DYN_MORT_FE": get_random_float_or_none(0, 100, 0.3),
"SH_DYN_MORT_MA": get_random_float_or_none(0, 100, 0.3),
"SH_DYN_NMRT": get_random_float_or_none(0, 100, 0.3),
"SH_FPL_SATI_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_H2O_SAFE_RU_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_H2O_SAFE_UR_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_H2O_SAFE_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_HIV_0014": get_random_float_or_none(0, 100, 0.3),
"SH_HIV_1524_FE_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_HIV_1524_KW_FE_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_HIV_1524_KW_MA_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_HIV_1524_MA_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_HIV_ARTC_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_HIV_KNOW_FE_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_HIV_KNOW_MA_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_HIV_ORPH": get_random_float_or_none(0, 100, 0.3),
"SH_HIV_TOTL": get_random_float_or_none(0, 100, 0.3),
"SH_IMM_HEPB": get_random_float_or_none(0, 100, 0.3),
"SH_IMM_HIB3": get_random_float_or_none(0, 100, 0.3),
"SH_IMM_IBCG": get_random_float_or_none(0, 100, 0.3),
"SH_IMM_IDPT": get_random_float_or_none(0, 100, 0.3),
"SH_IMM_MEAS": get_random_float_or_none(0, 100, 0.3),
"SH_IMM_POL3": get_random_float_or_none(0, 100, 0.3),
"SH_MED_BEDS_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_MED_CMHW_P3": get_random_float_or_none(0, 100, 0.3),
"SH_MED_NUMW_P3": get_random_float_or_none(0, 100, 0.3),
"SH_MED_PHYS_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_MLR_NETS_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_MLR_PREG_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_MLR_SPF2_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_MLR_TRET_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_MMR_DTHS": get_random_float_or_none(0, 100, 0.3),
"SH_MMR_LEVE": get_random_float_or_none(0, 100, 0.3),
"SH_MMR_RISK": get_random_float_or_none(0, 100, 0.3),
"SH_MMR_RISK_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_MMR_WAGE_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_PRG_ANEM": get_random_float_or_none(0, 100, 0.3),
"SH_PRG_ARTC_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_PRG_SYPH_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_PRV_SMOK_FE": get_random_float_or_none(0, 100, 0.3),
"SH_PRV_SMOK_MA": get_random_float_or_none(0, 100, 0.3),
"SH_STA_ACSN": get_random_float_or_none(0, 100, 0.3),
"SH_STA_ACSN_RU": get_random_float_or_none(0, 100, 0.3),
"SH_STA_ACSN_UR": get_random_float_or_none(0, 100, 0.3),
"SH_STA_ANV4_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_STA_ANVC_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_STA_ARIC_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_STA_BFED_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_STA_BRTC_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_STA_BRTW_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_STA_DIAB_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_STA_IYCF_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_STA_MALN_FE_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_STA_MALN_MA_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_STA_MALN_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_STA_MALR": get_random_float_or_none(0, 100, 0.3),
"SH_STA_MMRT": get_random_float_or_none(0, 100, 0.3),
"SH_STA_MMRT_NE": get_random_float_or_none(0, 100, 0.3),
"SH_STA_ORCF_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_STA_ORTH": get_random_float_or_none(0, 100, 0.3),
"SH_STA_OW15_FE_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_STA_OW15_MA_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_STA_OW15_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_STA_OWGH_FE_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_STA_OWGH_MA_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_STA_OWGH_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_STA_PNVC_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_STA_STNT_FE_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_STA_STNT_MA_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_STA_STNT_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_STA_WAST_FE_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_STA_WAST_MA_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_STA_WAST_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_SVR_WAST_FE_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_SVR_WAST_MA_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_SVR_WAST_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_TBS_CURE_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_TBS_DTEC_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_TBS_INCD": get_random_float_or_none(0, 100, 0.3),
"SH_TBS_MORT": get_random_float_or_none(0, 100, 0.3),
"SH_TBS_PREV": get_random_float_or_none(0, 100, 0.3),
"SH_VAC_TTNS_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_XPD_EXTR_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_XPD_OOPC_TO_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_XPD_OOPC_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_XPD_PCAP": get_random_float_or_none(0, 100, 0.3),
"SH_XPD_PCAP_PP_KD": get_random_float_or_none(0, 100, 0.3),
"SH_XPD_PRIV": get_random_float_or_none(0, 100, 0.3),
"SH_XPD_PRIV_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_XPD_PUBL": get_random_float_or_none(0, 100, 0.3),
"SH_XPD_PUBL_GX_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_XPD_PUBL_ZS": get_random_float_or_none(0, 100, 0.3),
"SH_XPD_TOTL_CD": get_random_float_or_none(0, 100, 0.3),
"SH_XPD_TOTL_ZS": get_random_float_or_none(0, 100, 0.3),
"SI_POV_NAHC": get_random_float_or_none(0, 100, 0.3),
"SI_POV_RUHC": get_random_float_or_none(0, 100, 0.3),
"SI_POV_URHC": get_random_float_or_none(0, 100, 0.3),
"SL_EMP_INSV_FE_ZS": get_random_float_or_none(0, 100, 0.3),
"SL_TLF_TOTL_FE_ZS": get_random_float_or_none(0, 100, 0.3),
"SL_TLF_TOTL_IN": get_random_float_or_none(0, 100, 0.3),
"SL_UEM_TOTL_FE_ZS": get_random_float_or_none(0, 100, 0.3),
"SL_UEM_TOTL_MA_ZS": get_random_float_or_none(0, 100, 0.3),
"SL_UEM_TOTL_ZS": get_random_float_or_none(0, 100, 0.3),
"SM_POP_NETM": get_random_float_or_none(0, 100, 0.3),
"SN_ITK_DEFC": get_random_float_or_none(0, 100, 0.3),
"SN_ITK_DEFC_ZS": get_random_float_or_none(0, 100, 0.3),
"SN_ITK_SALT_ZS": get_random_float_or_none(0, 100, 0.3),
"SN_ITK_VITA_ZS": get_random_float_or_none(0, 100, 0.3),
"SP_ADO_TFRT": get_random_float_or_none(0, 100, 0.3),
"SP_DYN_AMRT_FE": get_random_float_or_none(0, 100, 0.3),
"SP_DYN_AMRT_MA": get_random_float_or_none(0, 100, 0.3),
"SP_DYN_CBRT_IN": get_random_float_or_none(0, 100, 0.3),
"SP_DYN_CDRT_IN": get_random_float_or_none(0, 100, 0.3),
"SP_DYN_CONU_ZS": get_random_float_or_none(0, 100, 0.3),
"SP_DYN_IMRT_FE_IN": get_random_float_or_none(0, 100, 0.3),
"SP_DYN_IMRT_IN": get_random_float_or_none(0, 100, 0.3),
"SP_DYN_IMRT_MA_IN": get_random_float_or_none(0, 100, 0.3),
"SP_DYN_LE00_FE_IN": get_random_float_or_none(0, 100, 0.3),
"SP_DYN_LE00_IN": get_random_float_or_none(0, 100, 0.3),
"SP_DYN_LE00_MA_IN": get_random_float_or_none(0, 100, 0.3),
"SP_DYN_SMAM_FE": get_random_float_or_none(0, 100, 0.3),
"SP_DYN_SMAM_MA": get_random_float_or_none(0, 100, 0.3),
"SP_DYN_TFRT_IN": get_random_float_or_none(0, 100, 0.3),
"SP_DYN_TO65_FE_ZS": get_random_float_or_none(0, 100, 0.3),
"SP_DYN_TO65_MA_ZS": get_random_float_or_none(0, 100, 0.3),
"SP_DYN_WFRT": get_random_float_or_none(0, 100, 0.3),
"SP_HOU_FEMA_ZS": get_random_float_or_none(0, 100, 0.3),
"SP_MTR_1519_ZS": get_random_float_or_none(0, 100, 0.3),
"SP_POP_0004_FE": get_random_float_or_none(0, 100, 0.3),
"SP_POP_0004_FE_5Y": get_random_float_or_none(0, 100, 0.3),
"SP_POP_0004_MA": get_random_float_or_none(0, 100, 0.3),
"SP_POP_0004_MA_5Y": get_random_float_or_none(0, 100, 0.3),
"SP_POP_0014_FE_ZS": get_random_float_or_none(0, 100, 0.3),
"SP_POP_0014_MA_ZS": get_random_float_or_none(0, 100, 0.3),
"SP_POP_0014_TO": get_random_float_or_none(0, 100, 0.3),
"SP_POP_0014_TO_ZS": get_random_float_or_none(0, 100, 0.3),
"SP_POP_0509_FE": get_random_float_or_none(0, 100, 0.3),
"SP_POP_0509_FE_5Y": get_random_float_or_none(0, 100, 0.3),
"SP_POP_0509_MA": get_random_float_or_none(0, 100, 0.3),
"SP_POP_0509_MA_5Y": get_random_float_or_none(0, 100, 0.3),
"SP_POP_1014_FE": get_random_float_or_none(0, 100, 0.3),
"SP_POP_1014_FE_5Y": get_random_float_or_none(0, 100, 0.3),
"SP_POP_1014_MA": get_random_float_or_none(0, 100, 0.3),
"SP_POP_1014_MA_5Y": get_random_float_or_none(0, 100, 0.3),
"SP_POP_1519_FE": get_random_float_or_none(0, 100, 0.3),
"SP_POP_1519_FE_5Y": get_random_float_or_none(0, 100, 0.3),
"SP_POP_1519_MA": get_random_float_or_none(0, 100, 0.3),
"SP_POP_1519_MA_5Y": get_random_float_or_none(0, 100, 0.3),
"SP_POP_1564_FE_ZS": get_random_float_or_none(0, 100, 0.3),
"SP_POP_1564_MA_ZS": get_random_float_or_none(0, 100, 0.3),
"SP_POP_1564_TO": get_random_float_or_none(0, 100, 0.3),
"SP_POP_1564_TO_ZS": get_random_float_or_none(0, 100, 0.3),
"SP_POP_2024_FE": get_random_float_or_none(0, 100, 0.3),
"SP_POP_2024_FE_5Y": get_random_float_or_none(0, 100, 0.3),
"SP_POP_2024_MA": get_random_float_or_none(0, 100, 0.3),
"SP_POP_2024_MA_5Y": get_random_float_or_none(0, 100, 0.3),
"SP_POP_2529_FE": get_random_float_or_none(0, 100, 0.3),
"SP_POP_2529_FE_5Y": get_random_float_or_none(0, 100, 0.3),
"SP_POP_2529_MA": get_random_float_or_none(0, 100, 0.3),
"SP_POP_2529_MA_5Y": get_random_float_or_none(0, 100, 0.3),
"SP_POP_3034_FE": get_random_float_or_none(0, 100, 0.3),
"SP_POP_3034_FE_5Y": get_random_float_or_none(0, 100, 0.3),
"SP_POP_3034_MA": get_random_float_or_none(0, 100, 0.3),
"SP_POP_3034_MA_5Y": get_random_float_or_none(0, 100, 0.3),
"SP_POP_3539_FE": get_random_float_or_none(0, 100, 0.3),
"SP_POP_3539_FE_5Y": get_random_float_or_none(0, 100, 0.3),
"SP_POP_3539_MA": get_random_float_or_none(0, 100, 0.3),
"SP_POP_3539_MA_5Y": get_random_float_or_none(0, 100, 0.3),
"SP_POP_4044_FE": get_random_float_or_none(0, 100, 0.3),
"SP_POP_4044_FE_5Y": get_random_float_or_none(0, 100, 0.3),
"SP_POP_4044_MA": get_random_float_or_none(0, 100, 0.3),
"SP_POP_4044_MA_5Y": get_random_float_or_none(0, 100, 0.3),
"SP_POP_4549_FE": get_random_float_or_none(0, 100, 0.3),
"SP_POP_4549_FE_5Y": get_random_float_or_none(0, 100, 0.3),
"SP_POP_4549_MA": get_random_float_or_none(0, 100, 0.3),
"SP_POP_4549_MA_5Y": get_random_float_or_none(0, 100, 0.3),
"SP_POP_5054_FE": get_random_float_or_none(0, 100, 0.3),
"SP_POP_5054_FE_5Y": get_random_float_or_none(0, 100, 0.3),
"SP_POP_5054_MA": get_random_float_or_none(0, 100, 0.3),
"SP_POP_5054_MA_5Y": get_random_float_or_none(0, 100, 0.3),
"SP_POP_5559_FE": get_random_float_or_none(0, 100, 0.3),
"SP_POP_5559_FE_5Y": get_random_float_or_none(0, 100, 0.3),
"SP_POP_5559_MA": get_random_float_or_none(0, 100, 0.3),
"SP_POP_5559_MA_5Y": get_random_float_or_none(0, 100, 0.3),
"SP_POP_6064_FE": get_random_float_or_none(0, 100, 0.3),
"SP_POP_6064_FE_5Y": get_random_float_or_none(0, 100, 0.3),
"SP_POP_6064_MA": get_random_float_or_none(0, 100, 0.3),
"SP_POP_6064_MA_5Y": get_random_float_or_none(0, 100, 0.3),
"SP_POP_6569_FE": get_random_float_or_none(0, 100, 0.3),
"SP_POP_6569_FE_5Y": get_random_float_or_none(0, 100, 0.3),
"SP_POP_6569_MA": get_random_float_or_none(0, 100, 0.3),
"SP_POP_6569_MA_5Y": get_random_float_or_none(0, 100, 0.3),
"SP_POP_65UP_FE_ZS": get_random_float_or_none(0, 100, 0.3),
"SP_POP_65UP_MA_ZS": get_random_float_or_none(0, 100, 0.3),
"SP_POP_65UP_TO": get_random_float_or_none(0, 100, 0.3),
"SP_POP_65UP_TO_ZS": get_random_float_or_none(0, 100, 0.3),
"SP_POP_7074_FE": get_random_float_or_none(0, 100, 0.3),
"SP_POP_7074_FE_5Y": get_random_float_or_none(0, 100, 0.3),
"SP_POP_7074_MA": get_random_float_or_none(0, 100, 0.3),
"SP_POP_7074_MA_5Y": get_random_float_or_none(0, 100, 0.3),
"SP_POP_7579_FE": get_random_float_or_none(0, 100, 0.3),
"SP_POP_7579_FE_5Y": get_random_float_or_none(0, 100, 0.3),
"SP_POP_7579_MA": get_random_float_or_none(0, 100, 0.3),
"SP_POP_7579_MA_5Y": get_random_float_or_none(0, 100, 0.3),
"SP_POP_80UP_FE": get_random_float_or_none(0, 100, 0.3),
"SP_POP_80UP_FE_5Y": get_random_float_or_none(0, 100, 0.3),
"SP_POP_80UP_MA": get_random_float_or_none(0, 100, 0.3),
"SP_POP_80UP_MA_5Y": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG00_FE_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG00_MA_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG01_FE_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG01_MA_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG02_FE_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG02_MA_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG03_FE_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG03_MA_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG04_FE_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG04_MA_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG05_FE_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG05_MA_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG06_FE_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG06_MA_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG07_FE_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG07_MA_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG08_FE_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG08_MA_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG09_FE_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG09_MA_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG10_FE_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG10_MA_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG11_FE_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG11_MA_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG12_FE_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG12_MA_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG13_FE_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG13_MA_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG14_FE_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG14_MA_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG15_FE_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG15_MA_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG16_FE_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG16_MA_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG17_FE_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG17_MA_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG18_FE_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG18_MA_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG19_FE_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG19_MA_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG20_FE_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG20_MA_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG21_FE_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG21_MA_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG22_FE_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG22_MA_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG23_FE_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG23_MA_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG24_FE_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG24_MA_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG25_FE_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_AG25_MA_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_BRTH_MF": get_random_float_or_none(0, 100, 0.3),
"SP_POP_DPND": get_random_float_or_none(0, 100, 0.3),
"SP_POP_DPND_OL": get_random_float_or_none(0, 100, 0.3),
"SP_POP_DPND_YG": get_random_float_or_none(0, 100, 0.3),
"SP_POP_GROW": get_random_float_or_none(0, 100, 0.3),
"SP_POP_TOTL": get_random_float_or_none(0, 100, 0.3),
"SP_POP_TOTL_FE_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_TOTL_FE_ZS": get_random_float_or_none(0, 100, 0.3),
"SP_POP_TOTL_MA_IN": get_random_float_or_none(0, 100, 0.3),
"SP_POP_TOTL_MA_ZS": get_random_float_or_none(0, 100, 0.3),
"SP_REG_BRTH_RU_ZS": get_random_float_or_none(0, 100, 0.3),
"SP_REG_BRTH_UR_ZS": get_random_float_or_none(0, 100, 0.3),
"SP_REG_BRTH_ZS": get_random_float_or_none(0, 100, 0.3),
"SP_REG_DTHS_ZS": get_random_float_or_none(0, 100, 0.3),
"SP_RUR_TOTL": get_random_float_or_none(0, 100, 0.3),
"SP_RUR_TOTL_ZG": get_random_float_or_none(0, 100, 0.3),
"SP_RUR_TOTL_ZS": get_random_float_or_none(0, 100, 0.3),
"SP_URB_GROW": get_random_float_or_none(0, 100, 0.3),
"SP_URB_TOTL": get_random_float_or_none(0, 100, 0.3),
"SP_URB_TOTL_IN_ZS": get_random_float_or_none(0, 100, 0.3),
"SP_UWT_TFRT": get_random_float_or_none(0, 100, 0.3),
}
)
return data
def get_random_float_or_none(min_value, max_value, none_probability):
if random() < none_probability:
return None
else:
return uniform(min_value, max_value)