pypsa 1.2.3__tar.gz → 1.2.4__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 (899) hide show
  1. {pypsa-1.2.3 → pypsa-1.2.4}/.github/workflows/test.yml +47 -13
  2. {pypsa-1.2.3 → pypsa-1.2.4}/LICENSE +1 -1
  3. {pypsa-1.2.3/pypsa.egg-info → pypsa-1.2.4}/PKG-INFO +4 -2
  4. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/imperfect-competition.ipynb +1 -1
  5. {pypsa-1.2.3 → pypsa-1.2.4}/docs/release-notes.md +43 -2
  6. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/power-flow.md +3 -0
  7. {pypsa-1.2.3 → pypsa-1.2.4}/pyproject.toml +6 -0
  8. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/clustering/temporal.py +26 -0
  9. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/common.py +5 -1
  10. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/components/_types/buses.py +1 -1
  11. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/components/_types/carriers.py +1 -1
  12. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/components/_types/generators.py +1 -1
  13. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/components/_types/global_constraints.py +1 -1
  14. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/components/_types/line_types.py +1 -1
  15. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/components/_types/lines.py +1 -1
  16. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/components/_types/links.py +1 -1
  17. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/components/_types/loads.py +1 -1
  18. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/components/_types/processes.py +1 -1
  19. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/components/_types/shapes.py +1 -1
  20. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/components/_types/shunt_impedances.py +1 -1
  21. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/components/_types/storage_units.py +1 -1
  22. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/components/_types/stores.py +1 -1
  23. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/components/_types/sub_networks.py +1 -1
  24. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/components/_types/transformer_types.py +1 -1
  25. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/components/_types/transformers.py +1 -1
  26. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/components/transform.py +4 -3
  27. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/components/types.py +15 -9
  28. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/constants.py +3 -0
  29. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/data/component_attrs/processes.csv +7 -7
  30. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/data/component_attrs/transformers.csv +11 -11
  31. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/network/index.py +7 -0
  32. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/network/io.py +44 -4
  33. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/network/power_flow.py +31 -3
  34. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/network/transform.py +36 -23
  35. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/networks.py +0 -6
  36. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/optimization/common.py +21 -3
  37. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/optimization/constraints.py +21 -26
  38. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/optimization/optimize.py +2 -3
  39. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/plot/maps/static.py +1 -1
  40. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/plot/statistics/base.py +22 -1
  41. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/plot/statistics/charts.py +113 -54
  42. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/plot/statistics/maps.py +1 -1
  43. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/plot/statistics/plotter.py +66 -35
  44. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/plot/statistics/schema.py +84 -53
  45. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/statistics/abstract.py +2 -0
  46. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/statistics/expressions.py +68 -18
  47. {pypsa-1.2.3 → pypsa-1.2.4/pypsa.egg-info}/PKG-INFO +4 -2
  48. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa.egg-info/SOURCES.txt +3 -63
  49. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa.egg-info/requires.txt +2 -0
  50. pypsa-1.2.4/pypsa.egg-info/scm_file_list.json +730 -0
  51. pypsa-1.2.4/pypsa.egg-info/scm_version.json +8 -0
  52. pypsa-1.2.4/test/baseline/test_plot_types_area-curtailment.png +0 -0
  53. pypsa-1.2.4/test/baseline/test_plot_types_area-prices.png +0 -0
  54. pypsa-1.2.4/test/baseline/test_plot_types_area-system_cost.png +0 -0
  55. pypsa-1.2.4/test/baseline/test_plot_types_bar-prices.png +0 -0
  56. pypsa-1.2.4/test/baseline/test_plot_types_bar-system_cost.png +0 -0
  57. pypsa-1.2.4/test/baseline/test_plot_types_box-capacity_factor.png +0 -0
  58. pypsa-1.2.4/test/baseline/test_plot_types_box-capex.png +0 -0
  59. pypsa-1.2.4/test/baseline/test_plot_types_box-curtailment.png +0 -0
  60. pypsa-1.2.4/test/baseline/test_plot_types_box-energy_balance.png +0 -0
  61. pypsa-1.2.4/test/baseline/test_plot_types_box-expanded_capacity.png +0 -0
  62. pypsa-1.2.4/test/baseline/test_plot_types_box-expanded_capex.png +0 -0
  63. pypsa-1.2.4/test/baseline/test_plot_types_box-installed_capacity.png +0 -0
  64. pypsa-1.2.4/test/baseline/test_plot_types_box-installed_capex.png +0 -0
  65. pypsa-1.2.4/test/baseline/test_plot_types_box-market_value.png +0 -0
  66. pypsa-1.2.4/test/baseline/test_plot_types_box-opex.png +0 -0
  67. pypsa-1.2.4/test/baseline/test_plot_types_box-optimal_capacity.png +0 -0
  68. pypsa-1.2.4/test/baseline/test_plot_types_box-prices.png +0 -0
  69. pypsa-1.2.4/test/baseline/test_plot_types_box-revenue.png +0 -0
  70. pypsa-1.2.4/test/baseline/test_plot_types_box-supply.png +0 -0
  71. pypsa-1.2.4/test/baseline/test_plot_types_box-system_cost.png +0 -0
  72. pypsa-1.2.4/test/baseline/test_plot_types_box-transmission.png +0 -0
  73. pypsa-1.2.4/test/baseline/test_plot_types_box-withdrawal.png +0 -0
  74. pypsa-1.2.4/test/baseline/test_plot_types_histogram-capacity_factor.png +0 -0
  75. pypsa-1.2.4/test/baseline/test_plot_types_histogram-capex.png +0 -0
  76. pypsa-1.2.4/test/baseline/test_plot_types_histogram-curtailment.png +0 -0
  77. pypsa-1.2.4/test/baseline/test_plot_types_histogram-energy_balance.png +0 -0
  78. pypsa-1.2.4/test/baseline/test_plot_types_histogram-expanded_capacity.png +0 -0
  79. pypsa-1.2.4/test/baseline/test_plot_types_histogram-expanded_capex.png +0 -0
  80. pypsa-1.2.4/test/baseline/test_plot_types_histogram-installed_capacity.png +0 -0
  81. pypsa-1.2.4/test/baseline/test_plot_types_histogram-installed_capex.png +0 -0
  82. pypsa-1.2.4/test/baseline/test_plot_types_histogram-market_value.png +0 -0
  83. pypsa-1.2.4/test/baseline/test_plot_types_histogram-opex.png +0 -0
  84. pypsa-1.2.4/test/baseline/test_plot_types_histogram-optimal_capacity.png +0 -0
  85. pypsa-1.2.4/test/baseline/test_plot_types_histogram-prices.png +0 -0
  86. pypsa-1.2.4/test/baseline/test_plot_types_histogram-revenue.png +0 -0
  87. pypsa-1.2.4/test/baseline/test_plot_types_histogram-supply.png +0 -0
  88. pypsa-1.2.4/test/baseline/test_plot_types_histogram-system_cost.png +0 -0
  89. pypsa-1.2.4/test/baseline/test_plot_types_histogram-transmission.png +0 -0
  90. pypsa-1.2.4/test/baseline/test_plot_types_histogram-withdrawal.png +0 -0
  91. pypsa-1.2.4/test/baseline/test_plot_types_line-capacity_factor.png +0 -0
  92. pypsa-1.2.4/test/baseline/test_plot_types_line-curtailment.png +0 -0
  93. pypsa-1.2.4/test/baseline/test_plot_types_line-energy_balance.png +0 -0
  94. pypsa-1.2.4/test/baseline/test_plot_types_line-market_value.png +0 -0
  95. pypsa-1.2.4/test/baseline/test_plot_types_line-prices.png +0 -0
  96. pypsa-1.2.4/test/baseline/test_plot_types_line-revenue.png +0 -0
  97. pypsa-1.2.4/test/baseline/test_plot_types_line-supply.png +0 -0
  98. pypsa-1.2.4/test/baseline/test_plot_types_line-system_cost.png +0 -0
  99. pypsa-1.2.4/test/baseline/test_plot_types_line-withdrawal.png +0 -0
  100. pypsa-1.2.4/test/baseline/test_plot_types_map-capacity_factor.png +0 -0
  101. pypsa-1.2.4/test/baseline/test_plot_types_map-capex.png +0 -0
  102. pypsa-1.2.4/test/baseline/test_plot_types_map-curtailment.png +0 -0
  103. pypsa-1.2.4/test/baseline/test_plot_types_map-energy_balance.png +0 -0
  104. pypsa-1.2.4/test/baseline/test_plot_types_map-expanded_capacity.png +0 -0
  105. pypsa-1.2.4/test/baseline/test_plot_types_map-expanded_capex.png +0 -0
  106. pypsa-1.2.4/test/baseline/test_plot_types_map-installed_capacity.png +0 -0
  107. pypsa-1.2.4/test/baseline/test_plot_types_map-installed_capex.png +0 -0
  108. pypsa-1.2.4/test/baseline/test_plot_types_map-market_value.png +0 -0
  109. pypsa-1.2.4/test/baseline/test_plot_types_map-opex.png +0 -0
  110. pypsa-1.2.4/test/baseline/test_plot_types_map-optimal_capacity.png +0 -0
  111. pypsa-1.2.4/test/baseline/test_plot_types_map-revenue.png +0 -0
  112. pypsa-1.2.4/test/baseline/test_plot_types_map-supply.png +0 -0
  113. pypsa-1.2.4/test/baseline/test_plot_types_map-system_cost.png +0 -0
  114. pypsa-1.2.4/test/baseline/test_plot_types_map-transmission.png +0 -0
  115. pypsa-1.2.4/test/baseline/test_plot_types_map-withdrawal.png +0 -0
  116. pypsa-1.2.4/test/baseline/test_plot_types_scatter-capacity_factor.png +0 -0
  117. pypsa-1.2.4/test/baseline/test_plot_types_scatter-capex.png +0 -0
  118. pypsa-1.2.4/test/baseline/test_plot_types_scatter-curtailment.png +0 -0
  119. pypsa-1.2.4/test/baseline/test_plot_types_scatter-energy_balance.png +0 -0
  120. pypsa-1.2.4/test/baseline/test_plot_types_scatter-expanded_capacity.png +0 -0
  121. pypsa-1.2.4/test/baseline/test_plot_types_scatter-expanded_capex.png +0 -0
  122. pypsa-1.2.4/test/baseline/test_plot_types_scatter-installed_capacity.png +0 -0
  123. pypsa-1.2.4/test/baseline/test_plot_types_scatter-installed_capex.png +0 -0
  124. pypsa-1.2.4/test/baseline/test_plot_types_scatter-market_value.png +0 -0
  125. pypsa-1.2.4/test/baseline/test_plot_types_scatter-opex.png +0 -0
  126. pypsa-1.2.4/test/baseline/test_plot_types_scatter-optimal_capacity.png +0 -0
  127. pypsa-1.2.4/test/baseline/test_plot_types_scatter-prices.png +0 -0
  128. pypsa-1.2.4/test/baseline/test_plot_types_scatter-revenue.png +0 -0
  129. pypsa-1.2.4/test/baseline/test_plot_types_scatter-supply.png +0 -0
  130. pypsa-1.2.4/test/baseline/test_plot_types_scatter-system_cost.png +0 -0
  131. pypsa-1.2.4/test/baseline/test_plot_types_scatter-transmission.png +0 -0
  132. pypsa-1.2.4/test/baseline/test_plot_types_scatter-withdrawal.png +0 -0
  133. pypsa-1.2.4/test/baseline/test_plot_types_violin-capacity_factor.png +0 -0
  134. pypsa-1.2.4/test/baseline/test_plot_types_violin-capex.png +0 -0
  135. pypsa-1.2.4/test/baseline/test_plot_types_violin-curtailment.png +0 -0
  136. pypsa-1.2.4/test/baseline/test_plot_types_violin-energy_balance.png +0 -0
  137. pypsa-1.2.4/test/baseline/test_plot_types_violin-expanded_capacity.png +0 -0
  138. pypsa-1.2.4/test/baseline/test_plot_types_violin-expanded_capex.png +0 -0
  139. pypsa-1.2.4/test/baseline/test_plot_types_violin-installed_capacity.png +0 -0
  140. pypsa-1.2.4/test/baseline/test_plot_types_violin-installed_capex.png +0 -0
  141. pypsa-1.2.4/test/baseline/test_plot_types_violin-market_value.png +0 -0
  142. pypsa-1.2.4/test/baseline/test_plot_types_violin-opex.png +0 -0
  143. pypsa-1.2.4/test/baseline/test_plot_types_violin-optimal_capacity.png +0 -0
  144. pypsa-1.2.4/test/baseline/test_plot_types_violin-prices.png +0 -0
  145. pypsa-1.2.4/test/baseline/test_plot_types_violin-revenue.png +0 -0
  146. pypsa-1.2.4/test/baseline/test_plot_types_violin-supply.png +0 -0
  147. pypsa-1.2.4/test/baseline/test_plot_types_violin-system_cost.png +0 -0
  148. pypsa-1.2.4/test/baseline/test_plot_types_violin-transmission.png +0 -0
  149. pypsa-1.2.4/test/baseline/test_plot_types_violin-withdrawal.png +0 -0
  150. pypsa-1.2.4/test/baseline/test_simple_plot_prices.png +0 -0
  151. pypsa-1.2.4/test/baseline/test_simple_plot_system_cost.png +0 -0
  152. {pypsa-1.2.3 → pypsa-1.2.4}/test/conftest.py +30 -1
  153. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_collection_statistics.py +7 -0
  154. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_io.py +63 -0
  155. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_lopf_multiinvest.py +36 -0
  156. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_lpf_ac_dc.py +19 -0
  157. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_network.py +68 -0
  158. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_network_index.py +18 -0
  159. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_optimization_common.py +3 -1
  160. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_pf_against_pandapower.py +16 -3
  161. pypsa-1.2.4/test/test_standard_types.py +48 -0
  162. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_statistics.py +30 -5
  163. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_statistics_plot.py +162 -19
  164. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_statistics_plot_interactive.py +70 -0
  165. pypsa-1.2.4/test/test_statistics_plot_schema.py +81 -0
  166. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_temporal_clustering.py +46 -8
  167. pypsa-1.2.3/test/baseline/test_plot_types_area-capacity_factor.png +0 -0
  168. pypsa-1.2.3/test/baseline/test_plot_types_area-capex.png +0 -0
  169. pypsa-1.2.3/test/baseline/test_plot_types_area-curtailment.png +0 -0
  170. pypsa-1.2.3/test/baseline/test_plot_types_area-energy_balance.png +0 -0
  171. pypsa-1.2.3/test/baseline/test_plot_types_area-expanded_capacity.png +0 -0
  172. pypsa-1.2.3/test/baseline/test_plot_types_area-expanded_capex.png +0 -0
  173. pypsa-1.2.3/test/baseline/test_plot_types_area-installed_capacity.png +0 -0
  174. pypsa-1.2.3/test/baseline/test_plot_types_area-installed_capex.png +0 -0
  175. pypsa-1.2.3/test/baseline/test_plot_types_area-opex.png +0 -0
  176. pypsa-1.2.3/test/baseline/test_plot_types_area-optimal_capacity.png +0 -0
  177. pypsa-1.2.3/test/baseline/test_plot_types_area-prices.png +0 -0
  178. pypsa-1.2.3/test/baseline/test_plot_types_area-revenue.png +0 -0
  179. pypsa-1.2.3/test/baseline/test_plot_types_area-supply.png +0 -0
  180. pypsa-1.2.3/test/baseline/test_plot_types_area-system_cost.png +0 -0
  181. pypsa-1.2.3/test/baseline/test_plot_types_area-transmission.png +0 -0
  182. pypsa-1.2.3/test/baseline/test_plot_types_area-withdrawal.png +0 -0
  183. pypsa-1.2.3/test/baseline/test_plot_types_area_curtailment.png +0 -0
  184. pypsa-1.2.3/test/baseline/test_plot_types_area_market_value.png +0 -0
  185. pypsa-1.2.3/test/baseline/test_plot_types_area_system_cost.png +0 -0
  186. pypsa-1.2.3/test/baseline/test_plot_types_bar-capacity_factor.png +0 -0
  187. pypsa-1.2.3/test/baseline/test_plot_types_bar-capex.png +0 -0
  188. pypsa-1.2.3/test/baseline/test_plot_types_bar-curtailment.png +0 -0
  189. pypsa-1.2.3/test/baseline/test_plot_types_bar-energy_balance.png +0 -0
  190. pypsa-1.2.3/test/baseline/test_plot_types_bar-expanded_capacity.png +0 -0
  191. pypsa-1.2.3/test/baseline/test_plot_types_bar-expanded_capex.png +0 -0
  192. pypsa-1.2.3/test/baseline/test_plot_types_bar-installed_capacity.png +0 -0
  193. pypsa-1.2.3/test/baseline/test_plot_types_bar-installed_capex.png +0 -0
  194. pypsa-1.2.3/test/baseline/test_plot_types_bar-opex.png +0 -0
  195. pypsa-1.2.3/test/baseline/test_plot_types_bar-optimal_capacity.png +0 -0
  196. pypsa-1.2.3/test/baseline/test_plot_types_bar-prices.png +0 -0
  197. pypsa-1.2.3/test/baseline/test_plot_types_bar-revenue.png +0 -0
  198. pypsa-1.2.3/test/baseline/test_plot_types_bar-supply.png +0 -0
  199. pypsa-1.2.3/test/baseline/test_plot_types_bar-system_cost.png +0 -0
  200. pypsa-1.2.3/test/baseline/test_plot_types_bar-transmission.png +0 -0
  201. pypsa-1.2.3/test/baseline/test_plot_types_bar-withdrawal.png +0 -0
  202. pypsa-1.2.3/test/baseline/test_plot_types_bar_market_value.png +0 -0
  203. pypsa-1.2.3/test/baseline/test_plot_types_bar_system_cost.png +0 -0
  204. pypsa-1.2.3/test/baseline/test_plot_types_box-capacity_factor.png +0 -0
  205. pypsa-1.2.3/test/baseline/test_plot_types_box-capex.png +0 -0
  206. pypsa-1.2.3/test/baseline/test_plot_types_box-curtailment.png +0 -0
  207. pypsa-1.2.3/test/baseline/test_plot_types_box-energy_balance.png +0 -0
  208. pypsa-1.2.3/test/baseline/test_plot_types_box-expanded_capacity.png +0 -0
  209. pypsa-1.2.3/test/baseline/test_plot_types_box-expanded_capex.png +0 -0
  210. pypsa-1.2.3/test/baseline/test_plot_types_box-installed_capacity.png +0 -0
  211. pypsa-1.2.3/test/baseline/test_plot_types_box-installed_capex.png +0 -0
  212. pypsa-1.2.3/test/baseline/test_plot_types_box-market_value.png +0 -0
  213. pypsa-1.2.3/test/baseline/test_plot_types_box-opex.png +0 -0
  214. pypsa-1.2.3/test/baseline/test_plot_types_box-optimal_capacity.png +0 -0
  215. pypsa-1.2.3/test/baseline/test_plot_types_box-prices.png +0 -0
  216. pypsa-1.2.3/test/baseline/test_plot_types_box-revenue.png +0 -0
  217. pypsa-1.2.3/test/baseline/test_plot_types_box-supply.png +0 -0
  218. pypsa-1.2.3/test/baseline/test_plot_types_box-system_cost.png +0 -0
  219. pypsa-1.2.3/test/baseline/test_plot_types_box-transmission.png +0 -0
  220. pypsa-1.2.3/test/baseline/test_plot_types_box-withdrawal.png +0 -0
  221. pypsa-1.2.3/test/baseline/test_plot_types_histogram-capacity_factor.png +0 -0
  222. pypsa-1.2.3/test/baseline/test_plot_types_histogram-capex.png +0 -0
  223. pypsa-1.2.3/test/baseline/test_plot_types_histogram-curtailment.png +0 -0
  224. pypsa-1.2.3/test/baseline/test_plot_types_histogram-energy_balance.png +0 -0
  225. pypsa-1.2.3/test/baseline/test_plot_types_histogram-expanded_capacity.png +0 -0
  226. pypsa-1.2.3/test/baseline/test_plot_types_histogram-expanded_capex.png +0 -0
  227. pypsa-1.2.3/test/baseline/test_plot_types_histogram-installed_capacity.png +0 -0
  228. pypsa-1.2.3/test/baseline/test_plot_types_histogram-installed_capex.png +0 -0
  229. pypsa-1.2.3/test/baseline/test_plot_types_histogram-market_value.png +0 -0
  230. pypsa-1.2.3/test/baseline/test_plot_types_histogram-opex.png +0 -0
  231. pypsa-1.2.3/test/baseline/test_plot_types_histogram-optimal_capacity.png +0 -0
  232. pypsa-1.2.3/test/baseline/test_plot_types_histogram-prices.png +0 -0
  233. pypsa-1.2.3/test/baseline/test_plot_types_histogram-revenue.png +0 -0
  234. pypsa-1.2.3/test/baseline/test_plot_types_histogram-supply.png +0 -0
  235. pypsa-1.2.3/test/baseline/test_plot_types_histogram-system_cost.png +0 -0
  236. pypsa-1.2.3/test/baseline/test_plot_types_histogram-transmission.png +0 -0
  237. pypsa-1.2.3/test/baseline/test_plot_types_histogram-withdrawal.png +0 -0
  238. pypsa-1.2.3/test/baseline/test_plot_types_line-capacity_factor.png +0 -0
  239. pypsa-1.2.3/test/baseline/test_plot_types_line-capex.png +0 -0
  240. pypsa-1.2.3/test/baseline/test_plot_types_line-curtailment.png +0 -0
  241. pypsa-1.2.3/test/baseline/test_plot_types_line-energy_balance.png +0 -0
  242. pypsa-1.2.3/test/baseline/test_plot_types_line-expanded_capacity.png +0 -0
  243. pypsa-1.2.3/test/baseline/test_plot_types_line-expanded_capex.png +0 -0
  244. pypsa-1.2.3/test/baseline/test_plot_types_line-installed_capacity.png +0 -0
  245. pypsa-1.2.3/test/baseline/test_plot_types_line-installed_capex.png +0 -0
  246. pypsa-1.2.3/test/baseline/test_plot_types_line-market_value.png +0 -0
  247. pypsa-1.2.3/test/baseline/test_plot_types_line-opex.png +0 -0
  248. pypsa-1.2.3/test/baseline/test_plot_types_line-optimal_capacity.png +0 -0
  249. pypsa-1.2.3/test/baseline/test_plot_types_line-prices.png +0 -0
  250. pypsa-1.2.3/test/baseline/test_plot_types_line-revenue.png +0 -0
  251. pypsa-1.2.3/test/baseline/test_plot_types_line-supply.png +0 -0
  252. pypsa-1.2.3/test/baseline/test_plot_types_line-system_cost.png +0 -0
  253. pypsa-1.2.3/test/baseline/test_plot_types_line-transmission.png +0 -0
  254. pypsa-1.2.3/test/baseline/test_plot_types_line-withdrawal.png +0 -0
  255. pypsa-1.2.3/test/baseline/test_plot_types_line_capacity_factor.png +0 -0
  256. pypsa-1.2.3/test/baseline/test_plot_types_line_curtailment.png +0 -0
  257. pypsa-1.2.3/test/baseline/test_plot_types_line_energy_balance.png +0 -0
  258. pypsa-1.2.3/test/baseline/test_plot_types_line_market_value.png +0 -0
  259. pypsa-1.2.3/test/baseline/test_plot_types_line_revenue.png +0 -0
  260. pypsa-1.2.3/test/baseline/test_plot_types_line_supply.png +0 -0
  261. pypsa-1.2.3/test/baseline/test_plot_types_line_system_cost.png +0 -0
  262. pypsa-1.2.3/test/baseline/test_plot_types_line_withdrawal.png +0 -0
  263. pypsa-1.2.3/test/baseline/test_plot_types_map-capacity_factor.png +0 -0
  264. pypsa-1.2.3/test/baseline/test_plot_types_map-capex.png +0 -0
  265. pypsa-1.2.3/test/baseline/test_plot_types_map-curtailment.png +0 -0
  266. pypsa-1.2.3/test/baseline/test_plot_types_map-energy_balance.png +0 -0
  267. pypsa-1.2.3/test/baseline/test_plot_types_map-expanded_capacity.png +0 -0
  268. pypsa-1.2.3/test/baseline/test_plot_types_map-expanded_capex.png +0 -0
  269. pypsa-1.2.3/test/baseline/test_plot_types_map-installed_capacity.png +0 -0
  270. pypsa-1.2.3/test/baseline/test_plot_types_map-installed_capex.png +0 -0
  271. pypsa-1.2.3/test/baseline/test_plot_types_map-market_value.png +0 -0
  272. pypsa-1.2.3/test/baseline/test_plot_types_map-opex.png +0 -0
  273. pypsa-1.2.3/test/baseline/test_plot_types_map-optimal_capacity.png +0 -0
  274. pypsa-1.2.3/test/baseline/test_plot_types_map-revenue.png +0 -0
  275. pypsa-1.2.3/test/baseline/test_plot_types_map-supply.png +0 -0
  276. pypsa-1.2.3/test/baseline/test_plot_types_map-system_cost.png +0 -0
  277. pypsa-1.2.3/test/baseline/test_plot_types_map-transmission.png +0 -0
  278. pypsa-1.2.3/test/baseline/test_plot_types_map-withdrawal.png +0 -0
  279. pypsa-1.2.3/test/baseline/test_plot_types_map_capacity_factor.png +0 -0
  280. pypsa-1.2.3/test/baseline/test_plot_types_map_capex.png +0 -0
  281. pypsa-1.2.3/test/baseline/test_plot_types_map_curtailment.png +0 -0
  282. pypsa-1.2.3/test/baseline/test_plot_types_map_energy_balance.png +0 -0
  283. pypsa-1.2.3/test/baseline/test_plot_types_map_expanded_capacity.png +0 -0
  284. pypsa-1.2.3/test/baseline/test_plot_types_map_expanded_capex.png +0 -0
  285. pypsa-1.2.3/test/baseline/test_plot_types_map_installed_capacity.png +0 -0
  286. pypsa-1.2.3/test/baseline/test_plot_types_map_installed_capex.png +0 -0
  287. pypsa-1.2.3/test/baseline/test_plot_types_map_market_value.png +0 -0
  288. pypsa-1.2.3/test/baseline/test_plot_types_map_opex.png +0 -0
  289. pypsa-1.2.3/test/baseline/test_plot_types_map_optimal_capacity.png +0 -0
  290. pypsa-1.2.3/test/baseline/test_plot_types_map_revenue.png +0 -0
  291. pypsa-1.2.3/test/baseline/test_plot_types_map_supply.png +0 -0
  292. pypsa-1.2.3/test/baseline/test_plot_types_map_transmission.png +0 -0
  293. pypsa-1.2.3/test/baseline/test_plot_types_map_withdrawal.png +0 -0
  294. pypsa-1.2.3/test/baseline/test_plot_types_scatter-capacity_factor.png +0 -0
  295. pypsa-1.2.3/test/baseline/test_plot_types_scatter-capex.png +0 -0
  296. pypsa-1.2.3/test/baseline/test_plot_types_scatter-curtailment.png +0 -0
  297. pypsa-1.2.3/test/baseline/test_plot_types_scatter-energy_balance.png +0 -0
  298. pypsa-1.2.3/test/baseline/test_plot_types_scatter-expanded_capacity.png +0 -0
  299. pypsa-1.2.3/test/baseline/test_plot_types_scatter-expanded_capex.png +0 -0
  300. pypsa-1.2.3/test/baseline/test_plot_types_scatter-installed_capacity.png +0 -0
  301. pypsa-1.2.3/test/baseline/test_plot_types_scatter-installed_capex.png +0 -0
  302. pypsa-1.2.3/test/baseline/test_plot_types_scatter-market_value.png +0 -0
  303. pypsa-1.2.3/test/baseline/test_plot_types_scatter-opex.png +0 -0
  304. pypsa-1.2.3/test/baseline/test_plot_types_scatter-optimal_capacity.png +0 -0
  305. pypsa-1.2.3/test/baseline/test_plot_types_scatter-prices.png +0 -0
  306. pypsa-1.2.3/test/baseline/test_plot_types_scatter-revenue.png +0 -0
  307. pypsa-1.2.3/test/baseline/test_plot_types_scatter-supply.png +0 -0
  308. pypsa-1.2.3/test/baseline/test_plot_types_scatter-system_cost.png +0 -0
  309. pypsa-1.2.3/test/baseline/test_plot_types_scatter-transmission.png +0 -0
  310. pypsa-1.2.3/test/baseline/test_plot_types_scatter-withdrawal.png +0 -0
  311. pypsa-1.2.3/test/baseline/test_plot_types_violin-capacity_factor.png +0 -0
  312. pypsa-1.2.3/test/baseline/test_plot_types_violin-capex.png +0 -0
  313. pypsa-1.2.3/test/baseline/test_plot_types_violin-curtailment.png +0 -0
  314. pypsa-1.2.3/test/baseline/test_plot_types_violin-energy_balance.png +0 -0
  315. pypsa-1.2.3/test/baseline/test_plot_types_violin-expanded_capacity.png +0 -0
  316. pypsa-1.2.3/test/baseline/test_plot_types_violin-expanded_capex.png +0 -0
  317. pypsa-1.2.3/test/baseline/test_plot_types_violin-installed_capacity.png +0 -0
  318. pypsa-1.2.3/test/baseline/test_plot_types_violin-installed_capex.png +0 -0
  319. pypsa-1.2.3/test/baseline/test_plot_types_violin-market_value.png +0 -0
  320. pypsa-1.2.3/test/baseline/test_plot_types_violin-opex.png +0 -0
  321. pypsa-1.2.3/test/baseline/test_plot_types_violin-optimal_capacity.png +0 -0
  322. pypsa-1.2.3/test/baseline/test_plot_types_violin-prices.png +0 -0
  323. pypsa-1.2.3/test/baseline/test_plot_types_violin-revenue.png +0 -0
  324. pypsa-1.2.3/test/baseline/test_plot_types_violin-supply.png +0 -0
  325. pypsa-1.2.3/test/baseline/test_plot_types_violin-system_cost.png +0 -0
  326. pypsa-1.2.3/test/baseline/test_plot_types_violin-transmission.png +0 -0
  327. pypsa-1.2.3/test/baseline/test_plot_types_violin-withdrawal.png +0 -0
  328. pypsa-1.2.3/test/baseline/test_simple_plot_prices.png +0 -0
  329. pypsa-1.2.3/test/baseline/test_simple_plot_system_cost.png +0 -0
  330. pypsa-1.2.3/test/test_statistics_plot_schema.py +0 -30
  331. {pypsa-1.2.3 → pypsa-1.2.4}/.codespell.ignore +0 -0
  332. {pypsa-1.2.3 → pypsa-1.2.4}/.git-blame-ignore-revs +0 -0
  333. {pypsa-1.2.3 → pypsa-1.2.4}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
  334. {pypsa-1.2.3 → pypsa-1.2.4}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  335. {pypsa-1.2.3 → pypsa-1.2.4}/.github/ISSUE_TEMPLATE/documentation_improvement.yaml +0 -0
  336. {pypsa-1.2.3 → pypsa-1.2.4}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  337. {pypsa-1.2.3 → pypsa-1.2.4}/.github/dependabot.yml +0 -0
  338. {pypsa-1.2.3 → pypsa-1.2.4}/.github/pull_request_template.md +0 -0
  339. {pypsa-1.2.3 → pypsa-1.2.4}/.github/workflows/codeql.yml +0 -0
  340. {pypsa-1.2.3 → pypsa-1.2.4}/.github/workflows/release.yml +0 -0
  341. {pypsa-1.2.3 → pypsa-1.2.4}/.github/workflows/test-models.yml +0 -0
  342. {pypsa-1.2.3 → pypsa-1.2.4}/.gitignore +0 -0
  343. {pypsa-1.2.3 → pypsa-1.2.4}/.pre-commit-config.yaml +0 -0
  344. {pypsa-1.2.3 → pypsa-1.2.4}/.readthedocs.yml +0 -0
  345. {pypsa-1.2.3 → pypsa-1.2.4}/CITATION.cff +0 -0
  346. {pypsa-1.2.3 → pypsa-1.2.4}/CONTRIBUTING.md +0 -0
  347. {pypsa-1.2.3 → pypsa-1.2.4}/LICENSES/CC-BY-4.0.txt +0 -0
  348. {pypsa-1.2.3 → pypsa-1.2.4}/LICENSES/MIT.txt +0 -0
  349. {pypsa-1.2.3 → pypsa-1.2.4}/MANIFEST.in +0 -0
  350. {pypsa-1.2.3 → pypsa-1.2.4}/README.md +0 -0
  351. {pypsa-1.2.3 → pypsa-1.2.4}/REUSE.toml +0 -0
  352. {pypsa-1.2.3 → pypsa-1.2.4}/codecov.yml +0 -0
  353. {pypsa-1.2.3 → pypsa-1.2.4}/docs/CODE_OF_CONDUCT.md +0 -0
  354. {pypsa-1.2.3 → pypsa-1.2.4}/docs/SECURITY.md +0 -0
  355. {pypsa-1.2.3 → pypsa-1.2.4}/docs/api/components/common.md +0 -0
  356. {pypsa-1.2.3 → pypsa-1.2.4}/docs/api/components/components.md +0 -0
  357. {pypsa-1.2.3 → pypsa-1.2.4}/docs/api/components/types/buses.md +0 -0
  358. {pypsa-1.2.3 → pypsa-1.2.4}/docs/api/components/types/carriers.md +0 -0
  359. {pypsa-1.2.3 → pypsa-1.2.4}/docs/api/components/types/generators.md +0 -0
  360. {pypsa-1.2.3 → pypsa-1.2.4}/docs/api/components/types/global-constraints.md +0 -0
  361. {pypsa-1.2.3 → pypsa-1.2.4}/docs/api/components/types/lines.md +0 -0
  362. {pypsa-1.2.3 → pypsa-1.2.4}/docs/api/components/types/links.md +0 -0
  363. {pypsa-1.2.3 → pypsa-1.2.4}/docs/api/components/types/loads.md +0 -0
  364. {pypsa-1.2.3 → pypsa-1.2.4}/docs/api/components/types/processes.md +0 -0
  365. {pypsa-1.2.3 → pypsa-1.2.4}/docs/api/components/types/shapes.md +0 -0
  366. {pypsa-1.2.3 → pypsa-1.2.4}/docs/api/components/types/shunt-impedances.md +0 -0
  367. {pypsa-1.2.3 → pypsa-1.2.4}/docs/api/components/types/storage-units.md +0 -0
  368. {pypsa-1.2.3 → pypsa-1.2.4}/docs/api/components/types/stores.md +0 -0
  369. {pypsa-1.2.3 → pypsa-1.2.4}/docs/api/components/types/sub-networks.md +0 -0
  370. {pypsa-1.2.3 → pypsa-1.2.4}/docs/api/components/types/transformers.md +0 -0
  371. {pypsa-1.2.3 → pypsa-1.2.4}/docs/api/networks/cluster.md +0 -0
  372. {pypsa-1.2.3 → pypsa-1.2.4}/docs/api/networks/collection.md +0 -0
  373. {pypsa-1.2.3 → pypsa-1.2.4}/docs/api/networks/components.md +0 -0
  374. {pypsa-1.2.3 → pypsa-1.2.4}/docs/api/networks/constraints.md +0 -0
  375. {pypsa-1.2.3 → pypsa-1.2.4}/docs/api/networks/descriptors.md +0 -0
  376. {pypsa-1.2.3 → pypsa-1.2.4}/docs/api/networks/indexing.md +0 -0
  377. {pypsa-1.2.3 → pypsa-1.2.4}/docs/api/networks/io.md +0 -0
  378. {pypsa-1.2.3 → pypsa-1.2.4}/docs/api/networks/network.md +0 -0
  379. {pypsa-1.2.3 → pypsa-1.2.4}/docs/api/networks/optimize.md +0 -0
  380. {pypsa-1.2.3 → pypsa-1.2.4}/docs/api/networks/plot.md +0 -0
  381. {pypsa-1.2.3 → pypsa-1.2.4}/docs/api/networks/power-flow.md +0 -0
  382. {pypsa-1.2.3 → pypsa-1.2.4}/docs/api/networks/statistics.md +0 -0
  383. {pypsa-1.2.3 → pypsa-1.2.4}/docs/api/networks/subnetwork.md +0 -0
  384. {pypsa-1.2.3 → pypsa-1.2.4}/docs/api/networks/transform.md +0 -0
  385. {pypsa-1.2.3 → pypsa-1.2.4}/docs/api/other/api-examples.md +0 -0
  386. {pypsa-1.2.3 → pypsa-1.2.4}/docs/api/other/common.md +0 -0
  387. {pypsa-1.2.3 → pypsa-1.2.4}/docs/api/other/consistency.md +0 -0
  388. {pypsa-1.2.3 → pypsa-1.2.4}/docs/api/other/costs.md +0 -0
  389. {pypsa-1.2.3 → pypsa-1.2.4}/docs/api/other/options.md +0 -0
  390. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/images/ac_dc_meshed-energy_balance-area_plot.jpg +0 -0
  391. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/images/ac_dc_meshed-energy_balance-area_plot.png +0 -0
  392. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/images/ac_dc_meshed-energy_balance-bar_plot.jpg +0 -0
  393. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/images/ac_dc_meshed-energy_balance-bar_plot.png +0 -0
  394. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/images/ac_dc_meshed-energy_balance-box_plot.png +0 -0
  395. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/images/ac_dc_meshed-energy_balance-custom_area_plot.png +0 -0
  396. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/images/ac_dc_meshed-energy_balance-histogram_plot.jpg +0 -0
  397. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/images/ac_dc_meshed-energy_balance-histogram_plot.png +0 -0
  398. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/images/ac_dc_meshed-energy_balance-line_plot.jpg +0 -0
  399. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/images/ac_dc_meshed-energy_balance-line_plot.png +0 -0
  400. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/images/ac_dc_meshed-energy_balance-map_plot.png +0 -0
  401. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/images/ac_dc_meshed-energy_balance-scatter_plot.jpg +0 -0
  402. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/images/ac_dc_meshed-energy_balance-scatter_plot.png +0 -0
  403. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/images/ac_dc_meshed-energy_balance-violin_plot.png +0 -0
  404. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/images/ac_dc_meshed-installed_capacity-bar_plot.jpg +0 -0
  405. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/images/ac_dc_meshed-installed_capacity-bar_plot.png +0 -0
  406. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/images/ac_dc_meshed.png +0 -0
  407. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/images/buses.png +0 -0
  408. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/images/carbon_management-energy_balance-area_plot-AC-bus_carrier.png +0 -0
  409. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/images/carbon_management-energy_balance-area_plot.png +0 -0
  410. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/images/elec_s_256_lv1.09_Co2L-3H.png +0 -0
  411. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/images/line-equivalent.png +0 -0
  412. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/images/lmp_and_line-loading.png +0 -0
  413. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/images/load-distribution.png +0 -0
  414. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/images/p_max_pu.png +0 -0
  415. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/images/pypsa-animation.png +0 -0
  416. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/images/pypsa-logo.png +0 -0
  417. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/images/reactive-power.png +0 -0
  418. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/images/reserve-power-funding.gif +0 -0
  419. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/images/reserve-power-graph.png +0 -0
  420. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/images/scigrid-curtailment.png +0 -0
  421. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/images/stacked-gen.png +0 -0
  422. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/images/stacked-gen_and_storage-scigrid.png +0 -0
  423. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/images/statistics_advanced_usage.png +0 -0
  424. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/images/storage-scigrid.png +0 -0
  425. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/images/transformer-pi-equivalent-tap-hv.png +0 -0
  426. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/images/transformer-pi-equivalent-tap-lv.png +0 -0
  427. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/images/transformer-t-equivalent-tap-hv.png +0 -0
  428. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/images/transformer-t-equivalent-tap-lv.png +0 -0
  429. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/interactive/ac_dc_meshed-energy_balance-area_iplot.html +0 -0
  430. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/interactive/carbon_management-energy_balance-area_iplot-AC-bus_carrier.html +0 -0
  431. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/interactive/carbon_management-energy_balance-area_iplot.html +0 -0
  432. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/javascripts/gurubase-widget.js +0 -0
  433. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/javascripts/mathjax.js +0 -0
  434. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/javascripts/readthedocs.js +0 -0
  435. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/logo/logo-primary-dark.png +0 -0
  436. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/logo/logo-primary-dark.svg +0 -0
  437. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/logo/logo-primary-light-white-bg.png +0 -0
  438. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/logo/logo-primary-light.png +0 -0
  439. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/logo/logo-primary-light.svg +0 -0
  440. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/logo/logo-secondary-dark.png +0 -0
  441. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/logo/logo-secondary-dark.svg +0 -0
  442. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/logo/logo-secondary-light.png +0 -0
  443. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/logo/logo-secondary-light.svg +0 -0
  444. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/logo/logo-white-bg.png +0 -0
  445. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/logo/logo.png +0 -0
  446. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/logo/logo.svg +0 -0
  447. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/overrides/main.html +0 -0
  448. {pypsa-1.2.3 → pypsa-1.2.4}/docs/assets/stylesheets/extra.css +0 -0
  449. {pypsa-1.2.3 → pypsa-1.2.4}/docs/contributing/contributing.md +0 -0
  450. {pypsa-1.2.3 → pypsa-1.2.4}/docs/contributing/contributors.md +0 -0
  451. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/3-node-cem.ipynb +0 -0
  452. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/ac-dc-lopf.ipynb +0 -0
  453. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/battery-electric-vehicle-charging.ipynb +0 -0
  454. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/biomass-synthetic-fuels-carbon-management.ipynb +0 -0
  455. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/capacity-expansion-planning-single-node.ipynb +0 -0
  456. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/chained-hydro-reservoirs.ipynb +0 -0
  457. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/chp-fixed-heat-power-ratio.ipynb +0 -0
  458. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/committable-extendable.ipynb +0 -0
  459. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/demand-elasticity.ipynb +0 -0
  460. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/demand-supply-bids.ipynb +0 -0
  461. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/example-1.ipynb +0 -0
  462. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/example-2.ipynb +0 -0
  463. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/example-3.ipynb +0 -0
  464. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/examples.md +0 -0
  465. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/generation-investment-screening-curve.ipynb +0 -0
  466. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/gsa.ipynb +0 -0
  467. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/islanded-methanol-production.ipynb +0 -0
  468. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/mga.ipynb +0 -0
  469. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/minimal-example-pf.ipynb +0 -0
  470. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/modular-committable.ipynb +0 -0
  471. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/modular-expansion.ipynb +0 -0
  472. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/multi-investment-optimisation.ipynb +0 -0
  473. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/myopic-pathway.ipynb +0 -0
  474. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/near-opt-space.ipynb +0 -0
  475. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/negative-prices-kvl-baker.ipynb +0 -0
  476. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/periodic-operational-limits.ipynb +0 -0
  477. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/power-to-gas-boiler-chp.ipynb +0 -0
  478. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/power-to-heat-water-tank.ipynb +0 -0
  479. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/replace-generator-storage-units-with-store.ipynb +0 -0
  480. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/reserve-power.ipynb +0 -0
  481. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/rh_example.png +0 -0
  482. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/rolling-horizon.ipynb +0 -0
  483. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/scigrid-lopf-then-pf.ipynb +0 -0
  484. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/scigrid-redispatch.ipynb +0 -0
  485. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/scigrid-sclopf.ipynb +0 -0
  486. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/sector-coupling-single-node.ipynb +0 -0
  487. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/simple-electricity-market-examples.ipynb +0 -0
  488. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/stochastic-optimization.ipynb +0 -0
  489. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/time-series-aggregation.ipynb +0 -0
  490. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/tracing-infeasibilities.ipynb +0 -0
  491. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/transformer-example.ipynb +0 -0
  492. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/transport-delay.ipynb +0 -0
  493. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/uc-prices.ipynb +0 -0
  494. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/unit-commitment.ipynb +0 -0
  495. {pypsa-1.2.3 → pypsa-1.2.4}/docs/examples/water-value.ipynb +0 -0
  496. {pypsa-1.2.3 → pypsa-1.2.4}/docs/home/citing.md +0 -0
  497. {pypsa-1.2.3 → pypsa-1.2.4}/docs/home/features.md +0 -0
  498. {pypsa-1.2.3 → pypsa-1.2.4}/docs/home/installation.md +0 -0
  499. {pypsa-1.2.3 → pypsa-1.2.4}/docs/home/license.md +0 -0
  500. {pypsa-1.2.3 → pypsa-1.2.4}/docs/home/models.md +0 -0
  501. {pypsa-1.2.3 → pypsa-1.2.4}/docs/home/users.md +0 -0
  502. {pypsa-1.2.3 → pypsa-1.2.4}/docs/hooks/cleanup.py +0 -0
  503. {pypsa-1.2.3 → pypsa-1.2.4}/docs/hooks/dynamic_inspect.py +0 -0
  504. {pypsa-1.2.3 → pypsa-1.2.4}/docs/hooks/notebook_timing.py +0 -0
  505. {pypsa-1.2.3 → pypsa-1.2.4}/docs/hooks/path_aliases.py +0 -0
  506. {pypsa-1.2.3 → pypsa-1.2.4}/docs/hooks/shortcodes.py +0 -0
  507. {pypsa-1.2.3 → pypsa-1.2.4}/docs/index.md +0 -0
  508. {pypsa-1.2.3 → pypsa-1.2.4}/docs/requirements.txt +0 -0
  509. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/clustering.ipynb +0 -0
  510. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/collection.md +0 -0
  511. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/components/buses.md +0 -0
  512. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/components/carriers.md +0 -0
  513. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/components/generators.md +0 -0
  514. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/components/global-constraints.md +0 -0
  515. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/components/line-types.md +0 -0
  516. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/components/lines.md +0 -0
  517. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/components/links.md +0 -0
  518. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/components/loads.md +0 -0
  519. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/components/processes.md +0 -0
  520. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/components/shapes.md +0 -0
  521. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/components/shunt-impedances.md +0 -0
  522. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/components/storage-units.md +0 -0
  523. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/components/stores.md +0 -0
  524. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/components/sub-networks.md +0 -0
  525. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/components/transformer-types.md +0 -0
  526. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/components/transformers.md +0 -0
  527. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/components.md +0 -0
  528. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/design.md +0 -0
  529. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/faq.md +0 -0
  530. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/import-export.md +0 -0
  531. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/learning-materials.md +0 -0
  532. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/linear-power-flow.md +0 -0
  533. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/logging.ipynb +0 -0
  534. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/network-optimization.md +0 -0
  535. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/optimization/capacity-limits.md +0 -0
  536. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/optimization/contingencies.md +0 -0
  537. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/optimization/custom-constraints.md +0 -0
  538. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/optimization/dispatch-limits.md +0 -0
  539. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/optimization/energy-balance.md +0 -0
  540. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/optimization/global-constraints.md +0 -0
  541. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/optimization/modelling-to-generate-alternatives.md +0 -0
  542. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/optimization/objective.md +0 -0
  543. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/optimization/overview.md +0 -0
  544. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/optimization/pathway-planning.md +0 -0
  545. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/optimization/power-flow.md +0 -0
  546. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/optimization/stochastic.md +0 -0
  547. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/optimization/storage.md +0 -0
  548. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/optimization/unit-commitment.md +0 -0
  549. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/options.md +0 -0
  550. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/plotting/charts.md +0 -0
  551. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/plotting/explore.ipynb +0 -0
  552. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/plotting/static-map.ipynb +0 -0
  553. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/statistics.md +0 -0
  554. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/support.md +0 -0
  555. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/troubleshooting.md +0 -0
  556. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/user-guide.md +0 -0
  557. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/v1-guide.md +0 -0
  558. {pypsa-1.2.3 → pypsa-1.2.4}/docs/user-guide/warnings.md +0 -0
  559. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/ac-dc-meshed/ac-dc-meshed/buses.csv +0 -0
  560. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/ac-dc-meshed/ac-dc-meshed/carriers.csv +0 -0
  561. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/ac-dc-meshed/ac-dc-meshed/crs.json +0 -0
  562. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/ac-dc-meshed/ac-dc-meshed/generators-p_max_pu.csv +0 -0
  563. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/ac-dc-meshed/ac-dc-meshed/generators.csv +0 -0
  564. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/ac-dc-meshed/ac-dc-meshed/global_constraints.csv +0 -0
  565. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/ac-dc-meshed/ac-dc-meshed/investment_periods.csv +0 -0
  566. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/ac-dc-meshed/ac-dc-meshed/lines.csv +0 -0
  567. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/ac-dc-meshed/ac-dc-meshed/links.csv +0 -0
  568. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/ac-dc-meshed/ac-dc-meshed/loads-p_set.csv +0 -0
  569. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/ac-dc-meshed/ac-dc-meshed/loads.csv +0 -0
  570. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/ac-dc-meshed/ac-dc-meshed/meta.json +0 -0
  571. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/ac-dc-meshed/ac-dc-meshed/network.csv +0 -0
  572. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/ac-dc-meshed/ac-dc-meshed/snapshots.csv +0 -0
  573. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/ac-dc-meshed/ac-dc-meshed.nc +0 -0
  574. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/model-energy/model-energy/buses.csv +0 -0
  575. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/model-energy/model-energy/carriers.csv +0 -0
  576. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/model-energy/model-energy/crs.json +0 -0
  577. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/model-energy/model-energy/generators-p_max_pu.csv +0 -0
  578. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/model-energy/model-energy/generators.csv +0 -0
  579. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/model-energy/model-energy/investment_periods.csv +0 -0
  580. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/model-energy/model-energy/links.csv +0 -0
  581. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/model-energy/model-energy/loads-p_set.csv +0 -0
  582. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/model-energy/model-energy/loads.csv +0 -0
  583. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/model-energy/model-energy/meta.json +0 -0
  584. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/model-energy/model-energy/network.csv +0 -0
  585. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/model-energy/model-energy/snapshots.csv +0 -0
  586. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/model-energy/model-energy/storage_units.csv +0 -0
  587. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/model-energy/model-energy/stores.csv +0 -0
  588. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/model-energy/model-energy.nc +0 -0
  589. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/scigrid-de/scigrid-de/buses.csv +0 -0
  590. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/scigrid-de/scigrid-de/carriers.csv +0 -0
  591. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/scigrid-de/scigrid-de/crs.json +0 -0
  592. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/scigrid-de/scigrid-de/generators-p_max_pu.csv +0 -0
  593. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/scigrid-de/scigrid-de/generators.csv +0 -0
  594. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/scigrid-de/scigrid-de/investment_periods.csv +0 -0
  595. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/scigrid-de/scigrid-de/lines.csv +0 -0
  596. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/scigrid-de/scigrid-de/loads-p_set.csv +0 -0
  597. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/scigrid-de/scigrid-de/loads.csv +0 -0
  598. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/scigrid-de/scigrid-de/meta.json +0 -0
  599. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/scigrid-de/scigrid-de/network.csv +0 -0
  600. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/scigrid-de/scigrid-de/snapshots.csv +0 -0
  601. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/scigrid-de/scigrid-de/storage_units.csv +0 -0
  602. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/scigrid-de/scigrid-de/transformers.csv +0 -0
  603. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/scigrid-de/scigrid-de.nc +0 -0
  604. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/stochastic-network/stochastic-network.nc +0 -0
  605. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/storage-hvdc/storage-hvdc/buses.csv +0 -0
  606. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/storage-hvdc/storage-hvdc/carriers.csv +0 -0
  607. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/storage-hvdc/storage-hvdc/crs.json +0 -0
  608. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/storage-hvdc/storage-hvdc/generators-p_max_pu.csv +0 -0
  609. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/storage-hvdc/storage-hvdc/generators.csv +0 -0
  610. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/storage-hvdc/storage-hvdc/global_constraints.csv +0 -0
  611. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/storage-hvdc/storage-hvdc/investment_periods.csv +0 -0
  612. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/storage-hvdc/storage-hvdc/lines.csv +0 -0
  613. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/storage-hvdc/storage-hvdc/links.csv +0 -0
  614. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/storage-hvdc/storage-hvdc/loads-p_set.csv +0 -0
  615. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/storage-hvdc/storage-hvdc/loads.csv +0 -0
  616. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/storage-hvdc/storage-hvdc/meta.json +0 -0
  617. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/storage-hvdc/storage-hvdc/network.csv +0 -0
  618. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/storage-hvdc/storage-hvdc/snapshots.csv +0 -0
  619. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/storage-hvdc/storage-hvdc/storage_units-inflow.csv +0 -0
  620. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/storage-hvdc/storage-hvdc/storage_units-state_of_charge_set.csv +0 -0
  621. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/storage-hvdc/storage-hvdc/storage_units.csv +0 -0
  622. {pypsa-1.2.3 → pypsa-1.2.4}/examples/networks/storage-hvdc/storage-hvdc.nc +0 -0
  623. {pypsa-1.2.3 → pypsa-1.2.4}/mkdocs.yml +0 -0
  624. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/__init__.py +0 -0
  625. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/_options.py +0 -0
  626. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/clustering/__init__.py +0 -0
  627. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/clustering/spatial.py +0 -0
  628. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/collection.py +0 -0
  629. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/components/__init__.py +0 -0
  630. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/components/_types/__init__.py +0 -0
  631. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/components/_types/_patch.py +0 -0
  632. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/components/_types/mixin/__init__.py +0 -0
  633. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/components/_types/mixin/multiports.py +0 -0
  634. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/components/abstract.py +0 -0
  635. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/components/array.py +0 -0
  636. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/components/common.py +0 -0
  637. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/components/components.py +0 -0
  638. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/components/descriptors.py +0 -0
  639. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/components/index.py +0 -0
  640. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/components/legacy.py +0 -0
  641. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/components/store.py +0 -0
  642. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/consistency.py +0 -0
  643. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/costs.py +0 -0
  644. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/data/component_attrs/buses.csv +0 -0
  645. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/data/component_attrs/carriers.csv +0 -0
  646. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/data/component_attrs/generators.csv +0 -0
  647. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/data/component_attrs/global_constraints.csv +0 -0
  648. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/data/component_attrs/line_types.csv +0 -0
  649. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/data/component_attrs/lines.csv +0 -0
  650. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/data/component_attrs/links.csv +0 -0
  651. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/data/component_attrs/loads.csv +0 -0
  652. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/data/component_attrs/networks.csv +0 -0
  653. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/data/component_attrs/shapes.csv +0 -0
  654. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/data/component_attrs/shunt_impedances.csv +0 -0
  655. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/data/component_attrs/storage_units.csv +0 -0
  656. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/data/component_attrs/stores.csv +0 -0
  657. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/data/component_attrs/sub_networks.csv +0 -0
  658. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/data/component_attrs/transformer_types.csv +0 -0
  659. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/data/components.csv +0 -0
  660. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/data/standard_types/line_types.csv +0 -0
  661. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/data/standard_types/transformer_types.csv +0 -0
  662. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/data/variables.csv +0 -0
  663. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/definitions/components.py +0 -0
  664. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/definitions/structures.py +0 -0
  665. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/deprecations.py +0 -0
  666. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/descriptors.py +0 -0
  667. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/examples.py +0 -0
  668. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/geo.py +0 -0
  669. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/guards.py +0 -0
  670. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/network/__init__.py +0 -0
  671. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/network/abstract.py +0 -0
  672. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/network/components.py +0 -0
  673. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/network/descriptors.py +0 -0
  674. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/network/graph.py +0 -0
  675. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/optimization/__init__.py +0 -0
  676. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/optimization/abstract.py +0 -0
  677. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/optimization/expressions.py +0 -0
  678. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/optimization/global_constraints.py +0 -0
  679. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/optimization/mga.py +0 -0
  680. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/optimization/variables.py +0 -0
  681. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/plot/__init__.py +0 -0
  682. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/plot/accessor.py +0 -0
  683. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/plot/maps/__init__.py +0 -0
  684. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/plot/maps/common.py +0 -0
  685. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/plot/maps/interactive.py +0 -0
  686. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/plot/statistics/__init__.py +0 -0
  687. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/py.typed +0 -0
  688. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/statistics/__init__.py +0 -0
  689. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/statistics/grouping.py +0 -0
  690. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/type_utils.py +0 -0
  691. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa/version.py +0 -0
  692. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa.egg-info/dependency_links.txt +0 -0
  693. {pypsa-1.2.3 → pypsa-1.2.4}/pypsa.egg-info/top_level.txt +0 -0
  694. {pypsa-1.2.3 → pypsa-1.2.4}/setup.cfg +0 -0
  695. /pypsa-1.2.3/test/baseline/test_plot_types_area_capacity_factor.png → /pypsa-1.2.4/test/baseline/test_plot_types_area-capacity_factor.png +0 -0
  696. /pypsa-1.2.3/test/baseline/test_plot_types_area_capex.png → /pypsa-1.2.4/test/baseline/test_plot_types_area-capex.png +0 -0
  697. /pypsa-1.2.3/test/baseline/test_plot_types_area_energy_balance.png → /pypsa-1.2.4/test/baseline/test_plot_types_area-energy_balance.png +0 -0
  698. /pypsa-1.2.3/test/baseline/test_plot_types_area_expanded_capacity.png → /pypsa-1.2.4/test/baseline/test_plot_types_area-expanded_capacity.png +0 -0
  699. /pypsa-1.2.3/test/baseline/test_plot_types_area_expanded_capex.png → /pypsa-1.2.4/test/baseline/test_plot_types_area-expanded_capex.png +0 -0
  700. /pypsa-1.2.3/test/baseline/test_plot_types_area_installed_capacity.png → /pypsa-1.2.4/test/baseline/test_plot_types_area-installed_capacity.png +0 -0
  701. /pypsa-1.2.3/test/baseline/test_plot_types_area_installed_capex.png → /pypsa-1.2.4/test/baseline/test_plot_types_area-installed_capex.png +0 -0
  702. {pypsa-1.2.3 → pypsa-1.2.4}/test/baseline/test_plot_types_area-market_value.png +0 -0
  703. /pypsa-1.2.3/test/baseline/test_plot_types_area_opex.png → /pypsa-1.2.4/test/baseline/test_plot_types_area-opex.png +0 -0
  704. /pypsa-1.2.3/test/baseline/test_plot_types_area_optimal_capacity.png → /pypsa-1.2.4/test/baseline/test_plot_types_area-optimal_capacity.png +0 -0
  705. /pypsa-1.2.3/test/baseline/test_plot_types_area_revenue.png → /pypsa-1.2.4/test/baseline/test_plot_types_area-revenue.png +0 -0
  706. /pypsa-1.2.3/test/baseline/test_plot_types_area_supply.png → /pypsa-1.2.4/test/baseline/test_plot_types_area-supply.png +0 -0
  707. /pypsa-1.2.3/test/baseline/test_plot_types_area_transmission.png → /pypsa-1.2.4/test/baseline/test_plot_types_area-transmission.png +0 -0
  708. /pypsa-1.2.3/test/baseline/test_plot_types_area_withdrawal.png → /pypsa-1.2.4/test/baseline/test_plot_types_area-withdrawal.png +0 -0
  709. /pypsa-1.2.3/test/baseline/test_plot_types_bar_capacity_factor.png → /pypsa-1.2.4/test/baseline/test_plot_types_bar-capacity_factor.png +0 -0
  710. /pypsa-1.2.3/test/baseline/test_plot_types_bar_capex.png → /pypsa-1.2.4/test/baseline/test_plot_types_bar-capex.png +0 -0
  711. /pypsa-1.2.3/test/baseline/test_plot_types_bar_curtailment.png → /pypsa-1.2.4/test/baseline/test_plot_types_bar-curtailment.png +0 -0
  712. /pypsa-1.2.3/test/baseline/test_plot_types_bar_energy_balance.png → /pypsa-1.2.4/test/baseline/test_plot_types_bar-energy_balance.png +0 -0
  713. /pypsa-1.2.3/test/baseline/test_plot_types_bar_expanded_capacity.png → /pypsa-1.2.4/test/baseline/test_plot_types_bar-expanded_capacity.png +0 -0
  714. /pypsa-1.2.3/test/baseline/test_plot_types_bar_expanded_capex.png → /pypsa-1.2.4/test/baseline/test_plot_types_bar-expanded_capex.png +0 -0
  715. /pypsa-1.2.3/test/baseline/test_plot_types_bar_installed_capacity.png → /pypsa-1.2.4/test/baseline/test_plot_types_bar-installed_capacity.png +0 -0
  716. /pypsa-1.2.3/test/baseline/test_plot_types_bar_installed_capex.png → /pypsa-1.2.4/test/baseline/test_plot_types_bar-installed_capex.png +0 -0
  717. {pypsa-1.2.3 → pypsa-1.2.4}/test/baseline/test_plot_types_bar-market_value.png +0 -0
  718. /pypsa-1.2.3/test/baseline/test_plot_types_bar_opex.png → /pypsa-1.2.4/test/baseline/test_plot_types_bar-opex.png +0 -0
  719. /pypsa-1.2.3/test/baseline/test_plot_types_bar_optimal_capacity.png → /pypsa-1.2.4/test/baseline/test_plot_types_bar-optimal_capacity.png +0 -0
  720. /pypsa-1.2.3/test/baseline/test_plot_types_bar_revenue.png → /pypsa-1.2.4/test/baseline/test_plot_types_bar-revenue.png +0 -0
  721. /pypsa-1.2.3/test/baseline/test_plot_types_bar_supply.png → /pypsa-1.2.4/test/baseline/test_plot_types_bar-supply.png +0 -0
  722. /pypsa-1.2.3/test/baseline/test_plot_types_bar_transmission.png → /pypsa-1.2.4/test/baseline/test_plot_types_bar-transmission.png +0 -0
  723. /pypsa-1.2.3/test/baseline/test_plot_types_bar_withdrawal.png → /pypsa-1.2.4/test/baseline/test_plot_types_bar-withdrawal.png +0 -0
  724. /pypsa-1.2.3/test/baseline/test_plot_types_line_capex.png → /pypsa-1.2.4/test/baseline/test_plot_types_line-capex.png +0 -0
  725. /pypsa-1.2.3/test/baseline/test_plot_types_line_expanded_capacity.png → /pypsa-1.2.4/test/baseline/test_plot_types_line-expanded_capacity.png +0 -0
  726. /pypsa-1.2.3/test/baseline/test_plot_types_line_expanded_capex.png → /pypsa-1.2.4/test/baseline/test_plot_types_line-expanded_capex.png +0 -0
  727. /pypsa-1.2.3/test/baseline/test_plot_types_line_installed_capacity.png → /pypsa-1.2.4/test/baseline/test_plot_types_line-installed_capacity.png +0 -0
  728. /pypsa-1.2.3/test/baseline/test_plot_types_line_installed_capex.png → /pypsa-1.2.4/test/baseline/test_plot_types_line-installed_capex.png +0 -0
  729. /pypsa-1.2.3/test/baseline/test_plot_types_line_opex.png → /pypsa-1.2.4/test/baseline/test_plot_types_line-opex.png +0 -0
  730. /pypsa-1.2.3/test/baseline/test_plot_types_line_optimal_capacity.png → /pypsa-1.2.4/test/baseline/test_plot_types_line-optimal_capacity.png +0 -0
  731. /pypsa-1.2.3/test/baseline/test_plot_types_line_transmission.png → /pypsa-1.2.4/test/baseline/test_plot_types_line-transmission.png +0 -0
  732. {pypsa-1.2.3 → pypsa-1.2.4}/test/baseline/test_simple_plot_capacity_factor.png +0 -0
  733. {pypsa-1.2.3 → pypsa-1.2.4}/test/baseline/test_simple_plot_capex.png +0 -0
  734. {pypsa-1.2.3 → pypsa-1.2.4}/test/baseline/test_simple_plot_curtailment.png +0 -0
  735. {pypsa-1.2.3 → pypsa-1.2.4}/test/baseline/test_simple_plot_energy_balance.png +0 -0
  736. {pypsa-1.2.3 → pypsa-1.2.4}/test/baseline/test_simple_plot_expanded_capacity.png +0 -0
  737. {pypsa-1.2.3 → pypsa-1.2.4}/test/baseline/test_simple_plot_expanded_capex.png +0 -0
  738. {pypsa-1.2.3 → pypsa-1.2.4}/test/baseline/test_simple_plot_installed_capacity.png +0 -0
  739. {pypsa-1.2.3 → pypsa-1.2.4}/test/baseline/test_simple_plot_installed_capex.png +0 -0
  740. {pypsa-1.2.3 → pypsa-1.2.4}/test/baseline/test_simple_plot_market_value.png +0 -0
  741. {pypsa-1.2.3 → pypsa-1.2.4}/test/baseline/test_simple_plot_opex.png +0 -0
  742. {pypsa-1.2.3 → pypsa-1.2.4}/test/baseline/test_simple_plot_optimal_capacity.png +0 -0
  743. {pypsa-1.2.3 → pypsa-1.2.4}/test/baseline/test_simple_plot_revenue.png +0 -0
  744. {pypsa-1.2.3 → pypsa-1.2.4}/test/baseline/test_simple_plot_supply.png +0 -0
  745. {pypsa-1.2.3 → pypsa-1.2.4}/test/baseline/test_simple_plot_transmission.png +0 -0
  746. {pypsa-1.2.3 → pypsa-1.2.4}/test/baseline/test_simple_plot_withdrawal.png +0 -0
  747. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lopf/buses-marginal_price.csv +0 -0
  748. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lopf/buses-p.csv +0 -0
  749. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lopf/buses-v_ang.csv +0 -0
  750. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lopf/buses-v_mag_pu.csv +0 -0
  751. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lopf/buses.csv +0 -0
  752. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lopf/carriers.csv +0 -0
  753. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lopf/crs.json +0 -0
  754. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lopf/generators-p.csv +0 -0
  755. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lopf/generators-p_max_pu.csv +0 -0
  756. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lopf/generators.csv +0 -0
  757. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lopf/global_constraints.csv +0 -0
  758. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lopf/investment_periods.csv +0 -0
  759. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lopf/lines-p0.csv +0 -0
  760. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lopf/lines-p1.csv +0 -0
  761. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lopf/lines.csv +0 -0
  762. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lopf/links-p0.csv +0 -0
  763. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lopf/links-p1.csv +0 -0
  764. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lopf/links.csv +0 -0
  765. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lopf/loads-p.csv +0 -0
  766. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lopf/loads-p_set.csv +0 -0
  767. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lopf/loads.csv +0 -0
  768. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lopf/meta.json +0 -0
  769. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lopf/network.csv +0 -0
  770. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lopf/snapshots.csv +0 -0
  771. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lpf/buses-p.csv +0 -0
  772. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lpf/buses-v_ang.csv +0 -0
  773. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lpf/buses-v_mag_pu.csv +0 -0
  774. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lpf/buses.csv +0 -0
  775. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lpf/carriers.csv +0 -0
  776. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lpf/generators-p.csv +0 -0
  777. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lpf/generators-p_max_pu.csv +0 -0
  778. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lpf/generators.csv +0 -0
  779. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lpf/global_constraints.csv +0 -0
  780. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lpf/lines-p0.csv +0 -0
  781. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lpf/lines-p1.csv +0 -0
  782. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lpf/lines.csv +0 -0
  783. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lpf/links-p0.csv +0 -0
  784. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lpf/links-p1.csv +0 -0
  785. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lpf/links-p_set.csv +0 -0
  786. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lpf/links.csv +0 -0
  787. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lpf/loads-p.csv +0 -0
  788. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lpf/loads-p_set.csv +0 -0
  789. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lpf/loads.csv +0 -0
  790. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lpf/network.csv +0 -0
  791. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/ac-dc-meshed/results-lpf/snapshots.csv +0 -0
  792. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/benchmark-sp/buses-marginal_price.csv +0 -0
  793. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/benchmark-sp/buses-p.csv +0 -0
  794. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/benchmark-sp/buses.csv +0 -0
  795. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/benchmark-sp/crs.json +0 -0
  796. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/benchmark-sp/generators-p-high.csv +0 -0
  797. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/benchmark-sp/generators-p-med.csv +0 -0
  798. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/benchmark-sp/generators-p.csv +0 -0
  799. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/benchmark-sp/generators-p_max_pu.csv +0 -0
  800. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/benchmark-sp/generators.csv +0 -0
  801. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/benchmark-sp/investment_periods.csv +0 -0
  802. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/benchmark-sp/loads-p.csv +0 -0
  803. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/benchmark-sp/loads.csv +0 -0
  804. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/benchmark-sp/meta.json +0 -0
  805. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/benchmark-sp/network.csv +0 -0
  806. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/benchmark-sp/snapshots.csv +0 -0
  807. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/storage-hvdc/results-lopf/buses-marginal_price.csv +0 -0
  808. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/storage-hvdc/results-lopf/buses-p.csv +0 -0
  809. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/storage-hvdc/results-lopf/buses-v_ang.csv +0 -0
  810. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/storage-hvdc/results-lopf/buses.csv +0 -0
  811. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/storage-hvdc/results-lopf/carriers.csv +0 -0
  812. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/storage-hvdc/results-lopf/generators-p.csv +0 -0
  813. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/storage-hvdc/results-lopf/generators-p_max_pu.csv +0 -0
  814. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/storage-hvdc/results-lopf/generators.csv +0 -0
  815. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/storage-hvdc/results-lopf/global_constraints.csv +0 -0
  816. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/storage-hvdc/results-lopf/lines-p0.csv +0 -0
  817. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/storage-hvdc/results-lopf/lines-p1.csv +0 -0
  818. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/storage-hvdc/results-lopf/lines.csv +0 -0
  819. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/storage-hvdc/results-lopf/links-p0.csv +0 -0
  820. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/storage-hvdc/results-lopf/links-p1.csv +0 -0
  821. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/storage-hvdc/results-lopf/links.csv +0 -0
  822. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/storage-hvdc/results-lopf/loads-p.csv +0 -0
  823. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/storage-hvdc/results-lopf/loads-p_set.csv +0 -0
  824. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/storage-hvdc/results-lopf/loads.csv +0 -0
  825. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/storage-hvdc/results-lopf/network.csv +0 -0
  826. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/storage-hvdc/results-lopf/snapshots.csv +0 -0
  827. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/storage-hvdc/results-lopf/storage_units-inflow.csv +0 -0
  828. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/storage-hvdc/results-lopf/storage_units-p.csv +0 -0
  829. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/storage-hvdc/results-lopf/storage_units-spill.csv +0 -0
  830. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/storage-hvdc/results-lopf/storage_units-state_of_charge.csv +0 -0
  831. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/storage-hvdc/results-lopf/storage_units-state_of_charge_set.csv +0 -0
  832. {pypsa-1.2.3 → pypsa-1.2.4}/test/data/storage-hvdc/results-lopf/storage_units.csv +0 -0
  833. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_bugs.py +0 -0
  834. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_buses.py +0 -0
  835. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_capital_cost_split.py +0 -0
  836. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_carriers.py +0 -0
  837. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_collection.py +0 -0
  838. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_committable_extendable.py +0 -0
  839. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_common.py +0 -0
  840. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_common_deprecations.py +0 -0
  841. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_compatibility_ext_and_com.py +0 -0
  842. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_components.py +0 -0
  843. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_components_array.py +0 -0
  844. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_components_custom.py +0 -0
  845. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_components_store.py +0 -0
  846. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_components_utils.py +0 -0
  847. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_consistency_check.py +0 -0
  848. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_constants.py +0 -0
  849. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_deprecations.py +0 -0
  850. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_descriptors.py +0 -0
  851. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_docs.py +0 -0
  852. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_examples.py +0 -0
  853. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_graph.py +0 -0
  854. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_guards.py +0 -0
  855. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_indices.py +0 -0
  856. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_io_cloudpathlib.py +0 -0
  857. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_link_post_discretization.py +0 -0
  858. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_lopf_ac_dc.py +0 -0
  859. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_lopf_activity_mask.py +0 -0
  860. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_lopf_and_subsequent_power_flow.py +0 -0
  861. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_lopf_basic_constraints.py +0 -0
  862. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_lopf_global_constraints.py +0 -0
  863. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_lopf_iteratively.py +0 -0
  864. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_lopf_losses.py +0 -0
  865. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_lopf_mga.py +0 -0
  866. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_lopf_modularity.py +0 -0
  867. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_lopf_multilink.py +0 -0
  868. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_lopf_process.py +0 -0
  869. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_lopf_quadratic_costs.py +0 -0
  870. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_lopf_rolling_horizon.py +0 -0
  871. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_lopf_storage.py +0 -0
  872. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_lopf_unit_commitment.py +0 -0
  873. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_lopf_varying_inputs.py +0 -0
  874. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_lpf_against_pypower.py +0 -0
  875. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_meshed_threshold.py +0 -0
  876. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_network_cycles.py +0 -0
  877. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_network_transform.py +0 -0
  878. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_objective_constant.py +0 -0
  879. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_optimization_expressions.py +0 -0
  880. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_optional_dependencies.py +0 -0
  881. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_options.py +0 -0
  882. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_pf_activity_mask.py +0 -0
  883. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_pf_against_pypower.py +0 -0
  884. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_pf_distributed_slack.py +0 -0
  885. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_plot_maps_common.py +0 -0
  886. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_plot_maps_interactive.py +0 -0
  887. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_plot_maps_static.py +0 -0
  888. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_riskaversion.py +0 -0
  889. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_sclopf_scigrid.py +0 -0
  890. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_snapshot_weightings.py +0 -0
  891. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_spatial_clustering.py +0 -0
  892. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_stand_by_cost.py +0 -0
  893. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_stochastic.py +0 -0
  894. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_stochastic_not_implemented.py +0 -0
  895. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_subnetwork.py +0 -0
  896. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_transmission_losses.py +0 -0
  897. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_transport_delay.py +0 -0
  898. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_version.py +0 -0
  899. {pypsa-1.2.3 → pypsa-1.2.4}/test/test_warnings_cyclic_storage.py +0 -0
@@ -107,14 +107,14 @@ jobs:
107
107
  - name: Run unit tests (old API)
108
108
  if: matrix.api == 'default'
109
109
  run: >
110
- uv run pytest --mpl --mpl-generate-summary=html --mpl-results-path=mpl-results
110
+ uv run pytest
111
111
  --cov=pypsa --junitxml=junit.xml -o junit_family=legacy
112
112
  && uv run coverage xml
113
113
 
114
114
  - name: Run unit tests (pandas 3)
115
115
  if: matrix.api == 'pandas3'
116
116
  run: >
117
- uv run --no-sync pytest --mpl --mpl-generate-summary=html --mpl-results-path=mpl-results
117
+ uv run --no-sync pytest
118
118
  --cov=pypsa --junitxml=junit.xml -o junit_family=legacy
119
119
  && uv run --no-sync coverage xml
120
120
 
@@ -123,20 +123,9 @@ jobs:
123
123
  run: >
124
124
  uv run pytest
125
125
  --new-components-api
126
- --mpl --mpl-generate-summary=html --mpl-results-path=mpl-results
127
126
  --cov=pypsa --junitxml=junit.xml -o junit_family=legacy
128
127
  && uv run coverage xml
129
128
 
130
- - name: Upload artifacts
131
- if: matrix.api == 'default' && matrix.os == 'macos-latest' && matrix.python-version == '3.13'
132
- uses: actions/upload-artifact@v7
133
- with:
134
- name: results-plotting
135
- path: |
136
- mpl-results
137
- retention-days: 14
138
- if-no-files-found: ignore
139
-
140
129
  - name: Upload code coverage report
141
130
  if: ${{ !cancelled() }}
142
131
  uses: codecov/codecov-action@v6
@@ -159,6 +148,51 @@ jobs:
159
148
  python${{ matrix.python-version }},
160
149
  api-${{ matrix.api }}
161
150
 
151
+ test-plots:
152
+ # Run the matplotlib image-comparison tests once, on a single instance.
153
+ # Baselines are generated on Linux; see test/test_statistics_plot.py.
154
+ name: Test plots
155
+ needs: [build]
156
+ runs-on: ubuntu-latest
157
+ env:
158
+ MPLBACKEND: Agg # https://github.com/orgs/community/discussions/26434
159
+ steps:
160
+ - uses: actions/checkout@v6
161
+ with:
162
+ fetch-depth: 0 # Needed for setuptools_scm
163
+
164
+ - name: Set up Python 3.13
165
+ uses: actions/setup-python@v6
166
+ with:
167
+ python-version: 3.13
168
+
169
+ - name: Download package
170
+ uses: actions/download-artifact@v8
171
+ with:
172
+ name: Packages
173
+ path: dist
174
+
175
+ - name: Install package and dependencies
176
+ run: |
177
+ python -m pip install uv
178
+ uv sync --all-extras --no-install-project
179
+ uv pip install "$(ls dist/*.whl)"
180
+
181
+ - name: Run image comparison tests
182
+ run: >
183
+ uv run pytest --run-plot-tests -m mpl_image_compare
184
+ --mpl --mpl-generate-summary=html --mpl-results-path=mpl-results
185
+
186
+ - name: Upload artifacts
187
+ if: ${{ !cancelled() }}
188
+ uses: actions/upload-artifact@v7
189
+ with:
190
+ name: results-plotting
191
+ path: |
192
+ mpl-results
193
+ retention-days: 14
194
+ if-no-files-found: ignore
195
+
162
196
  check-docs:
163
197
  name: Check docs
164
198
  needs: [build]
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) <year> <copyright holders>
3
+ Copyright (c) 2015-2026 PyPSA contributors
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
6
6
  associated documentation files (the "Software"), to deal in the Software without restriction, including
@@ -1,11 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pypsa
3
- Version: 1.2.3
3
+ Version: 1.2.4
4
4
  Summary: Python for Power Systems Analysis
5
5
  Author-email: "PyPSA Developers, see https://docs.pypsa.org/latest/contributing/contributors.html" <t.brown@tu-berlin.de>
6
6
  License: MIT License
7
7
 
8
- Copyright (c) <year> <copyright holders>
8
+ Copyright (c) 2015-2026 PyPSA contributors
9
9
 
10
10
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
11
11
  associated documentation files (the "Software"), to deal in the Software without restriction, including
@@ -77,11 +77,13 @@ Requires-Dist: pytest; extra == "test"
77
77
  Requires-Dist: pytest-cov; extra == "test"
78
78
  Requires-Dist: pytest-mpl; extra == "test"
79
79
  Requires-Dist: coverage; extra == "test"
80
+ Requires-Dist: pyarrow; extra == "test"
80
81
  Provides-Extra: dev
81
82
  Requires-Dist: pytest; extra == "dev"
82
83
  Requires-Dist: pytest-cov; extra == "dev"
83
84
  Requires-Dist: pytest-mpl; extra == "dev"
84
85
  Requires-Dist: coverage; extra == "dev"
86
+ Requires-Dist: pyarrow; extra == "dev"
85
87
  Requires-Dist: matplotlib<3.11; extra == "dev"
86
88
  Requires-Dist: pypower; extra == "dev"
87
89
  Requires-Dist: pandapower>=2.14.11; extra == "dev"
@@ -62,7 +62,7 @@
62
62
  "\n",
63
63
  "The Cournot equilibrium among $N$ players can be characterised as the solution to a **single optimisation problem**. Margaret Slade's [1994 paper](https://www.jstor.org/stable/2950588) calls it a \"fictitious-objective function\" that reproduces equilibrium game results. The paper shows that for the homogeneous Cournot game, linear demand is sufficient for the existence of such a fictitious objective.\n",
64
64
  "\n",
65
- "Ben Hobbs also explored this topic in [2001 paper](https://hobbsgroup.johnshopkins.edu/docs/papers/IEEE_Hobbs_2001_LCP00918286.pdf) by studying properties of MCP and LCP (Linear Complementarity Problem) formulations. The paper concludes: \"The key assumption that permits their [KKT-based equilibrium] formulation as LCPs is that each producer naively assumes that its output will not affect transmission prices\" - so another condition for the existence of a fictitious objective is that there is no binding network constraints that create asymmetric shadow prices across strategic players.\n",
65
+ "Ben Hobbs also explored this topic in [2001 paper](https://hobbsgroup.johnshopkins.edu/docs/papers/IEEE_Hobbs_2001_LCP00918286.pdf) by studying properties of MCP and LCP (Linear Complementarity Problem) formulations. The paper concludes: \"The key assumption that permits their [KKT-based equilibrium] formulation as LCPs is that each producer naively assumes that its output will not affect transmission prices\" - so another condition for the existence of a fictitious objective is that players treat transmission prices as fixed (the player's perceived derivative of the transmission shadow price with respect to its own output is zero), so congestion enters every player's problem as a linear term.\n",
66
66
  "\n",
67
67
  "Let's work through the math, then see it in action in PyPSA."
68
68
  ]
@@ -6,9 +6,9 @@ SPDX-License-Identifier: CC-BY-4.0
6
6
 
7
7
  # Release Notes
8
8
 
9
- ## [**v1.2.3**](https://github.com/PyPSA/PyPSA/releases/tag/v1.2.3) <small>12th June 2026</small> { id="v1.2.3" }
10
-
11
9
  <!--
10
+ ## Upcoming Release
11
+
12
12
  !!! info "Upcoming Release"
13
13
 
14
14
  The features listed below have not yet been released, but will be included in the
@@ -16,6 +16,47 @@ SPDX-License-Identifier: CC-BY-4.0
16
16
  to install the `master` branch, e.g. `pip install git+https://github.com/pypsa/pypsa`.
17
17
  -->
18
18
 
19
+ ## [**v1.2.4**](https://github.com/PyPSA/PyPSA/releases/tag/v1.2.4) <small>27th June 2026</small> { id="v1.2.4" }
20
+
21
+ ### Bug Fixes
22
+
23
+ - Fix `optimize()` and [`export_to_netcdf()`][pypsa.Network.export_to_netcdf] failing under pandas `>= 3.0` / `future.infer_string`. String labels are now converted back to `object` on both import and export. (<!-- md:pr 1687 -->)
24
+
25
+ - Fixed the `suffix` argument of [`n.add`][pypsa.Network.add] and [`n.remove`][pypsa.Network.remove]. Passing a list to both `name` and `suffix` now raises an error instead of silently pairing them. (<!-- md:pr 1682 -->)
26
+
27
+ - Fixed a collection of issues in the [`n.statistics.*.plot`/`.iplot`][pypsa.statistics.StatisticsAccessor] accessors (<!-- md:pr 1721 -->):
28
+ - `color=None` now disables color grouping instead of falling back to `"carrier"`.
29
+ - Passing an unsupported filter (e.g. `carrier` to `prices`) now raises a clear error instead of being silently dropped.
30
+ - Distribution plots (`box`/`violin`/`histogram`) default to the full time series so they show real distributions.
31
+ - `box`/`violin` figure height scales with the number of categorical rows (capped at 30 inches).
32
+ - Static `line`/`scatter` plots honor carrier colors via the palette.
33
+ - Requested but empty facets stay visible instead of being silently dropped.
34
+ - `sharex=False`/`sharey=False` keeps tick labels on all faceted subplots.
35
+ - Interactive plots with a categorical y-axis label every bar and scale the figure height with the number of rows (capped at 2000 pixels), instead of thinning tick labels.
36
+ - Static faceted plots now accept `col_wrap` to wrap facets across rows.
37
+ - Multi-period statistics (e.g. `optimal_capacity`) name their per-period columns `period`, so line/area plots no longer fail with `KeyError: 'period'`.
38
+ - A dimension mapped to `x`/`y`/`color` (e.g. `x="period"`) is no longer also used as an automatic facet.
39
+ - Filtering by `carrier`/`bus_carrier` on a [`NetworkCollection`][pypsa.NetworkCollection] (or stochastic network) with `nice_names=True` no longer raises `NotImplementedError`.
40
+ - Non-bar plots of a collection (or stochastic network) of multi-period networks now facet by both the collection/scenario dimension and the period, instead of dropping the period (which made area plots fail with `cannot reshape` and line plots overlap periods).
41
+ - [`n.statistics.prices`][pypsa.statistics.StatisticsAccessor.prices] accepts any static bus attribute (e.g. `country`) in `groupby`, and its plot accessors support these as dimensions (e.g. `prices.plot.box(facet_row="country")`) instead of failing with a `KeyError`.
42
+ - Interactive plots render LaTeX carrier names and categorical axes correctly with `pandas>=3` (string-dtype columns).
43
+ - Passing `groupby_time=False` to [`n.statistics.system_cost`][pypsa.statistics.StatisticsAccessor.system_cost] is deprecated and will raise in v2.0; it has no per-snapshot resolution as it includes static capital expenditure. Use `opex(groupby_time=False)` for the time-resolved operational cost. (<!-- md:pr 1721 -->)
44
+
45
+ - Fix ramp limit constraints spuriously linking across investment period boundaries in multi-investment optimization. Ramp constraints now reset at the first snapshot of each period instead of only at the global first snapshot, which could render feasible pathway models infeasible. (<!-- md:pr 1746 -->)
46
+
47
+ - Fix temporal clustering producing `*_min_pu > *_max_pu` for some snapshots. Aggregated lower bounds are now clipped to their paired upper bound, both for the floating-point drift in [`segment()`][pypsa.clustering.temporal.TemporalClusteringMixin.segment] and the `e_min_pu`/`e_max_pu` crossover from min/max aggregation rules. (<!-- md:pr 1752 -->)
48
+
49
+ - Fix `KeyError` in [`n.pf()`][pypsa.network.power_flow.NetworkPowerFlowMixin.pf] and [`n.lpf()`][pypsa.network.power_flow.NetworkPowerFlowMixin.lpf] when a network contains multiple sub-networks and one of them has no transformers (or otherwise lacks a passive branch component present in another sub-network). (<!-- md:pr 1754 -->)
50
+
51
+ - Fix the sign of the shunt susceptance when importing from pandapower. A shunt with `q_mvar > 0` (inductive) was previously imported with the wrong sign, causing the power flow to diverge from pandapower. (<!-- md:pr 1758 -->)
52
+
53
+ - A warning is now logged when manually set impedance parameters (`r`, `x`, `g`, `b`, `s_nom`) on transformers or lines with a standard `type` are overridden by the type during [`n.calculate_dependent_values()`][pypsa.network.power_flow.NetworkPowerFlowMixin.calculate_dependent_values], instead of silently discarding them. (<!-- md:pr 1759 -->)
54
+
55
+ - Fix the `snapshot` index name being dropped from dynamic data when reassigning [`n.snapshots`][pypsa.Network.snapshots]. (<!-- md:pr 1745 -->)
56
+
57
+
58
+ ## [**v1.2.3**](https://github.com/PyPSA/PyPSA/releases/tag/v1.2.3) <small>12th June 2026</small> { id="v1.2.3" }
59
+
19
60
  ### Features
20
61
 
21
62
  - Added compatibility with the stricter dimension alignment handling in the upcoming linopy `>=0.8`. (<!-- md:pr 1708 -->)
@@ -115,6 +115,9 @@ v_0 \\ v_1
115
115
 
116
116
  The transformer models here are largely based on the implementation in [pandapower](https://github.com/panda-power/pandapower), which is loosely based on [DIgSILENT PowerFactory](http://www.digsilent.de/index.php/products-powerfactory.html).
117
117
 
118
+ !!! note "Impedance units"
119
+ Transformer `r`, `x`, `g`, `b` are given in per unit (base power `s_nom`, base voltage `v_nom`), as found on transformer datasheets, whereas line impedances are given in physical units (Ω and S). PyPSA rescales the transformer impedances to a common 1 MVA base via `x_pu = x / s_nom`.
120
+
118
121
  Transformers are modelled either with the equivalent T model (the default, since this represents the physics better) or with the equivalent PI model. The can be controlled by setting transformer attribute `model` to either "t" or "pi".
119
122
 
120
123
  The tap changer can either be modelled on the primary, high voltage side 0 (the default) or on the secondary, low voltage side 1. This is set with attribute `tap_side`.
@@ -68,12 +68,14 @@ test = [
68
68
  "pytest-cov",
69
69
  "pytest-mpl",
70
70
  "coverage",
71
+ "pyarrow",
71
72
  ]
72
73
  dev = [
73
74
  "pytest",
74
75
  "pytest-cov",
75
76
  "pytest-mpl",
76
77
  "coverage",
78
+ "pyarrow",
77
79
  "matplotlib<3.11", # remove when uv.lock is tracked
78
80
  "pypower",
79
81
  "pandapower>=2.14.11",
@@ -138,6 +140,10 @@ filterwarnings = [
138
140
 
139
141
  # Ignore pandas<3.0.3 usage of the deprecated `locs` attribute of matplotlib>=3.11
140
142
  "ignore:The locs attribute was deprecated:DeprecationWarning",
143
+
144
+ # numpy>=2.5 deprecations not yet handled by netCDF4 and matplotlib
145
+ "ignore:Setting the shape on a NumPy array has been deprecated:DeprecationWarning",
146
+ "ignore:The 'generic' unit for NumPy timedelta is deprecated:DeprecationWarning",
141
147
  ]
142
148
  markers = [
143
149
  "mpl_image_compare",
@@ -57,6 +57,28 @@ TEMPORAL_AGGREGATION_DEFAULTS: dict[str, str] = {
57
57
  }
58
58
 
59
59
 
60
+ def _enforce_pu_bounds(n: Network) -> None:
61
+ """Clip aggregated `*_min_pu` series so they never exceed `*_max_pu`.
62
+
63
+ Aggregation can lift a lower bound above its paired upper bound, either from
64
+ floating-point error (segmentation normalises per column) or from min/max
65
+ aggregation rules (`e_min_pu` uses `max`, `e_max_pu` uses `min`).
66
+ """
67
+ for c in n.components:
68
+ for min_attr in [a for a in c.dynamic if a.endswith("_min_pu")]:
69
+ max_attr = min_attr.replace("_min_pu", "_max_pu")
70
+ if max_attr not in c.dynamic:
71
+ continue
72
+ min_df = c.dynamic[min_attr]
73
+ max_df = c.dynamic[max_attr]
74
+ common = min_df.columns.intersection(max_df.columns)
75
+ if common.empty:
76
+ continue
77
+ c.dynamic[min_attr].loc[:, common] = min_df[common].clip(
78
+ upper=max_df[common]
79
+ )
80
+
81
+
60
82
  @dataclass
61
83
  class TemporalClustering:
62
84
  """Result of temporal clustering.
@@ -74,6 +96,10 @@ class TemporalClustering:
74
96
  n: Network
75
97
  snapshot_map: pd.Series
76
98
 
99
+ def __post_init__(self) -> None:
100
+ """Sanitize time clustered data."""
101
+ _enforce_pu_bounds(self.n)
102
+
77
103
 
78
104
  def _get_aggregation_rule(
79
105
  attr: str,
@@ -384,7 +384,11 @@ def equals(
384
384
  try:
385
385
  if isinstance(a, pd.DataFrame):
386
386
  pd_testing.assert_frame_equal(
387
- a, b, check_dtype=False, check_index_type=False
387
+ a,
388
+ b,
389
+ check_dtype=False,
390
+ check_index_type=False,
391
+ check_column_type=False,
388
392
  )
389
393
  elif isinstance(a, pd.Series):
390
394
  pd_testing.assert_series_equal(
@@ -46,7 +46,7 @@ class Buses(Components):
46
46
  def add(
47
47
  self,
48
48
  name: str | int | Sequence[int | str],
49
- suffix: str = "",
49
+ suffix: str | Sequence[str] = "",
50
50
  overwrite: bool = False,
51
51
  return_names: bool | None = None,
52
52
  **kwargs: Any,
@@ -47,7 +47,7 @@ class Carriers(Components):
47
47
  def add(
48
48
  self,
49
49
  name: str | int | Sequence[int | str],
50
- suffix: str = "",
50
+ suffix: str | Sequence[str] = "",
51
51
  overwrite: bool = False,
52
52
  return_names: bool | None = None,
53
53
  **kwargs: Any,
@@ -74,7 +74,7 @@ class Generators(Components):
74
74
  def add(
75
75
  self,
76
76
  name: str | int | Sequence[int | str],
77
- suffix: str = "",
77
+ suffix: str | Sequence[str] = "",
78
78
  overwrite: bool = False,
79
79
  return_names: bool | None = None,
80
80
  **kwargs: Any,
@@ -42,7 +42,7 @@ class GlobalConstraints(Components):
42
42
  def add(
43
43
  self,
44
44
  name: str | int | Sequence[int | str],
45
- suffix: str = "",
45
+ suffix: str | Sequence[str] = "",
46
46
  overwrite: bool = False,
47
47
  return_names: bool | None = None,
48
48
  **kwargs: Any,
@@ -42,7 +42,7 @@ class LineTypes(Components):
42
42
  def add(
43
43
  self,
44
44
  name: str | int | Sequence[int | str],
45
- suffix: str = "",
45
+ suffix: str | Sequence[str] = "",
46
46
  overwrite: bool = False,
47
47
  return_names: bool | None = None,
48
48
  **kwargs: Any,
@@ -80,7 +80,7 @@ class Lines(Components):
80
80
  def add(
81
81
  self,
82
82
  name: str | int | Sequence[int | str],
83
- suffix: str = "",
83
+ suffix: str | Sequence[str] = "",
84
84
  overwrite: bool = False,
85
85
  return_names: bool | None = None,
86
86
  **kwargs: Any,
@@ -84,7 +84,7 @@ class Links(_Multiport):
84
84
  def add(
85
85
  self,
86
86
  name: str | int | Sequence[int | str],
87
- suffix: str = "",
87
+ suffix: str | Sequence[str] = "",
88
88
  overwrite: bool = False,
89
89
  return_names: bool | None = None,
90
90
  **kwargs: Any,
@@ -38,7 +38,7 @@ class Loads(Components):
38
38
  def add(
39
39
  self,
40
40
  name: str | int | Sequence[int | str],
41
- suffix: str = "",
41
+ suffix: str | Sequence[str] = "",
42
42
  overwrite: bool = False,
43
43
  return_names: bool | None = None,
44
44
  **kwargs: Any,
@@ -81,7 +81,7 @@ class Processes(_Multiport):
81
81
  def add(
82
82
  self,
83
83
  name: str | int | Sequence[int | str],
84
- suffix: str = "",
84
+ suffix: str | Sequence[str] = "",
85
85
  overwrite: bool = False,
86
86
  return_names: bool | None = None,
87
87
  **kwargs: Any,
@@ -35,7 +35,7 @@ class Shapes(Components):
35
35
  def add(
36
36
  self,
37
37
  name: str | int | Sequence[int | str],
38
- suffix: str = "",
38
+ suffix: str | Sequence[str] = "",
39
39
  overwrite: bool = False,
40
40
  return_names: bool | None = None,
41
41
  **kwargs: Any,
@@ -35,7 +35,7 @@ class ShuntImpedances(Components):
35
35
  def add(
36
36
  self,
37
37
  name: str | int | Sequence[int | str],
38
- suffix: str = "",
38
+ suffix: str | Sequence[str] = "",
39
39
  overwrite: bool = False,
40
40
  return_names: bool | None = None,
41
41
  **kwargs: Any,
@@ -76,7 +76,7 @@ class StorageUnits(Components):
76
76
  def add(
77
77
  self,
78
78
  name: str | int | Sequence[int | str],
79
- suffix: str = "",
79
+ suffix: str | Sequence[str] = "",
80
80
  overwrite: bool = False,
81
81
  return_names: bool | None = None,
82
82
  **kwargs: Any,
@@ -71,7 +71,7 @@ class Stores(Components):
71
71
  def add(
72
72
  self,
73
73
  name: str | int | Sequence[int | str],
74
- suffix: str = "",
74
+ suffix: str | Sequence[str] = "",
75
75
  overwrite: bool = False,
76
76
  return_names: bool | None = None,
77
77
  **kwargs: Any,
@@ -42,7 +42,7 @@ class SubNetworks(Components):
42
42
  def add(
43
43
  self,
44
44
  name: str | int | Sequence[int | str],
45
- suffix: str = "",
45
+ suffix: str | Sequence[str] = "",
46
46
  overwrite: bool = False,
47
47
  return_names: bool | None = None,
48
48
  **kwargs: Any,
@@ -42,7 +42,7 @@ class TransformerTypes(Components):
42
42
  def add(
43
43
  self,
44
44
  name: str | int | Sequence[int | str],
45
- suffix: str = "",
45
+ suffix: str | Sequence[str] = "",
46
46
  overwrite: bool = False,
47
47
  return_names: bool | None = None,
48
48
  **kwargs: Any,
@@ -74,7 +74,7 @@ class Transformers(Components):
74
74
  def add(
75
75
  self,
76
76
  name: str | int | Sequence[int | str],
77
- suffix: str = "",
77
+ suffix: str | Sequence[str] = "",
78
78
  overwrite: bool = False,
79
79
  return_names: bool | None = None,
80
80
  **kwargs: Any,
@@ -42,7 +42,7 @@ class ComponentsTransformMixin:
42
42
  def add(
43
43
  self,
44
44
  name: str | int | Sequence[int | str],
45
- suffix: str = "",
45
+ suffix: str | Sequence[str] = "",
46
46
  overwrite: bool = False,
47
47
  return_names: bool | None = None,
48
48
  **kwargs: Any,
@@ -72,8 +72,9 @@ class ComponentsTransformMixin:
72
72
  ----------
73
73
  name : str or int or list of str or list of int
74
74
  Component name(s)
75
- suffix : str, default ""
76
- All components are named after name with this added suffix.
75
+ suffix : str or list of str, default ""
76
+ Suffix added to each name. Pass a list together with a single `name`
77
+ to add one component per suffix.
77
78
  overwrite : bool, default False
78
79
  If True, existing components with the same names as in `name` will be
79
80
  overwritten. Otherwise only new components will be added and others will be
@@ -10,19 +10,23 @@ Additional types can be added by the user.
10
10
 
11
11
  from __future__ import annotations
12
12
 
13
- from pathlib import Path
13
+ from typing import TYPE_CHECKING
14
14
 
15
15
  import numpy as np
16
16
  import pandas as pd
17
17
 
18
18
  from pypsa.common import list_as_string
19
+ from pypsa.constants import PYPSA_DATA_DIR
19
20
  from pypsa.definitions.components import ComponentType
20
21
  from pypsa.deprecations import COMPONENT_ALIAS_DICT
21
22
 
23
+ if TYPE_CHECKING:
24
+ from importlib.resources.abc import Traversable
25
+
22
26
  # TODO better path handeling, integrate custom components
23
- _components_path = Path(__file__).parent.parent / "data" / "components.csv"
24
- _attrs_path = Path(__file__).parent.parent / "data" / "component_attrs"
25
- _standard_types_path = Path(__file__).parent.parent / "data" / "standard_types"
27
+ _components_path = PYPSA_DATA_DIR / "components.csv"
28
+ _attrs_path = PYPSA_DATA_DIR / "component_attrs"
29
+ _standard_types_path = PYPSA_DATA_DIR / "standard_types"
26
30
 
27
31
  component_types_df = pd.read_csv(_components_path, index_col=0)
28
32
  default_components = component_types_df.index.to_list()
@@ -136,7 +140,9 @@ def add_component_type(
136
140
 
137
141
 
138
142
  def _load_default_component_types(
139
- component_df: pd.DataFrame, attrs_path: Path, standard_types_path: Path
143
+ component_df: pd.DataFrame,
144
+ attrs_path: Traversable,
145
+ standard_types_path: Traversable,
140
146
  ) -> None:
141
147
  """Load default component types from package data.
142
148
 
@@ -146,16 +152,16 @@ def _load_default_component_types(
146
152
  ----------
147
153
  component_df : pandas.DataFrame
148
154
  DataFrame which lists all default components. E.g. `/pypsa/data/components.csv`.
149
- attrs_path : pathlib.Path
155
+ attrs_path : importlib.resources.abc.Traversable
150
156
  Path to the default attributes dir. E.g. `/pypsa/data/default_components/`.
151
- standard_types_path : pathlib.Path
157
+ standard_types_path : importlib.resources.abc.Traversable
152
158
  Path to the standard types dir. E.g. `/pypsa/data/standard_types/`.
153
159
 
154
160
  """
155
161
  for c_name, row in component_df.iterrows():
156
162
  # Read in defaults attributes
157
163
  attrs_file_path = attrs_path / f"{row.list_name}.csv"
158
- if not attrs_file_path.exists():
164
+ if not attrs_file_path.is_file():
159
165
  msg = (
160
166
  f"Could not find {attrs_path}. For each component, there must be a "
161
167
  "corresponding file for its attributes."
@@ -165,7 +171,7 @@ def _load_default_component_types(
165
171
 
166
172
  # Read in standard types
167
173
  types_paths = standard_types_path / f"{row.list_name}.csv"
168
- if not types_paths.exists():
174
+ if not types_paths.is_file():
169
175
  standard_types = None
170
176
  else:
171
177
  standard_types = pd.read_csv(types_paths, index_col=0)
@@ -4,8 +4,11 @@
4
4
 
5
5
  """Constants."""
6
6
 
7
+ import importlib.resources
7
8
  import re
8
9
 
10
+ PYPSA_DATA_DIR = importlib.resources.files("pypsa") / "data"
11
+
9
12
  DEFAULT_EPSG = 4326
10
13
  DEFAULT_TIMESTAMP = "now"
11
14
  EARTH_RADIUS = 6378137.0 # equitorial radius in meters
@@ -9,7 +9,7 @@ rate1,static or series,per unit,1,"Rate of energy transfer at `bus1` relative to
9
9
  active,boolean,n/a,True,"Whether to consider the component in basic functionality or not",Input (optional)
10
10
  build_year,int,year,0,Build year,Input (optional)
11
11
  lifetime,float,years,inf,Lifetime,Input (optional)
12
- p_nom,float,MW,0,Limit of power which can pass through process (in units of `bus0`). Ignored if `p_nom_extendable=True`.,Input (optional)
12
+ p_nom,float,MW,0,"Limit of internal power `p` which can pass through process (in units of `p`, which equals the flow at any bus whose `rate` is set to ±1; with the default `rate0=-1` this is the flow at `bus0`). Ignored if `p_nom_extendable=True`.",Input (optional)
13
13
  p_nom_mod,float,MW,0,Unit size of process module (e.g. fixed blocks of 100 MW).,Input (optional)
14
14
  p_nom_extendable,boolean,n/a,False,Switch to allow capacity `p_nom` to be extended.,Input (optional)
15
15
  p_nom_min,float,MW,0,"If `p_nom_extendable=True`, set its minimum value.",Input (optional)
@@ -19,16 +19,16 @@ p_set,static or series,MW,n/a,The dispatch set point for `p0` of the process (fo
19
19
  p_init,static,MW,n/a,Active power used as a starting point for limiting the ramp in the very first snapshot (for optimisation),Input (optional)
20
20
  p_min_pu,static or series,per unit of p_nom,0.,Minimal dispatch per unit of `p_nom` for the process. Can also be negative.,Input (optional)
21
21
  p_max_pu,static or series,per unit of p_nom,1.,Maximal dispatch per unit of `p_nom` for the process. Can also be negative.,Input (optional)
22
- capital_cost,float,currency/MW,0,"Fixed period costs of extending `p_nom` by 1 MW (unit of `bus0`, e.g. annuitized investment costs). Used directly unless `overnight_cost` is specified. Any `length` factor must already be included.",Input (optional)
23
- overnight_cost,float,currency/MW,NaN,"Overnight (upfront) investment cost per MW (unit of `bus0`). If specified, PyPSA calculates annuity using `discount_rate` and `lifetime`. Takes precedence over `capital_cost`.",Input (optional)
22
+ capital_cost,float,currency/MW,0,"Fixed period costs of extending `p_nom` by 1 MW (unit of internal power `p`, e.g. annuitized investment costs). Used directly unless `overnight_cost` is specified. Any `length` factor must already be included.",Input (optional)
23
+ overnight_cost,float,currency/MW,NaN,"Overnight (upfront) investment cost per MW (unit of internal power `p`). If specified, PyPSA calculates annuity using `discount_rate` and `lifetime`. Takes precedence over `capital_cost`.",Input (optional)
24
24
  discount_rate,float,per unit,NaN,"Discount rate for annuity calculation when using `overnight_cost`. Supports 0% rate (simple depreciation).",Input (optional)
25
- fom_cost,float,currency/MW,0,"Fixed period operation and maintenance costs per MW (unit of `bus0`), added to annuitized investment cost.",Input (optional)
26
- marginal_cost,static or series,currency/MWh,0.,Marginal cost of 1 MWh consumption from `bus0` (e.g. including variable operation and maintenance costs of an electrolyser but excluding electricity costs).,Input (optional)
27
- marginal_cost_quadratic,static or series,currency/MWh,0.,Quadratic marginal cost for 1 MWh of consumption from `bus0`.,Input (optional)
25
+ fom_cost,float,currency/MW,0,"Fixed period operation and maintenance costs per MW (unit of internal power `p`), added to annuitized investment cost.",Input (optional)
26
+ marginal_cost,static or series,currency/MWh,0.,Marginal cost of 1 MWh of internal power `p` (e.g. including variable operation and maintenance costs of an electrolyser but excluding electricity costs). Equals the cost per MWh at `bus0` when `rate0=-1`.,Input (optional)
27
+ marginal_cost_quadratic,static or series,currency/MWh,0.,Quadratic marginal cost for 1 MWh of internal power `p`.,Input (optional)
28
28
  stand_by_cost,static or series,currency/h,0.,Stand-by cost for operating the process. This cost is incurred whenever the status is 1 (including when dispatch decision is zero).,Input (optional)
29
29
  length,float,km,0,"Length of the process. Useful for calculating `capital_cost` for HVDC connections.",Input (optional)
30
30
  terrain_factor,float,per unit,1,Terrain factor for increasing `capital_cost` calculated from `length`.,Input (optional)
31
- committable,boolean,n/a,False,Apply unit commitment constraints. This is only possible with `p_nom_extendable=False`.,Input (optional)
31
+ committable,boolean,n/a,False,Apply unit commitment constraints.,Input (optional)
32
32
  start_up_cost,float,currency,0,Cost to start up the process. Only used if `committable=True`.,Input (optional)
33
33
  shut_down_cost,float,currency,0,Cost to shut down the process. Only used if `committable=True`.,Input (optional)
34
34
  min_up_time,int,snapshots,0,Minimum number of snapshots for status to be 1. Only used if `committable=True`. Does not consider snapshot weightings.,Input (optional)