from inewave._utils.dadosarquivo import DadosArquivoBlocos
from inewave._utils.arquivo import ArquivoBlocos
from inewave.nwlistop.modelos.vagua00 import LeituraVAgua00

import pandas as pd  # type: ignore


class VAgua00(ArquivoBlocos):
    """
    Armazena os dados das saídas referentes aos valores da água
    por REE.

    Esta classe lida com as informações de saída fornecidas pelo
    NWLISTOP e reproduzidas nos `vagua00x.out`, onde x varia conforme o
    REE em questão.

    """

    def __init__(self, dados: DadosArquivoBlocos):
        super().__init__(dados)

    # Override
    @classmethod
    def le_arquivo(
        cls, diretorio: str, nome_arquivo="vagua001.out"
    ) -> "VAgua00":
        """ """
        leitor = LeituraVAgua00(diretorio)
        r = leitor.le_arquivo(nome_arquivo)
        return cls(r)

    @property
    def ree(self) -> str:
        """
        Tabela com o REE associado ao arquivo lido.

         **Retorna**

        `str`
        """
        return self._blocos[0].dados[0]

    @property
    def valores(self) -> pd.DataFrame:
        """
        Tabela com os valores da água por série e
        por mês/ano de estudo.

         **Retorna**

        `pd.DataFrame`
        """
        return self._blocos[0].dados[1]
