# -*- coding: utf-8 -*-
# SPDX-FileCopyrightText: 2023-2024 The PyPSA-Eur Authors
#
# SPDX-License-Identifier: MIT
"""
Retrieve electricity prices from OPSD.
"""

import logging

import pandas as pd

logger = logging.getLogger(__name__)

from _helpers import configure_logging, set_scenario_config

if __name__ == "__main__":
    if "snakemake" not in globals():
        from _helpers import mock_snakemake

        snakemake = mock_snakemake("retrieve_electricity_demand")
        rootpath = ".."
    else:
        rootpath = "."
    configure_logging(snakemake)
    set_scenario_config(snakemake)

    url = "https://data.open-power-system-data.org/time_series/{version}/time_series_60min_singleindex.csv"

    df1, df2 = [
        pd.read_csv(url.format(version=version), index_col=0)
        for version in snakemake.params.versions
    ]
    combined = pd.concat([df1, df2[df2.index > df1.index[-1]]])

    pattern = "_load_actual_entsoe_transparency"
    transparency = combined.filter(like=pattern).rename(
        columns=lambda x: x.replace(pattern, "")
    )
    pattern = "_load_actual_entsoe_power_statistics"
    powerstatistics = combined.filter(like=pattern).rename(
        columns=lambda x: x.replace(pattern, "")
    )

    res = transparency.fillna(powerstatistics)

    res.to_csv(snakemake.output[0])
