GridCal 5.3.39__tar.gz → 5.3.41__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 (291) hide show
  1. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/ExecuteGridCal.py +5 -3
  2. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/Editors/line_editor.py +0 -2
  3. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_segment.py +1 -1
  4. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/MapWidget/Substation/substation_graphic_item.py +4 -12
  5. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/MapWidget/grid_map_widget.py +6 -24
  6. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Main/SubClasses/io.py +24 -12
  7. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Main/SubClasses/simulations.py +2 -2
  8. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/TowerBuilder/LineBuilderDialogue.py +5 -4
  9. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/TowerBuilder/table_models.py +6 -2
  10. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Session/session.py +1 -92
  11. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/__version__.py +1 -1
  12. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/update.py +30 -18
  13. {gridcal-5.3.39 → gridcal-5.3.41}/PKG-INFO +1 -1
  14. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/AboutDialogue/__init__.py +0 -0
  15. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/AboutDialogue/about_dialogue.py +0 -0
  16. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/AboutDialogue/gui.py +0 -0
  17. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/AboutDialogue/icons_rc.py +0 -0
  18. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/AboutDialogue/update_gui_file.py +0 -0
  19. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Analysis/AnalysisDialogue.py +0 -0
  20. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Analysis/__init__.py +0 -0
  21. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Analysis/gui.py +0 -0
  22. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Analysis/icons_rc.py +0 -0
  23. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Analysis/object_plot_analysis.py +0 -0
  24. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Analysis/update_gui_file.py +0 -0
  25. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/CascadingSteps/__init__.py +0 -0
  26. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/CascadingSteps/cascading_steps.py +0 -0
  27. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/CascadingSteps/gui.py +0 -0
  28. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/CascadingSteps/update_gui_file.py +0 -0
  29. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/ContingencyPlanner/__init__.py +0 -0
  30. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/ContingencyPlanner/contingency_planner_dialogue.py +0 -0
  31. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/ContingencyPlanner/gui.py +0 -0
  32. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/ContingencyPlanner/icons_rc.py +0 -0
  33. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/ContingencyPlanner/update_gui_file.py +0 -0
  34. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/CoordinatesInput/__init__.py +0 -0
  35. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/CoordinatesInput/coordinates_dialogue.py +0 -0
  36. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/CoordinatesInput/gui.py +0 -0
  37. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/CoordinatesInput/icons_rc.py +0 -0
  38. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/CoordinatesInput/update_gui_file.py +0 -0
  39. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/Editors/__init__.py +0 -0
  40. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/Editors/controllable_shunt_editor.py +0 -0
  41. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/Editors/generator_editor.py +0 -0
  42. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/Editors/new_line_dialogue.py +0 -0
  43. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/Editors/transformer3w_editor.py +0 -0
  44. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/Editors/transformer_editor.py +0 -0
  45. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/Editors/transformer_taps_editor.py +0 -0
  46. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/MapWidget/Branches/__init__.py +0 -0
  47. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/MapWidget/Branches/line_location_graphic_item.py +0 -0
  48. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/MapWidget/Branches/map_ac_line.py +0 -0
  49. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/MapWidget/Branches/map_dc_line.py +0 -0
  50. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/MapWidget/Branches/map_fluid_path.py +0 -0
  51. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/MapWidget/Branches/map_hvdc_line.py +0 -0
  52. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/MapWidget/Branches/map_line_container.py +0 -0
  53. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/MapWidget/Substation/__init__.py +0 -0
  54. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/MapWidget/Substation/node_template.py +0 -0
  55. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/MapWidget/Substation/voltage_level_graphic_item.py +0 -0
  56. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/__init__.py +0 -0
  57. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/blue_marble.py +0 -0
  58. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/MapWidget/Tiles/TileProviders/cartodb.py +0 -0
  59. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/MapWidget/Tiles/__init__.py +0 -0
  60. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/MapWidget/Tiles/base_tiles.py +0 -0
  61. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/MapWidget/Tiles/default_tile_data.py +0 -0
  62. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/MapWidget/Tiles/pycacheback.py +0 -0
  63. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/MapWidget/Tiles/tile_worker.py +0 -0
  64. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles.py +0 -0
  65. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/MapWidget/Tiles/tiles_cache.py +0 -0
  66. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/MapWidget/__init__.py +0 -0
  67. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/MapWidget/map_widget.py +0 -0
  68. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/SchematicWidget/Branches/__init__.py +0 -0
  69. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/SchematicWidget/Branches/dc_line_graphics.py +0 -0
  70. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/SchematicWidget/Branches/hvdc_graphics.py +0 -0
  71. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics.py +0 -0
  72. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/SchematicWidget/Branches/line_graphics_template.py +0 -0
  73. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/SchematicWidget/Branches/series_reactance_graphics.py +0 -0
  74. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/SchematicWidget/Branches/switch_graphics.py +0 -0
  75. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer2w_graphics.py +0 -0
  76. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/SchematicWidget/Branches/transformer3w_graphics.py +0 -0
  77. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/SchematicWidget/Branches/upfc_graphics.py +0 -0
  78. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/SchematicWidget/Branches/vsc_graphics.py +0 -0
  79. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/SchematicWidget/Branches/winding_graphics.py +0 -0
  80. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/__init__.py +0 -0
  81. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_node_graphics.py +0 -0
  82. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_p2x_graphics.py +0 -0
  83. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_path_graphics.py +0 -0
  84. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_pump_graphics.py +0 -0
  85. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/SchematicWidget/Fluid/fluid_turbine_graphics.py +0 -0
  86. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/SchematicWidget/Injections/__init__.py +0 -0
  87. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/SchematicWidget/Injections/battery_graphics.py +0 -0
  88. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/SchematicWidget/Injections/controllable_shunt_graphics.py +0 -0
  89. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/SchematicWidget/Injections/current_injection_graphics.py +0 -0
  90. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/SchematicWidget/Injections/external_grid_graphics.py +0 -0
  91. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/SchematicWidget/Injections/generator_graphics.py +0 -0
  92. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/SchematicWidget/Injections/injections_template_graphics.py +0 -0
  93. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/SchematicWidget/Injections/load_graphics.py +0 -0
  94. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/SchematicWidget/Injections/shunt_graphics.py +0 -0
  95. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/SchematicWidget/Injections/static_generator_graphics.py +0 -0
  96. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/SchematicWidget/Substation/__init__.py +0 -0
  97. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/SchematicWidget/Substation/bus_graphics.py +0 -0
  98. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/SchematicWidget/Substation/busbar_graphics.py +0 -0
  99. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/SchematicWidget/Substation/cn_graphics.py +0 -0
  100. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/SchematicWidget/__init__.py +0 -0
  101. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/SchematicWidget/matplotlibwidget.py +0 -0
  102. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/SchematicWidget/schematic_widget.py +0 -0
  103. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/SchematicWidget/terminal_item.py +0 -0
  104. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/__init__.py +0 -0
  105. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/base_diagram_widget.py +0 -0
  106. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/diagrams_model.py +0 -0
  107. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/generic_graphics.py +0 -0
  108. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Diagrams/graphics_manager.py +0 -0
  109. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/GridGenerator/__init__.py +0 -0
  110. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/GridGenerator/grid_generator_dialogue.py +0 -0
  111. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/GridGenerator/gui.py +0 -0
  112. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/GridGenerator/icons_rc.py +0 -0
  113. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/GridGenerator/update_gui_file.py +0 -0
  114. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/GridMerge/__init__.py +0 -0
  115. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/GridMerge/build_diff_tree.py +0 -0
  116. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/GridMerge/demo_code.py +0 -0
  117. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/GridMerge/demo_code2.py +0 -0
  118. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/GridMerge/demo_code3.py +0 -0
  119. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/GridMerge/demo_code4.py +0 -0
  120. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/GridMerge/grid_diff.py +0 -0
  121. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/GridMerge/grid_diff_gui.py +0 -0
  122. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/GridMerge/grid_merge.py +0 -0
  123. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/GridMerge/grid_merge_gui.py +0 -0
  124. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/GridMerge/update_gui_file.py +0 -0
  125. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/LoadCatalogue/SelectComponents.py +0 -0
  126. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/LoadCatalogue/__init__.py +0 -0
  127. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/LoadCatalogue/catalogue_dialogue.py +0 -0
  128. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/LoadCatalogue/icons_rc.py +0 -0
  129. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/LoadCatalogue/update_gui_file.py +0 -0
  130. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/LoadDesigner/__init__.py +0 -0
  131. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/LoadDesigner/icons_rc.py +0 -0
  132. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/LoadDesigner/load_designer.py +0 -0
  133. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/LoadDesigner/load_designer_ui.py +0 -0
  134. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/LoadDesigner/update_gui_file.py +0 -0
  135. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Main/ConsoleLog.py +0 -0
  136. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Main/ConsoleLogController.py +0 -0
  137. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Main/GridCalMain.py +0 -0
  138. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Main/MainWindow.py +0 -0
  139. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Main/SubClasses/Model/__init__.py +0 -0
  140. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Main/SubClasses/Model/compiled_arrays.py +0 -0
  141. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Main/SubClasses/Model/diagrams.py +0 -0
  142. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Main/SubClasses/Model/objects.py +0 -0
  143. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Main/SubClasses/Model/time_events.py +0 -0
  144. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Main/SubClasses/README.txt +0 -0
  145. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Main/SubClasses/Results/__init__.py +0 -0
  146. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Main/SubClasses/Results/results.py +0 -0
  147. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Main/SubClasses/Scripting/__init__.py +0 -0
  148. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Main/SubClasses/Scripting/scripting.py +0 -0
  149. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Main/SubClasses/Server/__init__.py +0 -0
  150. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Main/SubClasses/Server/server.py +0 -0
  151. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Main/SubClasses/Settings/__init__.py +0 -0
  152. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Main/SubClasses/Settings/configuration.py +0 -0
  153. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Main/SubClasses/__init__.py +0 -0
  154. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Main/SubClasses/base_gui.py +0 -0
  155. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Main/__init__.py +0 -0
  156. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Main/icons_rc.py +0 -0
  157. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Main/object_select_window.py +0 -0
  158. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Main/update_gui_file.py +0 -0
  159. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/ProfilesInput/__init__.py +0 -0
  160. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/ProfilesInput/excel_dialog.py +0 -0
  161. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/ProfilesInput/excel_sheet_selection.py +0 -0
  162. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/ProfilesInput/icons_rc.py +0 -0
  163. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/ProfilesInput/models_dialogue.py +0 -0
  164. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/ProfilesInput/profile_dialogue.py +0 -0
  165. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/ProfilesInput/profiles_from_data_gui.py +0 -0
  166. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/ProfilesInput/profiles_from_models_gui.py +0 -0
  167. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/ProfilesInput/update_gui_file.py +0 -0
  168. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/RosetaExplorer/MainWindow.py +0 -0
  169. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/RosetaExplorer/RosetaExplorer.py +0 -0
  170. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/RosetaExplorer/__init__.py +0 -0
  171. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/RosetaExplorer/icons_rc.py +0 -0
  172. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/RosetaExplorer/roseta_objects_model.py +0 -0
  173. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/RosetaExplorer/update_gui_file.py +0 -0
  174. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/SigmaAnalysis/__init__.py +0 -0
  175. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/SigmaAnalysis/gui.py +0 -0
  176. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/SigmaAnalysis/icons_rc.py +0 -0
  177. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/SigmaAnalysis/sigma_analysis_dialogue.py +0 -0
  178. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/SigmaAnalysis/update_gui_file.py +0 -0
  179. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/SolarPowerWizard/__init__.py +0 -0
  180. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/SolarPowerWizard/gui.py +0 -0
  181. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/SolarPowerWizard/icons_rc.py +0 -0
  182. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/SolarPowerWizard/solar_power_wizzard.py +0 -0
  183. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/SolarPowerWizard/update_gui_file.py +0 -0
  184. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/SubstationDesigner/__init__.py +0 -0
  185. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/SubstationDesigner/substation_designer.py +0 -0
  186. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/SubstationDesigner/substation_designer_gui.py +0 -0
  187. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/SubstationDesigner/update_gui_file.py +0 -0
  188. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/SyncDialogue/__init__.py +0 -0
  189. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/SyncDialogue/gui.py +0 -0
  190. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/SyncDialogue/icons_rc.py +0 -0
  191. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/SyncDialogue/sync_dialogue.py +0 -0
  192. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/SyncDialogue/update_gui_file.py +0 -0
  193. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/SystemScaler/__init__.py +0 -0
  194. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/SystemScaler/icons_rc.py +0 -0
  195. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/SystemScaler/system_scaler.py +0 -0
  196. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/SystemScaler/system_scaler_ui.py +0 -0
  197. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/SystemScaler/update_gui_file.py +0 -0
  198. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/TowerBuilder/__init__.py +0 -0
  199. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/TowerBuilder/icons_rc.py +0 -0
  200. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/TowerBuilder/tower_builder.py +0 -0
  201. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/TowerBuilder/update_gui_file.py +0 -0
  202. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/TreeModelViewer/MainWindow.py +0 -0
  203. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/TreeModelViewer/TreeModelViewer.py +0 -0
  204. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/TreeModelViewer/__init__.py +0 -0
  205. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/TreeModelViewer/icons_rc.py +0 -0
  206. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/TreeModelViewer/update_gui_file.py +0 -0
  207. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Visualization/__init__.py +0 -0
  208. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Visualization/visualization.py +0 -0
  209. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Widgets/__init__.py +0 -0
  210. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Widgets/custom_qrangeslider.py +0 -0
  211. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/Widgets/matplotlibwidget.py +0 -0
  212. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/WindPowerWizard/__init__.py +0 -0
  213. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/WindPowerWizard/gui.py +0 -0
  214. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/WindPowerWizard/icons_rc.py +0 -0
  215. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/WindPowerWizard/update_gui_file.py +0 -0
  216. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/WindPowerWizard/wind_power_wizzard.py +0 -0
  217. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/__init__.py +0 -0
  218. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/associations_model.py +0 -0
  219. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/general_dialogues.py +0 -0
  220. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/gui_functions.py +0 -0
  221. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/messages.py +0 -0
  222. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/object_model.py +0 -0
  223. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/pandas_model.py +0 -0
  224. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/plot_config.py +0 -0
  225. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/profiles_model.py +0 -0
  226. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/python_console.py +0 -0
  227. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/python_highlighter.py +0 -0
  228. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/results_model.py +0 -0
  229. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/table_view_header_wrap.py +0 -0
  230. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/themes.py +0 -0
  231. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/toast_widget.py +0 -0
  232. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/update_gui_all.py +0 -0
  233. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/update_gui_common.py +0 -0
  234. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Gui/wrappable_table_model.py +0 -0
  235. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/LICENSE.txt +0 -0
  236. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Session/__init__.py +0 -0
  237. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Session/export_results_driver.py +0 -0
  238. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Session/file_handler.py +0 -0
  239. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Session/server_driver.py +0 -0
  240. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/Session/synchronization_driver.py +0 -0
  241. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/ThirdParty/__init__.py +0 -0
  242. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/ThirdParty/qdarktheme/__init__.py +0 -0
  243. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/ThirdParty/qdarktheme/_color.py +0 -0
  244. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/ThirdParty/qdarktheme/_icon/__init__.py +0 -0
  245. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/ThirdParty/qdarktheme/_icon/icon_engine.py +0 -0
  246. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/ThirdParty/qdarktheme/_icon/svg.py +0 -0
  247. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/ThirdParty/qdarktheme/_main.py +0 -0
  248. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/ThirdParty/qdarktheme/_os_appearance/__init__.py +0 -0
  249. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/__init__.py +0 -0
  250. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/ThirdParty/qdarktheme/_os_appearance/_accent/_mac_detect.py +0 -0
  251. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/ThirdParty/qdarktheme/_os_appearance/listener.py +0 -0
  252. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/ThirdParty/qdarktheme/_proxy_style.py +0 -0
  253. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/ThirdParty/qdarktheme/_resources/__init__.py +0 -0
  254. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/ThirdParty/qdarktheme/_resources/colors.py +0 -0
  255. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/ThirdParty/qdarktheme/_resources/palette.py +0 -0
  256. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/ThirdParty/qdarktheme/_resources/standard_icons.py +0 -0
  257. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/ThirdParty/qdarktheme/_resources/stylesheets.py +0 -0
  258. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/ThirdParty/qdarktheme/_resources/svg.py +0 -0
  259. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/ThirdParty/qdarktheme/_style_loader.py +0 -0
  260. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/ThirdParty/qdarktheme/_template/__init__.py +0 -0
  261. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/ThirdParty/qdarktheme/_template/engine.py +0 -0
  262. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/ThirdParty/qdarktheme/_template/filter.py +0 -0
  263. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/ThirdParty/qdarktheme/_util.py +0 -0
  264. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/ThirdParty/qdarktheme/qtpy/QtCore/__init__.py +0 -0
  265. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/ThirdParty/qdarktheme/qtpy/QtGui/__init__.py +0 -0
  266. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/ThirdParty/qdarktheme/qtpy/QtSvg/__init__.py +0 -0
  267. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/ThirdParty/qdarktheme/qtpy/QtWidgets/__init__.py +0 -0
  268. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/ThirdParty/qdarktheme/qtpy/__init__.py +0 -0
  269. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/ThirdParty/qdarktheme/qtpy/qt_compat.py +0 -0
  270. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/ThirdParty/qdarktheme/qtpy/qt_version.py +0 -0
  271. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/ThirdParty/qdarktheme/widget_gallery/__init__.py +0 -0
  272. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/ThirdParty/qdarktheme/widget_gallery/__main__.py +0 -0
  273. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/__init__.py +0 -0
  274. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/dock_ui.py +0 -0
  275. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/frame_ui.py +0 -0
  276. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/icons_ui.py +0 -0
  277. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/mdi_ui.py +0 -0
  278. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/ThirdParty/qdarktheme/widget_gallery/_ui/widgets_ui.py +0 -0
  279. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/ThirdParty/qdarktheme/widget_gallery/main_window.py +0 -0
  280. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/__init__.py +0 -0
  281. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/data/GridCal.ico +0 -0
  282. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/data/GridCal.svg +0 -0
  283. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/data/__init__.py +0 -0
  284. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/data/cables.csv +0 -0
  285. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/data/sequence_lines.csv +0 -0
  286. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/data/transformers.csv +0 -0
  287. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/data/wires.csv +0 -0
  288. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/plugins.py +0 -0
  289. {gridcal-5.3.39 → gridcal-5.3.41}/GridCal/templates.py +0 -0
  290. {gridcal-5.3.39 → gridcal-5.3.41}/setup.cfg +0 -0
  291. {gridcal-5.3.39 → gridcal-5.3.41}/setup.py +0 -0
@@ -10,10 +10,13 @@ PACKAGE_PARENT = '..'
10
10
  SCRIPT_DIR = os.path.dirname(os.path.realpath(os.path.join(os.getcwd(), os.path.expanduser(__file__))))
11
11
  sys.path.append(os.path.normpath(os.path.join(SCRIPT_DIR, PACKAGE_PARENT)))
12
12
  from GridCal.__version__ import about_msg
13
+
14
+ # NOTE: For some reason I cannot begin to comprehend, the activation fails on windows if called before the GUI...
15
+ import GridCalEngine.Utils.ThirdParty.gslv.gslv_activation
16
+
13
17
  from GridCal.Gui.Main.GridCalMain import runGridCal
14
- import platform
15
18
 
16
- os.environ['JUPYTER_PLATFORM_DIRS'] = "1"
19
+ import platform
17
20
 
18
21
  if platform.system() == 'Windows':
19
22
  # this makes the icon display properly under windows
@@ -29,4 +32,3 @@ if __name__ == "__main__":
29
32
  # os.environ["QT_QPA_PLATFORMTHEME"] = "qt5ct" # this forces QT-only menus and look and feel
30
33
 
31
34
  runGridCal()
32
-
@@ -238,8 +238,6 @@ class LineEditor(QDialog):
238
238
  self.line.set_length(val=length)
239
239
  self.line.set_circuit_idx(val=int(self.circuit_idx.value()), obj=self.selected_template)
240
240
  template = self.selected_template
241
- if isinstance(template, OverheadLineType):
242
- template.compute()
243
241
  self.line.apply_template(obj=template, Sbase=self.Sbase, freq=self.frequency)
244
242
  self.line.enable_auto_updates()
245
243
  self.accept()
@@ -317,7 +317,7 @@ class MapLineSegment(QGraphicsLineItem):
317
317
  x, y = scene_pos.x(), scene_pos.y()
318
318
  lat, lon = self.editor.to_lat_lon(x=x, y=y)
319
319
  add_menu_entry(menu=menu,
320
- text="Open in google earth",
320
+ text="Open in Street view",
321
321
  function_ptr=lambda: open_street_view(lat, lon),
322
322
  icon_path=":/Icons/icons/map.svg")
323
323
 
@@ -656,18 +656,10 @@ class SubstationGraphicItem(NodeTemplate, QGraphicsRectItem):
656
656
  line.bus_to = recipient_buses[line.bus_to.Vnom]
657
657
  line_graphic = self.editor.graphics_manager.query(elm=line)
658
658
  line_graphic.calculate_total_length()
659
- for load in self.editor.circuit.loads:
660
- if load.bus in removed_buses:
661
- load.bus = recipient_buses[load.bus.Vnom]
662
- for gen in self.editor.circuit.generators:
663
- if gen.bus in removed_buses:
664
- gen.bus = recipient_buses[gen.bus.Vnom]
665
- for sh in self.editor.circuit.shunts:
666
- if sh.bus in removed_buses:
667
- sh.bus = recipient_buses[sh.bus.Vnom]
668
- for csh in self.editor.circuit.controllable_shunts:
669
- if csh.bus in removed_buses:
670
- csh.bus = recipient_buses[csh.bus.Vnom]
659
+
660
+ for inj in self.editor.circuit.get_injection_devices_iter():
661
+ if inj.bus in removed_buses:
662
+ inj.bus = recipient_buses[inj.bus.Vnom]
671
663
 
672
664
  for bus in removed_buses:
673
665
  self.editor.circuit.delete_bus(obj=bus, delete_associated=False)
@@ -1807,7 +1807,7 @@ class GridMapWidget(BaseDiagramWidget):
1807
1807
  bus_from=bus_from, bus_to=bus_to,
1808
1808
  length=line1.length + line2.length, circuit_idx=circ_idx)
1809
1809
  new_line.color = line1.color
1810
- line1.template.compute()
1810
+
1811
1811
  new_line.apply_template(obj=line1.template, Sbase=self.circuit.Sbase, freq=self.circuit.fBase)
1812
1812
 
1813
1813
  previous_coordinates = [0, 0]
@@ -2058,14 +2058,8 @@ class GridMapWidget(BaseDiagramWidget):
2058
2058
  protection_rating_factor=line_api.protection_rating_factor,
2059
2059
  circuit_idx=line_api.circuit_idx)
2060
2060
 
2061
- if isinstance(line_api.template, OverheadLineType):
2062
- template = line_api.template
2063
- template.compute()
2064
- else:
2065
- template = line_api.template
2066
-
2067
- line1.apply_template(template, Sbase=self.circuit.Sbase, freq=self.circuit.fBase)
2068
- line2.apply_template(template, Sbase=self.circuit.Sbase, freq=self.circuit.fBase)
2061
+ line1.apply_template(line_api.template, Sbase=self.circuit.Sbase, freq=self.circuit.fBase)
2062
+ line2.apply_template(line_api.template, Sbase=self.circuit.Sbase, freq=self.circuit.fBase)
2069
2063
 
2070
2064
  # Copy other properties from the original line
2071
2065
  if hasattr(line_api, 'color'):
@@ -2490,14 +2484,8 @@ class GridMapWidget(BaseDiagramWidget):
2490
2484
  protection_rating_factor=line_api.protection_rating_factor,
2491
2485
  circuit_idx=line_api.circuit_idx)
2492
2486
 
2493
- if isinstance(line_api.template, OverheadLineType):
2494
- template = line_api.template
2495
- template.compute()
2496
- else:
2497
- template=line_api.template
2498
-
2499
- line1.apply_template(template, Sbase=self.circuit.Sbase, freq=self.circuit.fBase)
2500
- line2.apply_template(template, Sbase=self.circuit.Sbase, freq=self.circuit.fBase)
2487
+ line1.apply_template(line_api.template, Sbase=self.circuit.Sbase, freq=self.circuit.fBase)
2488
+ line2.apply_template(line_api.template, Sbase=self.circuit.Sbase, freq=self.circuit.fBase)
2501
2489
 
2502
2490
  # Copy other properties from the original line
2503
2491
  if hasattr(line_api, 'color'):
@@ -2538,13 +2526,7 @@ class GridMapWidget(BaseDiagramWidget):
2538
2526
  protection_rating_factor=line_api.protection_rating_factor,
2539
2527
  circuit_idx=line_api.circuit_idx)
2540
2528
 
2541
- if isinstance(line_api.template, OverheadLineType):
2542
- template = line_api.template
2543
- template.compute()
2544
- else:
2545
- template = line_api.template
2546
-
2547
- connection_line.apply_template(template, Sbase=self.circuit.Sbase, freq=self.circuit.fBase)
2529
+ connection_line.apply_template(line_api.template, Sbase=self.circuit.Sbase, freq=self.circuit.fBase)
2548
2530
 
2549
2531
  # Copy other properties from the original line
2550
2532
  if hasattr(line_api, 'color'):
@@ -26,6 +26,7 @@ from GridCalEngine.Devices.multi_circuit import MultiCircuit
26
26
  from GridCalEngine.Compilers.circuit_to_newton_pa import NEWTON_PA_AVAILABLE
27
27
  from GridCalEngine.Compilers.circuit_to_pgm import PGM_AVAILABLE
28
28
  from GridCalEngine.Compilers.circuit_to_data import compile_numerical_circuit_at
29
+ from GridCalEngine.IO.cim.cgmes.cgmes_export import get_available_cgmes_profiles
29
30
  from GridCalEngine.enumerations import CGMESVersions, SimulationTypes
30
31
  from GridCalEngine.IO.gridcal.contingency_parser import import_contingencies_from_json, export_contingencies_json_file
31
32
  from GridCalEngine.IO.cim.cgmes.cgmes_enums import cgmesProfile
@@ -61,15 +62,9 @@ class IoMain(ConfigurationMain):
61
62
  CGMESVersions.v3_0_0]}
62
63
  self.ui.cgmes_version_comboBox.setModel(gf.get_list_model(list(self.cgmes_version_dict.keys())))
63
64
 
64
- self.cgmes_profiles_dict = {x.value: x for x in [cgmesProfile.EQ,
65
- cgmesProfile.OP,
66
- cgmesProfile.SC,
67
- cgmesProfile.TP,
68
- cgmesProfile.SV,
69
- cgmesProfile.SSH,
70
- cgmesProfile.DY,
71
- cgmesProfile.DL,
72
- cgmesProfile.GL]}
65
+ self.cgmes_profiles_dict = {key: cgmesProfile(key) for key, val in
66
+ get_available_cgmes_profiles(cgmes_version=CGMESVersions.v2_4_15).items()}
67
+
73
68
  self.ui.cgmes_profiles_listView.setModel(gf.get_list_model(list(self.cgmes_profiles_dict.keys()),
74
69
  checks=True, check_value=True))
75
70
 
@@ -95,6 +90,9 @@ class IoMain(ConfigurationMain):
95
90
  self.ui.exportSimulationDataButton.clicked.connect(self.export_simulation_data)
96
91
  self.ui.loadResultFromDiskButton.clicked.connect(self.load_results_driver)
97
92
 
93
+ # change
94
+ self.ui.cgmes_version_comboBox.currentTextChanged.connect(self.cgmes_version_change)
95
+
98
96
  def dragEnterEvent(self, event):
99
97
  """
100
98
 
@@ -410,6 +408,11 @@ class IoMain(ConfigurationMain):
410
408
  self.rosetta_gui.set_logger(self.open_file_thread_object.cgmes_logger)
411
409
  self.rosetta_gui.update_combo_boxes()
412
410
  self.rosetta_gui.show()
411
+ else:
412
+ # else, show the logger if it is necessary
413
+ if len(self.open_file_thread_object.logger) > 0:
414
+ dlg = LogsDialogue('Open CGMES file logger', self.open_file_thread_object.logger)
415
+ dlg.exec()
413
416
 
414
417
  else:
415
418
  # else, show the logger if it is necessary
@@ -573,8 +576,6 @@ class IoMain(ConfigurationMain):
573
576
  else:
574
577
  return
575
578
 
576
-
577
-
578
579
  def export_circuit_differential(self):
579
580
  """
580
581
  Prompt to export a diff of this circuit and a base one
@@ -594,7 +595,6 @@ class IoMain(ConfigurationMain):
594
595
  dlg = GridDiffDialogue(grid=self.circuit)
595
596
  dlg.exec()
596
597
 
597
-
598
598
  # def post_create_circuit_differential(self):
599
599
  # """
600
600
  #
@@ -1152,3 +1152,15 @@ class IoMain(ConfigurationMain):
1152
1152
  self.setup_time_sliders()
1153
1153
  self.get_circuit_snapshot_datetime()
1154
1154
  self.change_theme_mode()
1155
+
1156
+ def cgmes_version_change(self):
1157
+ """
1158
+ On GUI cgmes version change, display only the supported profiles
1159
+ """
1160
+ cgmes_version = self.cgmes_version_dict[self.ui.cgmes_version_comboBox.currentText()]
1161
+
1162
+ self.cgmes_profiles_dict = {key: cgmesProfile(key) for key, val in
1163
+ get_available_cgmes_profiles(cgmes_version=cgmes_version).items()}
1164
+
1165
+ self.ui.cgmes_profiles_listView.setModel(gf.get_list_model(list(self.cgmes_profiles_dict.keys()),
1166
+ checks=True, check_value=True))
@@ -310,7 +310,7 @@ class SimulationsMain(TimeEventsMain):
310
310
  self.ui.solver_comboBox.setModel(gf.get_list_model(list(self.solvers_dict.keys())))
311
311
  self.ui.solver_comboBox.setCurrentIndex(0)
312
312
 
313
- mip_solvers = get_newton_mip_solvers_list()
313
+ mip_solvers = get_available_mip_solvers()
314
314
  self.ui.mip_solver_comboBox.setModel(gf.get_list_model(mip_solvers))
315
315
 
316
316
  elif eng == EngineType.NewtonPA:
@@ -1946,7 +1946,7 @@ class SimulationsMain(TimeEventsMain):
1946
1946
  """
1947
1947
  # get the power flow options from the GUI
1948
1948
  solver = self.lp_solvers_dict[self.ui.lpf_solver_comboBox.currentText()]
1949
- mip_solver = self.mip_solvers_dict[self.ui.mip_solver_comboBox.currentText()]
1949
+ mip_solver = self.mip_solvers_dict.get(self.ui.mip_solver_comboBox.currentText(), MIPSolvers.HIGHS.value)
1950
1950
  time_grouping = self.opf_time_groups[self.ui.opf_time_grouping_comboBox.currentText()]
1951
1951
  zonal_grouping = self.opf_zonal_groups[self.ui.opfZonalGroupByComboBox.currentText()]
1952
1952
  pf_options = self.get_selected_power_flow_options()
@@ -36,6 +36,11 @@ class TowerBuilderGUI(QtWidgets.QDialog):
36
36
  # create the tower driver
37
37
  self.tower_driver = TowerModel(edit_callback=self.compute, tower=tower)
38
38
 
39
+ self.ui.name_lineEdit.setText(self.tower_driver.tower.name)
40
+ self.ui.rho_doubleSpinBox.setValue(self.tower_driver.tower.earth_resistivity)
41
+ self.ui.frequency_doubleSpinBox.setValue(self.tower_driver.tower.frequency)
42
+ self.ui.voltage_doubleSpinBox.setValue(self.tower_driver.tower.Vnom)
43
+
39
44
  if wires_catalogue is not None:
40
45
  for wire in wires_catalogue:
41
46
  self.wires_table.add(wire)
@@ -49,10 +54,6 @@ class TowerBuilderGUI(QtWidgets.QDialog):
49
54
  self.ui.matrixViewComboBox.addItem("Shunt admittance (no neutral) [μS/km]")
50
55
  self.ui.matrixViewComboBox.addItem("Shunt admittance (sequence) [μS/km]")
51
56
 
52
- self.ui.name_lineEdit.setText(self.tower_driver.tower.name)
53
- self.ui.rho_doubleSpinBox.setValue(self.tower_driver.tower.earth_resistivity)
54
- self.ui.frequency_doubleSpinBox.setValue(self.tower_driver.tower.frequency)
55
- self.ui.voltage_doubleSpinBox.setValue(self.tower_driver.tower.Vnom)
56
57
 
57
58
  # set models
58
59
  self.ui.wires_tableView.setModel(self.wires_table)
@@ -267,9 +267,9 @@ class TowerModel(QtCore.QAbstractTableModel):
267
267
  QtCore.QAbstractTableModel.__init__(self)
268
268
 
269
269
  if tower is None:
270
- self.tower = OverheadLineType()
270
+ self._tower = OverheadLineType()
271
271
  else:
272
- self.tower = tower
272
+ self._tower = tower
273
273
 
274
274
  # other properties
275
275
  self.edit_callback = edit_callback
@@ -280,6 +280,10 @@ class TowerModel(QtCore.QAbstractTableModel):
280
280
  self.converter = {0: str, 1: float, 2: float, 3: int, 4: int, 5: str}
281
281
  self.editable_wire = [False, True, True, True, False, False]
282
282
 
283
+ @property
284
+ def tower(self) -> OverheadLineType:
285
+ return self._tower
286
+
283
287
  def __str__(self):
284
288
  return self.tower.name
285
289
 
@@ -3,7 +3,6 @@
3
3
  # file, You can obtain one at https://mozilla.org/MPL/2.0/.
4
4
  # SPDX-License-Identifier: MPL-2.0
5
5
  from __future__ import annotations
6
- import numpy as np
7
6
  from uuid import uuid4
8
7
  import pandas as pd
9
8
  from PySide6.QtCore import QThread, Signal
@@ -11,10 +10,6 @@ from typing import Dict, Union, List, Tuple, Any, Generator
11
10
  from collections.abc import Callable
12
11
  from warnings import warn
13
12
 
14
- from GridCalEngine.Simulations import (ContingencyAnalysisOptions, AvailableTransferCapacityOptions,
15
- ContinuationPowerFlowOptions, ContinuationPowerFlowInput, PowerFlowOptions,
16
- ClusteringAnalysisOptions,
17
- InvestmentsEvaluationOptions)
18
13
  from GridCalEngine.Simulations.ATC.available_transfer_capacity_driver import (AvailableTransferCapacityDriver,
19
14
  AvailableTransferCapacityResults)
20
15
  from GridCalEngine.Simulations.ATC.available_transfer_capacity_ts_driver import (
@@ -41,7 +36,7 @@ from GridCalEngine.Simulations.ShortCircuitStudies.short_circuit_driver import S
41
36
  from GridCalEngine.Simulations.Stochastic.stochastic_power_flow_driver import (StochasticPowerFlowDriver,
42
37
  StochasticPowerFlowResults)
43
38
  from GridCalEngine.Simulations.Clustering.clustering_driver import ClusteringDriver, ClusteringResults
44
- from GridCalEngine.Simulations.Stochastic.blackout_driver import CascadingResults, CascadingDriver
39
+ from GridCalEngine.Simulations.Reliability.blackout_driver import CascadingResults, CascadingDriver
45
40
  from GridCalEngine.Simulations.InputsAnalysis.inputs_analysis_driver import InputsAnalysisResults, InputsAnalysisDriver
46
41
  from GridCalEngine.Simulations.InvestmentsEvaluation.investments_evaluation_driver import (InvestmentsEvaluationDriver,
47
42
  InvestmentsEvaluationResults)
@@ -335,92 +330,6 @@ class SimulationSession:
335
330
 
336
331
  time_indices = data_dict.get('time_indices', grid.get_all_time_indices())
337
332
 
338
- # # get the results' object dictionary
339
- # if study_name == AvailableTransferCapacityDriver.tpe.value:
340
- # drv = AvailableTransferCapacityDriver(grid=grid,
341
- # options=AvailableTransferCapacityOptions())
342
- #
343
- # elif study_name == AvailableTransferCapacityTimeSeriesDriver.tpe.value:
344
- # drv = AvailableTransferCapacityTimeSeriesDriver(grid=grid,
345
- # options=AvailableTransferCapacityOptions(),
346
- # time_indices=time_indices,
347
- # clustering_results=None)
348
- #
349
- # elif study_name == ContingencyAnalysisDriver.tpe.value:
350
- # drv = ContingencyAnalysisDriver(grid=grid,
351
- # options=ContingencyAnalysisOptions())
352
- #
353
- # elif study_name == ContingencyAnalysisTimeSeriesDriver.tpe.value:
354
- # drv = ContingencyAnalysisTimeSeriesDriver(grid=grid,
355
- # options=ContingencyAnalysisOptions(),
356
- # time_indices=time_indices,
357
- # clustering_results=None)
358
- #
359
- # elif study_name == ContinuationPowerFlowDriver.tpe.value:
360
- # n = grid.get_bus_number()
361
- # drv = ContinuationPowerFlowDriver(grid=grid,
362
- # options=ContinuationPowerFlowOptions(),
363
- # inputs=ContinuationPowerFlowInput(
364
- # Sbase=np.zeros(n), Vbase=np.zeros(n), Starget=np.zeros(n)
365
- # ),
366
- # pf_options=PowerFlowOptions(),
367
- # opf_results=None)
368
- #
369
- # elif study_name == LinearAnalysisDriver.tpe.value:
370
- # drv = LinearAnalysisDriver(grid=grid, options=None)
371
- #
372
- # elif study_name == ContinuationPowerFlowDriver.tpe.value:
373
- # drv = LinearAnalysisTimeSeriesDriver(grid=grid,
374
- # options=None,
375
- # time_indices=time_indices,
376
- # clustering_results=None)
377
- #
378
- # elif study_name == OptimalPowerFlowDriver.tpe.value:
379
- # drv = OptimalPowerFlowDriver(grid=grid, options=None)
380
- #
381
- # elif study_name == OptimalPowerFlowTimeSeriesDriver.tpe.value:
382
- # drv = OptimalPowerFlowTimeSeriesDriver(grid=grid,
383
- # options=None,
384
- # time_indices=time_indices,
385
- # clustering_results=None)
386
- #
387
- # elif study_name == NodalCapacityTimeSeriesDriver.tpe.value:
388
- # drv = NodalCapacityTimeSeriesDriver(grid=grid,
389
- # options=None,
390
- # time_indices=time_indices,
391
- # clustering_results=None)
392
- #
393
- # elif study_name == PowerFlowDriver.tpe.value:
394
- # drv = PowerFlowDriver(grid=grid, options=PowerFlowOptions())
395
- #
396
- # elif study_name == PowerFlowTimeSeriesDriver.tpe.value:
397
- # drv = PowerFlowTimeSeriesDriver(grid=grid,
398
- # options=PowerFlowOptions(),
399
- # time_indices=time_indices,
400
- # clustering_results=None)
401
- #
402
- # elif study_name == ShortCircuitDriver.tpe.value:
403
- # drv = ShortCircuitDriver(grid=grid,
404
- # options=None,
405
- # pf_options=None,
406
- # pf_results=None,
407
- # opf_results=None)
408
- #
409
- # elif study_name == StochasticPowerFlowDriver.tpe.value:
410
- # drv = StochasticPowerFlowDriver(grid=grid, options=PowerFlowOptions())
411
- #
412
- # elif study_name == ClusteringDriver.tpe.value:
413
- # drv = ClusteringDriver(grid=grid, options=ClusteringAnalysisOptions(0))
414
- #
415
- # elif study_name == InvestmentsEvaluationDriver.tpe.value:
416
- # drv = InvestmentsEvaluationDriver(grid=grid,
417
- # options=InvestmentsEvaluationOptions(max_eval=0,
418
- # pf_options=PowerFlowOptions()), )
419
- #
420
- # else:
421
- # warn(f"Session {study_name} not implemented for disk retrieval :/")
422
- # return logger
423
-
424
333
  driver_tpe = SimulationTypes(study_name)
425
334
 
426
335
  drv: DRIVER_OBJECTS | None = create_driver(
@@ -6,7 +6,7 @@ import datetime
6
6
  _current_year_ = datetime.datetime.now().year
7
7
 
8
8
  # do not forget to keep a three-number version!!!
9
- __GridCal_VERSION__ = "5.3.39"
9
+ __GridCal_VERSION__ = "5.3.41"
10
10
 
11
11
  url = 'https://github.com/SanPen/GridCal'
12
12
 
@@ -5,30 +5,42 @@
5
5
  from __future__ import annotations
6
6
  from typing import Tuple
7
7
  import subprocess
8
+ import requests
8
9
  import sys
9
10
  import packaging.version as pkg
10
11
  from GridCal.__version__ import __GridCal_VERSION__
11
12
 
12
13
 
13
- def find_latest_version(name: str = 'GridCal') -> str | None:
14
- """
15
- Find the latest version of a package
16
- :param name: name of the Package
17
- :return: version string
18
- """
19
- latest_version = str(subprocess.run([sys.executable, '-m', 'pip',
20
- 'install', f'{name}==random',
21
- '--break-system-packages'],
22
- capture_output=True, text=True))
23
- latest_version = latest_version[latest_version.find('(from versions:') + 15:]
24
- latest_version = latest_version[:latest_version.find(')')]
25
- latest_version = latest_version.replace(' ', '').split(',')[-1]
26
-
27
- if latest_version == 'none':
14
+ # def find_latest_version(name: str = 'GridCal') -> str | None:
15
+ # """
16
+ # Find the latest version of a package
17
+ # :param name: name of the Package
18
+ # :return: version string
19
+ # """
20
+ # latest_version = str(subprocess.run([sys.executable, '-m', 'pip',
21
+ # 'install', f'{name}==random',
22
+ # '--break-system-packages'],
23
+ # capture_output=True, text=True))
24
+ # latest_version = latest_version[latest_version.find('(from versions:') + 15:]
25
+ # latest_version = latest_version[:latest_version.find(')')]
26
+ # latest_version = latest_version.replace(' ', '').split(',')[-1]
27
+ #
28
+ # if latest_version == 'none':
29
+ # return None
30
+ #
31
+ # return latest_version
32
+
33
+
34
+ def find_latest_version(package_name: str = 'GridCal'):
35
+ try:
36
+ url = f"https://pypi.org/pypi/{package_name}/json"
37
+ response = requests.get(url, timeout=5)
38
+ response.raise_for_status()
39
+ data = response.json()
40
+ return data["info"]["version"]
41
+ except Exception:
28
42
  return None
29
43
 
30
- return latest_version
31
-
32
44
 
33
45
  def check_version(name: str = 'GridCal') -> Tuple[int, str]:
34
46
  """
@@ -43,7 +55,7 @@ def check_version(name: str = 'GridCal') -> Tuple[int, str]:
43
55
  +1: we are behind pipy, we can update
44
56
  """
45
57
 
46
- latest_version = find_latest_version(name=name)
58
+ latest_version = find_latest_version(package_name=name)
47
59
 
48
60
  # pipy_version = pkg_resources.parse_version(latest_version)
49
61
  # gc_version = pkg_resources.parse_version(__GridCal_VERSION__)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: GridCal
3
- Version: 5.3.39
3
+ Version: 5.3.41
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.