GridCal 5.1.26__tar.gz → 5.1.28__tar.gz

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 (283) hide show
  1. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Main/SubClasses/io.py +2 -2
  2. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Main/SubClasses/simulations.py +2 -2
  3. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/ProfilesInput/profile_dialogue.py +3 -0
  4. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/TowerBuilder/LineBuilderDialogue.py +1 -1
  5. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/TowerBuilder/table_models.py +39 -16
  6. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/plugins.py +1 -1
  7. GridCal-5.1.28/GridCal/Session/export_results_driver.py +80 -0
  8. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/__version__.py +1 -1
  9. {GridCal-5.1.26 → GridCal-5.1.28}/PKG-INFO +1 -1
  10. GridCal-5.1.26/GridCal/Session/export_results_driver.py +0 -117
  11. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/ExecuteGridCal.py +0 -0
  12. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/AboutDialogue/__init__.py +0 -0
  13. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/AboutDialogue/about_dialogue.py +0 -0
  14. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/AboutDialogue/gui.py +0 -0
  15. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/AboutDialogue/icons_rc.py +0 -0
  16. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/AboutDialogue/update_gui_file.py +0 -0
  17. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Analysis/AnalysisDialogue.py +0 -0
  18. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Analysis/__init__.py +0 -0
  19. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Analysis/gui.py +0 -0
  20. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Analysis/icons_rc.py +0 -0
  21. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Analysis/object_plot_analysis.py +0 -0
  22. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Analysis/update_gui_file.py +0 -0
  23. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/CascadingSteps/__init__.py +0 -0
  24. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/CascadingSteps/cascading_steps.py +0 -0
  25. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/CascadingSteps/gui.py +0 -0
  26. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/CascadingSteps/update_gui_file.py +0 -0
  27. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/ConsoleWidget.py +0 -0
  28. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/ContingencyPlanner/__init__.py +0 -0
  29. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/ContingencyPlanner/contingency_planner_dialogue.py +0 -0
  30. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/ContingencyPlanner/gui.py +0 -0
  31. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/ContingencyPlanner/icons_rc.py +0 -0
  32. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/ContingencyPlanner/update_gui_file.py +0 -0
  33. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/CoordinatesInput/__init__.py +0 -0
  34. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/CoordinatesInput/coordinates_dialogue.py +0 -0
  35. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/CoordinatesInput/gui.py +0 -0
  36. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/CoordinatesInput/icons_rc.py +0 -0
  37. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/CoordinatesInput/update_gui_file.py +0 -0
  38. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/MapWidget/Branches/__init__.py +0 -0
  39. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/MapWidget/Branches/map_ac_line.py +0 -0
  40. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/MapWidget/Branches/map_dc_line.py +0 -0
  41. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/MapWidget/Branches/map_fluid_path.py +0 -0
  42. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/MapWidget/Branches/map_hvdc_line.py +0 -0
  43. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_container.py +0 -0
  44. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_segment.py +0 -0
  45. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/MapWidget/Substation/__init__.py +0 -0
  46. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/MapWidget/Substation/node_graphic_item.py +0 -0
  47. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/MapWidget/Substation/node_template.py +0 -0
  48. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/MapWidget/Substation/substation_graphic_item.py +0 -0
  49. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/MapWidget/Substation/voltage_level_graphic_item.py +0 -0
  50. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/MapWidget/TileProviders/__init__.py +0 -0
  51. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/MapWidget/TileProviders/blue_marble.py +0 -0
  52. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/MapWidget/TileProviders/cartodb.py +0 -0
  53. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/MapWidget/TileProviders/gmt_local.py +0 -0
  54. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/MapWidget/TileProviders/mapbox.py +0 -0
  55. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/MapWidget/TileProviders/mapquest.py +0 -0
  56. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/MapWidget/TileProviders/open_street_map.py +0 -0
  57. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/MapWidget/TileProviders/stamen_toner.py +0 -0
  58. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/MapWidget/TileProviders/stamen_transport.py +0 -0
  59. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/MapWidget/TileProviders/stamen_watercolor.py +0 -0
  60. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/MapWidget/Tiles/__init__.py +0 -0
  61. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/MapWidget/Tiles/base_tiles.py +0 -0
  62. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/MapWidget/Tiles/default_tile_data.py +0 -0
  63. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/MapWidget/Tiles/pycacheback.py +0 -0
  64. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/MapWidget/Tiles/tile_worker.py +0 -0
  65. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles.py +0 -0
  66. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles_cache.py +0 -0
  67. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/MapWidget/__init__.py +0 -0
  68. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/MapWidget/grid_map_widget.py +0 -0
  69. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/MapWidget/map_events.py +0 -0
  70. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/MapWidget/map_widget.py +0 -0
  71. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/MapWidget/new_line_dialogue.py +0 -0
  72. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/MapWidget/node_widget.py +0 -0
  73. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/Branches/__init__.py +0 -0
  74. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/Branches/dc_line_graphics.py +0 -0
  75. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/Branches/hvdc_graphics.py +0 -0
  76. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_editor.py +0 -0
  77. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics.py +0 -0
  78. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics_template.py +0 -0
  79. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/Branches/series_reactance_graphics.py +0 -0
  80. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/Branches/switch_graphics.py +0 -0
  81. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer2w_graphics.py +0 -0
  82. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_graphics.py +0 -0
  83. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_editor.py +0 -0
  84. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer_taps_editor.py +0 -0
  85. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/Branches/upfc_graphics.py +0 -0
  86. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/Branches/vsc_graphics.py +0 -0
  87. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/Branches/winding_graphics.py +0 -0
  88. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/__init__.py +0 -0
  89. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_node_graphics.py +0 -0
  90. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_p2x_graphics.py +0 -0
  91. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_path_graphics.py +0 -0
  92. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_pump_graphics.py +0 -0
  93. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_turbine_graphics.py +0 -0
  94. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/Injections/__init__.py +0 -0
  95. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/Injections/battery_graphics.py +0 -0
  96. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_editor.py +0 -0
  97. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_graphics.py +0 -0
  98. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/Injections/current_injection_graphics.py +0 -0
  99. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/Injections/external_grid_graphics.py +0 -0
  100. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_editor.py +0 -0
  101. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_graphics.py +0 -0
  102. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/Injections/injections_template_graphics.py +0 -0
  103. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/Injections/load_graphics.py +0 -0
  104. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/Injections/shunt_graphics.py +0 -0
  105. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/Injections/static_generator_graphics.py +0 -0
  106. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/Substation/__init__.py +0 -0
  107. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/Substation/bus_graphics.py +0 -0
  108. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/Substation/busbar_graphics.py +0 -0
  109. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/Substation/cn_graphics.py +0 -0
  110. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/__init__.py +0 -0
  111. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/matplotlibwidget.py +0 -0
  112. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/schematic_widget.py +0 -0
  113. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/SchematicWidget/terminal_item.py +0 -0
  114. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/__init__.py +0 -0
  115. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/base_diagram_widget.py +0 -0
  116. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/diagrams_model.py +0 -0
  117. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/generic_graphics.py +0 -0
  118. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Diagrams/graphics_manager.py +0 -0
  119. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/GeneralDialogues.py +0 -0
  120. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/GridGenerator/__init__.py +0 -0
  121. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/GridGenerator/grid_generator_dialogue.py +0 -0
  122. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/GridGenerator/gui.py +0 -0
  123. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/GridGenerator/icons_rc.py +0 -0
  124. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/GridGenerator/update_gui_file.py +0 -0
  125. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/GuiFunctions.py +0 -0
  126. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/LoadCatalogue/SelectComponents.py +0 -0
  127. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/LoadCatalogue/__init__.py +0 -0
  128. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/LoadCatalogue/catalogue_dialogue.py +0 -0
  129. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/LoadCatalogue/icons_rc.py +0 -0
  130. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/LoadCatalogue/update_gui_file.py +0 -0
  131. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/LoadDesigner/__init__.py +0 -0
  132. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/LoadDesigner/icons_rc.py +0 -0
  133. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/LoadDesigner/load_designer.py +0 -0
  134. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/LoadDesigner/load_designer_ui.py +0 -0
  135. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/LoadDesigner/update_gui_file.py +0 -0
  136. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Main/ConsoleLog.py +0 -0
  137. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Main/ConsoleLogController.py +0 -0
  138. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Main/GridCalMain.py +0 -0
  139. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Main/MainWindow.py +0 -0
  140. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Main/SubClasses/Model/__init__.py +0 -0
  141. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Main/SubClasses/Model/compiled_arrays.py +0 -0
  142. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Main/SubClasses/Model/diagrams.py +0 -0
  143. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Main/SubClasses/Model/objects.py +0 -0
  144. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Main/SubClasses/Model/time_events.py +0 -0
  145. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Main/SubClasses/README.txt +0 -0
  146. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Main/SubClasses/Results/__init__.py +0 -0
  147. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Main/SubClasses/Results/results.py +0 -0
  148. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Main/SubClasses/Scripting/__init__.py +0 -0
  149. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Main/SubClasses/Scripting/python_highlighter.py +0 -0
  150. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Main/SubClasses/Scripting/scripting.py +0 -0
  151. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Main/SubClasses/Server/__init__.py +0 -0
  152. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Main/SubClasses/Server/server.py +0 -0
  153. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Main/SubClasses/Settings/__init__.py +0 -0
  154. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Main/SubClasses/Settings/configuration.py +0 -0
  155. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Main/SubClasses/__init__.py +0 -0
  156. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Main/SubClasses/base_gui.py +0 -0
  157. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Main/__init__.py +0 -0
  158. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Main/icons_rc.py +0 -0
  159. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Main/object_select_window.py +0 -0
  160. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Main/update_gui_file.py +0 -0
  161. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/ProfilesInput/__init__.py +0 -0
  162. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/ProfilesInput/excel_dialog.py +0 -0
  163. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/ProfilesInput/excel_sheet_selection.py +0 -0
  164. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/ProfilesInput/icons_rc.py +0 -0
  165. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/ProfilesInput/models_dialogue.py +0 -0
  166. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/ProfilesInput/profiles_from_data.py +0 -0
  167. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/ProfilesInput/profiles_from_data_gui.py +0 -0
  168. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/ProfilesInput/profiles_from_models_gui.py +0 -0
  169. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/ProfilesInput/update_gui_file.py +0 -0
  170. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/RosetaExplorer/ConsoleWidget.py +0 -0
  171. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/RosetaExplorer/MainWindow.py +0 -0
  172. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/RosetaExplorer/RosetaExplorer.py +0 -0
  173. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/RosetaExplorer/__init__.py +0 -0
  174. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/RosetaExplorer/icons_rc.py +0 -0
  175. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/RosetaExplorer/roseta_objects_model.py +0 -0
  176. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/RosetaExplorer/update_gui_file.py +0 -0
  177. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/SigmaAnalysis/__init__.py +0 -0
  178. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/SigmaAnalysis/gui.py +0 -0
  179. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/SigmaAnalysis/icons_rc.py +0 -0
  180. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/SigmaAnalysis/sigma_analysis_dialogue.py +0 -0
  181. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/SigmaAnalysis/update_gui_file.py +0 -0
  182. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/SolarPowerWizard/__init__.py +0 -0
  183. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/SolarPowerWizard/gui.py +0 -0
  184. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/SolarPowerWizard/icons_rc.py +0 -0
  185. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/SolarPowerWizard/solar_power_wizzard.py +0 -0
  186. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/SolarPowerWizard/update_gui_file.py +0 -0
  187. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/SyncDialogue/__init__.py +0 -0
  188. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/SyncDialogue/gui.py +0 -0
  189. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/SyncDialogue/icons_rc.py +0 -0
  190. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/SyncDialogue/sync_dialogue.py +0 -0
  191. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/SyncDialogue/update_gui_file.py +0 -0
  192. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/SystemScaler/__init__.py +0 -0
  193. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/SystemScaler/icons_rc.py +0 -0
  194. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/SystemScaler/system_scaler.py +0 -0
  195. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/SystemScaler/system_scaler_ui.py +0 -0
  196. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/SystemScaler/update_gui_file.py +0 -0
  197. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/TowerBuilder/__init__.py +0 -0
  198. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/TowerBuilder/gui.py +0 -0
  199. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/TowerBuilder/icons_rc.py +0 -0
  200. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/TowerBuilder/test_.py +0 -0
  201. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/TowerBuilder/update_gui_file.py +0 -0
  202. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/TreeModelViewer/MainWindow.py +0 -0
  203. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/TreeModelViewer/TreeModelViewer.py +0 -0
  204. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/TreeModelViewer/__init__.py +0 -0
  205. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/TreeModelViewer/icons_rc.py +0 -0
  206. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/TreeModelViewer/update_gui_file.py +0 -0
  207. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Visualization/__init__.py +0 -0
  208. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Visualization/visualization.py +0 -0
  209. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Widgets/__init__.py +0 -0
  210. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Widgets/custom_qrangeslider.py +0 -0
  211. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/Widgets/matplotlibwidget.py +0 -0
  212. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/WindPowerWizard/__init__.py +0 -0
  213. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/WindPowerWizard/gui.py +0 -0
  214. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/WindPowerWizard/icons_rc.py +0 -0
  215. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/WindPowerWizard/update_gui_file.py +0 -0
  216. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/WindPowerWizard/wind_power_wizzard.py +0 -0
  217. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/__init__.py +0 -0
  218. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/associations_model.py +0 -0
  219. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/messages.py +0 -0
  220. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/object_model.py +0 -0
  221. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/pandas_model.py +0 -0
  222. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/plot_config.py +0 -0
  223. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/profiles_model.py +0 -0
  224. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/table_view_header_wrap.py +0 -0
  225. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/themes.py +0 -0
  226. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/update_gui_all.py +0 -0
  227. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Gui/update_gui_common.py +0 -0
  228. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/LICENSE.txt +0 -0
  229. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Session/__init__.py +0 -0
  230. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Session/file_handler.py +0 -0
  231. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Session/results_model.py +0 -0
  232. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Session/server_driver.py +0 -0
  233. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Session/session.py +0 -0
  234. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/Session/synchronization_driver.py +0 -0
  235. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/ThirdParty/__init__.py +0 -0
  236. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/ThirdParty/qdarktheme/__init__.py +0 -0
  237. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/ThirdParty/qdarktheme/_color.py +0 -0
  238. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/ThirdParty/qdarktheme/_icon/__init__.py +0 -0
  239. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/ThirdParty/qdarktheme/_icon/icon_engine.py +0 -0
  240. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/ThirdParty/qdarktheme/_icon/svg.py +0 -0
  241. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/ThirdParty/qdarktheme/_main.py +0 -0
  242. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/ThirdParty/qdarktheme/_os_appearance/__init__.py +0 -0
  243. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/__init__.py +0 -0
  244. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/_mac_detect.py +0 -0
  245. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/ThirdParty/qdarktheme/_os_appearance/listener.py +0 -0
  246. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/ThirdParty/qdarktheme/_proxy_style.py +0 -0
  247. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/ThirdParty/qdarktheme/_resources/__init__.py +0 -0
  248. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/ThirdParty/qdarktheme/_resources/colors.py +0 -0
  249. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/ThirdParty/qdarktheme/_resources/palette.py +0 -0
  250. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/ThirdParty/qdarktheme/_resources/standard_icons.py +0 -0
  251. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/ThirdParty/qdarktheme/_resources/stylesheets.py +0 -0
  252. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/ThirdParty/qdarktheme/_resources/svg.py +0 -0
  253. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/ThirdParty/qdarktheme/_style_loader.py +0 -0
  254. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/ThirdParty/qdarktheme/_template/__init__.py +0 -0
  255. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/ThirdParty/qdarktheme/_template/engine.py +0 -0
  256. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/ThirdParty/qdarktheme/_template/filter.py +0 -0
  257. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/ThirdParty/qdarktheme/_util.py +0 -0
  258. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/ThirdParty/qdarktheme/qtpy/QtCore/__init__.py +0 -0
  259. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/ThirdParty/qdarktheme/qtpy/QtGui/__init__.py +0 -0
  260. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/ThirdParty/qdarktheme/qtpy/QtSvg/__init__.py +0 -0
  261. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/ThirdParty/qdarktheme/qtpy/QtWidgets/__init__.py +0 -0
  262. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/ThirdParty/qdarktheme/qtpy/__init__.py +0 -0
  263. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/ThirdParty/qdarktheme/qtpy/qt_compat.py +0 -0
  264. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/ThirdParty/qdarktheme/qtpy/qt_version.py +0 -0
  265. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/ThirdParty/qdarktheme/widget_gallery/__init__.py +0 -0
  266. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/ThirdParty/qdarktheme/widget_gallery/__main__.py +0 -0
  267. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/__init__.py +0 -0
  268. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/dock_ui.py +0 -0
  269. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/frame_ui.py +0 -0
  270. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/icons_ui.py +0 -0
  271. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/mdi_ui.py +0 -0
  272. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/widgets_ui.py +0 -0
  273. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/ThirdParty/qdarktheme/widget_gallery/main_window.py +0 -0
  274. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/__init__.py +0 -0
  275. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/data/__init__.py +0 -0
  276. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/data/cables.csv +0 -0
  277. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/data/sequence_lines.csv +0 -0
  278. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/data/transformers.csv +0 -0
  279. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/data/wires.csv +0 -0
  280. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/templates.py +0 -0
  281. {GridCal-5.1.26 → GridCal-5.1.28}/GridCal/update.py +0 -0
  282. {GridCal-5.1.26 → GridCal-5.1.28}/setup.cfg +0 -0
  283. {GridCal-5.1.26 → GridCal-5.1.28}/setup.py +0 -0
@@ -837,7 +837,7 @@ class IoMain(ConfigurationMain):
837
837
  :return:
838
838
  """
839
839
 
840
- available_results = self.get_available_results()
840
+ available_results = self.get_available_drivers()
841
841
 
842
842
  if len(available_results) > 0:
843
843
 
@@ -851,7 +851,7 @@ class IoMain(ConfigurationMain):
851
851
 
852
852
  self.stuff_running_now.append('export_all')
853
853
  self.export_all_thread_object = exprtdrv.ExportAllThread(circuit=self.circuit,
854
- simulations_list=available_results,
854
+ drivers_list=available_results,
855
855
  file_name=filename)
856
856
 
857
857
  self.export_all_thread_object.progress_signal.connect(self.ui.progressBar.setValue)
@@ -256,7 +256,7 @@ class SimulationsMain(TimeEventsMain):
256
256
 
257
257
  return all_threads
258
258
 
259
- def get_available_results(self):
259
+ def get_available_drivers(self) -> List[DRIVER_OBJECTS]:
260
260
  """
261
261
  Get a list of all the available results' objects
262
262
  :return: list[object]
@@ -539,7 +539,7 @@ class SimulationsMain(TimeEventsMain):
539
539
  # clear results lists
540
540
  self.ui.results_treeView.setModel(None)
541
541
 
542
- available_results = self.get_available_results()
542
+ available_results = self.get_available_drivers()
543
543
  max_steps = 0
544
544
  d = dict()
545
545
  lst = list()
@@ -503,6 +503,9 @@ class ProfileInputGUI(QtWidgets.QDialog):
503
503
  cols = [str(x).strip() for x in self.original_data_frame.columns.values]
504
504
  self.original_data_frame.columns = cols
505
505
 
506
+ # replace NaN
507
+ self.original_data_frame.fillna(0, inplace=True)
508
+
506
509
  # set the profile names list
507
510
  self.profile_names = np.array([str(e).strip() for e in self.original_data_frame.columns.values],
508
511
  dtype=object)
@@ -136,7 +136,7 @@ class TowerBuilderGUI(QtWidgets.QDialog):
136
136
  sel_idx = idx.row()
137
137
 
138
138
  if sel_idx > -1:
139
- selected_wire = self.wires_table.wires[sel_idx].copy()
139
+ selected_wire: Wire = self.wires_table.wires[sel_idx].copy()
140
140
  self.tower_driver.add(WireInTower(selected_wire))
141
141
  else:
142
142
  self.msg('Select a wire in the wires catalogue')
@@ -15,7 +15,7 @@
15
15
  # along with this program; if not, write to the Free Software Foundation,
16
16
  # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
17
 
18
- from typing import Union
18
+ from typing import Union, List
19
19
  from PySide6 import QtCore
20
20
  from GridCalEngine.Devices.Branches.wire import Wire
21
21
  from GridCalEngine.Devices.Branches.overhead_line_type import OverheadLineType, WireInTower
@@ -32,6 +32,9 @@ Typical values of earth
32
32
 
33
33
 
34
34
  class WiresTable(QtCore.QAbstractTableModel):
35
+ """
36
+ Wires table for the tower
37
+ """
35
38
 
36
39
  def __init__(self, parent=None):
37
40
 
@@ -39,13 +42,13 @@ class WiresTable(QtCore.QAbstractTableModel):
39
42
 
40
43
  self.header = ['Name', 'R (Ohm/km)', 'GMR (m)', 'max current (kA)']
41
44
 
42
- self.index_prop = {0: 'name', 1: 'r', 2: 'gmr', 3: 'max_current'}
45
+ # self.index_prop = {0: 'name', 1: 'r', 2: 'GMR', 3: 'max_current'}
43
46
 
44
47
  self.converter = {0: str, 1: float, 2: float, 3: float}
45
48
 
46
49
  self.editable = [True, True, True, True]
47
50
 
48
- self.wires = list()
51
+ self.wires: List[Wire] = list()
49
52
 
50
53
  def add(self, wire: Wire):
51
54
  """
@@ -102,8 +105,17 @@ class WiresTable(QtCore.QAbstractTableModel):
102
105
 
103
106
  if index.isValid():
104
107
  if role == QtCore.Qt.ItemDataRole.DisplayRole:
105
- val = getattr(self.wires[index.row()], self.index_prop[index.column()])
106
- return str(val)
108
+ wire = self.wires[index.row()]
109
+ if index.column() == 0:
110
+ return wire.name
111
+ elif index.column() == 1:
112
+ return str(wire.R)
113
+ elif index.column() == 2:
114
+ return str(wire.GMR)
115
+ elif index.column() == 3:
116
+ return str(wire.max_current)
117
+
118
+ return ""
107
119
  return None
108
120
 
109
121
  def headerData(self,
@@ -122,17 +134,28 @@ class WiresTable(QtCore.QAbstractTableModel):
122
134
  :param value:
123
135
  :param role:
124
136
  """
125
- if self.editable[index.column()]:
126
- wire = self.wires[index.row()]
127
- attr = self.index_prop[index.column()]
128
-
129
- if attr == 'tower_name':
130
- if self.is_used(value):
131
- pass
132
- else:
133
- setattr(wire, attr, self.converter[index.column()](value))
134
- else:
135
- setattr(wire, attr, self.converter[index.column()](value))
137
+ # if self.editable[index.column()]:
138
+ # wire = self.wires[index.row()]
139
+ # # attr = self.index_prop[index.column()]
140
+ #
141
+ # if attr == 'tower_name':
142
+ # if self.is_used(value):
143
+ # pass
144
+ # else:
145
+ # wire.
146
+ # setattr(wire, attr, self.converter[index.column()](value))
147
+ # else:
148
+ # setattr(wire, attr, self.converter[index.column()](value))
149
+ #
150
+ # wire = self.wires[index.row()]
151
+ # if index.column() == 0:
152
+ # return wire.name
153
+ # elif index.column() == 1:
154
+ # return str(wire.R)
155
+ # elif index.column() == 2:
156
+ # return str(wire.GMR)
157
+ # elif index.column() == 3:
158
+ # return str(wire.max_current)
136
159
 
137
160
  return True
138
161
 
@@ -64,7 +64,7 @@ class PluginFunction:
64
64
  - func(self) is then what I wanted to lambda in the first place
65
65
  """
66
66
  func = self.function_ptr
67
- return lambda e, func=func: func(gui_instance) # This is not an error, it is correct
67
+ return lambda e=True, func=func: func(gui_instance) # This is not an error, it is correct
68
68
 
69
69
  def to_dict(self) -> Dict[str, str]:
70
70
  """
@@ -0,0 +1,80 @@
1
+ # GridCal
2
+ # Copyright (C) 2015 - 2024 Santiago Peñate Vera
3
+ #
4
+ # This program is free software; you can redistribute it and/or
5
+ # modify it under the terms of the GNU Lesser General Public
6
+ # License as published by the Free Software Foundation; either
7
+ # version 3 of the License, or (at your option) any later version.
8
+ #
9
+ # This program is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
+ # Lesser General Public License for more details.
13
+ #
14
+ # You should have received a copy of the GNU Lesser General Public License
15
+ # along with this program; if not, write to the Free Software Foundation,
16
+ # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
+
18
+ from typing import List
19
+ from PySide6.QtCore import QThread, Signal
20
+ from GridCalEngine.IO.gridcal.results_export import export_drivers
21
+ from GridCalEngine.Devices.multi_circuit import MultiCircuit
22
+ from GridCalEngine.Simulations.types import DRIVER_OBJECTS
23
+ from GridCalEngine.basic_structures import Logger
24
+
25
+
26
+ class ExportAllThread(QThread):
27
+ """
28
+ ExportAllThread
29
+ """
30
+ progress_signal = Signal(float)
31
+ progress_text = Signal(str)
32
+ done_signal = Signal()
33
+
34
+ def __init__(self, circuit: MultiCircuit, drivers_list: List[DRIVER_OBJECTS], file_name: str):
35
+ """
36
+ Constructor
37
+ :param circuit: Grid circuit
38
+ :param drivers_list: list of GridCal simulation drivers
39
+ :param file_name: name of the file where to save (.zip)
40
+ """
41
+ QThread.__init__(self)
42
+
43
+ self.circuit: MultiCircuit = circuit
44
+
45
+ self.drivers_list: List[DRIVER_OBJECTS] = drivers_list
46
+
47
+ self.file_name: str = file_name
48
+
49
+ self.valid: bool = False
50
+
51
+ self.logger = Logger()
52
+
53
+ self.error_msg: str = ""
54
+
55
+ self.__cancel__ = False
56
+
57
+ def run(self) -> None:
58
+ """
59
+ run the file save procedure
60
+ """
61
+
62
+ # try:
63
+ export_drivers(drivers_list=self.drivers_list,
64
+ file_name=self.file_name,
65
+ text_func=self.progress_text.emit,
66
+ progress_func=self.progress_signal.emit,
67
+ logger=self.logger)
68
+
69
+ self.valid = True
70
+
71
+ # post events
72
+ self.progress_text.emit('Done!')
73
+
74
+ self.done_signal.emit()
75
+
76
+ def cancel(self):
77
+ """
78
+ Cancel progress
79
+ """
80
+ self.__cancel__ = True
@@ -16,7 +16,7 @@ import datetime
16
16
  _current_year_ = datetime.datetime.now().year
17
17
 
18
18
  # do not forget to keep a three-number version!!!
19
- __GridCal_VERSION__ = "5.1.26"
19
+ __GridCal_VERSION__ = "5.1.28"
20
20
 
21
21
  url = 'https://github.com/SanPen/GridCal'
22
22
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: GridCal
3
- Version: 5.1.26
3
+ Version: 5.1.28
4
4
  Summary: GridCal is a Power Systems simulation program intended for professional use and research
5
5
  Home-page: https://github.com/SanPen/GridCal
6
6
  Author: Santiago Peñate Vera et. Al.
@@ -1,117 +0,0 @@
1
- # GridCal
2
- # Copyright (C) 2015 - 2024 Santiago Peñate Vera
3
- #
4
- # This program is free software; you can redistribute it and/or
5
- # modify it under the terms of the GNU Lesser General Public
6
- # License as published by the Free Software Foundation; either
7
- # version 3 of the License, or (at your option) any later version.
8
- #
9
- # This program is distributed in the hope that it will be useful,
10
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
- # Lesser General Public License for more details.
13
- #
14
- # You should have received a copy of the GNU Lesser General Public License
15
- # along with this program; if not, write to the Free Software Foundation,
16
- # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
- import os
18
- from io import StringIO
19
- import zipfile
20
- from PySide6.QtCore import QThread, Signal
21
-
22
- from GridCalEngine.basic_structures import Logger
23
-
24
-
25
- class ExportAllThread(QThread):
26
- progress_signal = Signal(float)
27
- progress_text = Signal(str)
28
- done_signal = Signal()
29
-
30
- def __init__(self, circuit, simulations_list, file_name):
31
- """
32
- Constructor
33
- :param simulations_list: list of GridCal simulation drivers
34
- :param file_name: name of the file where to save (.zip)
35
- """
36
- QThread.__init__(self)
37
-
38
- self.circuit = circuit
39
-
40
- self.simulations_list = simulations_list
41
-
42
- self.file_name = file_name
43
-
44
- self.valid = False
45
-
46
- self.logger = Logger()
47
-
48
- self.error_msg = ''
49
-
50
- self.__cancel__ = False
51
-
52
- def run(self):
53
- """
54
- run the file save procedure
55
- """
56
-
57
- # try:
58
- path, fname = os.path.split(self.file_name)
59
-
60
- self.progress_text.emit('Flushing ' + fname + ' into ' + fname + '...')
61
-
62
- self.logger = Logger()
63
-
64
- # names_dict = {DeviceType.BusDevice: self.circuit.get_bus_names(),
65
- # DeviceType.BranchDevice: self.circuit.get_branch_names(),
66
- # DeviceType.BusDevice.LoadDevice: self.circuit.get_load_names(),
67
- # DeviceType.BusDevice.GeneratorDevice: self.circuit.get_controlled_generator_names(),
68
- # DeviceType.BusDevice.BatteryDevice: self.circuit.get_battery_names()}
69
-
70
- # open zip file for writing
71
- try:
72
- with zipfile.ZipFile(self.file_name, 'w', zipfile.ZIP_DEFLATED) as myzip:
73
-
74
- n = len(self.simulations_list)
75
-
76
- for k, driver in enumerate(self.simulations_list):
77
-
78
- self.progress_signal.emit((k + 1) / n * 100.0)
79
-
80
- if isinstance(driver.results.available_results, dict):
81
- available_res = [e for tpe, lst in driver.results.available_results.items() for e in lst]
82
- else:
83
- available_res = driver.results.available_results
84
-
85
- for available_result in available_res:
86
-
87
- # ge the result type definition
88
- result_name, device_type = available_result.value
89
-
90
- self.progress_text.emit('flushing ' + driver.results.name + ' ' + result_name)
91
-
92
- # save the DataFrame to the buffer
93
- mdl = driver.results.mdl(result_type=available_result)
94
-
95
- if mdl is not None:
96
- with StringIO() as buffer:
97
- filename = driver.results.name + ' ' + result_name + '.csv'
98
- try:
99
- mdl.save_to_csv(buffer)
100
- myzip.writestr(filename, buffer.getvalue())
101
- except ValueError:
102
- self.logger.add_error('Value error', filename)
103
- else:
104
- self.logger.add_info('No results for ' + driver.results.name + ' - ' + result_name)
105
-
106
- except PermissionError:
107
- self.logger.add('Permission error.\nDo you have the file open?')
108
-
109
- self.valid = True
110
-
111
- # post events
112
- self.progress_text.emit('Done!')
113
-
114
- self.done_signal.emit()
115
-
116
- def cancel(self):
117
- self.__cancel__ = True