pypsa 1.2.1__tar.gz → 1.2.2__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 (794) hide show
  1. {pypsa-1.2.1 → pypsa-1.2.2}/.github/workflows/test-models.yml +3 -0
  2. {pypsa-1.2.1/pypsa.egg-info → pypsa-1.2.2}/PKG-INFO +3 -3
  3. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/tracing-infeasibilities.ipynb +3 -28
  4. {pypsa-1.2.1 → pypsa-1.2.2}/docs/home/features.md +1 -1
  5. {pypsa-1.2.1 → pypsa-1.2.2}/docs/release-notes.md +13 -2
  6. {pypsa-1.2.1 → pypsa-1.2.2}/docs/requirements.txt +41 -80
  7. {pypsa-1.2.1 → pypsa-1.2.2}/pyproject.toml +2 -2
  8. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/optimization/constraints.py +9 -6
  9. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/optimization/optimize.py +1 -1
  10. {pypsa-1.2.1 → pypsa-1.2.2/pypsa.egg-info}/PKG-INFO +3 -3
  11. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa.egg-info/requires.txt +2 -2
  12. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_lopf_basic_constraints.py +76 -0
  13. {pypsa-1.2.1 → pypsa-1.2.2}/.codespell.ignore +0 -0
  14. {pypsa-1.2.1 → pypsa-1.2.2}/.git-blame-ignore-revs +0 -0
  15. {pypsa-1.2.1 → pypsa-1.2.2}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
  16. {pypsa-1.2.1 → pypsa-1.2.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  17. {pypsa-1.2.1 → pypsa-1.2.2}/.github/ISSUE_TEMPLATE/documentation_improvement.yaml +0 -0
  18. {pypsa-1.2.1 → pypsa-1.2.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  19. {pypsa-1.2.1 → pypsa-1.2.2}/.github/dependabot.yml +0 -0
  20. {pypsa-1.2.1 → pypsa-1.2.2}/.github/pull_request_template.md +0 -0
  21. {pypsa-1.2.1 → pypsa-1.2.2}/.github/workflows/codeql.yml +0 -0
  22. {pypsa-1.2.1 → pypsa-1.2.2}/.github/workflows/release.yml +0 -0
  23. {pypsa-1.2.1 → pypsa-1.2.2}/.github/workflows/test.yml +0 -0
  24. {pypsa-1.2.1 → pypsa-1.2.2}/.gitignore +0 -0
  25. {pypsa-1.2.1 → pypsa-1.2.2}/.pre-commit-config.yaml +0 -0
  26. {pypsa-1.2.1 → pypsa-1.2.2}/.readthedocs.yml +0 -0
  27. {pypsa-1.2.1 → pypsa-1.2.2}/CITATION.cff +0 -0
  28. {pypsa-1.2.1 → pypsa-1.2.2}/CONTRIBUTING.md +0 -0
  29. {pypsa-1.2.1 → pypsa-1.2.2}/LICENSE +0 -0
  30. {pypsa-1.2.1 → pypsa-1.2.2}/LICENSES/CC-BY-4.0.txt +0 -0
  31. {pypsa-1.2.1 → pypsa-1.2.2}/LICENSES/MIT.txt +0 -0
  32. {pypsa-1.2.1 → pypsa-1.2.2}/MANIFEST.in +0 -0
  33. {pypsa-1.2.1 → pypsa-1.2.2}/README.md +0 -0
  34. {pypsa-1.2.1 → pypsa-1.2.2}/REUSE.toml +0 -0
  35. {pypsa-1.2.1 → pypsa-1.2.2}/codecov.yml +0 -0
  36. {pypsa-1.2.1 → pypsa-1.2.2}/docs/CODE_OF_CONDUCT.md +0 -0
  37. {pypsa-1.2.1 → pypsa-1.2.2}/docs/SECURITY.md +0 -0
  38. {pypsa-1.2.1 → pypsa-1.2.2}/docs/api/components/common.md +0 -0
  39. {pypsa-1.2.1 → pypsa-1.2.2}/docs/api/components/components.md +0 -0
  40. {pypsa-1.2.1 → pypsa-1.2.2}/docs/api/components/types/buses.md +0 -0
  41. {pypsa-1.2.1 → pypsa-1.2.2}/docs/api/components/types/carriers.md +0 -0
  42. {pypsa-1.2.1 → pypsa-1.2.2}/docs/api/components/types/generators.md +0 -0
  43. {pypsa-1.2.1 → pypsa-1.2.2}/docs/api/components/types/global-constraints.md +0 -0
  44. {pypsa-1.2.1 → pypsa-1.2.2}/docs/api/components/types/lines.md +0 -0
  45. {pypsa-1.2.1 → pypsa-1.2.2}/docs/api/components/types/links.md +0 -0
  46. {pypsa-1.2.1 → pypsa-1.2.2}/docs/api/components/types/loads.md +0 -0
  47. {pypsa-1.2.1 → pypsa-1.2.2}/docs/api/components/types/processes.md +0 -0
  48. {pypsa-1.2.1 → pypsa-1.2.2}/docs/api/components/types/shapes.md +0 -0
  49. {pypsa-1.2.1 → pypsa-1.2.2}/docs/api/components/types/shunt-impedances.md +0 -0
  50. {pypsa-1.2.1 → pypsa-1.2.2}/docs/api/components/types/storage-units.md +0 -0
  51. {pypsa-1.2.1 → pypsa-1.2.2}/docs/api/components/types/stores.md +0 -0
  52. {pypsa-1.2.1 → pypsa-1.2.2}/docs/api/components/types/sub-networks.md +0 -0
  53. {pypsa-1.2.1 → pypsa-1.2.2}/docs/api/components/types/transformers.md +0 -0
  54. {pypsa-1.2.1 → pypsa-1.2.2}/docs/api/networks/cluster.md +0 -0
  55. {pypsa-1.2.1 → pypsa-1.2.2}/docs/api/networks/collection.md +0 -0
  56. {pypsa-1.2.1 → pypsa-1.2.2}/docs/api/networks/components.md +0 -0
  57. {pypsa-1.2.1 → pypsa-1.2.2}/docs/api/networks/constraints.md +0 -0
  58. {pypsa-1.2.1 → pypsa-1.2.2}/docs/api/networks/descriptors.md +0 -0
  59. {pypsa-1.2.1 → pypsa-1.2.2}/docs/api/networks/indexing.md +0 -0
  60. {pypsa-1.2.1 → pypsa-1.2.2}/docs/api/networks/io.md +0 -0
  61. {pypsa-1.2.1 → pypsa-1.2.2}/docs/api/networks/network.md +0 -0
  62. {pypsa-1.2.1 → pypsa-1.2.2}/docs/api/networks/optimize.md +0 -0
  63. {pypsa-1.2.1 → pypsa-1.2.2}/docs/api/networks/plot.md +0 -0
  64. {pypsa-1.2.1 → pypsa-1.2.2}/docs/api/networks/power-flow.md +0 -0
  65. {pypsa-1.2.1 → pypsa-1.2.2}/docs/api/networks/statistics.md +0 -0
  66. {pypsa-1.2.1 → pypsa-1.2.2}/docs/api/networks/subnetwork.md +0 -0
  67. {pypsa-1.2.1 → pypsa-1.2.2}/docs/api/networks/transform.md +0 -0
  68. {pypsa-1.2.1 → pypsa-1.2.2}/docs/api/other/api-examples.md +0 -0
  69. {pypsa-1.2.1 → pypsa-1.2.2}/docs/api/other/common.md +0 -0
  70. {pypsa-1.2.1 → pypsa-1.2.2}/docs/api/other/consistency.md +0 -0
  71. {pypsa-1.2.1 → pypsa-1.2.2}/docs/api/other/costs.md +0 -0
  72. {pypsa-1.2.1 → pypsa-1.2.2}/docs/api/other/options.md +0 -0
  73. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/images/ac_dc_meshed-energy_balance-area_plot.jpg +0 -0
  74. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/images/ac_dc_meshed-energy_balance-area_plot.png +0 -0
  75. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/images/ac_dc_meshed-energy_balance-bar_plot.jpg +0 -0
  76. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/images/ac_dc_meshed-energy_balance-bar_plot.png +0 -0
  77. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/images/ac_dc_meshed-energy_balance-box_plot.png +0 -0
  78. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/images/ac_dc_meshed-energy_balance-custom_area_plot.png +0 -0
  79. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/images/ac_dc_meshed-energy_balance-histogram_plot.jpg +0 -0
  80. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/images/ac_dc_meshed-energy_balance-histogram_plot.png +0 -0
  81. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/images/ac_dc_meshed-energy_balance-line_plot.jpg +0 -0
  82. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/images/ac_dc_meshed-energy_balance-line_plot.png +0 -0
  83. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/images/ac_dc_meshed-energy_balance-map_plot.png +0 -0
  84. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/images/ac_dc_meshed-energy_balance-scatter_plot.jpg +0 -0
  85. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/images/ac_dc_meshed-energy_balance-scatter_plot.png +0 -0
  86. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/images/ac_dc_meshed-energy_balance-violin_plot.png +0 -0
  87. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/images/ac_dc_meshed-installed_capacity-bar_plot.jpg +0 -0
  88. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/images/ac_dc_meshed-installed_capacity-bar_plot.png +0 -0
  89. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/images/ac_dc_meshed.png +0 -0
  90. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/images/buses.png +0 -0
  91. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/images/carbon_management-energy_balance-area_plot-AC-bus_carrier.png +0 -0
  92. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/images/carbon_management-energy_balance-area_plot.png +0 -0
  93. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/images/elec_s_256_lv1.09_Co2L-3H.png +0 -0
  94. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/images/line-equivalent.png +0 -0
  95. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/images/lmp_and_line-loading.png +0 -0
  96. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/images/load-distribution.png +0 -0
  97. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/images/p_max_pu.png +0 -0
  98. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/images/pypsa-animation.png +0 -0
  99. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/images/pypsa-logo.png +0 -0
  100. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/images/reactive-power.png +0 -0
  101. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/images/reserve-power-funding.gif +0 -0
  102. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/images/reserve-power-graph.png +0 -0
  103. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/images/scigrid-curtailment.png +0 -0
  104. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/images/stacked-gen.png +0 -0
  105. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/images/stacked-gen_and_storage-scigrid.png +0 -0
  106. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/images/statistics_advanced_usage.png +0 -0
  107. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/images/storage-scigrid.png +0 -0
  108. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/images/transformer-pi-equivalent-tap-hv.png +0 -0
  109. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/images/transformer-pi-equivalent-tap-lv.png +0 -0
  110. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/images/transformer-t-equivalent-tap-hv.png +0 -0
  111. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/images/transformer-t-equivalent-tap-lv.png +0 -0
  112. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/interactive/ac_dc_meshed-energy_balance-area_iplot.html +0 -0
  113. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/interactive/carbon_management-energy_balance-area_iplot-AC-bus_carrier.html +0 -0
  114. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/interactive/carbon_management-energy_balance-area_iplot.html +0 -0
  115. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/javascripts/gurubase-widget.js +0 -0
  116. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/javascripts/mathjax.js +0 -0
  117. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/javascripts/readthedocs.js +0 -0
  118. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/logo/logo-primary-dark.png +0 -0
  119. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/logo/logo-primary-dark.svg +0 -0
  120. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/logo/logo-primary-light-white-bg.png +0 -0
  121. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/logo/logo-primary-light.png +0 -0
  122. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/logo/logo-primary-light.svg +0 -0
  123. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/logo/logo-secondary-dark.png +0 -0
  124. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/logo/logo-secondary-dark.svg +0 -0
  125. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/logo/logo-secondary-light.png +0 -0
  126. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/logo/logo-secondary-light.svg +0 -0
  127. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/logo/logo-white-bg.png +0 -0
  128. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/logo/logo.png +0 -0
  129. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/logo/logo.svg +0 -0
  130. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/overrides/main.html +0 -0
  131. {pypsa-1.2.1 → pypsa-1.2.2}/docs/assets/stylesheets/extra.css +0 -0
  132. {pypsa-1.2.1 → pypsa-1.2.2}/docs/contributing/contributing.md +0 -0
  133. {pypsa-1.2.1 → pypsa-1.2.2}/docs/contributing/contributors.md +0 -0
  134. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/3-node-cem.ipynb +0 -0
  135. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/ac-dc-lopf.ipynb +0 -0
  136. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/battery-electric-vehicle-charging.ipynb +0 -0
  137. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/biomass-synthetic-fuels-carbon-management.ipynb +0 -0
  138. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/capacity-expansion-planning-single-node.ipynb +0 -0
  139. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/chained-hydro-reservoirs.ipynb +0 -0
  140. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/chp-fixed-heat-power-ratio.ipynb +0 -0
  141. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/committable-extendable.ipynb +0 -0
  142. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/demand-elasticity.ipynb +0 -0
  143. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/demand-supply-bids.ipynb +0 -0
  144. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/example-1.ipynb +0 -0
  145. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/example-2.ipynb +0 -0
  146. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/example-3.ipynb +0 -0
  147. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/examples.md +0 -0
  148. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/generation-investment-screening-curve.ipynb +0 -0
  149. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/gsa.ipynb +0 -0
  150. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/imperfect-competition.ipynb +0 -0
  151. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/islanded-methanol-production.ipynb +0 -0
  152. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/mga.ipynb +0 -0
  153. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/minimal-example-pf.ipynb +0 -0
  154. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/modular-committable.ipynb +0 -0
  155. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/modular-expansion.ipynb +0 -0
  156. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/multi-investment-optimisation.ipynb +0 -0
  157. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/myopic-pathway.ipynb +0 -0
  158. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/near-opt-space.ipynb +0 -0
  159. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/negative-prices-kvl-baker.ipynb +0 -0
  160. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/periodic-operational-limits.ipynb +0 -0
  161. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/power-to-gas-boiler-chp.ipynb +0 -0
  162. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/power-to-heat-water-tank.ipynb +0 -0
  163. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/replace-generator-storage-units-with-store.ipynb +0 -0
  164. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/reserve-power.ipynb +0 -0
  165. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/rh_example.png +0 -0
  166. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/rolling-horizon.ipynb +0 -0
  167. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/scigrid-lopf-then-pf.ipynb +0 -0
  168. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/scigrid-redispatch.ipynb +0 -0
  169. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/scigrid-sclopf.ipynb +0 -0
  170. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/sector-coupling-single-node.ipynb +0 -0
  171. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/simple-electricity-market-examples.ipynb +0 -0
  172. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/stochastic-optimization.ipynb +0 -0
  173. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/time-series-aggregation.ipynb +0 -0
  174. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/transformer-example.ipynb +0 -0
  175. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/transport-delay.ipynb +0 -0
  176. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/uc-prices.ipynb +0 -0
  177. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/unit-commitment.ipynb +0 -0
  178. {pypsa-1.2.1 → pypsa-1.2.2}/docs/examples/water-value.ipynb +0 -0
  179. {pypsa-1.2.1 → pypsa-1.2.2}/docs/home/citing.md +0 -0
  180. {pypsa-1.2.1 → pypsa-1.2.2}/docs/home/installation.md +0 -0
  181. {pypsa-1.2.1 → pypsa-1.2.2}/docs/home/license.md +0 -0
  182. {pypsa-1.2.1 → pypsa-1.2.2}/docs/home/models.md +0 -0
  183. {pypsa-1.2.1 → pypsa-1.2.2}/docs/home/users.md +0 -0
  184. {pypsa-1.2.1 → pypsa-1.2.2}/docs/hooks/cleanup.py +0 -0
  185. {pypsa-1.2.1 → pypsa-1.2.2}/docs/hooks/dynamic_inspect.py +0 -0
  186. {pypsa-1.2.1 → pypsa-1.2.2}/docs/hooks/notebook_timing.py +0 -0
  187. {pypsa-1.2.1 → pypsa-1.2.2}/docs/hooks/path_aliases.py +0 -0
  188. {pypsa-1.2.1 → pypsa-1.2.2}/docs/hooks/shortcodes.py +0 -0
  189. {pypsa-1.2.1 → pypsa-1.2.2}/docs/index.md +0 -0
  190. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/clustering.ipynb +0 -0
  191. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/collection.md +0 -0
  192. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/components/buses.md +0 -0
  193. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/components/carriers.md +0 -0
  194. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/components/generators.md +0 -0
  195. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/components/global-constraints.md +0 -0
  196. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/components/line-types.md +0 -0
  197. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/components/lines.md +0 -0
  198. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/components/links.md +0 -0
  199. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/components/loads.md +0 -0
  200. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/components/processes.md +0 -0
  201. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/components/shapes.md +0 -0
  202. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/components/shunt-impedances.md +0 -0
  203. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/components/storage-units.md +0 -0
  204. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/components/stores.md +0 -0
  205. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/components/sub-networks.md +0 -0
  206. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/components/transformer-types.md +0 -0
  207. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/components/transformers.md +0 -0
  208. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/components.md +0 -0
  209. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/design.md +0 -0
  210. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/faq.md +0 -0
  211. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/import-export.md +0 -0
  212. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/learning-materials.md +0 -0
  213. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/linear-power-flow.md +0 -0
  214. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/logging.ipynb +0 -0
  215. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/network-optimization.md +0 -0
  216. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/optimization/capacity-limits.md +0 -0
  217. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/optimization/contingencies.md +0 -0
  218. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/optimization/custom-constraints.md +0 -0
  219. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/optimization/dispatch-limits.md +0 -0
  220. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/optimization/energy-balance.md +0 -0
  221. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/optimization/global-constraints.md +0 -0
  222. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/optimization/modelling-to-generate-alternatives.md +0 -0
  223. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/optimization/objective.md +0 -0
  224. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/optimization/overview.md +0 -0
  225. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/optimization/pathway-planning.md +0 -0
  226. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/optimization/power-flow.md +0 -0
  227. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/optimization/stochastic.md +0 -0
  228. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/optimization/storage.md +0 -0
  229. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/optimization/unit-commitment.md +0 -0
  230. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/options.md +0 -0
  231. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/plotting/charts.md +0 -0
  232. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/plotting/explore.ipynb +0 -0
  233. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/plotting/static-map.ipynb +0 -0
  234. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/power-flow.md +0 -0
  235. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/statistics.md +0 -0
  236. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/support.md +0 -0
  237. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/troubleshooting.md +0 -0
  238. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/user-guide.md +0 -0
  239. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/v1-guide.md +0 -0
  240. {pypsa-1.2.1 → pypsa-1.2.2}/docs/user-guide/warnings.md +0 -0
  241. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/ac-dc-meshed/ac-dc-meshed/buses.csv +0 -0
  242. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/ac-dc-meshed/ac-dc-meshed/carriers.csv +0 -0
  243. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/ac-dc-meshed/ac-dc-meshed/crs.json +0 -0
  244. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/ac-dc-meshed/ac-dc-meshed/generators-p_max_pu.csv +0 -0
  245. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/ac-dc-meshed/ac-dc-meshed/generators.csv +0 -0
  246. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/ac-dc-meshed/ac-dc-meshed/global_constraints.csv +0 -0
  247. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/ac-dc-meshed/ac-dc-meshed/investment_periods.csv +0 -0
  248. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/ac-dc-meshed/ac-dc-meshed/lines.csv +0 -0
  249. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/ac-dc-meshed/ac-dc-meshed/links.csv +0 -0
  250. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/ac-dc-meshed/ac-dc-meshed/loads-p_set.csv +0 -0
  251. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/ac-dc-meshed/ac-dc-meshed/loads.csv +0 -0
  252. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/ac-dc-meshed/ac-dc-meshed/meta.json +0 -0
  253. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/ac-dc-meshed/ac-dc-meshed/network.csv +0 -0
  254. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/ac-dc-meshed/ac-dc-meshed/snapshots.csv +0 -0
  255. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/ac-dc-meshed/ac-dc-meshed.nc +0 -0
  256. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/model-energy/model-energy/buses.csv +0 -0
  257. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/model-energy/model-energy/carriers.csv +0 -0
  258. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/model-energy/model-energy/crs.json +0 -0
  259. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/model-energy/model-energy/generators-p_max_pu.csv +0 -0
  260. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/model-energy/model-energy/generators.csv +0 -0
  261. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/model-energy/model-energy/investment_periods.csv +0 -0
  262. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/model-energy/model-energy/links.csv +0 -0
  263. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/model-energy/model-energy/loads-p_set.csv +0 -0
  264. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/model-energy/model-energy/loads.csv +0 -0
  265. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/model-energy/model-energy/meta.json +0 -0
  266. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/model-energy/model-energy/network.csv +0 -0
  267. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/model-energy/model-energy/snapshots.csv +0 -0
  268. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/model-energy/model-energy/storage_units.csv +0 -0
  269. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/model-energy/model-energy/stores.csv +0 -0
  270. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/model-energy/model-energy.nc +0 -0
  271. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/scigrid-de/scigrid-de/buses.csv +0 -0
  272. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/scigrid-de/scigrid-de/carriers.csv +0 -0
  273. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/scigrid-de/scigrid-de/crs.json +0 -0
  274. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/scigrid-de/scigrid-de/generators-p_max_pu.csv +0 -0
  275. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/scigrid-de/scigrid-de/generators.csv +0 -0
  276. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/scigrid-de/scigrid-de/investment_periods.csv +0 -0
  277. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/scigrid-de/scigrid-de/lines.csv +0 -0
  278. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/scigrid-de/scigrid-de/loads-p_set.csv +0 -0
  279. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/scigrid-de/scigrid-de/loads.csv +0 -0
  280. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/scigrid-de/scigrid-de/meta.json +0 -0
  281. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/scigrid-de/scigrid-de/network.csv +0 -0
  282. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/scigrid-de/scigrid-de/snapshots.csv +0 -0
  283. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/scigrid-de/scigrid-de/storage_units.csv +0 -0
  284. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/scigrid-de/scigrid-de/transformers.csv +0 -0
  285. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/scigrid-de/scigrid-de.nc +0 -0
  286. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/stochastic-network/stochastic-network.nc +0 -0
  287. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/storage-hvdc/storage-hvdc/buses.csv +0 -0
  288. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/storage-hvdc/storage-hvdc/carriers.csv +0 -0
  289. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/storage-hvdc/storage-hvdc/crs.json +0 -0
  290. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/storage-hvdc/storage-hvdc/generators-p_max_pu.csv +0 -0
  291. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/storage-hvdc/storage-hvdc/generators.csv +0 -0
  292. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/storage-hvdc/storage-hvdc/global_constraints.csv +0 -0
  293. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/storage-hvdc/storage-hvdc/investment_periods.csv +0 -0
  294. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/storage-hvdc/storage-hvdc/lines.csv +0 -0
  295. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/storage-hvdc/storage-hvdc/links.csv +0 -0
  296. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/storage-hvdc/storage-hvdc/loads-p_set.csv +0 -0
  297. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/storage-hvdc/storage-hvdc/loads.csv +0 -0
  298. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/storage-hvdc/storage-hvdc/meta.json +0 -0
  299. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/storage-hvdc/storage-hvdc/network.csv +0 -0
  300. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/storage-hvdc/storage-hvdc/snapshots.csv +0 -0
  301. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/storage-hvdc/storage-hvdc/storage_units-inflow.csv +0 -0
  302. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/storage-hvdc/storage-hvdc/storage_units-state_of_charge_set.csv +0 -0
  303. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/storage-hvdc/storage-hvdc/storage_units.csv +0 -0
  304. {pypsa-1.2.1 → pypsa-1.2.2}/examples/networks/storage-hvdc/storage-hvdc.nc +0 -0
  305. {pypsa-1.2.1 → pypsa-1.2.2}/mkdocs.yml +0 -0
  306. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/__init__.py +0 -0
  307. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/_options.py +0 -0
  308. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/clustering/__init__.py +0 -0
  309. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/clustering/spatial.py +0 -0
  310. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/clustering/temporal.py +0 -0
  311. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/collection.py +0 -0
  312. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/common.py +0 -0
  313. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/components/__init__.py +0 -0
  314. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/components/_types/__init__.py +0 -0
  315. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/components/_types/_patch.py +0 -0
  316. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/components/_types/buses.py +0 -0
  317. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/components/_types/carriers.py +0 -0
  318. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/components/_types/generators.py +0 -0
  319. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/components/_types/global_constraints.py +0 -0
  320. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/components/_types/line_types.py +0 -0
  321. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/components/_types/lines.py +0 -0
  322. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/components/_types/links.py +0 -0
  323. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/components/_types/loads.py +0 -0
  324. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/components/_types/mixin/__init__.py +0 -0
  325. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/components/_types/mixin/multiports.py +0 -0
  326. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/components/_types/processes.py +0 -0
  327. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/components/_types/shapes.py +0 -0
  328. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/components/_types/shunt_impedances.py +0 -0
  329. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/components/_types/storage_units.py +0 -0
  330. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/components/_types/stores.py +0 -0
  331. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/components/_types/sub_networks.py +0 -0
  332. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/components/_types/transformer_types.py +0 -0
  333. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/components/_types/transformers.py +0 -0
  334. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/components/abstract.py +0 -0
  335. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/components/array.py +0 -0
  336. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/components/common.py +0 -0
  337. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/components/components.py +0 -0
  338. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/components/descriptors.py +0 -0
  339. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/components/index.py +0 -0
  340. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/components/legacy.py +0 -0
  341. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/components/store.py +0 -0
  342. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/components/transform.py +0 -0
  343. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/components/types.py +0 -0
  344. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/consistency.py +0 -0
  345. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/constants.py +0 -0
  346. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/costs.py +0 -0
  347. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/data/component_attrs/buses.csv +0 -0
  348. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/data/component_attrs/carriers.csv +0 -0
  349. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/data/component_attrs/generators.csv +0 -0
  350. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/data/component_attrs/global_constraints.csv +0 -0
  351. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/data/component_attrs/line_types.csv +0 -0
  352. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/data/component_attrs/lines.csv +0 -0
  353. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/data/component_attrs/links.csv +0 -0
  354. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/data/component_attrs/loads.csv +0 -0
  355. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/data/component_attrs/networks.csv +0 -0
  356. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/data/component_attrs/processes.csv +0 -0
  357. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/data/component_attrs/shapes.csv +0 -0
  358. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/data/component_attrs/shunt_impedances.csv +0 -0
  359. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/data/component_attrs/storage_units.csv +0 -0
  360. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/data/component_attrs/stores.csv +0 -0
  361. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/data/component_attrs/sub_networks.csv +0 -0
  362. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/data/component_attrs/transformer_types.csv +0 -0
  363. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/data/component_attrs/transformers.csv +0 -0
  364. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/data/components.csv +0 -0
  365. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/data/standard_types/line_types.csv +0 -0
  366. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/data/standard_types/transformer_types.csv +0 -0
  367. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/data/variables.csv +0 -0
  368. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/definitions/components.py +0 -0
  369. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/definitions/structures.py +0 -0
  370. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/deprecations.py +0 -0
  371. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/descriptors.py +0 -0
  372. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/examples.py +0 -0
  373. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/geo.py +0 -0
  374. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/guards.py +0 -0
  375. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/network/__init__.py +0 -0
  376. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/network/abstract.py +0 -0
  377. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/network/components.py +0 -0
  378. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/network/descriptors.py +0 -0
  379. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/network/graph.py +0 -0
  380. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/network/index.py +0 -0
  381. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/network/io.py +0 -0
  382. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/network/power_flow.py +0 -0
  383. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/network/transform.py +0 -0
  384. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/networks.py +0 -0
  385. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/optimization/__init__.py +0 -0
  386. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/optimization/abstract.py +0 -0
  387. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/optimization/common.py +0 -0
  388. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/optimization/expressions.py +0 -0
  389. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/optimization/global_constraints.py +0 -0
  390. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/optimization/mga.py +0 -0
  391. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/optimization/variables.py +0 -0
  392. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/plot/__init__.py +0 -0
  393. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/plot/accessor.py +0 -0
  394. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/plot/maps/__init__.py +0 -0
  395. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/plot/maps/common.py +0 -0
  396. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/plot/maps/interactive.py +0 -0
  397. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/plot/maps/static.py +0 -0
  398. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/plot/statistics/__init__.py +0 -0
  399. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/plot/statistics/base.py +0 -0
  400. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/plot/statistics/charts.py +0 -0
  401. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/plot/statistics/maps.py +0 -0
  402. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/plot/statistics/plotter.py +0 -0
  403. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/plot/statistics/schema.py +0 -0
  404. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/py.typed +0 -0
  405. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/statistics/__init__.py +0 -0
  406. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/statistics/abstract.py +0 -0
  407. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/statistics/expressions.py +0 -0
  408. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/statistics/grouping.py +0 -0
  409. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/type_utils.py +0 -0
  410. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa/version.py +0 -0
  411. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa.egg-info/SOURCES.txt +0 -0
  412. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa.egg-info/dependency_links.txt +0 -0
  413. {pypsa-1.2.1 → pypsa-1.2.2}/pypsa.egg-info/top_level.txt +0 -0
  414. {pypsa-1.2.1 → pypsa-1.2.2}/setup.cfg +0 -0
  415. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_area-capacity_factor.png +0 -0
  416. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_area-capex.png +0 -0
  417. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_area-curtailment.png +0 -0
  418. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_area-energy_balance.png +0 -0
  419. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_area-expanded_capacity.png +0 -0
  420. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_area-expanded_capex.png +0 -0
  421. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_area-installed_capacity.png +0 -0
  422. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_area-installed_capex.png +0 -0
  423. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_area-market_value.png +0 -0
  424. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_area-opex.png +0 -0
  425. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_area-optimal_capacity.png +0 -0
  426. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_area-prices.png +0 -0
  427. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_area-revenue.png +0 -0
  428. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_area-supply.png +0 -0
  429. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_area-system_cost.png +0 -0
  430. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_area-transmission.png +0 -0
  431. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_area-withdrawal.png +0 -0
  432. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_area_capacity_factor.png +0 -0
  433. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_area_capex.png +0 -0
  434. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_area_curtailment.png +0 -0
  435. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_area_energy_balance.png +0 -0
  436. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_area_expanded_capacity.png +0 -0
  437. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_area_expanded_capex.png +0 -0
  438. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_area_installed_capacity.png +0 -0
  439. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_area_installed_capex.png +0 -0
  440. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_area_market_value.png +0 -0
  441. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_area_opex.png +0 -0
  442. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_area_optimal_capacity.png +0 -0
  443. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_area_revenue.png +0 -0
  444. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_area_supply.png +0 -0
  445. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_area_system_cost.png +0 -0
  446. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_area_transmission.png +0 -0
  447. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_area_withdrawal.png +0 -0
  448. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_bar-capacity_factor.png +0 -0
  449. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_bar-capex.png +0 -0
  450. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_bar-curtailment.png +0 -0
  451. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_bar-energy_balance.png +0 -0
  452. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_bar-expanded_capacity.png +0 -0
  453. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_bar-expanded_capex.png +0 -0
  454. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_bar-installed_capacity.png +0 -0
  455. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_bar-installed_capex.png +0 -0
  456. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_bar-market_value.png +0 -0
  457. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_bar-opex.png +0 -0
  458. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_bar-optimal_capacity.png +0 -0
  459. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_bar-prices.png +0 -0
  460. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_bar-revenue.png +0 -0
  461. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_bar-supply.png +0 -0
  462. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_bar-system_cost.png +0 -0
  463. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_bar-transmission.png +0 -0
  464. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_bar-withdrawal.png +0 -0
  465. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_bar_capacity_factor.png +0 -0
  466. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_bar_capex.png +0 -0
  467. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_bar_curtailment.png +0 -0
  468. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_bar_energy_balance.png +0 -0
  469. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_bar_expanded_capacity.png +0 -0
  470. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_bar_expanded_capex.png +0 -0
  471. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_bar_installed_capacity.png +0 -0
  472. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_bar_installed_capex.png +0 -0
  473. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_bar_market_value.png +0 -0
  474. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_bar_opex.png +0 -0
  475. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_bar_optimal_capacity.png +0 -0
  476. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_bar_revenue.png +0 -0
  477. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_bar_supply.png +0 -0
  478. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_bar_system_cost.png +0 -0
  479. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_bar_transmission.png +0 -0
  480. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_bar_withdrawal.png +0 -0
  481. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_box-capacity_factor.png +0 -0
  482. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_box-capex.png +0 -0
  483. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_box-curtailment.png +0 -0
  484. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_box-energy_balance.png +0 -0
  485. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_box-expanded_capacity.png +0 -0
  486. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_box-expanded_capex.png +0 -0
  487. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_box-installed_capacity.png +0 -0
  488. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_box-installed_capex.png +0 -0
  489. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_box-market_value.png +0 -0
  490. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_box-opex.png +0 -0
  491. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_box-optimal_capacity.png +0 -0
  492. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_box-prices.png +0 -0
  493. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_box-revenue.png +0 -0
  494. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_box-supply.png +0 -0
  495. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_box-system_cost.png +0 -0
  496. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_box-transmission.png +0 -0
  497. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_box-withdrawal.png +0 -0
  498. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_histogram-capacity_factor.png +0 -0
  499. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_histogram-capex.png +0 -0
  500. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_histogram-curtailment.png +0 -0
  501. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_histogram-energy_balance.png +0 -0
  502. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_histogram-expanded_capacity.png +0 -0
  503. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_histogram-expanded_capex.png +0 -0
  504. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_histogram-installed_capacity.png +0 -0
  505. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_histogram-installed_capex.png +0 -0
  506. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_histogram-market_value.png +0 -0
  507. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_histogram-opex.png +0 -0
  508. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_histogram-optimal_capacity.png +0 -0
  509. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_histogram-prices.png +0 -0
  510. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_histogram-revenue.png +0 -0
  511. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_histogram-supply.png +0 -0
  512. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_histogram-system_cost.png +0 -0
  513. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_histogram-transmission.png +0 -0
  514. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_histogram-withdrawal.png +0 -0
  515. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_line-capacity_factor.png +0 -0
  516. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_line-capex.png +0 -0
  517. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_line-curtailment.png +0 -0
  518. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_line-energy_balance.png +0 -0
  519. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_line-expanded_capacity.png +0 -0
  520. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_line-expanded_capex.png +0 -0
  521. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_line-installed_capacity.png +0 -0
  522. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_line-installed_capex.png +0 -0
  523. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_line-market_value.png +0 -0
  524. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_line-opex.png +0 -0
  525. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_line-optimal_capacity.png +0 -0
  526. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_line-prices.png +0 -0
  527. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_line-revenue.png +0 -0
  528. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_line-supply.png +0 -0
  529. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_line-system_cost.png +0 -0
  530. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_line-transmission.png +0 -0
  531. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_line-withdrawal.png +0 -0
  532. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_line_capacity_factor.png +0 -0
  533. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_line_capex.png +0 -0
  534. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_line_curtailment.png +0 -0
  535. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_line_energy_balance.png +0 -0
  536. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_line_expanded_capacity.png +0 -0
  537. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_line_expanded_capex.png +0 -0
  538. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_line_installed_capacity.png +0 -0
  539. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_line_installed_capex.png +0 -0
  540. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_line_market_value.png +0 -0
  541. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_line_opex.png +0 -0
  542. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_line_optimal_capacity.png +0 -0
  543. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_line_revenue.png +0 -0
  544. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_line_supply.png +0 -0
  545. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_line_system_cost.png +0 -0
  546. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_line_transmission.png +0 -0
  547. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_line_withdrawal.png +0 -0
  548. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_map-capacity_factor.png +0 -0
  549. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_map-capex.png +0 -0
  550. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_map-curtailment.png +0 -0
  551. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_map-energy_balance.png +0 -0
  552. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_map-expanded_capacity.png +0 -0
  553. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_map-expanded_capex.png +0 -0
  554. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_map-installed_capacity.png +0 -0
  555. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_map-installed_capex.png +0 -0
  556. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_map-market_value.png +0 -0
  557. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_map-opex.png +0 -0
  558. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_map-optimal_capacity.png +0 -0
  559. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_map-revenue.png +0 -0
  560. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_map-supply.png +0 -0
  561. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_map-system_cost.png +0 -0
  562. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_map-transmission.png +0 -0
  563. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_map-withdrawal.png +0 -0
  564. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_map_capacity_factor.png +0 -0
  565. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_map_capex.png +0 -0
  566. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_map_curtailment.png +0 -0
  567. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_map_energy_balance.png +0 -0
  568. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_map_expanded_capacity.png +0 -0
  569. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_map_expanded_capex.png +0 -0
  570. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_map_installed_capacity.png +0 -0
  571. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_map_installed_capex.png +0 -0
  572. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_map_market_value.png +0 -0
  573. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_map_opex.png +0 -0
  574. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_map_optimal_capacity.png +0 -0
  575. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_map_revenue.png +0 -0
  576. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_map_supply.png +0 -0
  577. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_map_transmission.png +0 -0
  578. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_map_withdrawal.png +0 -0
  579. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_scatter-capacity_factor.png +0 -0
  580. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_scatter-capex.png +0 -0
  581. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_scatter-curtailment.png +0 -0
  582. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_scatter-energy_balance.png +0 -0
  583. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_scatter-expanded_capacity.png +0 -0
  584. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_scatter-expanded_capex.png +0 -0
  585. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_scatter-installed_capacity.png +0 -0
  586. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_scatter-installed_capex.png +0 -0
  587. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_scatter-market_value.png +0 -0
  588. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_scatter-opex.png +0 -0
  589. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_scatter-optimal_capacity.png +0 -0
  590. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_scatter-prices.png +0 -0
  591. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_scatter-revenue.png +0 -0
  592. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_scatter-supply.png +0 -0
  593. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_scatter-system_cost.png +0 -0
  594. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_scatter-transmission.png +0 -0
  595. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_scatter-withdrawal.png +0 -0
  596. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_violin-capacity_factor.png +0 -0
  597. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_violin-capex.png +0 -0
  598. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_violin-curtailment.png +0 -0
  599. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_violin-energy_balance.png +0 -0
  600. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_violin-expanded_capacity.png +0 -0
  601. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_violin-expanded_capex.png +0 -0
  602. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_violin-installed_capacity.png +0 -0
  603. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_violin-installed_capex.png +0 -0
  604. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_violin-market_value.png +0 -0
  605. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_violin-opex.png +0 -0
  606. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_violin-optimal_capacity.png +0 -0
  607. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_violin-prices.png +0 -0
  608. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_violin-revenue.png +0 -0
  609. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_violin-supply.png +0 -0
  610. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_violin-system_cost.png +0 -0
  611. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_violin-transmission.png +0 -0
  612. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_plot_types_violin-withdrawal.png +0 -0
  613. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_simple_plot_capacity_factor.png +0 -0
  614. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_simple_plot_capex.png +0 -0
  615. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_simple_plot_curtailment.png +0 -0
  616. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_simple_plot_energy_balance.png +0 -0
  617. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_simple_plot_expanded_capacity.png +0 -0
  618. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_simple_plot_expanded_capex.png +0 -0
  619. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_simple_plot_installed_capacity.png +0 -0
  620. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_simple_plot_installed_capex.png +0 -0
  621. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_simple_plot_market_value.png +0 -0
  622. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_simple_plot_opex.png +0 -0
  623. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_simple_plot_optimal_capacity.png +0 -0
  624. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_simple_plot_prices.png +0 -0
  625. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_simple_plot_revenue.png +0 -0
  626. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_simple_plot_supply.png +0 -0
  627. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_simple_plot_system_cost.png +0 -0
  628. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_simple_plot_transmission.png +0 -0
  629. {pypsa-1.2.1 → pypsa-1.2.2}/test/baseline/test_simple_plot_withdrawal.png +0 -0
  630. {pypsa-1.2.1 → pypsa-1.2.2}/test/conftest.py +0 -0
  631. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lopf/buses-marginal_price.csv +0 -0
  632. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lopf/buses-p.csv +0 -0
  633. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lopf/buses-v_ang.csv +0 -0
  634. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lopf/buses-v_mag_pu.csv +0 -0
  635. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lopf/buses.csv +0 -0
  636. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lopf/carriers.csv +0 -0
  637. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lopf/crs.json +0 -0
  638. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lopf/generators-p.csv +0 -0
  639. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lopf/generators-p_max_pu.csv +0 -0
  640. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lopf/generators.csv +0 -0
  641. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lopf/global_constraints.csv +0 -0
  642. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lopf/investment_periods.csv +0 -0
  643. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lopf/lines-p0.csv +0 -0
  644. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lopf/lines-p1.csv +0 -0
  645. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lopf/lines.csv +0 -0
  646. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lopf/links-p0.csv +0 -0
  647. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lopf/links-p1.csv +0 -0
  648. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lopf/links.csv +0 -0
  649. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lopf/loads-p.csv +0 -0
  650. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lopf/loads-p_set.csv +0 -0
  651. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lopf/loads.csv +0 -0
  652. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lopf/meta.json +0 -0
  653. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lopf/network.csv +0 -0
  654. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lopf/snapshots.csv +0 -0
  655. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lpf/buses-p.csv +0 -0
  656. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lpf/buses-v_ang.csv +0 -0
  657. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lpf/buses-v_mag_pu.csv +0 -0
  658. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lpf/buses.csv +0 -0
  659. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lpf/carriers.csv +0 -0
  660. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lpf/generators-p.csv +0 -0
  661. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lpf/generators-p_max_pu.csv +0 -0
  662. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lpf/generators.csv +0 -0
  663. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lpf/global_constraints.csv +0 -0
  664. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lpf/lines-p0.csv +0 -0
  665. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lpf/lines-p1.csv +0 -0
  666. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lpf/lines.csv +0 -0
  667. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lpf/links-p0.csv +0 -0
  668. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lpf/links-p1.csv +0 -0
  669. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lpf/links-p_set.csv +0 -0
  670. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lpf/links.csv +0 -0
  671. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lpf/loads-p.csv +0 -0
  672. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lpf/loads-p_set.csv +0 -0
  673. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lpf/loads.csv +0 -0
  674. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lpf/network.csv +0 -0
  675. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/ac-dc-meshed/results-lpf/snapshots.csv +0 -0
  676. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/benchmark-sp/buses-marginal_price.csv +0 -0
  677. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/benchmark-sp/buses-p.csv +0 -0
  678. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/benchmark-sp/buses.csv +0 -0
  679. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/benchmark-sp/crs.json +0 -0
  680. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/benchmark-sp/generators-p-high.csv +0 -0
  681. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/benchmark-sp/generators-p-med.csv +0 -0
  682. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/benchmark-sp/generators-p.csv +0 -0
  683. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/benchmark-sp/generators-p_max_pu.csv +0 -0
  684. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/benchmark-sp/generators.csv +0 -0
  685. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/benchmark-sp/investment_periods.csv +0 -0
  686. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/benchmark-sp/loads-p.csv +0 -0
  687. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/benchmark-sp/loads.csv +0 -0
  688. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/benchmark-sp/meta.json +0 -0
  689. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/benchmark-sp/network.csv +0 -0
  690. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/benchmark-sp/snapshots.csv +0 -0
  691. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/storage-hvdc/results-lopf/buses-marginal_price.csv +0 -0
  692. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/storage-hvdc/results-lopf/buses-p.csv +0 -0
  693. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/storage-hvdc/results-lopf/buses-v_ang.csv +0 -0
  694. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/storage-hvdc/results-lopf/buses.csv +0 -0
  695. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/storage-hvdc/results-lopf/carriers.csv +0 -0
  696. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/storage-hvdc/results-lopf/generators-p.csv +0 -0
  697. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/storage-hvdc/results-lopf/generators-p_max_pu.csv +0 -0
  698. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/storage-hvdc/results-lopf/generators.csv +0 -0
  699. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/storage-hvdc/results-lopf/global_constraints.csv +0 -0
  700. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/storage-hvdc/results-lopf/lines-p0.csv +0 -0
  701. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/storage-hvdc/results-lopf/lines-p1.csv +0 -0
  702. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/storage-hvdc/results-lopf/lines.csv +0 -0
  703. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/storage-hvdc/results-lopf/links-p0.csv +0 -0
  704. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/storage-hvdc/results-lopf/links-p1.csv +0 -0
  705. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/storage-hvdc/results-lopf/links.csv +0 -0
  706. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/storage-hvdc/results-lopf/loads-p.csv +0 -0
  707. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/storage-hvdc/results-lopf/loads-p_set.csv +0 -0
  708. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/storage-hvdc/results-lopf/loads.csv +0 -0
  709. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/storage-hvdc/results-lopf/network.csv +0 -0
  710. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/storage-hvdc/results-lopf/snapshots.csv +0 -0
  711. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/storage-hvdc/results-lopf/storage_units-inflow.csv +0 -0
  712. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/storage-hvdc/results-lopf/storage_units-p.csv +0 -0
  713. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/storage-hvdc/results-lopf/storage_units-spill.csv +0 -0
  714. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/storage-hvdc/results-lopf/storage_units-state_of_charge.csv +0 -0
  715. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/storage-hvdc/results-lopf/storage_units-state_of_charge_set.csv +0 -0
  716. {pypsa-1.2.1 → pypsa-1.2.2}/test/data/storage-hvdc/results-lopf/storage_units.csv +0 -0
  717. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_bugs.py +0 -0
  718. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_buses.py +0 -0
  719. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_capital_cost_split.py +0 -0
  720. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_carriers.py +0 -0
  721. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_collection.py +0 -0
  722. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_collection_statistics.py +0 -0
  723. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_committable_extendable.py +0 -0
  724. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_common.py +0 -0
  725. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_common_deprecations.py +0 -0
  726. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_compatibility_ext_and_com.py +0 -0
  727. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_components.py +0 -0
  728. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_components_array.py +0 -0
  729. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_components_custom.py +0 -0
  730. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_components_store.py +0 -0
  731. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_components_utils.py +0 -0
  732. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_consistency_check.py +0 -0
  733. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_constants.py +0 -0
  734. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_deprecations.py +0 -0
  735. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_descriptors.py +0 -0
  736. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_docs.py +0 -0
  737. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_examples.py +0 -0
  738. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_graph.py +0 -0
  739. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_guards.py +0 -0
  740. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_indices.py +0 -0
  741. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_io.py +0 -0
  742. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_io_cloudpathlib.py +0 -0
  743. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_link_post_discretization.py +0 -0
  744. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_lopf_ac_dc.py +0 -0
  745. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_lopf_activity_mask.py +0 -0
  746. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_lopf_and_subsequent_power_flow.py +0 -0
  747. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_lopf_global_constraints.py +0 -0
  748. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_lopf_iteratively.py +0 -0
  749. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_lopf_losses.py +0 -0
  750. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_lopf_mga.py +0 -0
  751. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_lopf_modularity.py +0 -0
  752. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_lopf_multiinvest.py +0 -0
  753. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_lopf_multilink.py +0 -0
  754. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_lopf_process.py +0 -0
  755. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_lopf_quadratic_costs.py +0 -0
  756. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_lopf_rolling_horizon.py +0 -0
  757. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_lopf_storage.py +0 -0
  758. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_lopf_unit_commitment.py +0 -0
  759. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_lopf_varying_inputs.py +0 -0
  760. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_lpf_ac_dc.py +0 -0
  761. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_lpf_against_pypower.py +0 -0
  762. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_meshed_threshold.py +0 -0
  763. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_network.py +0 -0
  764. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_network_cycles.py +0 -0
  765. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_network_index.py +0 -0
  766. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_network_transform.py +0 -0
  767. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_objective_constant.py +0 -0
  768. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_optimization_expressions.py +0 -0
  769. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_optional_dependencies.py +0 -0
  770. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_options.py +0 -0
  771. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_pf_activity_mask.py +0 -0
  772. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_pf_against_pandapower.py +0 -0
  773. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_pf_against_pypower.py +0 -0
  774. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_pf_distributed_slack.py +0 -0
  775. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_plot_maps_common.py +0 -0
  776. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_plot_maps_interactive.py +0 -0
  777. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_plot_maps_static.py +0 -0
  778. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_riskaversion.py +0 -0
  779. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_sclopf_scigrid.py +0 -0
  780. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_snapshot_weightings.py +0 -0
  781. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_spatial_clustering.py +0 -0
  782. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_stand_by_cost.py +0 -0
  783. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_statistics.py +0 -0
  784. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_statistics_plot.py +0 -0
  785. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_statistics_plot_interactive.py +0 -0
  786. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_statistics_plot_schema.py +0 -0
  787. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_stochastic.py +0 -0
  788. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_stochastic_not_implemented.py +0 -0
  789. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_subnetwork.py +0 -0
  790. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_temporal_clustering.py +0 -0
  791. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_transmission_losses.py +0 -0
  792. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_transport_delay.py +0 -0
  793. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_version.py +0 -0
  794. {pypsa-1.2.1 → pypsa-1.2.2}/test/test_warnings_cyclic_storage.py +0 -0
@@ -120,7 +120,10 @@ jobs:
120
120
  - name: Install package from ref
121
121
  if: (steps.filter.outputs.src == 'true' || github.event_name == 'schedule') && env.pinned == 'false'
122
122
  run: |
123
+ # Allow upgrading internal packages without exclude-newer cap
124
+ sed -i '/^exclude-newer\s*=/d' pixi.toml
123
125
  pixi remove ${{ env.PACKAGE_NAME }}
126
+ pixi upgrade linopy
124
127
  pixi add --pypi --git https://github.com/${{ github.repository }}.git ${{ github.event.repository.name }} --rev ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
125
128
 
126
129
  - name: Run snakemake test workflows
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pypsa
3
- Version: 1.2.1
3
+ Version: 1.2.2
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
@@ -42,9 +42,9 @@ License-File: LICENSE
42
42
  Requires-Dist: numpy
43
43
  Requires-Dist: scipy
44
44
  Requires-Dist: pandas>=2.0
45
- Requires-Dist: xarray<2026.4
45
+ Requires-Dist: xarray
46
46
  Requires-Dist: netcdf4
47
- Requires-Dist: linopy>=0.6.1
47
+ Requires-Dist: linopy>=0.7.0
48
48
  Requires-Dist: matplotlib
49
49
  Requires-Dist: plotly
50
50
  Requires-Dist: pydeck>=0.6
@@ -167,11 +167,7 @@
167
167
  "cell_type": "markdown",
168
168
  "id": "d3a8d32d",
169
169
  "metadata": {},
170
- "source": [
171
- "## Tracing the Infeasibility\n",
172
- "\n",
173
- "When the optimization fails due to infeasibility, PyPSA provides a convenient method to diagnose the problem. The `print_infeasibilities()` method on the optimization model will show us exactly which constraints are causing the infeasibility."
174
- ]
170
+ "source": "## Tracing the Infeasibility\n\nWhen the optimization fails due to infeasibility, PyPSA provides a convenient method to diagnose the problem. The `format_infeasibilities()` method on the optimization model will show us exactly which constraints are causing the infeasibility."
175
171
  },
176
172
  {
177
173
  "cell_type": "code",
@@ -179,34 +175,13 @@
179
175
  "id": "4989a457",
180
176
  "metadata": {},
181
177
  "outputs": [],
182
- "source": [
183
- "n.model.print_infeasibilities()"
184
- ]
178
+ "source": "print(n.model.format_infeasibilities())"
185
179
  },
186
180
  {
187
181
  "cell_type": "markdown",
188
182
  "id": "ee963ad8",
189
183
  "metadata": {},
190
- "source": [
191
- "### Interpreting the Infeasibility Output\n",
192
- "\n",
193
- "The infeasibility trace above shows us exactly what's wrong:\n",
194
- "\n",
195
- "1. **`Link-fix-p-lower[2015-01-01 00:00:00, DC link]: +1 Link-p[2015-01-01 00:00:00, DC link] ≥ -0`**\n",
196
- " - This constraint says the DC link power flow must be ≥ 0 (can't flow negative)\n",
197
- " - But we set the DC link capacity to 0, so Link-p value is bounded to 0\n",
198
- "\n",
199
- "2. **`Bus-nodal_balance[London, 2015-01-01 00:00:00]: -1 Link-p[2015-01-01 00:00:00, DC link] = 35.7962441027`**\n",
200
- " - This is London's nodal balance equation: generation ± trade ± storage = load\n",
201
- " - London has no generation, 35.8 MW load, and no AC interconnectors\n",
202
- " - The DC link (the only remaining connection) can't provide any power because its capacity is 0\n",
203
- "\n",
204
- "Under the hood, `print_infeasibilities()` uses Gurobi's infeasibility analysis to identify conflicting constraints.\n",
205
- " **Irreducible Inconsistent Set (IIS)** identified by Gurobi shows these two constraints are fundamentally incompatible:\n",
206
- "- London needs power inflow via the DC link to meet its load\n",
207
- "- But the DC link is constrained to zero power\n",
208
- "- This creates an impossible situation that no solution can satisfy"
209
- ]
184
+ "source": "### Interpreting the Infeasibility Output\n\nThe infeasibility trace above shows us exactly what's wrong:\n\n1. **`Link-fix-p-lower[2015-01-01 00:00:00, DC link]: +1 Link-p[2015-01-01 00:00:00, DC link] ≥ -0`**\n - This constraint says the DC link power flow must be ≥ 0 (can't flow negative)\n - But we set the DC link capacity to 0, so Link-p value is bounded to 0\n\n2. **`Bus-nodal_balance[London, 2015-01-01 00:00:00]: -1 Link-p[2015-01-01 00:00:00, DC link] = 35.7962441027`**\n - This is London's nodal balance equation: generation ± trade ± storage = load\n - London has no generation, 35.8 MW load, and no AC interconnectors\n - The DC link (the only remaining connection) can't provide any power because its capacity is 0\n\nUnder the hood, `format_infeasibilities()` uses Gurobi's infeasibility analysis to identify conflicting constraints.\n **Irreducible Inconsistent Set (IIS)** identified by Gurobi shows these two constraints are fundamentally incompatible:\n- London needs power inflow via the DC link to meet its load\n- But the DC link is constrained to zero power\n- This creates an impossible situation that no solution can satisfy"
210
185
  }
211
186
  ],
212
187
  "metadata": {
@@ -146,7 +146,7 @@ Interactive **network visualization** of SciGRID example network clustered by fe
146
146
  Interactive area plot of **electricity balance time series** in a highly-renewable sector-coupled example network, showing temporal generation (positive values) and consumption (negative values) of different technologies:
147
147
 
148
148
  <div style="width: 100%; height: 550px;">
149
- <iframe src="../../../assets/interactive/carbon_management-energy_balance-area_iplot-AC-bus_carrier.html"
149
+ <iframe src="../../assets/interactive/carbon_management-energy_balance-area_iplot-AC-bus_carrier.html"
150
150
  width="100%" height="100%" frameborder="0" style="border: 0px solid #ccc;">
151
151
  </iframe>
152
152
  </div>
@@ -6,13 +6,24 @@ SPDX-License-Identifier: CC-BY-4.0
6
6
 
7
7
  # Release Notes
8
8
 
9
- <!--## Upcoming Release
9
+ ## [**v1.2.2**](https://github.com/PyPSA/PyPSA/releases/tag/v1.2.2) <small>25th May 2026</small> { id="v1.2.2" }
10
10
 
11
+ <!--
11
12
  !!! info "Upcoming Release"
12
13
 
13
14
  The features listed below have not yet been released, but will be included in the
14
15
  next update! If you would like to use these features in the meantime, you will need
15
- to install the `master` branch, e.g. `pip install git+https://github.com/pypsa/pypsa`.-->
16
+ to install the `master` branch, e.g. `pip install git+https://github.com/pypsa/pypsa`.
17
+ -->
18
+
19
+ ### Bug Fixes
20
+
21
+ - Fix the sign of [Loads](./user-guide/components/loads.md) not being taken into account in the nodal balance constraint when calling [`n.optimize()`][pypsa.optimization.OptimizationAccessor.__call__]. (<!-- md:pr 1685 -->)
22
+
23
+ - Fix operational constraints for non-extendable components producing `NaN` bounds when `p_nom` is infinite and `p_min_pu`/`p_max_pu` is zero. The bound now falls back to zero in this case. Relevant for linopy versions `>=0.7` where `NaN` bounds are not dropped explicitly. (<!-- md:pr 1683 -->)
24
+
25
+ - Lift `xarray<2026.4` upper bound and bump `linopy>=0.7.0` floor. (<!-- md:pr 1686 -->)
26
+
16
27
 
17
28
  ## [**v1.2.1**](https://github.com/PyPSA/PyPSA/releases/tag/v1.2.1) <small>19th May 2026</small> { id="v1.2.1" }
18
29
 
@@ -13,7 +13,7 @@ babel==2.18.0
13
13
  # via
14
14
  # mkdocs-git-revision-date-localized-plugin
15
15
  # mkdocs-material
16
- backrefs==6.2
16
+ backrefs==7.0
17
17
  # via mkdocs-material
18
18
  beautifulsoup4==4.14.3
19
19
  # via nbconvert
@@ -27,7 +27,7 @@ cairosvg==2.9.0
27
27
  # via pypsa
28
28
  cartopy==0.25.0
29
29
  # via pypsa
30
- certifi==2026.2.25
30
+ certifi==2026.4.22
31
31
  # via
32
32
  # netcdf4
33
33
  # pyogrio
@@ -36,13 +36,12 @@ certifi==2026.2.25
36
36
  cffi==2.0.0
37
37
  # via
38
38
  # cairocffi
39
- # cryptography
40
39
  # pyzmq
41
40
  cftime==1.6.5
42
41
  # via netcdf4
43
42
  charset-normalizer==3.4.7
44
43
  # via requests
45
- click==8.3.2
44
+ click==8.4.0
46
45
  # via
47
46
  # dask
48
47
  # mkdocs
@@ -62,8 +61,6 @@ comm==0.2.3
62
61
  # via ipykernel
63
62
  contourpy==1.3.3
64
63
  # via matplotlib
65
- cryptography==46.0.7
66
- # via google-auth
67
64
  cssselect2==0.9.0
68
65
  # via cairosvg
69
66
  cycler==0.12.1
@@ -72,7 +69,7 @@ dask==2026.3.0
72
69
  # via linopy
73
70
  debugpy==1.8.20
74
71
  # via ipykernel
75
- decorator==5.2.1
72
+ decorator==5.3.1
76
73
  # via ipython
77
74
  defusedxml==0.7.1
78
75
  # via
@@ -90,9 +87,9 @@ executing==2.2.1
90
87
  # via stack-data
91
88
  fastjsonschema==2.21.2
92
89
  # via nbformat
93
- fonttools==4.62.1
90
+ fonttools==4.63.0
94
91
  # via matplotlib
95
- fsspec==2026.3.0
92
+ fsspec==2026.4.0
96
93
  # via dask
97
94
  geopandas==1.1.3
98
95
  # via pypsa
@@ -102,38 +99,17 @@ ghp-import==2.1.0
102
99
  # properdocs
103
100
  gitdb==4.0.12
104
101
  # via gitpython
105
- gitpython==3.1.46
102
+ gitpython==3.1.50
106
103
  # via mkdocs-git-revision-date-localized-plugin
107
- google-api-core==2.30.3
108
- # via
109
- # google-cloud-core
110
- # google-cloud-storage
111
- google-auth==2.49.2
112
- # via
113
- # google-api-core
114
- # google-cloud-core
115
- # google-cloud-storage
116
- google-cloud-core==2.5.1
117
- # via google-cloud-storage
118
- google-cloud-storage==3.10.1
119
- # via linopy
120
- google-crc32c==1.8.0
121
- # via
122
- # google-cloud-storage
123
- # google-resumable-media
124
- google-resumable-media==2.8.2
125
- # via google-cloud-storage
126
- googleapis-common-protos==1.74.0
127
- # via google-api-core
128
104
  griffelib==2.0.2
129
105
  # via mkdocstrings-python
130
- gurobipy==13.0.1
106
+ gurobipy==13.0.2
131
107
  # via pypsa
132
- highspy==1.13.1
108
+ highspy==1.14.0
133
109
  # via
134
110
  # pypsa
135
111
  # tsam
136
- idna==3.12
112
+ idna==3.15
137
113
  # via requests
138
114
  importlib-metadata==9.0.0 ; python_full_version < '3.12'
139
115
  # via dask
@@ -141,13 +117,11 @@ iniconfig==2.3.0
141
117
  # via pytest
142
118
  ipykernel==7.2.0
143
119
  # via mkdocs-jupyter
144
- ipython==9.10.1 ; python_full_version < '3.12'
145
- # via ipykernel
146
- ipython==9.12.0 ; python_full_version >= '3.12'
120
+ ipython==9.13.0
147
121
  # via ipykernel
148
122
  ipython-pygments-lexers==1.1.1
149
123
  # via ipython
150
- jedi==0.19.2
124
+ jedi==0.20.0
151
125
  # via ipython
152
126
  jinja2==3.1.6
153
127
  # via
@@ -176,17 +150,17 @@ jupyter-core==5.9.1
176
150
  # nbformat
177
151
  jupyterlab-pygments==0.3.0
178
152
  # via nbconvert
179
- jupytext==1.19.1
153
+ jupytext==1.19.3
180
154
  # via mkdocs-jupyter
181
155
  kiwisolver==1.5.0
182
156
  # via matplotlib
183
157
  levenshtein==0.27.3
184
158
  # via pypsa
185
- linopy==0.6.7
159
+ linopy==0.7.0
186
160
  # via pypsa
187
161
  locket==1.0.0
188
162
  # via partd
189
- lxml==6.1.0
163
+ lxml==6.1.1
190
164
  # via mkdocs-video
191
165
  markdown==3.10.2
192
166
  # via
@@ -196,7 +170,7 @@ markdown==3.10.2
196
170
  # mkdocstrings
197
171
  # properdocs
198
172
  # pymdown-extensions
199
- markdown-it-py==4.0.0
173
+ markdown-it-py==4.2.0
200
174
  # via
201
175
  # jupytext
202
176
  # mdit-py-plugins
@@ -208,17 +182,17 @@ markupsafe==3.0.3
208
182
  # mkdocstrings
209
183
  # nbconvert
210
184
  # properdocs
211
- matplotlib==3.10.8
185
+ matplotlib==3.10.9
212
186
  # via
213
187
  # cartopy
214
188
  # pypsa
215
189
  # salib
216
190
  # seaborn
217
- matplotlib-inline==0.2.1
191
+ matplotlib-inline==0.2.2
218
192
  # via
219
193
  # ipykernel
220
194
  # ipython
221
- mdit-py-plugins==0.5.0
195
+ mdit-py-plugins==0.6.1
222
196
  # via jupytext
223
197
  mdurl==0.1.2
224
198
  # via markdown-it-py
@@ -226,7 +200,7 @@ mergedeep==1.3.4
226
200
  # via
227
201
  # mkdocs
228
202
  # mkdocs-get-deps
229
- mistune==3.2.0
203
+ mistune==3.2.1
230
204
  # via nbconvert
231
205
  mkdocs==1.6.1
232
206
  # via
@@ -250,7 +224,7 @@ mkdocs-ezlinks-plugin==0.1.14
250
224
  # via pypsa
251
225
  mkdocs-get-deps==0.2.2
252
226
  # via mkdocs
253
- mkdocs-git-revision-date-localized-plugin==1.5.1
227
+ mkdocs-git-revision-date-localized-plugin==1.5.2
254
228
  # via pypsa
255
229
  mkdocs-jupyter==0.26.3
256
230
  # via pypsa
@@ -272,7 +246,7 @@ mkdocstrings-python==2.0.3
272
246
  # via pypsa
273
247
  multiprocess==0.70.19
274
248
  # via salib
275
- narwhals==2.20.0
249
+ narwhals==2.21.2
276
250
  # via plotly
277
251
  nbclient==0.10.4
278
252
  # via nbconvert
@@ -293,7 +267,7 @@ networkx==3.6.1
293
267
  # tsam
294
268
  numexpr==2.14.1
295
269
  # via linopy
296
- numpy==2.4.4
270
+ numpy==2.4.6
297
271
  # via
298
272
  # bottleneck
299
273
  # cartopy
@@ -348,11 +322,11 @@ pandas==2.3.3
348
322
  # xarray
349
323
  pandocfilters==1.5.1
350
324
  # via nbconvert
351
- parso==0.8.6
325
+ parso==0.8.7
352
326
  # via jedi
353
327
  partd==1.4.2
354
328
  # via dask
355
- pathspec==1.0.4
329
+ pathspec==1.1.1
356
330
  # via
357
331
  # mkdocs
358
332
  # properdocs
@@ -373,31 +347,22 @@ plotly==6.7.0
373
347
  # via pypsa
374
348
  pluggy==1.6.0
375
349
  # via pytest
376
- polars==1.40.0
350
+ polars==1.40.1
377
351
  # via linopy
378
- polars-runtime-32==1.40.0
352
+ polars-runtime-32==1.40.1
379
353
  # via polars
380
354
  prompt-toolkit==3.0.52
381
355
  # via ipython
382
356
  properdocs==1.6.7
383
357
  # via mkdocs-redirects
384
- proto-plus==1.27.2
385
- # via google-api-core
386
- protobuf==7.34.1
387
- # via
388
- # google-api-core
389
- # googleapis-common-protos
390
- # proto-plus
391
358
  psutil==7.2.2
392
- # via ipykernel
359
+ # via
360
+ # ipykernel
361
+ # ipython
393
362
  ptyprocess==0.7.0 ; sys_platform != 'emscripten' and sys_platform != 'win32'
394
363
  # via pexpect
395
364
  pure-eval==0.2.3
396
365
  # via stack-data
397
- pyasn1==0.6.3
398
- # via pyasn1-modules
399
- pyasn1-modules==0.4.2
400
- # via google-auth
401
366
  pycparser==3.0 ; implementation_name != 'PyPy'
402
367
  # via cffi
403
368
  pydeck==0.9.2
@@ -412,7 +377,7 @@ pygments==2.20.0
412
377
  # pytest
413
378
  pygtrie==2.5.0
414
379
  # via mkdocs-ezlinks-plugin
415
- pymdown-extensions==10.21.2
380
+ pymdown-extensions==10.21.3
416
381
  # via
417
382
  # mkdocs-material
418
383
  # mkdocstrings
@@ -426,7 +391,7 @@ pyproj==3.7.2
426
391
  # via
427
392
  # cartopy
428
393
  # geopandas
429
- pyshp==3.0.3
394
+ pyshp==3.0.5
430
395
  # via cartopy
431
396
  pytest==9.0.3
432
397
  # via pypsa
@@ -438,7 +403,7 @@ python-dateutil==2.9.0.post0
438
403
  # jupyter-client
439
404
  # matplotlib
440
405
  # pandas
441
- pytz==2026.1.post1
406
+ pytz==2026.2
442
407
  # via pandas
443
408
  pyyaml==6.0.3
444
409
  # via
@@ -464,12 +429,8 @@ referencing==0.37.0
464
429
  # via
465
430
  # jsonschema
466
431
  # jsonschema-specifications
467
- requests==2.33.1
468
- # via
469
- # google-api-core
470
- # google-cloud-storage
471
- # linopy
472
- # mkdocs-material
432
+ requests==2.34.2
433
+ # via mkdocs-material
473
434
  rpds-py==0.30.0
474
435
  # via
475
436
  # jsonschema
@@ -521,7 +482,7 @@ tqdm==4.67.3
521
482
  # via
522
483
  # linopy
523
484
  # tsam
524
- traitlets==5.14.3
485
+ traitlets==5.15.0
525
486
  # via
526
487
  # ipykernel
527
488
  # ipython
@@ -531,18 +492,18 @@ traitlets==5.14.3
531
492
  # nbclient
532
493
  # nbconvert
533
494
  # nbformat
534
- tsam==3.3.0
495
+ tsam==2.3.9
535
496
  # via pypsa
536
497
  typing-extensions==4.15.0
537
498
  # via
538
499
  # beautifulsoup4
539
500
  # ipython
540
501
  # referencing
541
- tzdata==2026.1
502
+ tzdata==2026.2
542
503
  # via
543
504
  # mkdocs-git-revision-date-localized-plugin
544
505
  # pandas
545
- urllib3==2.6.3
506
+ urllib3==2.7.0
546
507
  # via requests
547
508
  validators==0.35.0
548
509
  # via pypsa
@@ -550,7 +511,7 @@ watchdog==6.0.0
550
511
  # via
551
512
  # mkdocs
552
513
  # properdocs
553
- wcwidth==0.6.0
514
+ wcwidth==0.7.0
554
515
  # via prompt-toolkit
555
516
  webencodings==0.5.1
556
517
  # via
@@ -561,5 +522,5 @@ xarray==2026.2.0
561
522
  # via
562
523
  # linopy
563
524
  # pypsa
564
- zipp==3.23.1 ; python_full_version < '3.12'
525
+ zipp==4.1.0 ; python_full_version < '3.12'
565
526
  # via importlib-metadata
@@ -33,9 +33,9 @@ dependencies = [
33
33
  "numpy",
34
34
  "scipy",
35
35
  "pandas>=2.0",
36
- "xarray<2026.4", # See https://github.com/PyPSA/linopy/pull/647
36
+ "xarray",
37
37
  "netcdf4",
38
- "linopy>=0.6.1",
38
+ "linopy>=0.7.0",
39
39
  "matplotlib",
40
40
  "plotly",
41
41
  "pydeck>=0.6",
@@ -14,7 +14,7 @@ import linopy
14
14
  import pandas as pd
15
15
  import xarray as xr
16
16
  from linopy import merge
17
- from numpy import inf, isfinite, maximum, sqrt, tile
17
+ from numpy import inf, isfinite, isinf, maximum, sqrt, tile
18
18
  from xarray import DataArray, concat, where
19
19
 
20
20
  from pypsa.common import as_index, expand_series
@@ -102,8 +102,12 @@ def define_operational_constraints_for_non_extendables(
102
102
  min_pu = min_pu.sel(snapshot=sns)
103
103
  max_pu = max_pu.sel(snapshot=sns)
104
104
 
105
- lower = min_pu * nominal_fix
106
- upper = max_pu * nominal_fix
105
+ is_inf = isinf(nominal_fix)
106
+ is_zero_min = min_pu == 0
107
+ is_zero_max = max_pu == 0
108
+
109
+ lower = (min_pu * nominal_fix).where(~(is_inf & is_zero_min), 0)
110
+ upper = (max_pu * nominal_fix).where(~(is_inf & is_zero_max), 0)
107
111
 
108
112
  active = c.da.active.sel(name=fix_i, snapshot=sns)
109
113
 
@@ -1144,9 +1148,8 @@ def define_nodal_balance_constraints(
1144
1148
  dims=["snapshot", "name"],
1145
1149
  )
1146
1150
  else:
1147
- loads_values = loads.da.p_set.where(
1148
- loads.da.active.sel(name=loads.active_assets, snapshot=sns)
1149
- )
1151
+ active_mask = loads.da.active.sel(name=loads.active_assets, snapshot=sns)
1152
+ loads_values = (-loads.da.p_set * loads.da.sign).where(active_mask)
1150
1153
  loads_values = loads_values.reindex(name=loads.static.index.unique("name"))
1151
1154
  load_buses = loads._as_xarray("bus").rename("Bus")
1152
1155
  if n.has_scenarios:
@@ -594,7 +594,7 @@ class OptimizationAccessor(OptimizationAbstractMixin):
594
594
  and compute_infeasibilities
595
595
  and "gurobi" in available_solvers
596
596
  ):
597
- n.model.print_infeasibilities()
597
+ logger.info(n.model.format_infeasibilities())
598
598
 
599
599
  return status, condition
600
600
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pypsa
3
- Version: 1.2.1
3
+ Version: 1.2.2
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
@@ -42,9 +42,9 @@ License-File: LICENSE
42
42
  Requires-Dist: numpy
43
43
  Requires-Dist: scipy
44
44
  Requires-Dist: pandas>=2.0
45
- Requires-Dist: xarray<2026.4
45
+ Requires-Dist: xarray
46
46
  Requires-Dist: netcdf4
47
- Requires-Dist: linopy>=0.6.1
47
+ Requires-Dist: linopy>=0.7.0
48
48
  Requires-Dist: matplotlib
49
49
  Requires-Dist: plotly
50
50
  Requires-Dist: pydeck>=0.6
@@ -1,9 +1,9 @@
1
1
  numpy
2
2
  scipy
3
3
  pandas>=2.0
4
- xarray<2026.4
4
+ xarray
5
5
  netcdf4
6
- linopy>=0.6.1
6
+ linopy>=0.7.0
7
7
  matplotlib
8
8
  plotly
9
9
  pydeck>=0.6
@@ -404,3 +404,79 @@ def test_define_fixed_operational_constraints_extendable():
404
404
  assert n.c.generators.dynamic.p["gen0"].eq(5).all()
405
405
  assert n.c.generators.dynamic.p["gen1"].eq(5).all()
406
406
  assert n.c.generators.dynamic.p["gen2"].eq(0).all()
407
+
408
+
409
+ def test_nodal_balance_respects_load_sign():
410
+ """
411
+ The sign attribute of Load components must be considered in the
412
+ nodal balance constraint. With sign=-1 (default), a load consumes
413
+ power; with sign=+1, it represents a fixed supply injection.
414
+
415
+ Verifies both:
416
+ 1. The nodal balance constraint RHS equals -p_set * sign.
417
+ 2. The solved generator dispatch matches the resulting net demand.
418
+ """
419
+ n = pypsa.Network()
420
+ n.add("Bus", "B1")
421
+ n.add("Generator", "gen", bus="B1", p_nom=200, marginal_cost=10)
422
+ n.add("Load", "L_consume", bus="B1", p_set=100, sign=-1)
423
+ n.add("Load", "L_supply", bus="B1", p_set=100, sign=1)
424
+
425
+ n.optimize(solver_name="highs")
426
+
427
+ # Constraint RHS check: -p_set * sign per load, summed per bus
428
+ # Expected for bus B1: -(100 * -1) + -(100 * 1) = 100 - 100 = 0
429
+ rhs = n.model.constraints["Bus-nodal_balance"].rhs.sel(name="B1")
430
+ assert (rhs == 0).all().item()
431
+
432
+ # Generator stays idle
433
+ assert n.c.generators.dynamic.p["gen"].abs().max() < TOLERANCE
434
+ assert n.objective < TOLERANCE
435
+
436
+
437
+ def test_nodal_balance_load_sign_rhs_values():
438
+ """
439
+ Verify the per-load contribution to the nodal balance RHS for both
440
+ sign conventions, independently of solver behavior.
441
+ """
442
+ n = pypsa.Network()
443
+ n.add("Bus", "B1")
444
+ n.add("Bus", "B2")
445
+ n.add("Generator", "gen1", bus="B1", p_nom=500, marginal_cost=1)
446
+ n.add("Generator", "gen2", bus="B2", p_nom=500, marginal_cost=1)
447
+ n.add("Load", "L_default", bus="B1", p_set=80) # default sign = -1
448
+ n.add("Load", "L_supply", bus="B2", p_set=30, sign=1)
449
+
450
+ n.optimize.create_model()
451
+
452
+ rhs = n.model.constraints["Bus-nodal_balance"].rhs
453
+ # Default sign=-1: RHS contribution = -p_set * (-1) = +p_set
454
+ assert rhs.sel(name="B1").item() == 80.0
455
+ # sign=+1: RHS contribution = -p_set * (+1) = -p_set
456
+ assert rhs.sel(name="B2").item() == -30.0
457
+
458
+
459
+ def test_define_fixed_operational_constraints_infinite_p_nom():
460
+ """Non-extendable generator with p_nom=inf and p_min_pu=0 must not produce NaN bounds.
461
+
462
+ Without the inf*0 fallback, the lower bound would be NaN and the solve would fail.
463
+ """
464
+ n = pypsa.Network()
465
+ n.add("Bus", "bus0")
466
+ n.add("Load", "load0", bus="bus0", p_set=10)
467
+ n.add(
468
+ "Generator",
469
+ "gen_inf",
470
+ bus="bus0",
471
+ p_nom=float("inf"),
472
+ p_min_pu=0,
473
+ p_max_pu=1,
474
+ marginal_cost=1,
475
+ )
476
+
477
+ n.optimize.create_model()
478
+ lower = n.model.constraints["Generator-fix-p-lower"].rhs
479
+ assert (lower == 0).all()
480
+
481
+ n.optimize.solve_model()
482
+ assert n.c.generators.dynamic.p["gen_inf"].eq(10).all()
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes