inewave 1.7.3__py3-none-any.whl → 1.7.5__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (229) hide show
  1. inewave/__init__.py +1 -1
  2. inewave/newave/modelos/adterm.py +7 -0
  3. inewave/newave/modelos/agrint.py +2 -0
  4. inewave/newave/modelos/arquivos.py +2 -0
  5. inewave/newave/modelos/avl_cortesfpha_nwv.py +4 -0
  6. inewave/newave/modelos/avl_desvfpha_s.py +2 -0
  7. inewave/newave/modelos/avl_desvfpha_v_q.py +2 -0
  8. inewave/newave/modelos/blocos/tabelacsv.py +2 -0
  9. inewave/newave/modelos/blocos/versaomodelo.py +4 -0
  10. inewave/newave/modelos/cadic.py +2 -0
  11. inewave/newave/modelos/caso.py +4 -0
  12. inewave/newave/modelos/clast.py +2 -0
  13. inewave/newave/modelos/confhd.py +2 -0
  14. inewave/newave/modelos/conft.py +2 -0
  15. inewave/newave/modelos/cortes.py +14 -0
  16. inewave/newave/modelos/cortesh.py +20 -0
  17. inewave/newave/modelos/curva.py +2 -0
  18. inewave/newave/modelos/cvar.py +2 -0
  19. inewave/newave/modelos/dger.py +208 -0
  20. inewave/newave/modelos/dsvagua.py +2 -0
  21. inewave/newave/modelos/eafpast.py +2 -0
  22. inewave/newave/modelos/enavazb.py +2 -0
  23. inewave/newave/modelos/enavazf.py +2 -0
  24. inewave/newave/modelos/energiab.py +2 -0
  25. inewave/newave/modelos/energiaf.py +2 -0
  26. inewave/newave/modelos/energias.py +48 -10
  27. inewave/newave/modelos/engnat.py +2 -0
  28. inewave/newave/modelos/exph.py +2 -0
  29. inewave/newave/modelos/expt.py +2 -0
  30. inewave/newave/modelos/forward.py +27 -0
  31. inewave/newave/modelos/forwarh.py +2 -0
  32. inewave/newave/modelos/ghmin.py +2 -0
  33. inewave/newave/modelos/hidr.py +2 -0
  34. inewave/newave/modelos/manutt.py +2 -0
  35. inewave/newave/modelos/modif.py +32 -0
  36. inewave/newave/modelos/newavetim.py +2 -0
  37. inewave/newave/modelos/nwv_avl_evap.py +2 -0
  38. inewave/newave/modelos/nwv_cortes_evap.py +2 -0
  39. inewave/newave/modelos/nwv_eco_evap.py +2 -0
  40. inewave/newave/modelos/parp.py +45 -0
  41. inewave/newave/modelos/parpeol.py +23 -0
  42. inewave/newave/modelos/parpvaz.py +37 -0
  43. inewave/newave/modelos/patamar.py +28 -0
  44. inewave/newave/modelos/penalid.py +2 -0
  45. inewave/newave/modelos/pmo.py +69 -2
  46. inewave/newave/modelos/re.py +2 -0
  47. inewave/newave/modelos/ree.py +2 -0
  48. inewave/newave/modelos/selcor.py +5 -3
  49. inewave/newave/modelos/shist.py +10 -6
  50. inewave/newave/modelos/sistema.py +10 -0
  51. inewave/newave/modelos/term.py +2 -0
  52. inewave/newave/modelos/vazaob.py +2 -0
  53. inewave/newave/modelos/vazaof.py +2 -0
  54. inewave/newave/modelos/vazaos.py +2 -0
  55. inewave/newave/modelos/vazinat.py +2 -0
  56. inewave/newave/modelos/vazoes.py +2 -0
  57. inewave/newave/modelos/vazpast.py +2 -0
  58. inewave/newave/modelos/volref_saz.py +2 -0
  59. inewave/newave/modif.py +2 -0
  60. inewave/newave/vazoes.py +2 -0
  61. inewave/nwlistcf/modelos/arquivos.py +2 -0
  62. inewave/nwlistcf/modelos/caso.py +2 -0
  63. inewave/nwlistcf/modelos/estados.py +10 -0
  64. inewave/nwlistcf/modelos/nwlistcfdat.py +2 -0
  65. inewave/nwlistcf/modelos/nwlistcfrel.py +2 -0
  66. inewave/nwlistop/modelos/arquivos/arquivoclassetermicasubmercadopatamar.py +2 -0
  67. inewave/nwlistop/modelos/arquivos/arquivoestacaobombeamentopatamar.py +2 -0
  68. inewave/nwlistop/modelos/arquivos/arquivoparsubmercadopatamar.py +2 -0
  69. inewave/nwlistop/modelos/arquivos/arquivoree.py +2 -0
  70. inewave/nwlistop/modelos/arquivos/arquivoreepatamar.py +2 -0
  71. inewave/nwlistop/modelos/arquivos/arquivorestricao.py +2 -0
  72. inewave/nwlistop/modelos/arquivos/arquivorestricaopatamar.py +2 -0
  73. inewave/nwlistop/modelos/arquivos/arquivosin.py +2 -0
  74. inewave/nwlistop/modelos/arquivos/arquivosinpatamar.py +2 -0
  75. inewave/nwlistop/modelos/arquivos/arquivosubmercado.py +2 -0
  76. inewave/nwlistop/modelos/arquivos/arquivosubmercadopatamar.py +2 -0
  77. inewave/nwlistop/modelos/arquivos/arquivousina.py +2 -0
  78. inewave/nwlistop/modelos/arquivos/arquivousinapatamar.py +2 -0
  79. inewave/nwlistop/modelos/blocos/estacaobombeamento.py +2 -0
  80. inewave/nwlistop/modelos/blocos/parsubmercados.py +2 -0
  81. inewave/nwlistop/modelos/blocos/ree.py +2 -0
  82. inewave/nwlistop/modelos/blocos/restricao.py +2 -0
  83. inewave/nwlistop/modelos/blocos/submercado.py +2 -0
  84. inewave/nwlistop/modelos/blocos/usina.py +2 -0
  85. inewave/nwlistop/modelos/blocos/valoresclassetermicaseriepatamar.py +8 -0
  86. inewave/nwlistop/modelos/blocos/valoresserie.py +2 -0
  87. inewave/nwlistop/modelos/blocos/valoresseriepatamar.py +2 -0
  88. inewave/nwlistop/modelos/c_v_rhq.py +2 -0
  89. inewave/nwlistop/modelos/c_v_rhq_s.py +2 -0
  90. inewave/nwlistop/modelos/c_v_rhv.py +2 -0
  91. inewave/nwlistop/modelos/c_v_rhv_s.py +2 -0
  92. inewave/nwlistop/modelos/cbomb.py +2 -0
  93. inewave/nwlistop/modelos/cbombsin.py +2 -0
  94. inewave/nwlistop/modelos/cdef.py +2 -0
  95. inewave/nwlistop/modelos/cdefsin.py +2 -0
  96. inewave/nwlistop/modelos/celetricas.py +2 -0
  97. inewave/nwlistop/modelos/cmarg.py +2 -0
  98. inewave/nwlistop/modelos/cmargmed.py +2 -0
  99. inewave/nwlistop/modelos/coper.py +2 -0
  100. inewave/nwlistop/modelos/corteolm.py +2 -0
  101. inewave/nwlistop/modelos/cterm.py +2 -0
  102. inewave/nwlistop/modelos/ctermsin.py +2 -0
  103. inewave/nwlistop/modelos/def.py +2 -0
  104. inewave/nwlistop/modelos/defsin.py +2 -0
  105. inewave/nwlistop/modelos/deletricas.py +2 -0
  106. inewave/nwlistop/modelos/depminuh.py +2 -0
  107. inewave/nwlistop/modelos/desvuh.py +2 -0
  108. inewave/nwlistop/modelos/dflppdfmaxm.py +2 -0
  109. inewave/nwlistop/modelos/dflpptbmaxm.py +2 -0
  110. inewave/nwlistop/modelos/dfphauh.py +2 -0
  111. inewave/nwlistop/modelos/dlppdfmax.py +2 -0
  112. inewave/nwlistop/modelos/dlppdfmaxs.py +2 -0
  113. inewave/nwlistop/modelos/dlpptbmax.py +2 -0
  114. inewave/nwlistop/modelos/dlpptbmaxs.py +2 -0
  115. inewave/nwlistop/modelos/dnegevap.py +2 -0
  116. inewave/nwlistop/modelos/dposevap.py +2 -0
  117. inewave/nwlistop/modelos/dtbmax.py +2 -0
  118. inewave/nwlistop/modelos/dtbmin.py +2 -0
  119. inewave/nwlistop/modelos/dvazmax.py +2 -0
  120. inewave/nwlistop/modelos/eaf.py +2 -0
  121. inewave/nwlistop/modelos/eafb.py +2 -0
  122. inewave/nwlistop/modelos/eafbm.py +2 -0
  123. inewave/nwlistop/modelos/eafbsin.py +2 -0
  124. inewave/nwlistop/modelos/eafm.py +2 -0
  125. inewave/nwlistop/modelos/earmf.py +2 -0
  126. inewave/nwlistop/modelos/earmfm.py +2 -0
  127. inewave/nwlistop/modelos/earmfp.py +2 -0
  128. inewave/nwlistop/modelos/earmfpm.py +2 -0
  129. inewave/nwlistop/modelos/earmfpsin.py +2 -0
  130. inewave/nwlistop/modelos/earmfsin.py +2 -0
  131. inewave/nwlistop/modelos/edesvc.py +2 -0
  132. inewave/nwlistop/modelos/edesvcm.py +2 -0
  133. inewave/nwlistop/modelos/edesvcsin.py +2 -0
  134. inewave/nwlistop/modelos/evapo.py +2 -0
  135. inewave/nwlistop/modelos/evapom.py +2 -0
  136. inewave/nwlistop/modelos/evaporsin.py +2 -0
  137. inewave/nwlistop/modelos/evert.py +2 -0
  138. inewave/nwlistop/modelos/evertm.py +2 -0
  139. inewave/nwlistop/modelos/evertsin.py +2 -0
  140. inewave/nwlistop/modelos/exces.py +2 -0
  141. inewave/nwlistop/modelos/excessin.py +2 -0
  142. inewave/nwlistop/modelos/form_rhq.py +2 -0
  143. inewave/nwlistop/modelos/form_rhv.py +2 -0
  144. inewave/nwlistop/modelos/fteolm.py +2 -0
  145. inewave/nwlistop/modelos/fteolsin.py +2 -0
  146. inewave/nwlistop/modelos/geol.py +2 -0
  147. inewave/nwlistop/modelos/geolm.py +2 -0
  148. inewave/nwlistop/modelos/geolsin.py +2 -0
  149. inewave/nwlistop/modelos/gh_fphexat.py +2 -0
  150. inewave/nwlistop/modelos/ghidr.py +2 -0
  151. inewave/nwlistop/modelos/ghidrm.py +2 -0
  152. inewave/nwlistop/modelos/ghidrsin.py +2 -0
  153. inewave/nwlistop/modelos/ghiduh.py +2 -0
  154. inewave/nwlistop/modelos/ghmax.py +2 -0
  155. inewave/nwlistop/modelos/ghmax_fpha.py +2 -0
  156. inewave/nwlistop/modelos/ghmax_fphc.py +2 -0
  157. inewave/nwlistop/modelos/ghmaxm.py +2 -0
  158. inewave/nwlistop/modelos/ghmaxmr.py +2 -0
  159. inewave/nwlistop/modelos/ghmaxr.py +2 -0
  160. inewave/nwlistop/modelos/ghmaxrsin.py +2 -0
  161. inewave/nwlistop/modelos/ghmaxsin.py +2 -0
  162. inewave/nwlistop/modelos/ghtot.py +2 -0
  163. inewave/nwlistop/modelos/ghtotm.py +2 -0
  164. inewave/nwlistop/modelos/ghtotsin.py +2 -0
  165. inewave/nwlistop/modelos/gtert.py +2 -0
  166. inewave/nwlistop/modelos/gttot.py +2 -0
  167. inewave/nwlistop/modelos/gttotsin.py +2 -0
  168. inewave/nwlistop/modelos/hjus.py +2 -0
  169. inewave/nwlistop/modelos/hliq.py +2 -0
  170. inewave/nwlistop/modelos/hmont.py +2 -0
  171. inewave/nwlistop/modelos/intercambio.py +2 -0
  172. inewave/nwlistop/modelos/invade.py +2 -0
  173. inewave/nwlistop/modelos/invadem.py +2 -0
  174. inewave/nwlistop/modelos/mediasmerc.py +2 -0
  175. inewave/nwlistop/modelos/mediasree.py +2 -0
  176. inewave/nwlistop/modelos/mediasrep.py +2 -0
  177. inewave/nwlistop/modelos/mediasrhq.py +2 -0
  178. inewave/nwlistop/modelos/mediasrhv.py +2 -0
  179. inewave/nwlistop/modelos/mediassin.py +2 -0
  180. inewave/nwlistop/modelos/mediasusie.py +2 -0
  181. inewave/nwlistop/modelos/mediasusih.py +2 -0
  182. inewave/nwlistop/modelos/mediasusit.py +2 -0
  183. inewave/nwlistop/modelos/mercl.py +2 -0
  184. inewave/nwlistop/modelos/merclsin.py +2 -0
  185. inewave/nwlistop/modelos/mevmin.py +2 -0
  186. inewave/nwlistop/modelos/mevminm.py +2 -0
  187. inewave/nwlistop/modelos/mevminsin.py +2 -0
  188. inewave/nwlistop/modelos/nwlistopdat.py +11 -0
  189. inewave/nwlistop/modelos/perdf.py +2 -0
  190. inewave/nwlistop/modelos/perdfm.py +2 -0
  191. inewave/nwlistop/modelos/perdfsin.py +2 -0
  192. inewave/nwlistop/modelos/pivarm.py +2 -0
  193. inewave/nwlistop/modelos/pivarmincr.py +2 -0
  194. inewave/nwlistop/modelos/qafluh.py +2 -0
  195. inewave/nwlistop/modelos/qincruh.py +2 -0
  196. inewave/nwlistop/modelos/rhslppdf.py +2 -0
  197. inewave/nwlistop/modelos/rhslpptb.py +2 -0
  198. inewave/nwlistop/modelos/vagua.py +2 -0
  199. inewave/nwlistop/modelos/varmpuh.py +2 -0
  200. inewave/nwlistop/modelos/varmuh.py +2 -0
  201. inewave/nwlistop/modelos/vbomb.py +2 -0
  202. inewave/nwlistop/modelos/vdesviouh.py +2 -0
  203. inewave/nwlistop/modelos/vento.py +2 -0
  204. inewave/nwlistop/modelos/vertuh.py +2 -0
  205. inewave/nwlistop/modelos/verturb.py +2 -0
  206. inewave/nwlistop/modelos/verturbm.py +2 -0
  207. inewave/nwlistop/modelos/verturbsin.py +2 -0
  208. inewave/nwlistop/modelos/vevapuh.py +2 -0
  209. inewave/nwlistop/modelos/vevmin.py +2 -0
  210. inewave/nwlistop/modelos/vevminm.py +2 -0
  211. inewave/nwlistop/modelos/vevminsin.py +2 -0
  212. inewave/nwlistop/modelos/vghmin.py +2 -0
  213. inewave/nwlistop/modelos/vghminm.py +2 -0
  214. inewave/nwlistop/modelos/vghminsin.py +2 -0
  215. inewave/nwlistop/modelos/vghminuh.py +2 -0
  216. inewave/nwlistop/modelos/viol_rhq.py +2 -0
  217. inewave/nwlistop/modelos/viol_rhv.py +2 -0
  218. inewave/nwlistop/modelos/vmort.py +2 -0
  219. inewave/nwlistop/modelos/vmortm.py +2 -0
  220. inewave/nwlistop/modelos/vmortsin.py +2 -0
  221. inewave/nwlistop/modelos/vturuh.py +2 -0
  222. {inewave-1.7.3.dist-info → inewave-1.7.5.dist-info}/METADATA +2 -2
  223. {inewave-1.7.3.dist-info → inewave-1.7.5.dist-info}/RECORD +229 -229
  224. {inewave-1.7.3.dist-info → inewave-1.7.5.dist-info}/WHEEL +1 -1
  225. tests/mocks/arquivos/pmo.py +16 -0
  226. tests/newave/test_dger.py +0 -2
  227. tests/newave/test_energias.py +4 -4
  228. {inewave-1.7.3.dist-info → inewave-1.7.5.dist-info}/LICENSE.md +0 -0
  229. {inewave-1.7.3.dist-info → inewave-1.7.5.dist-info}/top_level.txt +0 -0
@@ -31,6 +31,12 @@ class BlocoSerieVazoesUHE(Block):
31
31
  relativo às séries de vazões por usina.
32
32
  """
33
33
 
34
+ __slots__ = [
35
+ "__campo_uhe",
36
+ "__campo_cfg",
37
+ "__linha",
38
+ ]
39
+
34
40
  BEGIN_PATTERN = "SERIE DE VAZOES DA USINA"
35
41
  END_PATTERN = ""
36
42
 
@@ -105,6 +111,10 @@ class BlocoCorrelVazoesUHE(Block):
105
111
  das vazões por usina.
106
112
  """
107
113
 
114
+ __slots__ = [
115
+ "__linha",
116
+ ]
117
+
108
118
  BEGIN_PATTERN = "CORRELOGRAMO DA SERIE DE VAZOES"
109
119
  END_PATTERN = ""
110
120
 
@@ -211,6 +221,10 @@ class BlocoCorrelParcialVazoesUHE(Block):
211
221
  das vazões por UHE.
212
222
  """
213
223
 
224
+ __slots__ = [
225
+ "__linha",
226
+ ]
227
+
214
228
  BEGIN_PATTERN = "CORRELOGRAMO PARCIAL DA SERIE DE VAZOES"
215
229
  END_PATTERN = ""
216
230
 
@@ -317,6 +331,11 @@ class BlocoOrdemModeloUHE(Block):
317
331
  seus coeficientes por UHE.
318
332
  """
319
333
 
334
+ __slots__ = [
335
+ "__linha",
336
+ "__tipo",
337
+ ]
338
+
320
339
  BEGIN_PATTERN = "DO MODELO AUTORREGRESSIVO PARA CADA PERIODO"
321
340
  END_PATTERN = ""
322
341
 
@@ -411,6 +430,10 @@ class BlocoCoeficientesModeloUHE(Block):
411
430
  Lista de coeficientes dos modelos PAR ou PAR-A por UHE.
412
431
  """
413
432
 
433
+ __slots__ = [
434
+ "__linha",
435
+ ]
436
+
414
437
  BEGIN_PATTERN = " COEFICIENTES DA EQUACAO DE REGRESSAO DE UM PROCESSO"
415
438
  END_PATTERN = ""
416
439
 
@@ -473,6 +496,12 @@ class BlocoSerieRuidosUHE(Block):
473
496
  relativo às séries de ruídos por usina.
474
497
  """
475
498
 
499
+ __slots__ = [
500
+ "__campo_ano",
501
+ "__campo_cfg",
502
+ "__linha",
503
+ ]
504
+
476
505
  BEGIN_PATTERN = "SERIE DE RUIDOS - ANO:"
477
506
  END_PATTERN = ""
478
507
 
@@ -544,6 +573,10 @@ class BlocoCorrelRuidosUHE(Block):
544
573
  dos ruídos por usina.
545
574
  """
546
575
 
576
+ __slots__ = [
577
+ "__linha",
578
+ ]
579
+
547
580
  BEGIN_PATTERN = "CORRELOGRAMO DA SERIE DE RUIDOS"
548
581
  END_PATTERN = ""
549
582
 
@@ -650,6 +683,10 @@ class BlocoCorrelEspacialAnualMensalUHE(Block):
650
683
  mensal para as UHEs.
651
684
  """
652
685
 
686
+ __slots__ = [
687
+ "__linha",
688
+ ]
689
+
653
690
  BEGIN_PATTERN = "CORRELACAO ESPACIAL HISTORICA MENSAL/ANUAL ENTRE AS UHEs"
654
691
  END_PATTERN = ""
655
692
 
@@ -26,6 +26,11 @@ class BlocoNumeroPatamares(Section):
26
26
  no caso.
27
27
  """
28
28
 
29
+ __slots__ = [
30
+ "__linha",
31
+ "__cabecalhos",
32
+ ]
33
+
29
34
  def __init__(self, previous=None, next=None, data=None) -> None:
30
35
  super().__init__(previous, next, data)
31
36
  self.__linha = Line(
@@ -73,6 +78,11 @@ class BlocoDuracaoPatamar(Section):
73
78
  de estudo, extraído do arquivo `patamar.dat`.
74
79
  """
75
80
 
81
+ __slots__ = [
82
+ "__linha",
83
+ "__cabecalhos",
84
+ ]
85
+
76
86
  FIM_BLOCO = "SUBSISTEMA"
77
87
 
78
88
  def __init__(self, previous=None, next=None, data=None) -> None:
@@ -172,6 +182,12 @@ class BlocoCargaPatamar(Section):
172
182
  de estudo, extraído do arquivo `patamar.dat`.
173
183
  """
174
184
 
185
+ __slots__ = [
186
+ "__linha",
187
+ "__linha_subsis",
188
+ "__cabecalhos",
189
+ ]
190
+
175
191
  FIM_BLOCO = "9999"
176
192
 
177
193
  def __init__(self, previous=None, next=None, data=None) -> None:
@@ -306,6 +322,12 @@ class BlocoIntercambioPatamarSubsistemas(Section):
306
322
  cada patamar, por mês de estudo, extraído do arquivo `patamar.dat`.
307
323
  """
308
324
 
325
+ __slots__ = [
326
+ "__linha",
327
+ "__linha_subsis",
328
+ "__cabecalhos",
329
+ ]
330
+
309
331
  FIM_BLOCO = "9999"
310
332
 
311
333
  def __init__(self, previous=None, next=None, data=None) -> None:
@@ -463,6 +485,12 @@ class BlocoUsinasNaoSimuladas(Section):
463
485
  cada patamar, por mês de estudo, extraído do arquivo `patamar.dat`.
464
486
  """
465
487
 
488
+ __slots__ = [
489
+ "__linha",
490
+ "__linha_subsis",
491
+ "__cabecalhos",
492
+ ]
493
+
466
494
  def __init__(self, previous=None, next=None, data=None) -> None:
467
495
  super().__init__(previous, next, data)
468
496
  self.__linha_subsis = Line([IntegerField(3, 1), IntegerField(3, 5)])
@@ -19,6 +19,8 @@ class BlocoPenalidades(Section):
19
19
  e outras ações.
20
20
  """
21
21
 
22
+ __slots__ = ["__linha", "__cabecalhos", "__numero_patamares_penalidade"]
23
+
22
24
  def __init__(self, previous=None, next=None, data=None) -> None:
23
25
  super().__init__(previous, next, data)
24
26
  self.__linha = Line(
@@ -27,6 +27,8 @@ class BlocoEafPastTendenciaHidrolPMO(Block):
27
27
  tendência hidrológica localizado no arquivo `pmo.dat`.
28
28
  """
29
29
 
30
+ __slots__ = ["__line"]
31
+
30
32
  BEGIN_PATTERN = "ENERGIAS AFLUENTES PASSADAS PARA A TENDENCIA HIDROLOGICA"
31
33
  END_PATTERN = ""
32
34
 
@@ -92,6 +94,8 @@ class BlocoEafPastCfugaMedioPMO(Block):
92
94
  tendência hidrológica localizado no arquivo `pmo.dat`.
93
95
  """
94
96
 
97
+ __slots__ = ["__line"]
98
+
95
99
  BEGIN_PATTERN = (
96
100
  "ENERGIAS AFLUENTES PASSADAS EM REFERENCIA A PRIMEIRA CONFIG"
97
101
  )
@@ -282,6 +286,8 @@ class BlocoVolumeArmazenadoInicialPMO(Block):
282
286
  localizado no arquivo `pmo.dat`.
283
287
  """
284
288
 
289
+ __slots__ = ["__linha"]
290
+
285
291
  BEGIN_PATTERN = r" VOLUME ARMAZENADO INICIAL"
286
292
  END_PATTERN = "X-----X------------X"
287
293
 
@@ -353,6 +359,8 @@ class BlocoGeracaoMinimaUsinasTermicasPMO(Block):
353
359
  por usina existentes no arquivo `pmo.dat`.
354
360
  """
355
361
 
362
+ __slots__ = ["__line"]
363
+
356
364
  BEGIN_PATTERN = "GERACAO TERMICA MINIMA POR USINA"
357
365
  END_PATTERN = ""
358
366
 
@@ -416,7 +424,9 @@ class BlocoGeracaoMinimaUsinasTermicasPMO(Block):
416
424
  # Confere se acabou
417
425
  if len(linha) < 3 or "X--------------------" in linha:
418
426
  tabela = tabela[:i, :]
419
- self.data = converte_tabela_em_df()
427
+ self.data = (
428
+ converte_tabela_em_df() if i > 0 else pd.DataFrame()
429
+ )
420
430
  break
421
431
  # Lê mais uma linha
422
432
  dados = self.__line.read(linha)
@@ -437,6 +447,8 @@ class BlocoGeracaoMaximaUsinasTermicasPMO(Block):
437
447
  por usina existentes no arquivo `pmo.dat`.
438
448
  """
439
449
 
450
+ __slots__ = ["__line"]
451
+
440
452
  BEGIN_PATTERN = "GERACAO TERMICA MAXIMA POR USINA"
441
453
  END_PATTERN = ""
442
454
 
@@ -500,7 +512,9 @@ class BlocoGeracaoMaximaUsinasTermicasPMO(Block):
500
512
  # Confere se acabou
501
513
  if len(linha) < 3 or "X--------------------" in linha:
502
514
  tabela = tabela[:i, :]
503
- self.data = converte_tabela_em_df()
515
+ self.data = (
516
+ converte_tabela_em_df() if i > 0 else pd.DataFrame()
517
+ )
504
518
  break
505
519
  # Lê mais uma linha
506
520
  dados = self.__line.read(linha)
@@ -521,6 +535,8 @@ class BlocoConvergenciaPMO(Block):
521
535
  no arquivo `pmo.dat`.
522
536
  """
523
537
 
538
+ __slots__ = ["__line"]
539
+
524
540
  BEGIN_PATTERN = " ITER LIM.INF. "
525
541
  END_PATTERN = ""
526
542
 
@@ -602,6 +618,8 @@ class BlocoConfiguracoesExpansaoPMO(Block):
602
618
  do sistema existentes no arquivo `pmo.dat`.
603
619
  """
604
620
 
621
+ __slots__ = ["__line"]
622
+
605
623
  BEGIN_PATTERN = "CONFIGURACOES POR"
606
624
  END_PATTERN = ""
607
625
 
@@ -663,6 +681,8 @@ class BlocoMARSPMO(Block):
663
681
  existentes no arquivo `pmo.dat`.
664
682
  """
665
683
 
684
+ __slots__ = ["__line", "__ree_field"]
685
+
666
686
  BEGIN_PATTERN = "PARAMETROS DAS RETAS DE PERDAS POR ENGOLIMENTO MAXIMO"
667
687
  END_PATTERN = 'ENERGIA FIO D"AGUA LIQUIDA|CEPEL'
668
688
 
@@ -734,6 +754,8 @@ class BlocoRiscoDeficitENSPMO(Block):
734
754
  ENS (energia não suprida) existentes no arquivo `pmo.dat`.
735
755
  """
736
756
 
757
+ __slots__ = ["__line"]
758
+
737
759
  BEGIN_PATTERN = r"RISCO ANUAL DE DEFICIT E E\(ENS\) \(%\)" # noqa
738
760
  END_PATTERN = ""
739
761
 
@@ -803,6 +825,8 @@ class BlocoCustoOperacaoPMO(Block):
803
825
  existentes no arquivo `pmo.dat`.
804
826
  """
805
827
 
828
+ __slots__ = ["__line"]
829
+
806
830
  BEGIN_PATTERN = "PARCELA V.ESPERADO"
807
831
  END_PATTERN = ""
808
832
 
@@ -865,6 +889,8 @@ class BlocoCustoOperacaoTotalPMO(Block):
865
889
  existentes no arquivo `pmo.dat`.
866
890
  """
867
891
 
892
+ __slots__ = ["__line"]
893
+
868
894
  BEGIN_PATTERN = " VALOR ESPERADO TOTAL:"
869
895
  END_PATTERN = ""
870
896
 
@@ -901,6 +927,13 @@ class BlocoProdutibilidadesConfiguracaoPMO(Block):
901
927
  configuração.
902
928
  """
903
929
 
930
+ __slots__ = [
931
+ "__cfg_line",
932
+ "__prodt_line",
933
+ "__prodt_reserv_line",
934
+ "__prod_acum_line",
935
+ ]
936
+
904
937
  BEGIN_PATTERN = r"PRODUTIBILIDADES \(MW/m3/s\)"
905
938
  END_PATTERN = ""
906
939
 
@@ -1110,6 +1143,11 @@ class BlocoPenalidadeViolacaoOutrosUsosPMO(Block):
1110
1143
  outros usos da água.
1111
1144
  """
1112
1145
 
1146
+ __slots__ = [
1147
+ "__ree_line",
1148
+ "__pen_line",
1149
+ ]
1150
+
1113
1151
  BEGIN_PATTERN = "PENALIDADE POR VIOLACAO DOS OUTROS USOS DA AGUA "
1114
1152
  END_PATTERN = ""
1115
1153
 
@@ -1193,6 +1231,12 @@ class BlocoPenalidadeViolacaoVazaoMinimaPMO(Block):
1193
1231
  vazão mínima.
1194
1232
  """
1195
1233
 
1234
+ __slots__ = [
1235
+ "__ree_line",
1236
+ "__patamar_line",
1237
+ "__pen_line",
1238
+ ]
1239
+
1196
1240
  BEGIN_PATTERN = "PENALIDADE POR VIOLACAO DE VAZAO MINIMA "
1197
1241
  END_PATTERN = ""
1198
1242
 
@@ -1288,6 +1332,11 @@ class BlocoPenalidadeViolacaoCurvaSegurancaPMO(Block):
1288
1332
  curva-guia de segurança.
1289
1333
  """
1290
1334
 
1335
+ __slots__ = [
1336
+ "__ree_line",
1337
+ "__pen_line",
1338
+ ]
1339
+
1291
1340
  BEGIN_PATTERN = "PENALIDADE POR VIOLACAO DA CURVA GUIA DE SEGURANCA "
1292
1341
  END_PATTERN = ""
1293
1342
 
@@ -1371,6 +1420,11 @@ class BlocoPenalidadeViolacaoFphaPMO(Block):
1371
1420
  FPHA.
1372
1421
  """
1373
1422
 
1423
+ __slots__ = [
1424
+ "__ree_line",
1425
+ "__pen_line",
1426
+ ]
1427
+
1374
1428
  BEGIN_PATTERN = "PENALIDADE POR VIOLACAO DA FPHA "
1375
1429
  END_PATTERN = ""
1376
1430
 
@@ -1454,6 +1508,11 @@ class BlocoPenalidadeViolacaoEvaporacaoPMO(Block):
1454
1508
  evaporação.
1455
1509
  """
1456
1510
 
1511
+ __slots__ = [
1512
+ "__ree_line",
1513
+ "__pen_line",
1514
+ ]
1515
+
1457
1516
  BEGIN_PATTERN = "PENALIDADE POR VIOLACAO DA EVAPORACAO "
1458
1517
  END_PATTERN = ""
1459
1518
 
@@ -1537,6 +1596,10 @@ class BlocoPenalidadeViolacaoTurbinamentoMaximoPMO(Block):
1537
1596
  turbinamento máximo.
1538
1597
  """
1539
1598
 
1599
+ __slots__ = [
1600
+ "__pen_line",
1601
+ ]
1602
+
1540
1603
  BEGIN_PATTERN = "PENALIDADE POR VIOLACAO DE TURBINAMENTO MAXIMO "
1541
1604
  END_PATTERN = ""
1542
1605
 
@@ -1601,6 +1664,10 @@ class BlocoPenalidadeViolacaoTurbinamentoMinimoPMO(Block):
1601
1664
  turbinamento máximo.
1602
1665
  """
1603
1666
 
1667
+ __slots__ = [
1668
+ "__pen_line",
1669
+ ]
1670
+
1604
1671
  BEGIN_PATTERN = "PENALIDADE POR VIOLACAO DE TURBINAMENTO MINIMO "
1605
1672
  END_PATTERN = ""
1606
1673
 
@@ -20,6 +20,8 @@ class BlocoUsinasConjuntoRE(Section):
20
20
  de restrições elétricas por conjunto de RE.
21
21
  """
22
22
 
23
+ __slots__ = ["__linha", "__cabecalhos"]
24
+
23
25
  FIM_BLOCO = "999"
24
26
 
25
27
  def __init__(self, previous=None, next=None, data=None) -> None:
@@ -15,6 +15,8 @@ class BlocoReesSubmercados(Section):
15
15
  submercados.
16
16
  """
17
17
 
18
+ __slots__ = ["__linha", "__cabecalhos"]
19
+
18
20
  FIM_BLOCO = " 999"
19
21
 
20
22
  def __init__(self, previous=None, next=None, data=None) -> None:
@@ -11,9 +11,11 @@ class BlocoDadosSelcor(Section):
11
11
  de cortes existentes no arquivo `selcor.dat`.
12
12
  """
13
13
 
14
+ __slots__ = ["__linha", "__cabecalhos", "__comentarios", "data"]
15
+
14
16
  def __init__(self, previous=None, next=None, data=None) -> None:
15
17
  super().__init__(previous, next, data)
16
- self.__line = Line(
18
+ self.__linha = Line(
17
19
  [
18
20
  LiteralField(60, 0),
19
21
  IntegerField(4, 63),
@@ -46,7 +48,7 @@ class BlocoDadosSelcor(Section):
46
48
  # Lê as linhas de parâmetros
47
49
  self.data: List[List[int]] = []
48
50
  for _ in range(7):
49
- dados_linha = self.__line.read(file.readline())
51
+ dados_linha = self.__linha.read(file.readline())
50
52
  self.__comentarios.append(dados_linha[0])
51
53
  self.data.append(dados_linha[1:])
52
54
 
@@ -58,4 +60,4 @@ class BlocoDadosSelcor(Section):
58
60
  raise ValueError("Dados do selcor.dat não foram lidos com sucesso")
59
61
 
60
62
  for c, s in zip(self.__comentarios, self.data):
61
- file.write(self.__line.write([c] + s))
63
+ file.write(self.__linha.write([c] + s))
@@ -9,9 +9,11 @@ class BlocoVarreduraShist(Section):
9
9
  Bloco de informações de varredura existente no arquivo `shist.dat`.
10
10
  """
11
11
 
12
+ __slots__ = ["__linha", "__cabecalhos"]
13
+
12
14
  def __init__(self, previous=None, next=None, data=None) -> None:
13
15
  super().__init__(previous, next, data)
14
- self.__line = Line(
16
+ self.__linha = Line(
15
17
  [
16
18
  IntegerField(3, 0),
17
19
  IntegerField(4, 4),
@@ -39,7 +41,7 @@ class BlocoVarreduraShist(Section):
39
41
  for _ in range(2):
40
42
  self.__cabecalhos.append(file.readline())
41
43
 
42
- self.data = self.__line.read(file.readline())
44
+ self.data = self.__linha.read(file.readline())
43
45
 
44
46
  # Override
45
47
  def write(self, file: IO, *args, **kwargs):
@@ -48,7 +50,7 @@ class BlocoVarreduraShist(Section):
48
50
  if not isinstance(self.data, list):
49
51
  raise ValueError("Dados do shist.dat não foram lidos com sucesso")
50
52
 
51
- file.write(self.__line.write(self.data))
53
+ file.write(self.__linha.write(self.data))
52
54
 
53
55
 
54
56
  class BlocoSeriesSimulacaoShist(Section):
@@ -57,11 +59,13 @@ class BlocoSeriesSimulacaoShist(Section):
57
59
  existente no arquivo `shist.dat`.
58
60
  """
59
61
 
62
+ __slots__ = ["__linha", "__cabecalhos", "data"]
63
+
60
64
  END_PATTERN = "9999"
61
65
 
62
66
  def __init__(self, previous=None, next=None, data=None) -> None:
63
67
  super().__init__(previous, next, data)
64
- self.__line = Line(
68
+ self.__linha = Line(
65
69
  [
66
70
  IntegerField(4, 0),
67
71
  ]
@@ -97,7 +101,7 @@ class BlocoSeriesSimulacaoShist(Section):
97
101
  ):
98
102
  break
99
103
 
100
- self.data.append(self.__line.read(linha)[0])
104
+ self.data.append(self.__linha.read(linha)[0])
101
105
 
102
106
  # Override
103
107
  def write(self, file: IO, *args, **kwargs):
@@ -107,6 +111,6 @@ class BlocoSeriesSimulacaoShist(Section):
107
111
  raise ValueError("Dados do shist.dat não foram lidos com sucesso")
108
112
 
109
113
  for s in self.data:
110
- file.write(self.__line.write([s]))
114
+ file.write(self.__linha.write([s]))
111
115
 
112
116
  file.write(BlocoSeriesSimulacaoShist.END_PATTERN + "\n")
@@ -26,6 +26,8 @@ class BlocoNumeroPatamaresDeficit(Section):
26
26
  Bloco com o número de patamares de déficit considerados.
27
27
  """
28
28
 
29
+ __slots__ = ["__linha", "__cabecalhos"]
30
+
29
31
  def __init__(self, previous=None, next=None, data=None) -> None:
30
32
  super().__init__(previous, next, data)
31
33
  self.__linha = Line(
@@ -73,6 +75,8 @@ class BlocoCustosDeficit(Section):
73
75
  patamar de déficit e o número de patamares de déficit.
74
76
  """
75
77
 
78
+ __slots__ = ["__linha", "__cabecalhos"]
79
+
76
80
  FIM_BLOCO = " 999"
77
81
 
78
82
  def __init__(self, previous=None, next=None, data=None) -> None:
@@ -220,6 +224,8 @@ class BlocoIntercambioSubsistema(Section):
220
224
  por mês/ano de estudo para cada subsistema.
221
225
  """
222
226
 
227
+ __slots__ = ["__linha", "__linha_subsis", "__cabecalhos"]
228
+
223
229
  FIM_BLOCO = " 999"
224
230
 
225
231
  def __init__(self, previous=None, next=None, data=None) -> None:
@@ -391,6 +397,8 @@ class BlocoMercadoEnergiaSistema(Section):
391
397
  por mês/ano de estudo para cada subsistema.
392
398
  """
393
399
 
400
+ __slots__ = ["__linha", "__linha_subsis", "__cabecalhos"]
401
+
394
402
  FIM_BLOCO = " 999"
395
403
 
396
404
  def __init__(self, previous=None, next=None, data=None) -> None:
@@ -520,6 +528,8 @@ class BlocoGeracaoUsinasNaoSimuladas(Section):
520
528
  cada patamar, por mês de estudo, extraído do arquivo `sistema.dat`.
521
529
  """
522
530
 
531
+ __slots__ = ["__linha", "__linha_subsis", "__cabecalhos"]
532
+
523
533
  FIM_BLOCO = " 999"
524
534
 
525
535
  def __init__(self, previous=None, next=None, data=None) -> None:
@@ -19,6 +19,8 @@ class BlocoTermUTE(Section):
19
19
  existentes no arquivo do NEWAVE `term.dat`.
20
20
  """
21
21
 
22
+ __slots__ = ["__linha", "__cabecalhos"]
23
+
22
24
  def __init__(self, previous=None, next=None, data=None) -> None:
23
25
  super().__init__(previous, next, data)
24
26
  self.__linha = Line(
@@ -12,6 +12,8 @@ class SecaoDadosVazaob(Section):
12
12
  nos arquivos vazaobXXX.dat.
13
13
  """
14
14
 
15
+ __slots__ = ["__linha"]
16
+
15
17
  def __init__(self, previous=None, next=None, data=None) -> None:
16
18
  super().__init__(previous, next, data)
17
19
 
@@ -12,6 +12,8 @@ class SecaoDadosVazaof(Section):
12
12
  nos arquivos vazaofXXX.dat.
13
13
  """
14
14
 
15
+ __slots__ = ["__linha"]
16
+
15
17
  def __init__(self, previous=None, next=None, data=None) -> None:
16
18
  super().__init__(previous, next, data)
17
19
 
@@ -12,6 +12,8 @@ class SecaoDadosVazaos(Section):
12
12
  no arquivo vazaos.dat.
13
13
  """
14
14
 
15
+ __slots__ = ["__linha"]
16
+
15
17
  def __init__(self, previous=None, next=None, data=None) -> None:
16
18
  super().__init__(previous, next, data)
17
19
 
@@ -14,6 +14,8 @@ class SecaoDadosVazinat(Section):
14
14
  configuração existentes no arquivo vazinat.dat.
15
15
  """
16
16
 
17
+ __slots__ = ["__linha"]
18
+
17
19
  def __init__(self, previous=None, next=None, data=None) -> None:
18
20
  super().__init__(previous, next, data)
19
21
 
@@ -9,6 +9,8 @@ class RegistroVazoesPostos(Register):
9
9
  Registro com os dados associados às vazões dos postos.
10
10
  """
11
11
 
12
+ __slots__ = []
13
+
12
14
  POSTOS = 320
13
15
 
14
16
  LINE = Line(
@@ -19,6 +19,8 @@ class BlocoVazPast(Section):
19
19
  do NEWAVE.
20
20
  """
21
21
 
22
+ __slots__ = ["__linha", "__cabecalhos"]
23
+
22
24
  def __init__(self, previous=None, next=None, data=None) -> None:
23
25
  super().__init__(previous, next, data)
24
26
  self.__linha = Line(
@@ -19,6 +19,8 @@ class BlocoVolrefSaz(Section):
19
19
  do NEWAVE.
20
20
  """
21
21
 
22
+ __slots__ = ["__linha", "__cabecalhos"]
23
+
22
24
  def __init__(self, previous=None, next=None, data=None) -> None:
23
25
  super().__init__(previous, next, data)
24
26
  self.__linha = Line(
inewave/newave/modif.py CHANGED
@@ -29,6 +29,8 @@ class Modif(RegisterFile):
29
29
  configurações das usinas hidroelétricas.
30
30
  """
31
31
 
32
+ __slots__ = []
33
+
32
34
  T = TypeVar("T")
33
35
 
34
36
  REGISTERS = [
inewave/newave/vazoes.py CHANGED
@@ -12,6 +12,8 @@ class Vazoes(RegisterFile):
12
12
  usinas hidroelétricas.
13
13
  """
14
14
 
15
+ __slots__ = ["__df"]
16
+
15
17
  T = TypeVar("T")
16
18
 
17
19
  REGISTERS = [RegistroVazoesPostos]
@@ -11,6 +11,8 @@ class BlocoNomesArquivos(Section):
11
11
  entrada do NWLISTCF `arquivos.dat`.
12
12
  """
13
13
 
14
+ __slots__ = ["__linha"]
15
+
14
16
  def __init__(self, previous=None, next=None, data=None) -> None:
15
17
  super().__init__(previous, next, data)
16
18
  self.__linha = Line([LiteralField(30, 0), LiteralField(40, 30)])
@@ -10,6 +10,8 @@ class NomeCaso(Section):
10
10
  entrada do NWLISTCF `caso.dat`.
11
11
  """
12
12
 
13
+ __slots__ = ["__linha"]
14
+
13
15
  def __init__(self, previous=None, next=None, data=None) -> None:
14
16
  super().__init__(previous, next, data)
15
17
  self.__linha = Line([LiteralField(40, 0)])
@@ -16,6 +16,16 @@ class EstadosPeriodoNwlistcf(Block):
16
16
  por período na construção dos cortes da FCF.
17
17
  """
18
18
 
19
+ __slots__ = [
20
+ "__linha_periodo",
21
+ "__linha",
22
+ "__periodo",
23
+ "__ireg_atual",
24
+ "__itec_atual",
25
+ "__simc_atual",
26
+ "__itef_atual",
27
+ ]
28
+
19
29
  BEGIN_PATTERN = "PERIODO: "
20
30
  END_PATTERN = "PERIODO: "
21
31
 
@@ -10,6 +10,8 @@ class PeriodoImpressaoCortesEstados(Section):
10
10
  início e fim para a impressão.
11
11
  """
12
12
 
13
+ __slots__ = ["__linha", "__cabecalhos"]
14
+
13
15
  def __init__(self, previous=None, next=None, data=None) -> None:
14
16
  super().__init__(previous, next, data)
15
17
  self.__linha = Line(
@@ -15,6 +15,8 @@ class CortesPeriodoNwlistcf(Block):
15
15
  Bloco do arquivo nwlistcf.rel que armazena os cortes de um período.
16
16
  """
17
17
 
18
+ __slots__ = ["__linha", "__linha_periodo", "__ireg_atual", "__periodo"]
19
+
18
20
  BEGIN_PATTERN = "PERIODO: "
19
21
  END_PATTERN = "PERIODO: "
20
22