"Load and download data for use in other modules"

import pandas as pd


def load_ipm_plant_region_map(pudl_engine):
    """Load the table associating each power plant to an IPM region

    Parameters
    ----------
    pudl_engine : sqlalchemy.Engine
        A sqlalchemy connection for use by pandas

    Returns
    -------
    dataframe
        All plants in the NEEDS database and their associated IPM region. Columns are
        plant_id_eia and region.
    """
    region_map_df = pd.read_sql_table(
        "plant_region_map_epaipm", con=pudl_engine, columns=["plant_id_eia", "region"]
    )

    return region_map_df


def load_ownership_eia860(pudl_engine, data_years=[2017]):

    cols = [
        "report_date",
        "utility_id_eia",
        "plant_id_eia",
        "generator_id",
        # "operational_status_code",
        "owner_utility_id_eia",
        "owner_name",
        "owner_state",
        "fraction_owned",
    ]
    ownership = pd.read_sql_table(
        "ownership_eia860", pudl_engine, columns=cols, parse_dates=["report_date"]
    )
    ownership = ownership.loc[ownership["report_date"].dt.year.isin(data_years)]

    return ownership


def load_plants_860(pudl_engine, data_years=[2017]):

    plants = pd.read_sql_table(
        "plants_eia860", pudl_engine, parse_dates=["report_date"]
    )

    plants = plants.loc[plants["report_date"].dt.year.isin(data_years)]

    return plants


def load_utilities_eia(pudl_engine):

    utilities = pd.read_sql_table("utilities_eia", pudl_engine)

    return utilities