Skip to content

Commit

Permalink
Merge pull request #89 from rjmalves/suporte-novos-nwlistop
Browse files Browse the repository at this point in the history
Suporte novos nwlistop
  • Loading branch information
rjmalves authored Jul 18, 2024
2 parents 40f441f + 0afe20e commit 9babd5f
Show file tree
Hide file tree
Showing 35 changed files with 1,162 additions and 18 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ jobs:
docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: actions/setup-python@v4
with:
python-version: '3.10'
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,17 @@ jobs:
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11"]
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Configura o Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Instala os requisitos do módulo
run: |
python -m pip install -r dev-requirements.txt
pip install -r dev-requirements.txt
- name: Executa os testes do pacote
run: |
python -m pytest --cov-report=xml --cov=inewave tests/
pytest --cov-report=xml --cov=inewave tests/
- uses: codecov/codecov-action@v1
with:
token: ${{ secrets.CODECOV_TOKEN }}
Expand All @@ -37,7 +37,7 @@ jobs:
verbose: true
- name: Veriricações de qualidade de código - tipagem estática
run: |
python -m mypy ./inewave
mypy ./inewave
- name: Verificações de qualidade de código - linter PEP8
run: |
python -m pylama --ignore E203 ./inewave
ruff check ./inewave
12 changes: 6 additions & 6 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,27 +14,27 @@ jobs:
permissions:
id-token: write
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Configura o Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Instala os requisitos do módulo
run: |
python -m pip install -r dev-requirements.txt
pip install -r dev-requirements.txt
- name: Executa os testes do pacote
run: |
python -m pytest --cov=inewave tests/
pytest --cov=inewave tests/
- name: Veriricações de qualidade de código - tipagem estática
run: |
python -m mypy ./inewave
mypy ./inewave
- name: Verificações de qualidade de código - linter PEP8
run: |
python -m pylama --ignore E203 ./inewave
ruff check ./inewave
- name: Instala dependências e constroi o pacote
if: startsWith(github.ref, 'refs/tags')
run: |
python -m pip install --upgrade pip setuptools wheel twine
pip install --upgrade pip setuptools wheel twine
python setup.py sdist bdist_wheel
- name: Publica o pacote no PyPI
if: startsWith(github.ref, 'refs/tags')
Expand Down
6 changes: 5 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
# 1.9.0
- Suporte ao arquivo do NWLISTOP com informação do Custo Futuro por cenário (`custo_futuro.out`)
- Suporte a arquivos do NWLISTOP renomeados: `viol_eletrica.out`, `cviol_eletrica.out`, `viol_pos_vretiruh.out`, `viol_neg_vretiruh.out`.
- Descontinuado o uso do `pylama` como linter para garantir padrões PEP de código devido à falta de suporte em Python >= 3.12. Adoção do [ruff](https://github.com/astral-sh/ruff) em substituição.

# 1.8.1
- Correção da leitura dos arquivos `pivarm.out` e `pivarmincr.out` do NWLISTOP [#87](https://github.com/rjmalves/inewave/issues/87).

Expand All @@ -7,7 +12,6 @@
- Arquivos do modelo NEWAVE renomeados: `nwv_avl_evap.csv` (`evap_avl_desv.csv`), `nwv_cortes_evap.csv` (`evap_cortes.csv`), `nwv_eco_evap.csv` (`evap_eco.csv`), `avl_cortesfpha_nwv.csv` (`fpha_cortes.csv`), `eco_fpha.csv` (`fpha_eco_.csv`), `avl_desvfpha_v_q.csv` (`fpha_avl_desv_v_q.csv`) e `avl_desvfpha_s.csv` (`fpha_avl_desv_s.csv`)
- Arquivos do NWLISTOP renomeados: `dlpptbmax.out` (`viol_lpp_tbmax.out`), `dlpptbmaxm.out` (`viol_lpp_tbmaxm.out`), `dlpptbmaxsin.out` (`viol_lpp_tbmaxsin.out`), `dlppdfmax.out` (`viol_lpp_dfmax.out`), `dlppdfmaxm.out` (`viol_lpp_dfmaxm.out`), `dlppdfmaxsin.out` (`viol_lpp_dfmaxsin.out`), `vevmin.out` (`viol_evmin.out`), `vevminm.out` (`viol_evminm.out`), `vevminsin.out` (`viol_evminsin.out`), `deletricasin.out` (`viol_eletricasin.out`), `celetricasin.out` (`cviol_eletricasin.out`), `c_v_rhq.out` (`cviol_rhq.out`), `c_v_rhq_s.out` (`cviol_rhq_sin.out`), `c_v_rhv.out` (`cviol_rhv.out`), `c_v_rhv_s.out` (`cviol_rhv_sin.out`), `vghmin.out` (`viol_ghmin.out`), `vghminm.out` (`viol_ghminm.out`), `vghminsin.out` (`viol_ghminsin.out`), `vghminuh.out` (`viol_ghminuh.out`), `vagua.out` (`valor_agua.out`), `depminuh.out` (`viol_vazmin.out`), `dvazmax.out` (`viol_vazmax.out`), `desvuh.out` (`vretiradauh.out`), `vturuh.out` (`qturuh.out`), `vertuh.out` (`qvertuh.out`), `vdesviouh.out` (`qdesviouh.out`), `dfphauh.out` (`viol_fpha.out`), `dtbmax.out` (`viol_turbmax.out`), `dtbmin.out` (`viol_turbmin.out`), `dpos_evap.out` (`viol_pos_evap.out`), `dneg_evap.out` (`viol_neg_evap.out`).


# 1.7.5
- Dependência da cfinterface atualizada para [v1.6.0](https://github.com/rjmalves/cfi/releases/tag/v1.6.0)
- Uso de `__slots__` nas definições de componentes
Expand Down
2 changes: 1 addition & 1 deletion dev-requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ pytest
pytest-cov
numpy
pandas
pylama
ruff
mypy
sphinx
sphinx-gallery
Expand Down
2 changes: 1 addition & 1 deletion docs/source/referencia/nwlistop/arquivos/coper.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Custos Totais de Operação (coper.out)

.. currentmodule:: inewave.nwlistop.coper

Os valores de custos totasi de operação, localizado no arquivo denominado
Os valores de custos totais de operação, localizado no arquivo denominado
coper.out, são armazenados na classe:

.. autoclass:: Coper
Expand Down
13 changes: 13 additions & 0 deletions docs/source/referencia/nwlistop/arquivos/custo_futuro.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
.. _custo_futuro:

==========================================
Custos Futuros (custo_futuro.out)
==========================================

.. currentmodule:: inewave.nwlistop.custo_futuro

Os valores de custos futuros, localizado no arquivo denominado
custo_futuro.out, são armazenados na classe:

.. autoclass:: CustoFuturo
:members:
13 changes: 13 additions & 0 deletions docs/source/referencia/nwlistop/arquivos/cviol_eletrica.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
.. _cviol_eletrica:

===============================================================================
Custos de Violação de Restrições Elétricas (cviol_eletrica.out)
===============================================================================

.. currentmodule:: inewave.nwlistop.cviol_eletrica

Os valores de custos de violação das restrições elétricas por restrição, localizados no arquivo geralmente denominado
cviol_eletricaXXX.out, são armazenados na classe:

.. autoclass:: CviolEletrica
:members:
13 changes: 13 additions & 0 deletions docs/source/referencia/nwlistop/arquivos/viol_eletrica.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
.. _viol_eletrica:

===============================================================================
Violação de Restrições Elétricas (viol_eletrica.out)
===============================================================================

.. currentmodule:: inewave.nwlistop.viol_eletrica

Os valores de violação das restrições elétricas por restrição, localizados no arquivo geralmente denominado
viol_eletricaXXX.out, são armazenados na classe:

.. autoclass:: ViolEletrica
:members:
4 changes: 2 additions & 2 deletions docs/source/referencia/nwlistop/arquivos/viol_lpp_dfmax.rst
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
.. _viol_lpp_dfmax:

==================================================================
======================================================================
Violação das LPP de Defluência Máxima por REE (viol_lpp_dfmax00x.out)
==================================================================
======================================================================

.. currentmodule:: inewave.nwlistop.viol_lpp_dfmax

Expand Down
13 changes: 13 additions & 0 deletions docs/source/referencia/nwlistop/arquivos/viol_neg_vretiruh.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
.. _viol_neg_vretiruh:

======================================================================
Desvio Negativo da Retirada de Água por Usina (viol_neg_vretiruh.out)
======================================================================

.. currentmodule:: inewave.nwlistop.viol_neg_vretiruh

Os valores de desvio negativo da retirada de água por usina, localizados nos arquivos geralmente denominados
viol_neg_vretiruhXXX.out, onde X varia conforme a usina, são armazenados na classe:

.. autoclass:: ViolNegVretiruh
:members:
13 changes: 13 additions & 0 deletions docs/source/referencia/nwlistop/arquivos/viol_pos_vretiruh.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
.. _viol_pos_vretiruh:

======================================================================
Desvio Positivo da Retirada de Água por Usina (viol_pos_vretiruh.out)
======================================================================

.. currentmodule:: inewave.nwlistop.viol_pos_vretiruh

Os valores de desvio positivo da retirada de água por usina, localizados nos arquivos geralmente denominados
viol_pos_vretiruhXXX.out, onde X varia conforme a usina, são armazenados na classe:

.. autoclass:: ViolPosVretiruh
:members:
5 changes: 5 additions & 0 deletions docs/source/referencia/nwlistop/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,18 @@ NWLISTOP
arquivos/cbombsin
arquivos/cdef
arquivos/cdefsin
arquivos/cviol_eletrica
arquivos/cviol_eletricasin
arquivos/cmarg
arquivos/cmargmed
arquivos/coper
arquivos/custo_futuro
arquivos/corteolm
arquivos/cterm
arquivos/ctermsin
arquivos/deficit
arquivos/defsin
arquivos/viol_eletrica
arquivos/viol_eletricasin
arquivos/viol_vazmin
arquivos/vretiradauh
Expand All @@ -40,6 +43,8 @@ NWLISTOP
arquivos/viol_vazmax
arquivos/viol_pos_evap
arquivos/viol_neg_evap
arquivos/viol_pos_vretiruh
arquivos/viol_neg_vretiruh
arquivos/eaf
arquivos/eafm
arquivos/eafb
Expand Down
2 changes: 1 addition & 1 deletion inewave/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
e saída do NEWAVE.
"""

__version__ = "1.8.1"
__version__ = "1.9.0"

from . import newave # noqa
from . import nwlistcf # noqa
Expand Down
5 changes: 5 additions & 0 deletions inewave/nwlistop/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,12 @@
from .cbombsin import Cbombsin # noqa
from .cdef import Cdef # noqa
from .cdefsin import Cdefsin # noqa
from .cviol_eletrica import CviolEletrica # noqa
from .cviol_eletricasin import CviolEletricasin # noqa
from .cmarg import Cmarg # noqa
from .cmargmed import Cmargmed # noqa
from .coper import Coper # noqa
from .custo_futuro import CustoFuturo # noqa
from .corteolm import Corteolm # noqa
from .cterm import Cterm # noqa
from .ctermsin import Ctermsin # noqa
Expand Down Expand Up @@ -165,5 +167,8 @@
from .viol_ghminuh import ViolGhminuh # noqa
from .viol_rhq import ViolRHQ # noqa
from .viol_rhv import ViolRHV # noqa
from .viol_eletrica import ViolEletrica # noqa
from .viol_pos_evap import ViolPosEvap # noqa
from .viol_neg_evap import ViolNegEvap # noqa
from .viol_neg_vretiruh import ViolNegVretiruh # noqa
from .viol_pos_vretiruh import ViolPosVretiruh # noqa
19 changes: 19 additions & 0 deletions inewave/nwlistop/custo_futuro.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
from inewave.nwlistop.modelos.custo_futuro import CustoFuturoAnos

from inewave.nwlistop.modelos.arquivos.arquivosin import (
ArquivoSIN,
)


class CustoFuturo(ArquivoSIN):
"""
Armazena os dados das saídas referentes ao custo futuro
de cada estágio em cada série.
Esta classe lida com as informações de saída fornecidas pelo
NWLISTOP e reproduzidas nos `custo_futuro.out`.
"""

BLOCKS = [
CustoFuturoAnos,
]
21 changes: 21 additions & 0 deletions inewave/nwlistop/cviol_eletrica.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
from inewave.nwlistop.modelos.blocos.restricao import Restricao
from inewave.nwlistop.modelos.arquivos.arquivorestricaopatamar import (
ArquivoRestricaoPatamar,
)
from inewave.nwlistop.modelos.cviol_eletrica import CviolEletricaAnos


class CviolEletrica(ArquivoRestricaoPatamar):
"""
Armazena os dados das saídas referentes ao custo de violação
de Restrição Elétrica Especial por restrição.
Esta classe lida com as informações de saída fornecidas pelo
NWLISTOP e reproduzidas nos `cviol_eletricaXXX.out`.
"""

BLOCKS = [
Restricao,
CviolEletricaAnos,
]
22 changes: 22 additions & 0 deletions inewave/nwlistop/modelos/custo_futuro.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
from inewave.config import MESES_DF

from cfinterface.components.line import Line
from cfinterface.components.integerfield import IntegerField
from cfinterface.components.floatfield import FloatField
from inewave.nwlistop.modelos.blocos.valoresserie import ValoresSerie


class CustoFuturoAnos(ValoresSerie):
"""
Bloco com as informações das tabelas de custos futuros.
"""

__slots__ = []

HEADER_LINE = Line([IntegerField(4, 10)])
DATA_LINE = Line(
[ # type: ignore
IntegerField(4, 2),
]
+ [FloatField(15, 7 + 15 * i, 7, format="E") for i in range(len(MESES_DF))] # type: ignore
)
28 changes: 28 additions & 0 deletions inewave/nwlistop/modelos/cviol_eletrica.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
from inewave.config import MESES_DF

from cfinterface.components.line import Line
from cfinterface.components.literalfield import LiteralField
from cfinterface.components.integerfield import IntegerField
from cfinterface.components.floatfield import FloatField

from inewave.nwlistop.modelos.blocos.valoresseriepatamar import (
ValoresSeriePatamar,
)


class CviolEletricaAnos(ValoresSeriePatamar):
"""
Bloco com as informações das tabelas de custo de violação de
restrições elétricas especiais por restrição por mês/ano de estudo.
"""

__slots__ = []

HEADER_LINE = Line([IntegerField(4, 10)])
DATA_LINE = Line(
[ # type: ignore
IntegerField(4, 2),
LiteralField(5, 6),
]
+ [FloatField(9, 11 + 9 * i, 1) for i in range(len(MESES_DF))] # type: ignore
)
28 changes: 28 additions & 0 deletions inewave/nwlistop/modelos/viol_eletrica.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
from inewave.config import MESES_DF

from cfinterface.components.line import Line
from cfinterface.components.literalfield import LiteralField
from cfinterface.components.integerfield import IntegerField
from cfinterface.components.floatfield import FloatField

from inewave.nwlistop.modelos.blocos.valoresseriepatamar import (
ValoresSeriePatamar,
)


class ViolEletricaAnos(ValoresSeriePatamar):
"""
Bloco com as informações das tabelas de violação de
restrições elétricas especiais por restrição por mês/ano de estudo.
"""

__slots__ = []

HEADER_LINE = Line([IntegerField(4, 10)])
DATA_LINE = Line(
[ # type: ignore
IntegerField(4, 2),
LiteralField(5, 6),
]
+ [FloatField(9, 11 + 9 * i, 1) for i in range(len(MESES_DF))] # type: ignore
)
26 changes: 26 additions & 0 deletions inewave/nwlistop/modelos/viol_neg_vretiruh.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
from inewave.config import MESES_DF

from cfinterface.components.line import Line
from cfinterface.components.integerfield import IntegerField
from cfinterface.components.floatfield import FloatField

from inewave.nwlistop.modelos.blocos.valoresserie import (
ValoresSerie,
)


class ViolNegVretiruhAnos(ValoresSerie):
"""
Bloco com as informações das tabelas de desvio negativo
da retirada de água por usina por mês/ano de estudo.
"""

__slots__ = []

HEADER_LINE = Line([IntegerField(4, 10)])
DATA_LINE = Line(
[ # type: ignore
IntegerField(4, 2),
]
+ [FloatField(9, 14 + 9 * i, 2) for i in range(len(MESES_DF))] # type: ignore
)
Loading

0 comments on commit 9babd5f

Please sign in to comment.