inewave 1.7.4__py3-none-any.whl → 1.8.0__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 (373) hide show
  1. inewave/__init__.py +1 -1
  2. inewave/newave/__init__.py +16 -7
  3. inewave/newave/avl_cortesfpha_nwv.py +10 -0
  4. inewave/newave/avl_desvfpha_s.py +7 -0
  5. inewave/newave/avl_desvfpha_v_q.py +7 -0
  6. inewave/newave/eco_fpha.py +10 -0
  7. inewave/newave/evap_avl_desv.py +33 -0
  8. inewave/newave/evap_cortes.py +34 -0
  9. inewave/newave/evap_eco.py +34 -0
  10. inewave/newave/fpha_avl_desv_s.py +59 -0
  11. inewave/newave/fpha_avl_desv_v_q.py +58 -0
  12. inewave/newave/fpha_cortes.py +40 -0
  13. inewave/newave/fpha_eco.py +41 -0
  14. inewave/newave/modelos/adterm.py +7 -0
  15. inewave/newave/modelos/agrint.py +2 -0
  16. inewave/newave/modelos/arquivos.py +2 -0
  17. inewave/newave/modelos/avl_cortesfpha_nwv.py +4 -0
  18. inewave/newave/modelos/avl_desvfpha_s.py +2 -0
  19. inewave/newave/modelos/avl_desvfpha_v_q.py +2 -0
  20. inewave/newave/modelos/blocos/tabelacsv.py +2 -0
  21. inewave/newave/modelos/blocos/versaomodelo.py +4 -0
  22. inewave/newave/modelos/cadic.py +2 -0
  23. inewave/newave/modelos/caso.py +4 -0
  24. inewave/newave/modelos/clast.py +2 -0
  25. inewave/newave/modelos/confhd.py +2 -0
  26. inewave/newave/modelos/conft.py +2 -0
  27. inewave/newave/modelos/cortes.py +14 -0
  28. inewave/newave/modelos/cortesh.py +20 -0
  29. inewave/newave/modelos/curva.py +2 -0
  30. inewave/newave/modelos/cvar.py +2 -0
  31. inewave/newave/modelos/dger.py +208 -0
  32. inewave/newave/modelos/dsvagua.py +2 -0
  33. inewave/newave/modelos/eafpast.py +2 -0
  34. inewave/newave/modelos/enavazb.py +2 -0
  35. inewave/newave/modelos/enavazf.py +2 -0
  36. inewave/newave/modelos/energiab.py +2 -0
  37. inewave/newave/modelos/energiaf.py +2 -0
  38. inewave/newave/modelos/energias.py +9 -0
  39. inewave/newave/modelos/engnat.py +2 -0
  40. inewave/newave/modelos/exph.py +2 -0
  41. inewave/newave/modelos/expt.py +2 -0
  42. inewave/newave/modelos/forward.py +27 -0
  43. inewave/newave/modelos/forwarh.py +2 -0
  44. inewave/newave/modelos/ghmin.py +2 -0
  45. inewave/newave/modelos/hidr.py +2 -0
  46. inewave/newave/modelos/manutt.py +2 -0
  47. inewave/newave/modelos/modif.py +32 -0
  48. inewave/newave/modelos/newavetim.py +2 -0
  49. inewave/newave/modelos/nwv_avl_evap.py +2 -0
  50. inewave/newave/modelos/nwv_cortes_evap.py +2 -0
  51. inewave/newave/modelos/nwv_eco_evap.py +2 -0
  52. inewave/newave/modelos/parp.py +45 -0
  53. inewave/newave/modelos/parpeol.py +23 -0
  54. inewave/newave/modelos/parpvaz.py +37 -0
  55. inewave/newave/modelos/patamar.py +28 -0
  56. inewave/newave/modelos/penalid.py +2 -0
  57. inewave/newave/modelos/pmo.py +103 -0
  58. inewave/newave/modelos/re.py +2 -0
  59. inewave/newave/modelos/ree.py +2 -0
  60. inewave/newave/modelos/selcor.py +5 -3
  61. inewave/newave/modelos/shist.py +10 -6
  62. inewave/newave/modelos/sistema.py +10 -0
  63. inewave/newave/modelos/term.py +2 -0
  64. inewave/newave/modelos/vazaob.py +2 -0
  65. inewave/newave/modelos/vazaof.py +2 -0
  66. inewave/newave/modelos/vazaos.py +2 -0
  67. inewave/newave/modelos/vazinat.py +2 -0
  68. inewave/newave/modelos/vazoes.py +2 -0
  69. inewave/newave/modelos/vazpast.py +2 -0
  70. inewave/newave/modelos/volref_saz.py +2 -0
  71. inewave/newave/modif.py +2 -0
  72. inewave/newave/nwv_avl_evap.py +10 -0
  73. inewave/newave/nwv_cortes_evap.py +10 -0
  74. inewave/newave/nwv_eco_evap.py +10 -0
  75. inewave/newave/pmo.py +17 -0
  76. inewave/newave/vazoes.py +2 -0
  77. inewave/nwlistcf/modelos/arquivos.py +2 -0
  78. inewave/nwlistcf/modelos/caso.py +2 -0
  79. inewave/nwlistcf/modelos/estados.py +10 -0
  80. inewave/nwlistcf/modelos/nwlistcfdat.py +2 -0
  81. inewave/nwlistcf/modelos/nwlistcfrel.py +2 -0
  82. inewave/nwlistop/__init__.py +65 -30
  83. inewave/nwlistop/c_v_rhq.py +10 -0
  84. inewave/nwlistop/c_v_rhq_s.py +10 -0
  85. inewave/nwlistop/c_v_rhv_s.py +10 -0
  86. inewave/nwlistop/celetricas.py +10 -0
  87. inewave/nwlistop/cviol_eletricasin.py +19 -0
  88. inewave/nwlistop/cviol_rhq.py +21 -0
  89. inewave/nwlistop/cviol_rhq_sin.py +19 -0
  90. inewave/nwlistop/cviol_rhv.py +21 -0
  91. inewave/nwlistop/cviol_rhv_sin.py +19 -0
  92. inewave/nwlistop/deletricas.py +10 -0
  93. inewave/nwlistop/depminuh.py +10 -0
  94. inewave/nwlistop/desvuh.py +10 -0
  95. inewave/nwlistop/dtbmax.py +10 -0
  96. inewave/nwlistop/dtbmin.py +10 -0
  97. inewave/nwlistop/dvazmax.py +10 -0
  98. inewave/nwlistop/modelos/arquivos/arquivoclassetermicasubmercadopatamar.py +2 -0
  99. inewave/nwlistop/modelos/arquivos/arquivoestacaobombeamentopatamar.py +2 -0
  100. inewave/nwlistop/modelos/arquivos/arquivoparsubmercadopatamar.py +2 -0
  101. inewave/nwlistop/modelos/arquivos/arquivoree.py +2 -0
  102. inewave/nwlistop/modelos/arquivos/arquivoreepatamar.py +2 -0
  103. inewave/nwlistop/modelos/arquivos/arquivorestricao.py +2 -0
  104. inewave/nwlistop/modelos/arquivos/arquivorestricaopatamar.py +2 -0
  105. inewave/nwlistop/modelos/arquivos/arquivosin.py +2 -0
  106. inewave/nwlistop/modelos/arquivos/arquivosinpatamar.py +2 -0
  107. inewave/nwlistop/modelos/arquivos/arquivosubmercado.py +2 -0
  108. inewave/nwlistop/modelos/arquivos/arquivosubmercadopatamar.py +2 -0
  109. inewave/nwlistop/modelos/arquivos/arquivousina.py +2 -0
  110. inewave/nwlistop/modelos/arquivos/arquivousinapatamar.py +2 -0
  111. inewave/nwlistop/modelos/blocos/estacaobombeamento.py +2 -0
  112. inewave/nwlistop/modelos/blocos/parsubmercados.py +2 -0
  113. inewave/nwlistop/modelos/blocos/ree.py +2 -0
  114. inewave/nwlistop/modelos/blocos/restricao.py +2 -0
  115. inewave/nwlistop/modelos/blocos/submercado.py +2 -0
  116. inewave/nwlistop/modelos/blocos/usina.py +2 -0
  117. inewave/nwlistop/modelos/blocos/valoresclassetermicaseriepatamar.py +8 -0
  118. inewave/nwlistop/modelos/blocos/valoresserie.py +2 -0
  119. inewave/nwlistop/modelos/blocos/valoresseriepatamar.py +2 -0
  120. inewave/nwlistop/modelos/c_v_rhq.py +2 -0
  121. inewave/nwlistop/modelos/c_v_rhq_s.py +2 -0
  122. inewave/nwlistop/modelos/c_v_rhv.py +2 -0
  123. inewave/nwlistop/modelos/c_v_rhv_s.py +2 -0
  124. inewave/nwlistop/modelos/cbomb.py +2 -0
  125. inewave/nwlistop/modelos/cbombsin.py +2 -0
  126. inewave/nwlistop/modelos/cdef.py +2 -0
  127. inewave/nwlistop/modelos/cdefsin.py +2 -0
  128. inewave/nwlistop/modelos/celetricas.py +2 -0
  129. inewave/nwlistop/modelos/cmarg.py +2 -0
  130. inewave/nwlistop/modelos/cmargmed.py +2 -0
  131. inewave/nwlistop/modelos/coper.py +2 -0
  132. inewave/nwlistop/modelos/corteolm.py +2 -0
  133. inewave/nwlistop/modelos/cterm.py +2 -0
  134. inewave/nwlistop/modelos/ctermsin.py +2 -0
  135. inewave/nwlistop/modelos/cviol_eletricasin.py +28 -0
  136. inewave/nwlistop/modelos/cviol_rhq.py +28 -0
  137. inewave/nwlistop/modelos/cviol_rhq_sin.py +28 -0
  138. inewave/nwlistop/modelos/cviol_rhv.py +26 -0
  139. inewave/nwlistop/modelos/cviol_rhv_sin.py +26 -0
  140. inewave/nwlistop/modelos/def.py +2 -0
  141. inewave/nwlistop/modelos/defsin.py +2 -0
  142. inewave/nwlistop/modelos/deletricas.py +2 -0
  143. inewave/nwlistop/modelos/depminuh.py +2 -0
  144. inewave/nwlistop/modelos/desvuh.py +2 -0
  145. inewave/nwlistop/modelos/dflppdfmaxm.py +2 -0
  146. inewave/nwlistop/modelos/dflpptbmaxm.py +2 -0
  147. inewave/nwlistop/modelos/dfphauh.py +2 -0
  148. inewave/nwlistop/modelos/dlppdfmax.py +2 -0
  149. inewave/nwlistop/modelos/dlppdfmaxs.py +2 -0
  150. inewave/nwlistop/modelos/dlpptbmax.py +2 -0
  151. inewave/nwlistop/modelos/dlpptbmaxs.py +2 -0
  152. inewave/nwlistop/modelos/dnegevap.py +2 -0
  153. inewave/nwlistop/modelos/dposevap.py +2 -0
  154. inewave/nwlistop/modelos/dtbmax.py +2 -0
  155. inewave/nwlistop/modelos/dtbmin.py +2 -0
  156. inewave/nwlistop/modelos/dvazmax.py +2 -0
  157. inewave/nwlistop/modelos/eaf.py +2 -0
  158. inewave/nwlistop/modelos/eafb.py +2 -0
  159. inewave/nwlistop/modelos/eafbm.py +2 -0
  160. inewave/nwlistop/modelos/eafbsin.py +2 -0
  161. inewave/nwlistop/modelos/eafm.py +2 -0
  162. inewave/nwlistop/modelos/earmf.py +2 -0
  163. inewave/nwlistop/modelos/earmfm.py +2 -0
  164. inewave/nwlistop/modelos/earmfp.py +2 -0
  165. inewave/nwlistop/modelos/earmfpm.py +2 -0
  166. inewave/nwlistop/modelos/earmfpsin.py +2 -0
  167. inewave/nwlistop/modelos/earmfsin.py +2 -0
  168. inewave/nwlistop/modelos/edesvc.py +2 -0
  169. inewave/nwlistop/modelos/edesvcm.py +2 -0
  170. inewave/nwlistop/modelos/edesvcsin.py +2 -0
  171. inewave/nwlistop/modelos/evapo.py +2 -0
  172. inewave/nwlistop/modelos/evapom.py +2 -0
  173. inewave/nwlistop/modelos/evaporsin.py +2 -0
  174. inewave/nwlistop/modelos/evert.py +2 -0
  175. inewave/nwlistop/modelos/evertm.py +2 -0
  176. inewave/nwlistop/modelos/evertsin.py +2 -0
  177. inewave/nwlistop/modelos/exces.py +2 -0
  178. inewave/nwlistop/modelos/excessin.py +2 -0
  179. inewave/nwlistop/modelos/form_rhq.py +2 -0
  180. inewave/nwlistop/modelos/form_rhv.py +2 -0
  181. inewave/nwlistop/modelos/fteolm.py +2 -0
  182. inewave/nwlistop/modelos/fteolsin.py +2 -0
  183. inewave/nwlistop/modelos/geol.py +2 -0
  184. inewave/nwlistop/modelos/geolm.py +2 -0
  185. inewave/nwlistop/modelos/geolsin.py +2 -0
  186. inewave/nwlistop/modelos/gh_fphexat.py +2 -0
  187. inewave/nwlistop/modelos/ghidr.py +2 -0
  188. inewave/nwlistop/modelos/ghidrm.py +2 -0
  189. inewave/nwlistop/modelos/ghidrsin.py +2 -0
  190. inewave/nwlistop/modelos/ghiduh.py +2 -0
  191. inewave/nwlistop/modelos/ghmax.py +2 -0
  192. inewave/nwlistop/modelos/ghmax_fpha.py +2 -0
  193. inewave/nwlistop/modelos/ghmax_fphc.py +2 -0
  194. inewave/nwlistop/modelos/ghmaxm.py +2 -0
  195. inewave/nwlistop/modelos/ghmaxmr.py +2 -0
  196. inewave/nwlistop/modelos/ghmaxr.py +2 -0
  197. inewave/nwlistop/modelos/ghmaxrsin.py +2 -0
  198. inewave/nwlistop/modelos/ghmaxsin.py +2 -0
  199. inewave/nwlistop/modelos/ghtot.py +2 -0
  200. inewave/nwlistop/modelos/ghtotm.py +2 -0
  201. inewave/nwlistop/modelos/ghtotsin.py +2 -0
  202. inewave/nwlistop/modelos/gtert.py +2 -0
  203. inewave/nwlistop/modelos/gttot.py +2 -0
  204. inewave/nwlistop/modelos/gttotsin.py +2 -0
  205. inewave/nwlistop/modelos/hjus.py +2 -0
  206. inewave/nwlistop/modelos/hliq.py +2 -0
  207. inewave/nwlistop/modelos/hmont.py +2 -0
  208. inewave/nwlistop/modelos/intercambio.py +2 -0
  209. inewave/nwlistop/modelos/invade.py +2 -0
  210. inewave/nwlistop/modelos/invadem.py +2 -0
  211. inewave/nwlistop/modelos/mediasmerc.py +2 -0
  212. inewave/nwlistop/modelos/mediasree.py +2 -0
  213. inewave/nwlistop/modelos/mediasrep.py +2 -0
  214. inewave/nwlistop/modelos/mediasrhq.py +2 -0
  215. inewave/nwlistop/modelos/mediasrhv.py +2 -0
  216. inewave/nwlistop/modelos/mediassin.py +2 -0
  217. inewave/nwlistop/modelos/mediasusie.py +2 -0
  218. inewave/nwlistop/modelos/mediasusih.py +2 -0
  219. inewave/nwlistop/modelos/mediasusit.py +2 -0
  220. inewave/nwlistop/modelos/mercl.py +2 -0
  221. inewave/nwlistop/modelos/merclsin.py +2 -0
  222. inewave/nwlistop/modelos/mevmin.py +2 -0
  223. inewave/nwlistop/modelos/mevminm.py +2 -0
  224. inewave/nwlistop/modelos/mevminsin.py +2 -0
  225. inewave/nwlistop/modelos/nwlistopdat.py +11 -0
  226. inewave/nwlistop/modelos/perdf.py +2 -0
  227. inewave/nwlistop/modelos/perdfm.py +2 -0
  228. inewave/nwlistop/modelos/perdfsin.py +2 -0
  229. inewave/nwlistop/modelos/pivarm.py +22 -0
  230. inewave/nwlistop/modelos/pivarmincr.py +22 -0
  231. inewave/nwlistop/modelos/qafluh.py +2 -0
  232. inewave/nwlistop/modelos/qbomb.py +28 -0
  233. inewave/nwlistop/modelos/qdesviouh.py +28 -0
  234. inewave/nwlistop/modelos/qincruh.py +2 -0
  235. inewave/nwlistop/modelos/qturuh.py +28 -0
  236. inewave/nwlistop/modelos/qvertuh.py +28 -0
  237. inewave/nwlistop/modelos/rhslppdf.py +2 -0
  238. inewave/nwlistop/modelos/rhslpptb.py +2 -0
  239. inewave/nwlistop/modelos/vagua.py +2 -0
  240. inewave/nwlistop/modelos/valor_agua.py +24 -0
  241. inewave/nwlistop/modelos/varmpuh.py +2 -0
  242. inewave/nwlistop/modelos/varmuh.py +2 -0
  243. inewave/nwlistop/modelos/vbomb.py +2 -0
  244. inewave/nwlistop/modelos/vdesviouh.py +2 -0
  245. inewave/nwlistop/modelos/vento.py +2 -0
  246. inewave/nwlistop/modelos/vertuh.py +2 -0
  247. inewave/nwlistop/modelos/verturb.py +2 -0
  248. inewave/nwlistop/modelos/verturbm.py +2 -0
  249. inewave/nwlistop/modelos/verturbsin.py +2 -0
  250. inewave/nwlistop/modelos/vevapuh.py +2 -0
  251. inewave/nwlistop/modelos/vevmin.py +2 -0
  252. inewave/nwlistop/modelos/vevminm.py +2 -0
  253. inewave/nwlistop/modelos/vevminsin.py +2 -0
  254. inewave/nwlistop/modelos/vghmin.py +2 -0
  255. inewave/nwlistop/modelos/vghminm.py +2 -0
  256. inewave/nwlistop/modelos/vghminsin.py +2 -0
  257. inewave/nwlistop/modelos/vghminuh.py +2 -0
  258. inewave/nwlistop/modelos/viol_eletricasin.py +28 -0
  259. inewave/nwlistop/modelos/viol_evmin.py +23 -0
  260. inewave/nwlistop/modelos/viol_evminm.py +23 -0
  261. inewave/nwlistop/modelos/viol_evminsin.py +23 -0
  262. inewave/nwlistop/modelos/viol_fpha.py +31 -0
  263. inewave/nwlistop/modelos/viol_ghmin.py +29 -0
  264. inewave/nwlistop/modelos/viol_ghminm.py +29 -0
  265. inewave/nwlistop/modelos/viol_ghminsin.py +29 -0
  266. inewave/nwlistop/modelos/viol_ghminuh.py +28 -0
  267. inewave/nwlistop/modelos/viol_lpp_dfmax.py +29 -0
  268. inewave/nwlistop/modelos/viol_lpp_dfmaxm.py +29 -0
  269. inewave/nwlistop/modelos/viol_lpp_dfmaxsin.py +29 -0
  270. inewave/nwlistop/modelos/viol_lpp_tbmax.py +29 -0
  271. inewave/nwlistop/modelos/viol_lpp_tbmaxm.py +29 -0
  272. inewave/nwlistop/modelos/viol_lpp_tbmaxsin.py +29 -0
  273. inewave/nwlistop/modelos/viol_neg_evap.py +26 -0
  274. inewave/nwlistop/modelos/viol_pos_evap.py +26 -0
  275. inewave/nwlistop/modelos/viol_rhq.py +2 -0
  276. inewave/nwlistop/modelos/viol_rhv.py +2 -0
  277. inewave/nwlistop/modelos/viol_turbmax.py +28 -0
  278. inewave/nwlistop/modelos/viol_turbmin.py +28 -0
  279. inewave/nwlistop/modelos/viol_vazmax.py +28 -0
  280. inewave/nwlistop/modelos/viol_vazmin.py +28 -0
  281. inewave/nwlistop/modelos/vmort.py +2 -0
  282. inewave/nwlistop/modelos/vmortm.py +2 -0
  283. inewave/nwlistop/modelos/vmortsin.py +2 -0
  284. inewave/nwlistop/modelos/vretiradauh.py +26 -0
  285. inewave/nwlistop/modelos/vturuh.py +2 -0
  286. inewave/nwlistop/pivarm.py +13 -2
  287. inewave/nwlistop/pivarmincr.py +13 -2
  288. inewave/nwlistop/qbomb.py +23 -0
  289. inewave/nwlistop/qdesviouh.py +21 -0
  290. inewave/nwlistop/qturuh.py +21 -0
  291. inewave/nwlistop/qvertuh.py +21 -0
  292. inewave/nwlistop/vagua.py +10 -0
  293. inewave/nwlistop/valor_agua.py +21 -0
  294. inewave/nwlistop/vertuh.py +10 -0
  295. inewave/nwlistop/vevmin.py +10 -0
  296. inewave/nwlistop/vevminm.py +10 -0
  297. inewave/nwlistop/vevminsin.py +10 -0
  298. inewave/nwlistop/vghmin.py +10 -0
  299. inewave/nwlistop/vghminm.py +10 -0
  300. inewave/nwlistop/vghminsin.py +10 -0
  301. inewave/nwlistop/viol_eletricasin.py +19 -0
  302. inewave/nwlistop/viol_evmin.py +20 -0
  303. inewave/nwlistop/viol_evminm.py +22 -0
  304. inewave/nwlistop/viol_evminsin.py +19 -0
  305. inewave/nwlistop/viol_fpha.py +22 -0
  306. inewave/nwlistop/viol_ghmin.py +22 -0
  307. inewave/nwlistop/viol_ghminm.py +22 -0
  308. inewave/nwlistop/viol_ghminsin.py +19 -0
  309. inewave/nwlistop/viol_ghminuh.py +22 -0
  310. inewave/nwlistop/viol_lpp_dfmax.py +22 -0
  311. inewave/nwlistop/viol_lpp_dfmaxm.py +22 -0
  312. inewave/nwlistop/viol_lpp_dfmaxsin.py +18 -0
  313. inewave/nwlistop/viol_lpp_tbmax.py +22 -0
  314. inewave/nwlistop/viol_lpp_tbmaxm.py +22 -0
  315. inewave/nwlistop/viol_lpp_tbmaxsin.py +18 -0
  316. inewave/nwlistop/viol_neg_evap.py +22 -0
  317. inewave/nwlistop/viol_pos_evap.py +22 -0
  318. inewave/nwlistop/viol_turbmax.py +22 -0
  319. inewave/nwlistop/viol_turbmin.py +22 -0
  320. inewave/nwlistop/viol_vazmax.py +22 -0
  321. inewave/nwlistop/viol_vazmin.py +22 -0
  322. inewave/nwlistop/vretiradauh.py +21 -0
  323. inewave/nwlistop/vturuh.py +10 -0
  324. {inewave-1.7.4.dist-info → inewave-1.8.0.dist-info}/METADATA +2 -2
  325. {inewave-1.7.4.dist-info → inewave-1.8.0.dist-info}/RECORD +373 -264
  326. tests/libs/test_restricoes.py +0 -3
  327. tests/libs/test_usinas_hidreletricas.py +0 -2
  328. tests/mocks/arquivos/pivarm.py +22 -0
  329. tests/mocks/arquivos/pivarmincr.py +22 -0
  330. tests/mocks/arquivos/pmo.py +6 -1
  331. tests/mocks/arquivos/viol_fpha.py +29 -0
  332. tests/newave/test_dger.py +0 -2
  333. tests/newave/test_evap_avl_desv.py +40 -0
  334. tests/newave/test_evap_cortes.py +41 -0
  335. tests/newave/test_evap_eco.py +41 -0
  336. tests/newave/test_fpha_avl_desv_s.py +39 -0
  337. tests/newave/test_fpha_avl_desv_v_q.py +38 -0
  338. tests/newave/test_fpha_cortes.py +48 -0
  339. tests/newave/test_fpha_eco.py +47 -0
  340. tests/newave/test_pmo.py +14 -0
  341. tests/nwlistop/test_cviol_eletricasin.py +37 -0
  342. tests/nwlistop/test_cviol_rhq_sin.py +37 -0
  343. tests/nwlistop/test_cviol_rhv_sin.py +37 -0
  344. tests/nwlistop/test_qbomb.py +40 -0
  345. tests/nwlistop/test_qdesviouh.py +40 -0
  346. tests/nwlistop/test_qturuh.py +40 -0
  347. tests/nwlistop/test_qvertuh.py +40 -0
  348. tests/nwlistop/test_valor_agua.py +40 -0
  349. tests/nwlistop/test_viol_eletricasin.py +37 -0
  350. tests/nwlistop/test_viol_evmin.py +40 -0
  351. tests/nwlistop/test_viol_evminm.py +40 -0
  352. tests/nwlistop/test_viol_evminsin.py +37 -0
  353. tests/nwlistop/test_viol_fpha.py +40 -0
  354. tests/nwlistop/test_viol_ghmin.py +40 -0
  355. tests/nwlistop/test_viol_ghminm.py +40 -0
  356. tests/nwlistop/test_viol_ghminsin.py +37 -0
  357. tests/nwlistop/test_viol_ghminuh.py +40 -0
  358. tests/nwlistop/test_viol_lpp_dfmax.py +40 -0
  359. tests/nwlistop/test_viol_lpp_dfmaxm.py +40 -0
  360. tests/nwlistop/test_viol_lpp_dfmaxsin.py +37 -0
  361. tests/nwlistop/test_viol_lpp_tbmax.py +40 -0
  362. tests/nwlistop/test_viol_lpp_tbmaxm.py +40 -0
  363. tests/nwlistop/test_viol_lpp_tbmaxsin.py +37 -0
  364. tests/nwlistop/test_viol_neg_evap.py +41 -0
  365. tests/nwlistop/test_viol_pos_evap.py +40 -0
  366. tests/nwlistop/test_viol_turbmax.py +40 -0
  367. tests/nwlistop/test_viol_turbmin.py +40 -0
  368. tests/nwlistop/test_viol_vazmax.py +40 -0
  369. tests/nwlistop/test_viol_vazmin.py +40 -0
  370. tests/nwlistop/test_vretiradauh.py +40 -0
  371. {inewave-1.7.4.dist-info → inewave-1.8.0.dist-info}/LICENSE.md +0 -0
  372. {inewave-1.7.4.dist-info → inewave-1.8.0.dist-info}/WHEEL +0 -0
  373. {inewave-1.7.4.dist-info → inewave-1.8.0.dist-info}/top_level.txt +0 -0
@@ -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(
@@ -21,12 +21,54 @@ from inewave._utils.formatacao import (
21
21
  )
22
22
 
23
23
 
24
+ class BlocoVersaoModeloPMO(Block):
25
+ """
26
+ Bloco com a versão do modelo localizado no arquivo `pmo.dat`.
27
+ """
28
+
29
+ __slots__ = ["__line"]
30
+
31
+ BEGIN_PATTERN = (
32
+ " CEPEL MODELO ESTRATEGICO DE"
33
+ + " GERACAO HIDROTERMICA A SUBSISTEMAS VERSAO"
34
+ )
35
+ END_PATTERN = ""
36
+
37
+ def __init__(self, previous=None, next=None, data=None) -> None:
38
+ super().__init__(previous, next, data)
39
+
40
+ self.__line = Line([LiteralField(18, 109)])
41
+
42
+ def __eq__(self, o: object) -> bool:
43
+ if not isinstance(o, BlocoVersaoModeloPMO):
44
+ return False
45
+ bloco: BlocoVersaoModeloPMO = o
46
+ if not all(
47
+ [
48
+ isinstance(self.data, str),
49
+ isinstance(o.data, str),
50
+ ]
51
+ ):
52
+ return False
53
+ else:
54
+ return self.data == bloco.data
55
+
56
+ # Override
57
+ def read(self, file: IO, *args, **kwargs):
58
+
59
+ linha = file.readline()
60
+ dados: List[str] = self.__line.read(linha)
61
+ self.data = dados[0].strip()
62
+
63
+
24
64
  class BlocoEafPastTendenciaHidrolPMO(Block):
25
65
  """
26
66
  Bloco de informações de afluências passadas para
27
67
  tendência hidrológica localizado no arquivo `pmo.dat`.
28
68
  """
29
69
 
70
+ __slots__ = ["__line"]
71
+
30
72
  BEGIN_PATTERN = "ENERGIAS AFLUENTES PASSADAS PARA A TENDENCIA HIDROLOGICA"
31
73
  END_PATTERN = ""
32
74
 
@@ -92,6 +134,8 @@ class BlocoEafPastCfugaMedioPMO(Block):
92
134
  tendência hidrológica localizado no arquivo `pmo.dat`.
93
135
  """
94
136
 
137
+ __slots__ = ["__line"]
138
+
95
139
  BEGIN_PATTERN = (
96
140
  "ENERGIAS AFLUENTES PASSADAS EM REFERENCIA A PRIMEIRA CONFIG"
97
141
  )
@@ -282,6 +326,8 @@ class BlocoVolumeArmazenadoInicialPMO(Block):
282
326
  localizado no arquivo `pmo.dat`.
283
327
  """
284
328
 
329
+ __slots__ = ["__linha"]
330
+
285
331
  BEGIN_PATTERN = r" VOLUME ARMAZENADO INICIAL"
286
332
  END_PATTERN = "X-----X------------X"
287
333
 
@@ -353,6 +399,8 @@ class BlocoGeracaoMinimaUsinasTermicasPMO(Block):
353
399
  por usina existentes no arquivo `pmo.dat`.
354
400
  """
355
401
 
402
+ __slots__ = ["__line"]
403
+
356
404
  BEGIN_PATTERN = "GERACAO TERMICA MINIMA POR USINA"
357
405
  END_PATTERN = ""
358
406
 
@@ -439,6 +487,8 @@ class BlocoGeracaoMaximaUsinasTermicasPMO(Block):
439
487
  por usina existentes no arquivo `pmo.dat`.
440
488
  """
441
489
 
490
+ __slots__ = ["__line"]
491
+
442
492
  BEGIN_PATTERN = "GERACAO TERMICA MAXIMA POR USINA"
443
493
  END_PATTERN = ""
444
494
 
@@ -525,6 +575,8 @@ class BlocoConvergenciaPMO(Block):
525
575
  no arquivo `pmo.dat`.
526
576
  """
527
577
 
578
+ __slots__ = ["__line"]
579
+
528
580
  BEGIN_PATTERN = " ITER LIM.INF. "
529
581
  END_PATTERN = ""
530
582
 
@@ -606,6 +658,8 @@ class BlocoConfiguracoesExpansaoPMO(Block):
606
658
  do sistema existentes no arquivo `pmo.dat`.
607
659
  """
608
660
 
661
+ __slots__ = ["__line"]
662
+
609
663
  BEGIN_PATTERN = "CONFIGURACOES POR"
610
664
  END_PATTERN = ""
611
665
 
@@ -667,6 +721,8 @@ class BlocoMARSPMO(Block):
667
721
  existentes no arquivo `pmo.dat`.
668
722
  """
669
723
 
724
+ __slots__ = ["__line", "__ree_field"]
725
+
670
726
  BEGIN_PATTERN = "PARAMETROS DAS RETAS DE PERDAS POR ENGOLIMENTO MAXIMO"
671
727
  END_PATTERN = 'ENERGIA FIO D"AGUA LIQUIDA|CEPEL'
672
728
 
@@ -738,6 +794,8 @@ class BlocoRiscoDeficitENSPMO(Block):
738
794
  ENS (energia não suprida) existentes no arquivo `pmo.dat`.
739
795
  """
740
796
 
797
+ __slots__ = ["__line"]
798
+
741
799
  BEGIN_PATTERN = r"RISCO ANUAL DE DEFICIT E E\(ENS\) \(%\)" # noqa
742
800
  END_PATTERN = ""
743
801
 
@@ -807,6 +865,8 @@ class BlocoCustoOperacaoPMO(Block):
807
865
  existentes no arquivo `pmo.dat`.
808
866
  """
809
867
 
868
+ __slots__ = ["__line"]
869
+
810
870
  BEGIN_PATTERN = "PARCELA V.ESPERADO"
811
871
  END_PATTERN = ""
812
872
 
@@ -869,6 +929,8 @@ class BlocoCustoOperacaoTotalPMO(Block):
869
929
  existentes no arquivo `pmo.dat`.
870
930
  """
871
931
 
932
+ __slots__ = ["__line"]
933
+
872
934
  BEGIN_PATTERN = " VALOR ESPERADO TOTAL:"
873
935
  END_PATTERN = ""
874
936
 
@@ -905,6 +967,13 @@ class BlocoProdutibilidadesConfiguracaoPMO(Block):
905
967
  configuração.
906
968
  """
907
969
 
970
+ __slots__ = [
971
+ "__cfg_line",
972
+ "__prodt_line",
973
+ "__prodt_reserv_line",
974
+ "__prod_acum_line",
975
+ ]
976
+
908
977
  BEGIN_PATTERN = r"PRODUTIBILIDADES \(MW/m3/s\)"
909
978
  END_PATTERN = ""
910
979
 
@@ -1114,6 +1183,11 @@ class BlocoPenalidadeViolacaoOutrosUsosPMO(Block):
1114
1183
  outros usos da água.
1115
1184
  """
1116
1185
 
1186
+ __slots__ = [
1187
+ "__ree_line",
1188
+ "__pen_line",
1189
+ ]
1190
+
1117
1191
  BEGIN_PATTERN = "PENALIDADE POR VIOLACAO DOS OUTROS USOS DA AGUA "
1118
1192
  END_PATTERN = ""
1119
1193
 
@@ -1197,6 +1271,12 @@ class BlocoPenalidadeViolacaoVazaoMinimaPMO(Block):
1197
1271
  vazão mínima.
1198
1272
  """
1199
1273
 
1274
+ __slots__ = [
1275
+ "__ree_line",
1276
+ "__patamar_line",
1277
+ "__pen_line",
1278
+ ]
1279
+
1200
1280
  BEGIN_PATTERN = "PENALIDADE POR VIOLACAO DE VAZAO MINIMA "
1201
1281
  END_PATTERN = ""
1202
1282
 
@@ -1292,6 +1372,11 @@ class BlocoPenalidadeViolacaoCurvaSegurancaPMO(Block):
1292
1372
  curva-guia de segurança.
1293
1373
  """
1294
1374
 
1375
+ __slots__ = [
1376
+ "__ree_line",
1377
+ "__pen_line",
1378
+ ]
1379
+
1295
1380
  BEGIN_PATTERN = "PENALIDADE POR VIOLACAO DA CURVA GUIA DE SEGURANCA "
1296
1381
  END_PATTERN = ""
1297
1382
 
@@ -1375,6 +1460,11 @@ class BlocoPenalidadeViolacaoFphaPMO(Block):
1375
1460
  FPHA.
1376
1461
  """
1377
1462
 
1463
+ __slots__ = [
1464
+ "__ree_line",
1465
+ "__pen_line",
1466
+ ]
1467
+
1378
1468
  BEGIN_PATTERN = "PENALIDADE POR VIOLACAO DA FPHA "
1379
1469
  END_PATTERN = ""
1380
1470
 
@@ -1458,6 +1548,11 @@ class BlocoPenalidadeViolacaoEvaporacaoPMO(Block):
1458
1548
  evaporação.
1459
1549
  """
1460
1550
 
1551
+ __slots__ = [
1552
+ "__ree_line",
1553
+ "__pen_line",
1554
+ ]
1555
+
1461
1556
  BEGIN_PATTERN = "PENALIDADE POR VIOLACAO DA EVAPORACAO "
1462
1557
  END_PATTERN = ""
1463
1558
 
@@ -1541,6 +1636,10 @@ class BlocoPenalidadeViolacaoTurbinamentoMaximoPMO(Block):
1541
1636
  turbinamento máximo.
1542
1637
  """
1543
1638
 
1639
+ __slots__ = [
1640
+ "__pen_line",
1641
+ ]
1642
+
1544
1643
  BEGIN_PATTERN = "PENALIDADE POR VIOLACAO DE TURBINAMENTO MAXIMO "
1545
1644
  END_PATTERN = ""
1546
1645
 
@@ -1605,6 +1704,10 @@ class BlocoPenalidadeViolacaoTurbinamentoMinimoPMO(Block):
1605
1704
  turbinamento máximo.
1606
1705
  """
1607
1706
 
1707
+ __slots__ = [
1708
+ "__pen_line",
1709
+ ]
1710
+
1608
1711
  BEGIN_PATTERN = "PENALIDADE POR VIOLACAO DE TURBINAMENTO MINIMO "
1609
1712
  END_PATTERN = ""
1610
1713
 
@@ -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 = [
@@ -5,6 +5,8 @@ from inewave.newave.modelos.arquivoscsv.arquivocsv import ArquivoCSV
5
5
  from typing import Optional
6
6
  import pandas as pd # type: ignore
7
7
 
8
+ from warnings import warn
9
+
8
10
 
9
11
  class NwvAvlEvap(ArquivoCSV):
10
12
  """
@@ -31,3 +33,11 @@ class NwvAvlEvap(ArquivoCSV):
31
33
  :rtype: pd.DataFrame | None
32
34
  """
33
35
  return self._tabela()
36
+
37
+ def __init__(self, data=...) -> None:
38
+ warn(
39
+ "Esta classe é relativa a um arquivo que não é mais suportado."
40
+ + " Utilize a classe EvapAvlDesv no lugar.",
41
+ DeprecationWarning,
42
+ )
43
+ super().__init__(data)
@@ -5,6 +5,8 @@ from inewave.newave.modelos.arquivoscsv.arquivocsv import ArquivoCSV
5
5
  from typing import Optional
6
6
  import pandas as pd # type: ignore
7
7
 
8
+ from warnings import warn
9
+
8
10
 
9
11
  class NwvCortesEvap(ArquivoCSV):
10
12
  """
@@ -32,3 +34,11 @@ class NwvCortesEvap(ArquivoCSV):
32
34
  :rtype: pd.DataFrame | None
33
35
  """
34
36
  return self._tabela()
37
+
38
+ def __init__(self, data=...) -> None:
39
+ warn(
40
+ "Esta classe é relativa a um arquivo que não é mais suportado."
41
+ + " Utilize a classe EvapCortes no lugar.",
42
+ DeprecationWarning,
43
+ )
44
+ super().__init__(data)
@@ -5,6 +5,8 @@ from inewave.newave.modelos.arquivoscsv.arquivocsv import ArquivoCSV
5
5
  from typing import Optional
6
6
  import pandas as pd # type: ignore
7
7
 
8
+ from warnings import warn
9
+
8
10
 
9
11
  class NwvEcoEvap(ArquivoCSV):
10
12
  """
@@ -32,3 +34,11 @@ class NwvEcoEvap(ArquivoCSV):
32
34
  :rtype: pd.DataFrame | None
33
35
  """
34
36
  return self._tabela()
37
+
38
+ def __init__(self, data=...) -> None:
39
+ warn(
40
+ "Esta classe é relativa a um arquivo que não é mais suportado."
41
+ + " Utilize a classe EvapEco no lugar.",
42
+ DeprecationWarning,
43
+ )
44
+ super().__init__(data)
inewave/newave/pmo.py CHANGED
@@ -1,3 +1,4 @@
1
+ from inewave.newave.modelos.pmo import BlocoVersaoModeloPMO
1
2
  from inewave.newave.modelos.pmo import BlocoEafPastTendenciaHidrolPMO
2
3
  from inewave.newave.modelos.pmo import BlocoEafPastCfugaMedioPMO
3
4
  from inewave.newave.modelos.pmo import BlocoConvergenciaPMO
@@ -48,6 +49,7 @@ class Pmo(BlockFile):
48
49
  T = TypeVar("T")
49
50
 
50
51
  BLOCKS = [
52
+ BlocoVersaoModeloPMO,
51
53
  BlocoEafPastTendenciaHidrolPMO,
52
54
  BlocoEafPastCfugaMedioPMO,
53
55
  BlocoConvergenciaPMO,
@@ -71,6 +73,21 @@ class Pmo(BlockFile):
71
73
  BlocoGeracaoMaximaUsinasTermicasPMO,
72
74
  ]
73
75
 
76
+ @property
77
+ def versao_modelo(self) -> Optional[str]:
78
+ """
79
+ A versão do modelo que produziu o arquivo.
80
+
81
+ :return: A string de versão do modelo.
82
+ :rtype: str | None
83
+ """
84
+ b = self.data.get_blocks_of_type(BlocoVersaoModeloPMO)
85
+ if isinstance(b, BlocoVersaoModeloPMO):
86
+ return b.data
87
+ elif isinstance(b, list):
88
+ return b[0].data
89
+ return None
90
+
74
91
  @property
75
92
  def eafpast_tendencia_hidrologica(self) -> Optional[pd.DataFrame]:
76
93
  """
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