load_and_run([
     normalize_demand_point_table,
     normalize_connection_type_table,
     normalize_grid_mv_transformer_table,
     normalize_diesel_mini_grid_generator_table,
     normalize_solar_home_panel_table,
     normalize_solar_mini_grid_panel_table,
     normalize_grid_mv_line_geotable,
 ], [
     estimate_population,
     estimate_population_profile,
     estimate_consumption_from_connection_type,
     estimate_consumption_profile,
     estimate_peak_demand,
     estimate_internal_cost_by_technology,
     estimate_grid_mv_line_discounted_cost_per_meter,
     estimate_grid_mv_line_budget,
     assemble_total_grid_mv_line_network,
     sequence_total_grid_mv_line_network,
     estimate_external_cost_by_technology,
     estimate_cost_profile,
     pick_proposed_technology,
     estimate_proposed_cost_per_connection,
     estimate_total_count_by_technology,
     estimate_total_discounted_cost_by_technology,
     estimate_total_levelized_cost_by_technology,
     save_total_points,
     save_total_lines,
     save_total_report_by_location,
     save_total_summary_by_technology,
     save_total_summary_by_location,
     save_total_summary_by_grid_mv_line,
     save_total_map,
     # save_total_graph,
     wash_total_folder,
 ], x.parse_args().__dict__, FULL_KEYS)
from infrastructure_planning.macros import BasicArgumentParser, load_and_run
from infrastructure_planning.preprocessors import normalize_demand_point_table

from infrastructure_planning.demography.exponential import estimate_population


def add_arguments_for_estimate_population(x):
    x.add("demand_point_table_path")
    x.add("population_year")
    x.add("population_growth_as_percent_of_population_per_year")
    x.add("financing_year")
    x.add("time_horizon_in_years")


if __name__ == "__main__":
    x = BasicArgumentParser()
    add_arguments_for_estimate_population(x)
    load_and_run([normalize_demand_point_table], [estimate_population], x)