distopf 1.0.2__tar.gz → 1.1.0.dev0__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 (597) hide show
  1. {distopf-1.0.2 → distopf-1.1.0.dev0}/PKG-INFO +31 -1
  2. {distopf-1.0.2 → distopf-1.1.0.dev0}/README.md +30 -0
  3. {distopf-1.0.2 → distopf-1.1.0.dev0}/pyproject.toml +1 -1
  4. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/plot.py +106 -31
  5. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/pyomo_models/__init__.py +2 -0
  6. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/pyomo_models/lindist.py +16 -1
  7. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/pyomo_models/nl_branchflow.py +26 -4
  8. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/pyomo_models/objectives.py +10 -0
  9. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/wrappers/pyomo_wrapper.py +3 -0
  10. {distopf-1.0.2 → distopf-1.1.0.dev0}/uv.lock +36 -36
  11. {distopf-1.0.2 → distopf-1.1.0.dev0}/.github/copilot-instructions.md +0 -0
  12. {distopf-1.0.2 → distopf-1.1.0.dev0}/.github/skills/run-opf/SKILL.md +0 -0
  13. {distopf-1.0.2 → distopf-1.1.0.dev0}/.github/workflows/lint.yml +0 -0
  14. {distopf-1.0.2 → distopf-1.1.0.dev0}/.github/workflows/pypi-publish.yml +0 -0
  15. {distopf-1.0.2 → distopf-1.1.0.dev0}/.gitignore +0 -0
  16. {distopf-1.0.2 → distopf-1.1.0.dev0}/2026-04-21-distopf_2-triplex-agent.md +0 -0
  17. {distopf-1.0.2 → distopf-1.1.0.dev0}/DISCLAIMER.md +0 -0
  18. {distopf-1.0.2 → distopf-1.1.0.dev0}/LICENSE.md +0 -0
  19. {distopf-1.0.2 → distopf-1.1.0.dev0}/column_migration.md +0 -0
  20. {distopf-1.0.2 → distopf-1.1.0.dev0}/docs/STYLE_GUIDE.md +0 -0
  21. {distopf-1.0.2 → distopf-1.1.0.dev0}/docs/architecture.puml +0 -0
  22. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/README.md +0 -0
  23. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/advanced/profile_matrix.py +0 -0
  24. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/advanced/run_enapp.py +0 -0
  25. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/advanced/run_enapp_refactor.py +0 -0
  26. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/advanced/temp_test.py +0 -0
  27. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/basics/adding_generators.py +0 -0
  28. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/basics/basic_optimal_power_flow.py +0 -0
  29. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/basics/basic_power_flow.py +0 -0
  30. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/basics/basic_power_flow_examples.html +0 -0
  31. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/basics/basic_power_flow_examples.py +0 -0
  32. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/control_devices/fbs13.py +0 -0
  33. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/control_devices/reg_cap_example.py +0 -0
  34. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/control_devices/test_regulator_mi.py +0 -0
  35. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/data_import/cim_example.py +0 -0
  36. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/data_import/compare_cim_case.py +0 -0
  37. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/data_import/dss_converter_test.py +0 -0
  38. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/data_import/dss_examples.py +0 -0
  39. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/data_import/dss_test_loss.py +0 -0
  40. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/data_import/dss_test_results.txt +0 -0
  41. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/optimization/extract_duals.py +0 -0
  42. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/optimization/penalties.py +0 -0
  43. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/optimization/penalty_example.py +0 -0
  44. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/optimization/thermal_limits.py +0 -0
  45. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/pyomo/build_your_own_opf.py +0 -0
  46. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/pyomo/build_your_own_opf_static.py +0 -0
  47. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/pyomo/nlp.py +0 -0
  48. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/pyomo/pyomo_dss_example.py +0 -0
  49. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/pyomo/pyomo_mi.py +0 -0
  50. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/pyomo/pyomo_multiperiod.py +0 -0
  51. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/pyomo/pyomo_nlp_123_comparison.py +0 -0
  52. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/pyomo/pyomo_nlp_13_comparison.py +0 -0
  53. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/pyomo/pyomo_regulator_control.py +0 -0
  54. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/pyomo/pyomo_tests.py +0 -0
  55. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/pyomo/pyomo_time_comparison.py +0 -0
  56. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/tutorials/01_simple_power_flow.py +0 -0
  57. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/tutorials/02_loss_minimization.py +0 -0
  58. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/tutorials/03_voltage_optimization.py +0 -0
  59. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/tutorials/04_comparing_wrappers.py +0 -0
  60. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/tutorials/05_control_strategies.py +0 -0
  61. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/tutorials/06_visualization_gallery.py +0 -0
  62. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/tutorials/07_quick_start.py +0 -0
  63. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/tutorials/08_reactive_power_importance.py +0 -0
  64. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/tutorials/09_optimization_tradeoffs.py +0 -0
  65. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/tutorials/10_working_with_results.py +0 -0
  66. {distopf-1.0.2 → distopf-1.1.0.dev0}/examples/tutorials/11_fbs_power_flow.py +0 -0
  67. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/__init__.py +0 -0
  68. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/api.py +0 -0
  69. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/__init__.py +0 -0
  70. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/cim/IEEE123_PV.xml +0 -0
  71. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/cim/IEEE13.xml +0 -0
  72. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/2Bus-1ph-batt/battery_data.csv +0 -0
  73. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/2Bus-1ph-batt/branch_data.csv +0 -0
  74. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/2Bus-1ph-batt/bus_data.csv +0 -0
  75. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/2Bus-1ph-batt/cap_data.csv +0 -0
  76. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/2Bus-1ph-batt/default_loadshape.csv +0 -0
  77. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/2Bus-1ph-batt/gen_data.csv +0 -0
  78. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/2Bus-1ph-batt/pv_loadshape.csv +0 -0
  79. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/2Bus-1ph-batt/reg_data.csv +0 -0
  80. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/3Bus-1ph-batt/battery_data.csv +0 -0
  81. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/3Bus-1ph-batt/branch_data.csv +0 -0
  82. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/3Bus-1ph-batt/bus_data.csv +0 -0
  83. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/3Bus-1ph-batt/cap_data.csv +0 -0
  84. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/3Bus-1ph-batt/default_loadshape.csv +0 -0
  85. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/3Bus-1ph-batt/gen_data.csv +0 -0
  86. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/3Bus-1ph-batt/pv_loadshape.csv +0 -0
  87. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/3Bus-1ph-batt/reg_data.csv +0 -0
  88. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/4Bus-YY-Bal_dss/branch_data.csv +0 -0
  89. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/4Bus-YY-Bal_dss/bus_data.csv +0 -0
  90. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/4Bus-YY-Bal_dss/cap_data.csv +0 -0
  91. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/4Bus-YY-Bal_dss/gen_data.csv +0 -0
  92. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/4Bus-YY-Bal_dss/reg_data.csv +0 -0
  93. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/battery_data.csv +0 -0
  94. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/branch_data.csv +0 -0
  95. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/bus_data.csv +0 -0
  96. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/cap_data.csv +0 -0
  97. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/default_loadshape.csv +0 -0
  98. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/gen_data.csv +0 -0
  99. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/pv_loadshape.csv +0 -0
  100. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/4Bus-YY-Bal_dss_batt/reg_data.csv +0 -0
  101. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/9500/branch_data.csv +0 -0
  102. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/9500/bus_data.csv +0 -0
  103. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/9500/cap_data.csv +0 -0
  104. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/9500/gen_data.csv +0 -0
  105. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/9500/reg_data.csv +0 -0
  106. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/9500-primary-network/branch_data.csv +0 -0
  107. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/9500-primary-network/bus_data.csv +0 -0
  108. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/9500-primary-network/cap_data.csv +0 -0
  109. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/9500-primary-network/gen_data.csv +0 -0
  110. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/9500-primary-network/reg_data.csv +0 -0
  111. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee123/branch_data.csv +0 -0
  112. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee123/bus_data.csv +0 -0
  113. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee123/cap_data.csv +0 -0
  114. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee123/gen_data.csv +0 -0
  115. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee123/reg_data.csv +0 -0
  116. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee123_30der/bat_data.csv +0 -0
  117. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee123_30der/branch_data.csv +0 -0
  118. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee123_30der/bus_data.csv +0 -0
  119. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee123_30der/cap_data.csv +0 -0
  120. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee123_30der/default_loadshape.csv +0 -0
  121. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee123_30der/gen_data.csv +0 -0
  122. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee123_30der/pv_loadshape.csv +0 -0
  123. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee123_30der/reg_data.csv +0 -0
  124. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee123_30der/schedules.csv +0 -0
  125. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee123_30der_bat/bat_data.csv +0 -0
  126. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee123_30der_bat/battery_data_v1.csv +0 -0
  127. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee123_30der_bat/branch_data.csv +0 -0
  128. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee123_30der_bat/bus_data.csv +0 -0
  129. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee123_30der_bat/cap_data.csv +0 -0
  130. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee123_30der_bat/gen_data.csv +0 -0
  131. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee123_30der_bat/reg_data.csv +0 -0
  132. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee123_30der_bat/schedules.csv +0 -0
  133. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee123_alternate/battery_data.csv +0 -0
  134. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee123_alternate/branch_data.csv +0 -0
  135. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee123_alternate/bus_data.csv +0 -0
  136. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee123_alternate/cap_data.csv +0 -0
  137. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee123_alternate/default_loadshape.csv +0 -0
  138. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee123_alternate/gen_data.csv +0 -0
  139. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee123_alternate/pv_loadshape.csv +0 -0
  140. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee123_alternate/reg_data.csv +0 -0
  141. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee13/branch_data.csv +0 -0
  142. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee13/bus_data.csv +0 -0
  143. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee13/cap_data.csv +0 -0
  144. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee13/gen_data.csv +0 -0
  145. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee13/reg_data.csv +0 -0
  146. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee13_battery/battery_data.csv +0 -0
  147. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee13_battery/branch_data.csv +0 -0
  148. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee13_battery/bus_data.csv +0 -0
  149. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee13_battery/cap_data.csv +0 -0
  150. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee13_battery/default_loadshape.csv +0 -0
  151. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee13_battery/gen_data.csv +0 -0
  152. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee13_battery/pv_loadshape.csv +0 -0
  153. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee13_battery/reg_data.csv +0 -0
  154. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee33/battery_data.csv +0 -0
  155. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee33/branch_data.csv +0 -0
  156. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee33/bus_data.csv +0 -0
  157. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee33/gen_data.csv +0 -0
  158. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee33/schedules.csv +0 -0
  159. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee34/branch_data.csv +0 -0
  160. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee34/bus_data.csv +0 -0
  161. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee34/cap_data.csv +0 -0
  162. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee34/gen_data.csv +0 -0
  163. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee34/reg_data.csv +0 -0
  164. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee9500/branch_data.csv +0 -0
  165. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee9500/bus_data.csv +0 -0
  166. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee9500/cap_data.csv +0 -0
  167. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee9500/gen_data.csv +0 -0
  168. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee9500/reg_data.csv +0 -0
  169. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee9500_wye/branch_data.csv +0 -0
  170. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee9500_wye/bus_data.csv +0 -0
  171. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee9500_wye/cap_data.csv +0 -0
  172. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee9500_wye/gen_data.csv +0 -0
  173. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/ieee9500_wye/reg_data.csv +0 -0
  174. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/minimal_triplex/branch_data.csv +0 -0
  175. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/minimal_triplex/bus_data.csv +0 -0
  176. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/minimal_triplex/cap_data.csv +0 -0
  177. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/minimal_triplex/gen_data.csv +0 -0
  178. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/minimal_triplex/reg_data.csv +0 -0
  179. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/smartds_small/branch_data.csv +0 -0
  180. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/smartds_small/bus_data.csv +0 -0
  181. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/smartds_small/cap_data.csv +0 -0
  182. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/smartds_small/gen_data.csv +0 -0
  183. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/smartds_small/reg_data.csv +0 -0
  184. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/triplex_3ph/branch_data.csv +0 -0
  185. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/triplex_3ph/bus_data.csv +0 -0
  186. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/triplex_3ph/cap_data.csv +0 -0
  187. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/triplex_3ph/gen_data.csv +0 -0
  188. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/triplex_3ph/reg_data.csv +0 -0
  189. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/triplex_pv/branch_data.csv +0 -0
  190. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/triplex_pv/bus_data.csv +0 -0
  191. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/triplex_pv/cap_data.csv +0 -0
  192. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/triplex_pv/gen_data.csv +0 -0
  193. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/csv/triplex_pv/reg_data.csv +0 -0
  194. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/2Bus/2Bus.DSS +0 -0
  195. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/2BusD/2Bus.DSS +0 -0
  196. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/2Bus_1phase/2Bus1ph.DSS +0 -0
  197. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/34Bus/IEEE34_BusXY.csv +0 -0
  198. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/34Bus/IEEELineCodes.dss +0 -0
  199. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/34Bus/Run_IEEE34Mod1.dss +0 -0
  200. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/34Bus/Run_IEEE34Mod2.dss +0 -0
  201. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/34Bus/ieee34-2_Curr_Elem.txt +0 -0
  202. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/34Bus/ieee34-2_Power_elem_kVA.txt +0 -0
  203. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/34Bus/ieee34-2_RegTaps.txt +0 -0
  204. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/34Bus/ieee34-2_VLN_Node.txt +0 -0
  205. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/34Bus/ieee34Mod1.dss +0 -0
  206. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/34Bus/ieee34Mod2.dss +0 -0
  207. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/34Bus/nmsu_linecode2_ABC.txt +0 -0
  208. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/3Bus/3Bus.DSS +0 -0
  209. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/4Bus-DY-Bal/4Bus-DY-Bal.DSS +0 -0
  210. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/4Bus-DY-Bal/4busDYBal_Curr_Elem.Txt +0 -0
  211. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/4Bus-DY-Bal/4busDYBal_Power_elem_kVA.txt +0 -0
  212. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/4Bus-DY-Bal/4busDYBal_VLL_Node.Txt +0 -0
  213. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/4Bus-DY-Bal/4busDYBal_VLN_Node.Txt +0 -0
  214. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/4Bus-GrdYD-Bal/4Bus-GrdYD-Bal.DSS +0 -0
  215. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/4Bus-GrdYD-Bal/4busYDBal_Losses.Txt +0 -0
  216. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/4Bus-GrdYD-Bal/4busYDBal_VLN_Node.Txt +0 -0
  217. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/4Bus-OYOD-Bal/4Bus-OYOD-Bal.DSS +0 -0
  218. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/4Bus-OYOD-UnBal/4bus-OYOD-UnBal.dss +0 -0
  219. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/4Bus-YD-Bal/4Bus-YD-Bal.DSS +0 -0
  220. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/4Bus-YY-Bal/4Bus-YY-Bal.DSS +0 -0
  221. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/4Bus-YYD/Three Winding Transformer Test System-EPRI-2017-Rev4.docx +0 -0
  222. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/4Bus-YYD/YYD-Master.DSS +0 -0
  223. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/4wire-Delta/Expanded4WireDelta.pdf +0 -0
  224. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/4wire-Delta/Kersting4wireIndMotor.dss +0 -0
  225. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/4wire-Delta/Kersting4wire_Lagging.dss +0 -0
  226. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/4wire-Delta/Kersting4wire_Leading.dss +0 -0
  227. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/9500-primary-network/BalancedLoads.dss +0 -0
  228. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/9500-primary-network/BusCoords.dss +0 -0
  229. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/9500-primary-network/CableData.dss +0 -0
  230. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/9500-primary-network/CapControls.dss +0 -0
  231. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/9500-primary-network/Capacitors.dss +0 -0
  232. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/9500-primary-network/DSSViewIntercom.Txt +0 -0
  233. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/9500-primary-network/EnergyStorage.dss +0 -0
  234. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/9500-primary-network/Generators.dss +0 -0
  235. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/9500-primary-network/LatLongCoords.dss +0 -0
  236. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/9500-primary-network/LineCodes.dss +0 -0
  237. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/9500-primary-network/LineGeometry.dss +0 -0
  238. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/9500-primary-network/LinesSwitchesGeometry.dss +0 -0
  239. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/9500-primary-network/LinesSwitchesLineCodes.dss +0 -0
  240. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/9500-primary-network/LoadXfmrCodes.dss +0 -0
  241. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/9500-primary-network/Loads_primary.dss +0 -0
  242. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/9500-primary-network/Master-unbal-initial-config.dss +0 -0
  243. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/9500-primary-network/Master.dss +0 -0
  244. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/9500-primary-network/PVSystems_primary.dss +0 -0
  245. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/9500-primary-network/PV_10pen_DSSPV.dss +0 -0
  246. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/9500-primary-network/PV_NN_100_DSSPV.dss +0 -0
  247. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/9500-primary-network/README.md +0 -0
  248. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/9500-primary-network/Regulators.dss +0 -0
  249. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/9500-primary-network/Transformers.dss +0 -0
  250. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/9500-primary-network/TriplexLineCodes.dss +0 -0
  251. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/9500-primary-network/TriplexLines.dss +0 -0
  252. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/9500-primary-network/UnbalancedLoads.dss +0 -0
  253. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/9500-primary-network/WireData.dss +0 -0
  254. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/9500-primary-network/bus_info_temp.json +0 -0
  255. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/9500-primary-network/desktop.ini +0 -0
  256. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/9500-primary-network/final9500node_Daisy.DSV +0 -0
  257. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/9500-primary-network/final9500node_Daisy.dbl +0 -0
  258. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/9500-primary-network/final9500node_Isolated.Txt +0 -0
  259. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/9500-primary-network/final9500node_Loops.Txt +0 -0
  260. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/9500-primary-network/final9500node_Power_elem_kVA.txt +0 -0
  261. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/9500-primary-network/final9500node_VLN_Node.Txt +0 -0
  262. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/9500-primary-network/ieee9500bal.dss +0 -0
  263. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/9500-primary-network/ieee9500unbal.dss +0 -0
  264. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/9500-primary-network/xfmrs_info_triplex_nodes.json +0 -0
  265. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/BusCoords.dat +0 -0
  266. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/CircuitPlottingScripts.dss +0 -0
  267. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/DSSGraph_Output.CSV +0 -0
  268. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/DSSViewIntercom.Txt +0 -0
  269. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/IEEE123Loads.DSS +0 -0
  270. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/IEEE123Master.dss +0 -0
  271. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/IEEE123Regulators.DSS +0 -0
  272. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/IEEELineCodes.DSS +0 -0
  273. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/P174_Run_SolarRamp.DSS +0 -0
  274. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/P174_Run_VoltageProfile.DSS +0 -0
  275. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/PV5sdata1.csv +0 -0
  276. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/PaperLoadShape.txt +0 -0
  277. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/RevRegTest.dss +0 -0
  278. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/Run_IEEE123Bus.DSS +0 -0
  279. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/Run_YearlySim.dss +0 -0
  280. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/SetDailyLoadShape.DSS +0 -0
  281. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/SolarRamp-Mack.DSS +0 -0
  282. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/SolarRamp.DSS +0 -0
  283. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/SolarRamp.csv +0 -0
  284. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/StorageRamp.CSV +0 -0
  285. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/WindRamp.DSS +0 -0
  286. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/WindRampRevRegTest.DSS +0 -0
  287. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/ieee123_Curr_Elem.Txt +0 -0
  288. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/ieee123_Daisy.DSV +0 -0
  289. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/ieee123_Daisy.dbl +0 -0
  290. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/ieee123_EXP_BUSCOORDS.CSV +0 -0
  291. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/ieee123_EXP_ElemPowers.CSV +0 -0
  292. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/ieee123_EXP_LOADS.CSV +0 -0
  293. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/ieee123_EXP_P_BYPHASE.CSV +0 -0
  294. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/ieee123_Elements.Txt +0 -0
  295. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/ieee123_GenMeterOut.Txt +0 -0
  296. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/ieee123_Loadshape_default.DSV +0 -0
  297. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/ieee123_Loadshape_default.dbl +0 -0
  298. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/ieee123_Loops.Txt +0 -0
  299. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/ieee123_Losses.DSV +0 -0
  300. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/ieee123_Losses.dbl +0 -0
  301. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/ieee123_Power.DSV +0 -0
  302. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/ieee123_Power.dbl +0 -0
  303. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/ieee123_Power_elem_kVA.txt +0 -0
  304. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/ieee123_Power_seq_kVA.txt +0 -0
  305. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/ieee123_Profile9998.DSV +0 -0
  306. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/ieee123_Profile9998.dbl +0 -0
  307. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/ieee123_Profile9999.DSV +0 -0
  308. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/ieee123_Profile9999.dbl +0 -0
  309. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/ieee123_RegTaps.Txt +0 -0
  310. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/ieee123_VLN.Txt +0 -0
  311. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/ieee123_VLN_Node.Txt +0 -0
  312. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/ieee123_Voltage.DSV +0 -0
  313. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/ieee123_Voltage.dbl +0 -0
  314. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/ieee123_Vsource_source_PQ.DSV +0 -0
  315. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/ieee123_Vsource_source_PQ.dbl +0 -0
  316. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/ieee123_Vsource_source_V.DSV +0 -0
  317. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee123_dss/ieee123_Vsource_source_V.dbl +0 -0
  318. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee13_dss/DSSViewIntercom.Txt +0 -0
  319. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee13_dss/IEEE13Node_BusXY.csv +0 -0
  320. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee13_dss/IEEE13Nodeckt.dss +0 -0
  321. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee13_dss/IEEE13Nodeckt_EXP_ElemPowers.CSV +0 -0
  322. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee13_dss/IEEE13Nodeckt_Power.DSV +0 -0
  323. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee13_dss/IEEE13Nodeckt_Power.dbl +0 -0
  324. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee13_dss/IEEE13Nodeckt_Power_elem_kVA.txt +0 -0
  325. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee13_dss/IEEELineCodes.dss +0 -0
  326. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee13_dss/parsedcsvs/IEEE13buscsvs/branch_data.csv +0 -0
  327. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee13_dss/parsedcsvs/IEEE13buscsvs/bus_data.csv +0 -0
  328. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee13_dss/parsedcsvs/IEEE13buscsvs/cap_data.csv +0 -0
  329. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee13_dss/parsedcsvs/IEEE13buscsvs/gen_data.csv +0 -0
  330. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_dss/BalancedLoads.dss +0 -0
  331. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_dss/BusCoords.dss +0 -0
  332. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_dss/CableData.dss +0 -0
  333. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_dss/CapControls.dss +0 -0
  334. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_dss/Capacitors.dss +0 -0
  335. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_dss/DSSViewIntercom.Txt +0 -0
  336. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_dss/EnergyStorage.dss +0 -0
  337. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_dss/Generators.dss +0 -0
  338. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_dss/LatLongCoords.dss +0 -0
  339. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_dss/LineCodes.dss +0 -0
  340. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_dss/LineConstantsCode.DSS +0 -0
  341. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_dss/LineGeometry.dss +0 -0
  342. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_dss/LinesSwitchesGeometry.dss +0 -0
  343. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_dss/LinesSwitchesLineCodes.dss +0 -0
  344. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_dss/LoadXfmrCodes.dss +0 -0
  345. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_dss/Master-bal-initial-config.dss +0 -0
  346. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_dss/Master-unbal-initial-config.dss +0 -0
  347. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_dss/PV_10pen_DSSPV.dss +0 -0
  348. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_dss/PV_NN_100_DSSPV.dss +0 -0
  349. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_dss/README.md +0 -0
  350. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_dss/Regulators.dss +0 -0
  351. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_dss/Test9500new_Elements.Txt +0 -0
  352. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_dss/Test9500new_LineConstants.txt +0 -0
  353. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_dss/Test9500new_Mon_mon1_1.csv +0 -0
  354. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_dss/Test9500new_Power.DSV +0 -0
  355. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_dss/Test9500new_Power.dbl +0 -0
  356. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_dss/Test9500new_Power_elem_kVA.txt +0 -0
  357. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_dss/Transformers.dss +0 -0
  358. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_dss/TriplexLineCodes.dss +0 -0
  359. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_dss/TriplexLines.dss +0 -0
  360. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_dss/UnbalancedLoads.dss +0 -0
  361. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_dss/WireData.dss +0 -0
  362. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_wye/BalancedLoads.dss +0 -0
  363. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_wye/BusCoords.dss +0 -0
  364. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_wye/CableData.dss +0 -0
  365. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_wye/CapControls.dss +0 -0
  366. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_wye/Capacitors.dss +0 -0
  367. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_wye/DSSViewIntercom.Txt +0 -0
  368. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_wye/EnergyStorage.dss +0 -0
  369. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_wye/Generators.dss +0 -0
  370. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_wye/LatLongCoords.dss +0 -0
  371. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_wye/LineCodes.dss +0 -0
  372. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_wye/LineConstantsCode.DSS +0 -0
  373. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_wye/LineGeometry.dss +0 -0
  374. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_wye/LinesSwitchesGeometry.dss +0 -0
  375. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_wye/LinesSwitchesLineCodes.dss +0 -0
  376. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_wye/LoadXfmrCodes.dss +0 -0
  377. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_wye/Master-bal-initial-config.dss +0 -0
  378. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_wye/Master-unbal-initial-config.dss +0 -0
  379. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_wye/PV_10pen_DSSPV.dss +0 -0
  380. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_wye/PV_NN_100_DSSPV.dss +0 -0
  381. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_wye/README.md +0 -0
  382. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_wye/Regulators.dss +0 -0
  383. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_wye/Test9500new_Elements.Txt +0 -0
  384. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_wye/Test9500new_LineConstants.txt +0 -0
  385. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_wye/Test9500new_Mon_mon1_1.csv +0 -0
  386. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_wye/Test9500new_Power.DSV +0 -0
  387. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_wye/Test9500new_Power.dbl +0 -0
  388. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_wye/Test9500new_Power_elem_kVA.txt +0 -0
  389. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_wye/Transformers.dss +0 -0
  390. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_wye/TriplexLineCodes.dss +0 -0
  391. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_wye/TriplexLines.dss +0 -0
  392. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_wye/UnbalancedLoads.dss +0 -0
  393. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/ieee9500_wye/WireData.dss +0 -0
  394. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/minimal_triplex/minimal_triplex.dss +0 -0
  395. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/rahul123/Line.txt +0 -0
  396. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/rahul123/Load.txt +0 -0
  397. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/rahul123/MyLineCodes.txt +0 -0
  398. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/rahul123/ieee123master_base.dss +0 -0
  399. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/opendss/Buscoords.dss +0 -0
  400. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/opendss/Intermediates.txt +0 -0
  401. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/opendss/LineCodes.dss +0 -0
  402. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/opendss/Lines.dss +0 -0
  403. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/opendss/LoadShapes.dss +0 -0
  404. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/opendss/Loads.dss +0 -0
  405. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/opendss/Master.dss +0 -0
  406. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/opendss/PVSystems.dss +0 -0
  407. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/opendss/SMART-DS_version.txt +0 -0
  408. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/opendss/Transformers.dss +0 -0
  409. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/opendss/analysis/Summary_data.csv +0 -0
  410. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/opendss/analysis/blown_fuses.csv +0 -0
  411. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/opendss/analysis/de-energized_nodes.csv +0 -0
  412. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/opendss/analysis/peak_line_overloads.csv +0 -0
  413. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/opendss/analysis/peak_over_voltages.csv +0 -0
  414. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/opendss/analysis/peak_transformer_overloads.csv +0 -0
  415. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/opendss/analysis/peak_under_voltages.csv +0 -0
  416. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/opendss/analysis/peak_voltages.csv +0 -0
  417. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/opendss/analysis/pu_voltages_histogram.png +0 -0
  418. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/opendss/analysis/pu_voltages_percentiles.png +0 -0
  419. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/SFO_37.7452_-122.4074_15_180.csv +0 -0
  420. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/SFO_37.7452_-122.4074_15_225.csv +0 -0
  421. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/SFO_37.7452_-122.4074_25_180.csv +0 -0
  422. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/SFO_37.7452_-122.4074_25_225.csv +0 -0
  423. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/SFO_37.7452_-122.4074_25_90.csv +0 -0
  424. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/SFO_37.7452_-122.4074_35_135.csv +0 -0
  425. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_16017_pu.csv +0 -0
  426. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_17146_pu.csv +0 -0
  427. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_17950_pu.csv +0 -0
  428. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_1835_pu.csv +0 -0
  429. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_19648_pu.csv +0 -0
  430. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_19955_pu.csv +0 -0
  431. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_20964_pu.csv +0 -0
  432. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_22499_pu.csv +0 -0
  433. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_22635_pu.csv +0 -0
  434. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_2581_pu.csv +0 -0
  435. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_29069_pu.csv +0 -0
  436. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_29376_pu.csv +0 -0
  437. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_29596_pu.csv +0 -0
  438. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_31655_pu.csv +0 -0
  439. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_31818_pu.csv +0 -0
  440. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_32244_pu.csv +0 -0
  441. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_33164_pu.csv +0 -0
  442. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_33792_pu.csv +0 -0
  443. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_8445_pu.csv +0 -0
  444. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/com_kvar_8470_pu.csv +0 -0
  445. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/com_kw_16017_pu.csv +0 -0
  446. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/com_kw_17146_pu.csv +0 -0
  447. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/com_kw_17950_pu.csv +0 -0
  448. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/com_kw_1835_pu.csv +0 -0
  449. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/com_kw_19648_pu.csv +0 -0
  450. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/com_kw_19955_pu.csv +0 -0
  451. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/com_kw_20964_pu.csv +0 -0
  452. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/com_kw_22499_pu.csv +0 -0
  453. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/com_kw_22635_pu.csv +0 -0
  454. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/com_kw_2581_pu.csv +0 -0
  455. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/com_kw_29069_pu.csv +0 -0
  456. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/com_kw_29376_pu.csv +0 -0
  457. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/com_kw_29596_pu.csv +0 -0
  458. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/com_kw_31655_pu.csv +0 -0
  459. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/com_kw_31818_pu.csv +0 -0
  460. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/com_kw_32244_pu.csv +0 -0
  461. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/com_kw_33164_pu.csv +0 -0
  462. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/com_kw_33792_pu.csv +0 -0
  463. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/com_kw_8445_pu.csv +0 -0
  464. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/com_kw_8470_pu.csv +0 -0
  465. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_10747_pu.csv +0 -0
  466. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_1077_pu.csv +0 -0
  467. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_13334_pu.csv +0 -0
  468. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_14588_pu.csv +0 -0
  469. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_14705_pu.csv +0 -0
  470. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_3216_pu.csv +0 -0
  471. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_6157_pu.csv +0 -0
  472. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/res_kvar_7380_pu.csv +0 -0
  473. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/res_kw_10747_pu.csv +0 -0
  474. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/res_kw_1077_pu.csv +0 -0
  475. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/res_kw_13334_pu.csv +0 -0
  476. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/res_kw_14588_pu.csv +0 -0
  477. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/res_kw_14705_pu.csv +0 -0
  478. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/res_kw_3216_pu.csv +0 -0
  479. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/res_kw_6157_pu.csv +0 -0
  480. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/profiles/res_kw_7380_pu.csv +0 -0
  481. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/sensors/reactive_ids.json +0 -0
  482. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/sensors/real_ids.json +0 -0
  483. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/smartds_small/sensors/voltage_ids.json +0 -0
  484. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/test_line/main.dss +0 -0
  485. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/test_line_unbal_line/main.dss +0 -0
  486. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/test_line_unbal_load/main.dss +0 -0
  487. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/test_line_unbal_load_unbal_line/main.dss +0 -0
  488. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/test_reg/main.dss +0 -0
  489. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/triplex_3ph/triplex_3ph.dss +0 -0
  490. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cases/dss/triplex_pv/triplex_pv.dss +0 -0
  491. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cim_importer/__init__.py +0 -0
  492. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cim_importer/cim_to_csv_converter.py +0 -0
  493. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cim_importer/processors/__init__.py +0 -0
  494. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cim_importer/processors/base_processor.py +0 -0
  495. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cim_importer/processors/bus_processor.py +0 -0
  496. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cim_importer/processors/capacitor_processor.py +0 -0
  497. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cim_importer/processors/generator_processor.py +0 -0
  498. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cim_importer/processors/line_processor.py +0 -0
  499. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cim_importer/processors/regulator_processor.py +0 -0
  500. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cim_importer/processors/switch_processor.py +0 -0
  501. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cim_importer/processors/transformer_processor.py +0 -0
  502. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cim_importer/utils/__init__.py +0 -0
  503. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cim_importer/utils/phase_utils.py +0 -0
  504. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cim_importer/validators/__init__.py +0 -0
  505. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/cim_importer/validators/topology_validator.py +0 -0
  506. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/dss_importer/__init__.py +0 -0
  507. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/dss_importer/dss_to_csv_converter.py +0 -0
  508. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/fbs.py +0 -0
  509. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/matrix_models/__init__.py +0 -0
  510. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/matrix_models/base.py +0 -0
  511. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/matrix_models/binary_variable_notes.md +0 -0
  512. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/matrix_models/lindist.py +0 -0
  513. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/matrix_models/lindist_capacitor_mi.py +0 -0
  514. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/matrix_models/lindist_capacitor_regulator_mi.py +0 -0
  515. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/matrix_models/lindist_loads.py +0 -0
  516. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/matrix_models/lindist_p_gen.py +0 -0
  517. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/matrix_models/lindist_q_gen.py +0 -0
  518. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/matrix_models/lindist_regulator_mi.py +0 -0
  519. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/matrix_models/matrix_bess/__init__.py +0 -0
  520. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/matrix_models/matrix_bess/base_mp.py +0 -0
  521. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/matrix_models/matrix_bess/lindist_capacitor_mi_mp.py +0 -0
  522. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/matrix_models/matrix_bess/lindist_loads_mp.py +0 -0
  523. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/matrix_models/matrix_bess/lindist_mp.py +0 -0
  524. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/matrix_models/matrix_bess/objectives.py +0 -0
  525. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/matrix_models/matrix_bess/pyomo_solver.py +0 -0
  526. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/matrix_models/matrix_bess/readme.md +0 -0
  527. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/matrix_models/matrix_bess/solvers.py +0 -0
  528. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/matrix_models/matrix_bess/spatial_decomposition/__init__.py +0 -0
  529. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/matrix_models/matrix_bess/spatial_decomposition/decompose.py +0 -0
  530. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/matrix_models/matrix_bess/spatial_decomposition/enapp.py +0 -0
  531. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/matrix_models/objectives.py +0 -0
  532. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/matrix_models/solvers.py +0 -0
  533. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/pyomo_models/constraints.py +0 -0
  534. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/pyomo_models/constraints_nlp.py +0 -0
  535. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/pyomo_models/factories.py +0 -0
  536. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/pyomo_models/nl_branchflow_prebuilt.py +0 -0
  537. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/pyomo_models/protocol.py +0 -0
  538. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/pyomo_models/results.py +0 -0
  539. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/pyomo_models/solvers.py +0 -0
  540. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/results.py +0 -0
  541. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/spatial_decomposition/__init__.py +0 -0
  542. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/spatial_decomposition/decompose.py +0 -0
  543. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/spatial_decomposition/enapp.py +0 -0
  544. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/utils/__init__.py +0 -0
  545. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/utils/call_recorder.py +0 -0
  546. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/utils/input_handlers.py +0 -0
  547. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/utils/kcl_check.py +0 -0
  548. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/utils/ngon.py +0 -0
  549. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/utils/query_interface.py +0 -0
  550. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/utils/results_comparison.py +0 -0
  551. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/validators.py +0 -0
  552. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/wrappers/__init__.py +0 -0
  553. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/wrappers/base.py +0 -0
  554. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/wrappers/matrix_bess_wrapper.py +0 -0
  555. {distopf-1.0.2 → distopf-1.1.0.dev0}/src/distopf/wrappers/matrix_wrapper.py +0 -0
  556. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/__init__.py +0 -0
  557. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/cim_converter/conftest.py +0 -0
  558. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/cim_converter/data/IEEE13.xml +0 -0
  559. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/cim_converter/data/ieee13/branch_data.csv +0 -0
  560. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/cim_converter/data/ieee13/bus_data.csv +0 -0
  561. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/cim_converter/data/ieee13/cap_data.csv +0 -0
  562. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/cim_converter/data/ieee13/gen_data.csv +0 -0
  563. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/cim_converter/data/ieee13/reg_data.csv +0 -0
  564. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/cim_converter/integration/__init__.py +0 -0
  565. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/cim_converter/integration/test_full_conversion.py +0 -0
  566. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/cim_converter/integration/test_impedance_comparison.py +0 -0
  567. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/cim_converter/unit/__init__.py +0 -0
  568. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/cim_converter/unit/test_cim_to_csv_helpser.py +0 -0
  569. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/cim_converter/unit/test_cim_to_csv_linking.py +0 -0
  570. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/cim_converter/unit/test_converter_run.py +0 -0
  571. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/cim_converter/unit/test_phase_utils.py +0 -0
  572. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/cim_converter/unit/test_processors.py +0 -0
  573. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/cim_converter/unit/test_reg_transformer_small.py +0 -0
  574. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/cim_converter/unit/test_regulator_impedances.py +0 -0
  575. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/cim_converter/unit/test_topology_validator.py +0 -0
  576. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/cim_converter/unit/test_transformer_tank_impedances.py +0 -0
  577. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/dss_converter/__init__.py +0 -0
  578. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/dss_converter/integration/__init__.py +0 -0
  579. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/dss_converter/integration/test_dss_converter_integration.py +0 -0
  580. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/dss_converter/integration/test_triplex_lindist.py +0 -0
  581. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/dss_converter/unit/__init__.py +0 -0
  582. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/dss_converter/unit/test_dss_converter.py +0 -0
  583. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/dss_converter/unit/test_transformer.py +0 -0
  584. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/dss_converter/unit/test_triplex_converter.py +0 -0
  585. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/dss_converter/unit/test_triplex_pv.py +0 -0
  586. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/integration_references.json +0 -0
  587. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/pyomo_models/test_dual_extraction.py +0 -0
  588. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/pyomo_models/test_pyomo_lindist.py +0 -0
  589. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/test_backends.py +0 -0
  590. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/test_case.py +0 -0
  591. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/test_exports.py +0 -0
  592. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/test_integration_snapshots.py +0 -0
  593. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/test_matrix_models.py +0 -0
  594. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/test_nlp_backend.py +0 -0
  595. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/test_results.py +0 -0
  596. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/test_smoke.py +0 -0
  597. {distopf-1.0.2 → distopf-1.1.0.dev0}/tests/test_utilities.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: distopf
3
- Version: 1.0.2
3
+ Version: 1.1.0.dev0
4
4
  Summary: A package for solving unbalanced three-phase distribution system optimal power flow problems.
5
5
  Author: Abodh Poudyal
6
6
  Author-email: Nathan Gray <nathan.gray@pnnl.gov>, Rabayet Sadnan <rabayet.sadnan@pnnl.gov>
@@ -179,6 +179,36 @@ result = case.run_opf(wrapper="matrix_bess", objective="loss")
179
179
  #### Solver Requirements
180
180
  - **IPOPT**: Install via `conda install -c conda-forge ipopt`. On Ubuntu, `apt-get install coinor-libipopt-dev` only installs headers and shared libraries; it does not provide the `ipopt` executable that Pyomo's `SolverFactory("ipopt")` expects.
181
181
 
182
+ ### Optimization Objectives
183
+
184
+ DistOPF supports multiple optimization objectives for distribution system OPF:
185
+
186
+ | Objective | String | Supported Wrappers | Description |
187
+ |-----------|--------|-------------------|-------------|
188
+ | **Loss Minimization** | `"loss"`, `"loss_min"` | All | Minimize distribution losses (most common) |
189
+ | **Substation Power** | `"substation"`, `"substation_power"` | Pyomo, Matrix | Minimize power imported from substation |
190
+ | **Voltage Deviation** | `"voltage_deviation"` | Pyomo | Minimize deviations from nominal voltage (1.0 p.u.) |
191
+ | **Generation Curtailment** | `"curtail"`, `"curtail_min"`, `"curtailment"` | Pyomo | Minimize DER curtailment |
192
+ | **Cost Minimization** | `"cost"`, `"cost_min"` | Pyomo (LinDistFlow, BranchFlow) | Minimize energy procurement cost from swing bus |
193
+
194
+ #### Cost Minimization with Price Data
195
+
196
+ To use cost minimization, add an hourly `price` column to the case schedules (in $/MWh):
197
+
198
+ ```python
199
+ import pandas as pd
200
+ import distopf as opf
201
+
202
+ case = opf.create_case(opf.CASES_DIR / "csv" / "ieee123_30der")
203
+
204
+ # Add hourly electricity prices
205
+ case.schedules['price'] = [38, 35, 34, 32, 30, 32, 38, 45, 52, 58, 62, 65,
206
+ 68, 65, 62, 58, 55, 60, 75, 82, 78, 65, 50, 42]
207
+
208
+ # Run OPF minimizing energy cost
209
+ result = case.run_opf(objective="cost")
210
+ print(f"Total energy cost: ${result.objective_value:.2f}")
211
+ ```
182
212
 
183
213
  ### Result Fields
184
214
 
@@ -155,6 +155,36 @@ result = case.run_opf(wrapper="matrix_bess", objective="loss")
155
155
  #### Solver Requirements
156
156
  - **IPOPT**: Install via `conda install -c conda-forge ipopt`. On Ubuntu, `apt-get install coinor-libipopt-dev` only installs headers and shared libraries; it does not provide the `ipopt` executable that Pyomo's `SolverFactory("ipopt")` expects.
157
157
 
158
+ ### Optimization Objectives
159
+
160
+ DistOPF supports multiple optimization objectives for distribution system OPF:
161
+
162
+ | Objective | String | Supported Wrappers | Description |
163
+ |-----------|--------|-------------------|-------------|
164
+ | **Loss Minimization** | `"loss"`, `"loss_min"` | All | Minimize distribution losses (most common) |
165
+ | **Substation Power** | `"substation"`, `"substation_power"` | Pyomo, Matrix | Minimize power imported from substation |
166
+ | **Voltage Deviation** | `"voltage_deviation"` | Pyomo | Minimize deviations from nominal voltage (1.0 p.u.) |
167
+ | **Generation Curtailment** | `"curtail"`, `"curtail_min"`, `"curtailment"` | Pyomo | Minimize DER curtailment |
168
+ | **Cost Minimization** | `"cost"`, `"cost_min"` | Pyomo (LinDistFlow, BranchFlow) | Minimize energy procurement cost from swing bus |
169
+
170
+ #### Cost Minimization with Price Data
171
+
172
+ To use cost minimization, add an hourly `price` column to the case schedules (in $/MWh):
173
+
174
+ ```python
175
+ import pandas as pd
176
+ import distopf as opf
177
+
178
+ case = opf.create_case(opf.CASES_DIR / "csv" / "ieee123_30der")
179
+
180
+ # Add hourly electricity prices
181
+ case.schedules['price'] = [38, 35, 34, 32, 30, 32, 38, 45, 52, 58, 62, 65,
182
+ 68, 65, 62, 58, 55, 60, 75, 82, 78, 65, 50, 42]
183
+
184
+ # Run OPF minimizing energy cost
185
+ result = case.run_opf(objective="cost")
186
+ print(f"Total energy cost: ${result.objective_value:.2f}")
187
+ ```
158
188
 
159
189
  ### Result Fields
160
190
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "distopf"
3
- version = "1.0.2"
3
+ version = "1.1.0.dev0"
4
4
  description = "A package for solving unbalanced three-phase distribution system optimal power flow problems."
5
5
  readme = "README.md"
6
6
  authors = [
@@ -179,12 +179,22 @@ def voltage_differences(v1: pd.DataFrame, v2: pd.DataFrame, t=None) -> go.Figure
179
179
  return fig
180
180
 
181
181
 
182
- def plot_power_flows(s: pd.DataFrame, t=None) -> go.Figure:
182
+ def plot_power_flows(
183
+ p: pd.DataFrame,
184
+ q: pd.DataFrame,
185
+ t: int = None,
186
+ ) -> go.Figure:
183
187
  """
184
188
  Plot the active and reactive power flowing into each bus on each phase.
189
+
185
190
  Parameters
186
191
  ----------
187
- s : pd.DataFrame
192
+ p : pd.DataFrame
193
+ Active power flows with columns ``fb``, ``tb``, ``from_name``,
194
+ ``to_name``, optionally ``t``, and phase columns ``a``, ``b``, ``c``
195
+ (and optionally ``s1``, ``s2`` for triplex lines) containing real floats.
196
+ q : pd.DataFrame
197
+ Reactive power flows with the same structure as ``p``.
188
198
  t : int or None
189
199
  Time step to plot. Defaults to 0 when a ``t`` column is present.
190
200
 
@@ -192,39 +202,95 @@ def plot_power_flows(s: pd.DataFrame, t=None) -> go.Figure:
192
202
  -------
193
203
  fig : Plotly figure object
194
204
  """
195
- s = _choose_t(s, t)
196
- s = s.melt(
197
- ignore_index=True,
198
- id_vars=["fb", "tb", "from_name", "to_name"],
199
- var_name="phase",
200
- value_name="s",
205
+ p = _choose_t(p, t)
206
+ q = _choose_t(q, t)
207
+
208
+ id_vars = ["fb", "tb", "from_name", "to_name"]
209
+ phase_cols = [c for c in ["a", "b", "c", "s1", "s2"] if c in p.columns]
210
+
211
+ p_long = p[id_vars + phase_cols].melt(
212
+ id_vars=id_vars, var_name="phase", value_name="power"
201
213
  )
202
- s["p"] = s.s.apply(lambda x: x.real)
203
- s["q"] = s.s.apply(lambda x: x.imag)
204
- del s["s"]
205
- s = s.melt(
206
- ignore_index=True,
207
- id_vars=["fb", "tb", "from_name", "to_name", "phase"],
208
- var_name="part",
209
- value_name="power",
214
+ p_long["part"] = "p"
215
+
216
+ q_long = q[id_vars + phase_cols].melt(
217
+ id_vars=id_vars, var_name="phase", value_name="power"
210
218
  )
219
+ q_long["part"] = "q"
220
+
221
+ df = pd.concat([p_long, q_long], ignore_index=True)
222
+
211
223
  fig = px.bar(
212
- s,
224
+ df,
213
225
  x="to_name",
214
226
  y="power",
215
227
  facet_col="phase",
216
228
  facet_row="part",
217
229
  color="phase",
230
+ category_orders={"phase": phase_cols, "part": ["q", "p"]},
218
231
  labels={"to_name": "To-Bus Name"},
219
232
  )
220
233
  fig.for_each_annotation(lambda a: a.update(text=a.text.split("=")[-1].upper()))
221
- fig.update_layout(
222
- yaxis4_title="Active Power (p.u.)",
223
- yaxis_title="Reactive Power (p.u.)",
224
- )
234
+
235
+ # In plotly, facet_row places the first category on the BOTTOM row.
236
+ # With category_orders={"part": ["q", "p"]}, bottom row = q, top row = p.
237
+ # yaxis1..N correspond to the bottom row (q); yaxis(N+1)..2N to top row (p).
238
+ n_phases = len(phase_cols)
239
+ p_first_axis = n_phases + 1 # first p-row yaxis index
240
+ layout_updates = {
241
+ "yaxis_title": "Reactive Power (p.u.)",
242
+ f"yaxis{p_first_axis}_title": "Active Power (p.u.)",
243
+ }
244
+ fig.update_layout(**layout_updates)
225
245
  return fig
226
246
 
227
247
 
248
+ # def plot_power_flows(s: pd.DataFrame, t=None) -> go.Figure:
249
+ # """
250
+ # Plot the active and reactive power flowing into each bus on each phase.
251
+ # Parameters
252
+ # ----------
253
+ # s : pd.DataFrame
254
+ # t : int or None
255
+ # Time step to plot. Defaults to 0 when a ``t`` column is present.
256
+
257
+ # Returns
258
+ # -------
259
+ # fig : Plotly figure object
260
+ # """
261
+ # s = _choose_t(s, t)
262
+ # s = s.melt(
263
+ # ignore_index=True,
264
+ # id_vars=["fb", "tb", "from_name", "to_name"],
265
+ # var_name="phase",
266
+ # value_name="s",
267
+ # )
268
+ # s["p"] = s.s.apply(lambda x: x.real)
269
+ # s["q"] = s.s.apply(lambda x: x.imag)
270
+ # del s["s"]
271
+ # s = s.melt(
272
+ # ignore_index=True,
273
+ # id_vars=["fb", "tb", "from_name", "to_name", "phase"],
274
+ # var_name="part",
275
+ # value_name="power",
276
+ # )
277
+ # fig = px.bar(
278
+ # s,
279
+ # x="to_name",
280
+ # y="power",
281
+ # facet_col="phase",
282
+ # facet_row="part",
283
+ # color="phase",
284
+ # labels={"to_name": "To-Bus Name"},
285
+ # )
286
+ # fig.for_each_annotation(lambda a: a.update(text=a.text.split("=")[-1].upper()))
287
+ # fig.update_layout(
288
+ # yaxis4_title="Active Power (p.u.)",
289
+ # yaxis_title="Reactive Power (p.u.)",
290
+ # )
291
+ # return fig
292
+
293
+
228
294
  def plot_gens(p_gens: pd.DataFrame, q_gens: pd.DataFrame, t=None) -> go.Figure:
229
295
  """
230
296
  Plot the active and reactive power flowing into each bus on each phase.
@@ -716,7 +782,9 @@ def plot_voltage_vs_distance(
716
782
  )
717
783
 
718
784
  for col_idx in range(1, len(phases) + 1):
719
- fig.update_xaxes(title_text="Distance from Source Bus (hops)", row=1, col=col_idx)
785
+ fig.update_xaxes(
786
+ title_text="Distance from Source Bus (hops)", row=1, col=col_idx
787
+ )
720
788
  fig.update_yaxes(title_text="Voltage (pu)", row=1, col=1)
721
789
  fig.update_layout(title_text=title, hovermode="closest")
722
790
 
@@ -906,7 +974,9 @@ def plot_line_flow_vs_distance(
906
974
  )
907
975
 
908
976
  for col_idx in range(1, len(phases) + 1):
909
- fig.update_xaxes(title_text="Distance from Source Bus (hops)", row=1, col=col_idx)
977
+ fig.update_xaxes(
978
+ title_text="Distance from Source Bus (hops)", row=1, col=col_idx
979
+ )
910
980
  fig.update_yaxes(
911
981
  title_text=f"{flow_name} (kW)" if "Power" in flow_name else f"{flow_name}",
912
982
  row=1,
@@ -1082,8 +1152,13 @@ def _process_branch_data(branch_data, bus_data, _s, phase_list, edge_scale, edge
1082
1152
  branch_data["s_a"] = _s.a
1083
1153
  branch_data["s_b"] = _s.b
1084
1154
  branch_data["s_c"] = _s.c
1085
- branch_data["p_abs"] = np.abs(np.real(_s.loc[:, phase_list].sum(axis=1)))
1086
- branch_data["q_abs"] = np.abs(np.imag(_s.loc[:, phase_list].sum(axis=1)))
1155
+ p_complex = _s.loc[:, phase_list].sum(axis=1)
1156
+ # branch_data["p_abs"] = np.abs(np.real(_s.loc[:, phase_list].sum(axis=1)))
1157
+ # branch_data["q_abs"] = np.abs(np.imag(_s.loc[:, phase_list].sum(axis=1)))
1158
+ branch_data["p_abs"] = p_complex.map(lambda z: abs(z.real))
1159
+ branch_data["q_abs"] = p_complex.map(lambda z: abs(z.imag))
1160
+ branch_data["p_direction"] = p_complex.map(lambda z: np.sign(z.real + 1e-6))
1161
+ branch_data["q_direction"] = p_complex.map(lambda z: np.sign(z.imag + 1e-6))
1087
1162
  branch_data["p_norm"] = (
1088
1163
  branch_data["p_abs"].to_numpy() / branch_data["p_abs"].max() * edge_scale
1089
1164
  + edge_min
@@ -1092,12 +1167,12 @@ def _process_branch_data(branch_data, bus_data, _s, phase_list, edge_scale, edge
1092
1167
  branch_data["q_abs"].to_numpy() / branch_data["q_abs"].max() * edge_scale
1093
1168
  + edge_min
1094
1169
  )
1095
- branch_data["p_direction"] = np.sign(
1096
- np.real(_s.loc[:, phase_list].sum(axis=1)) + 1e-6
1097
- )
1098
- branch_data["q_direction"] = np.sign(
1099
- np.imag(_s.loc[:, phase_list].sum(axis=1)) + 1e-6
1100
- )
1170
+ # branch_data["p_direction"] = np.sign(
1171
+ # np.real(_s.loc[:, phase_list].sum(axis=1)) + 1e-6
1172
+ # )
1173
+ # branch_data["q_direction"] = np.sign(
1174
+ # np.imag(_s.loc[:, phase_list].sum(axis=1)) + 1e-6
1175
+ # )
1101
1176
  return branch_data
1102
1177
 
1103
1178
 
@@ -74,6 +74,7 @@ from distopf.pyomo_models.objectives import (
74
74
  loss_objective_rule,
75
75
  create_penalized_objective,
76
76
  set_objective,
77
+ cost_minimization_rule,
77
78
  )
78
79
 
79
80
  # Solver
@@ -121,6 +122,7 @@ __all__ = [
121
122
  "loss_objective_rule",
122
123
  "create_penalized_objective",
123
124
  "set_objective",
125
+ "cost_minimization_rule",
124
126
  # Solver
125
127
  "solve",
126
128
  ]
@@ -559,6 +559,21 @@ def _create_branch_thermal_parameters(m: pyo.ConcreteModel, case: Case) -> None:
559
559
  )
560
560
 
561
561
 
562
+ def _create_price_parameters(m: pyo.ConcreteModel, case: Case) -> None:
563
+ """Create electricity price parameters from schedules."""
564
+ price_data = {}
565
+ if "price" in case.schedules.columns:
566
+ for t in m.time_set:
567
+ price_data[t] = case.schedules.at[t, "price"]
568
+
569
+ m.price = pyo.Param(
570
+ m.time_set,
571
+ initialize=price_data,
572
+ default=0.0,
573
+ doc="Hourly electricity price ($/MWh)",
574
+ )
575
+
576
+
562
577
  def _create_parameters(m: pyo.ConcreteModel, case: Case) -> None:
563
578
  """
564
579
  Create all parameters for the Pyomo model including impedances, loads,
@@ -573,7 +588,7 @@ def _create_parameters(m: pyo.ConcreteModel, case: Case) -> None:
573
588
  _create_v_limit_parameters(m, case)
574
589
  _create_battery_parameters(m, case)
575
590
  _create_branch_thermal_parameters(m, case)
576
-
591
+ _create_price_parameters(m, case)
577
592
 
578
593
  def create_lindist_model(
579
594
  case: Case,
@@ -37,7 +37,7 @@ def _parse_phases(phases_str: str) -> list[str]:
37
37
  >>> _parse_phases("s1")
38
38
  ['s1']
39
39
  """
40
- return re.findall(r'[A-Za-z]\d|.', phases_str)
40
+ return re.findall(r"[A-Za-z]\d|.", phases_str)
41
41
 
42
42
 
43
43
  def _create_phase_tuples(df: pd.DataFrame, id_col: str = "id") -> list[tuple[int, str]]:
@@ -85,7 +85,9 @@ def _create_sets(m: pyo.ConcreteModel, case: Case) -> None:
85
85
  m.branch_phase_pair_set = pyo.Set(
86
86
  initialize=[
87
87
  (int(fb), int(tb), ph1 + ph2)
88
- for fb, tb, phs in case.branch_data.loc[:, ["fb", "tb", "phases"]].to_numpy()
88
+ for fb, tb, phs in case.branch_data.loc[
89
+ :, ["fb", "tb", "phases"]
90
+ ].to_numpy()
89
91
  for ph1, ph2 in combinations_with_replacement(sorted(_parse_phases(phs)), 2)
90
92
  ]
91
93
  )
@@ -101,7 +103,9 @@ def _create_sets(m: pyo.ConcreteModel, case: Case) -> None:
101
103
  m.branch_angle_phase_pair_set = pyo.Set(
102
104
  initialize=[
103
105
  (int(fb), int(tb), ph1 + ph2)
104
- for fb, tb, phs in case.branch_data.loc[:, ["fb", "tb", "phases"]].to_numpy()
106
+ for fb, tb, phs in case.branch_data.loc[
107
+ :, ["fb", "tb", "phases"]
108
+ ].to_numpy()
105
109
  for ph1, ph2 in product(_parse_phases(phs), repeat=2)
106
110
  if tb not in m.swing_bus_set
107
111
  ]
@@ -579,7 +583,24 @@ def _create_branch_thermal_parameters(m: pyo.ConcreteModel, case: Case) -> None:
579
583
 
580
584
 
581
585
  def _create_angle_parameters(m: pyo.ConcreteModel, case: Case) -> None:
582
- m.d = pyo.Param(m.branch_angle_phase_pair_set, initialize=0, mutable=True, domain=pyo.Any)
586
+ m.d = pyo.Param(
587
+ m.branch_angle_phase_pair_set, initialize=0, mutable=True, domain=pyo.Any
588
+ )
589
+
590
+
591
+ def _create_price_parameters(m: pyo.ConcreteModel, case: Case) -> None:
592
+ """Create electricity price parameters from schedules."""
593
+ price_data = {}
594
+ if "price" in case.schedules.columns:
595
+ for t in m.time_set:
596
+ price_data[t] = case.schedules.at[t, "price"]
597
+
598
+ m.price = pyo.Param(
599
+ m.time_set,
600
+ initialize=price_data,
601
+ default=0.0,
602
+ doc="Hourly electricity price ($/MWh)",
603
+ )
583
604
 
584
605
 
585
606
  def _create_parameters(m: pyo.ConcreteModel, case: Case) -> None:
@@ -597,6 +618,7 @@ def _create_parameters(m: pyo.ConcreteModel, case: Case) -> None:
597
618
  _create_battery_parameters(m, case)
598
619
  _create_branch_thermal_parameters(m, case)
599
620
  _create_angle_parameters(m, case)
621
+ _create_price_parameters(m, case)
600
622
 
601
623
 
602
624
  def create_nl_branchflow_model(
@@ -108,6 +108,16 @@ def generation_curtailment_objective_rule(model: LindistModelProtocol):
108
108
  return total_curtailment
109
109
 
110
110
 
111
+ def cost_minimization_rule(m):
112
+ """Minimize energy procurement cost from swing bus."""
113
+ total_cost = 0
114
+ for fb, tb, ph in m.branch_phase_set:
115
+ for t in m.time_set:
116
+ if fb in m.swing_bus_set:
117
+ total_cost += m.p_flow[fb, tb, ph, t] * m.price[t] * m.delta_t
118
+ return total_cost
119
+
120
+
111
121
  # ============ Penalty Functions for Soft Constraints ==================================
112
122
  # ======================================================================================
113
123
  #
@@ -396,6 +396,7 @@ class PyomoWrapper(Wrapper):
396
396
  substation_power_objective_rule,
397
397
  voltage_deviation_objective_rule,
398
398
  generation_curtailment_objective_rule,
399
+ cost_minimization_rule,
399
400
  )
400
401
 
401
402
  if objective is None:
@@ -415,6 +416,8 @@ class PyomoWrapper(Wrapper):
415
416
  "curtail": generation_curtailment_objective_rule,
416
417
  "curtail_min": generation_curtailment_objective_rule,
417
418
  "curtailment": generation_curtailment_objective_rule,
419
+ "cost": cost_minimization_rule,
420
+ "cost_min": cost_minimization_rule,
418
421
  }
419
422
 
420
423
  if obj_lower in objective_map:
@@ -420,7 +420,7 @@ resolution-markers = [
420
420
  "python_full_version < '3.11'",
421
421
  ]
422
422
  dependencies = [
423
- { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
423
+ { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" } },
424
424
  ]
425
425
  sdist = { url = "https://files.pythonhosted.org/packages/66/54/eb9bfc647b19f2009dd5c7f5ec51c4e6ca831725f1aea7a993034f483147/contourpy-1.3.2.tar.gz", hash = "sha256:b6945942715a034c671b7fc54f9588126b0b8bf23db2696e3ca8328f3ff0ab54", size = 13466130, upload-time = "2025-04-15T17:47:53.79Z" }
426
426
  wheels = [
@@ -492,7 +492,7 @@ resolution-markers = [
492
492
  "python_full_version == '3.11.*'",
493
493
  ]
494
494
  dependencies = [
495
- { name = "numpy", version = "2.3.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" },
495
+ { name = "numpy", version = "2.3.3", source = { registry = "https://pypi.org/simple" } },
496
496
  ]
497
497
  sdist = { url = "https://files.pythonhosted.org/packages/58/01/1253e6698a07380cd31a736d248a3f2a50a7c88779a1813da27503cadc2a/contourpy-1.3.3.tar.gz", hash = "sha256:083e12155b210502d0bca491432bb04d56dc3432f95a979b429f2848c3dbe880", size = 13466174, upload-time = "2025-07-26T12:03:12.549Z" }
498
498
  wheels = [
@@ -763,7 +763,7 @@ wheels = [
763
763
 
764
764
  [[package]]
765
765
  name = "distopf"
766
- version = "1.0.2"
766
+ version = "1.1.0.dev0"
767
767
  source = { editable = "." }
768
768
  dependencies = [
769
769
  { name = "altdss", extra = ["all"] },
@@ -919,7 +919,7 @@ name = "exceptiongroup"
919
919
  version = "1.3.0"
920
920
  source = { registry = "https://pypi.org/simple" }
921
921
  dependencies = [
922
- { name = "typing-extensions", marker = "python_full_version < '3.11'" },
922
+ { name = "typing-extensions" },
923
923
  ]
924
924
  sdist = { url = "https://files.pythonhosted.org/packages/0b/9f/a65090624ecf468cdca03533906e7c69ed7588582240cfe7cc9e770b50eb/exceptiongroup-1.3.0.tar.gz", hash = "sha256:b241f5885f560bc56a59ee63ca4c6a8bfa46ae4ad651af316d4e81817bb9fd88", size = 29749, upload-time = "2025-05-10T17:42:51.123Z" }
925
925
  wheels = [
@@ -1233,17 +1233,17 @@ resolution-markers = [
1233
1233
  "python_full_version < '3.11'",
1234
1234
  ]
1235
1235
  dependencies = [
1236
- { name = "colorama", marker = "python_full_version < '3.11' and sys_platform == 'win32'" },
1237
- { name = "decorator", marker = "python_full_version < '3.11'" },
1238
- { name = "exceptiongroup", marker = "python_full_version < '3.11'" },
1239
- { name = "jedi", marker = "python_full_version < '3.11'" },
1240
- { name = "matplotlib-inline", marker = "python_full_version < '3.11'" },
1241
- { name = "pexpect", marker = "python_full_version < '3.11' and sys_platform != 'emscripten' and sys_platform != 'win32'" },
1242
- { name = "prompt-toolkit", marker = "python_full_version < '3.11'" },
1243
- { name = "pygments", marker = "python_full_version < '3.11'" },
1244
- { name = "stack-data", marker = "python_full_version < '3.11'" },
1245
- { name = "traitlets", marker = "python_full_version < '3.11'" },
1246
- { name = "typing-extensions", marker = "python_full_version < '3.11'" },
1236
+ { name = "colorama", marker = "sys_platform == 'win32'" },
1237
+ { name = "decorator" },
1238
+ { name = "exceptiongroup" },
1239
+ { name = "jedi" },
1240
+ { name = "matplotlib-inline" },
1241
+ { name = "pexpect", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" },
1242
+ { name = "prompt-toolkit" },
1243
+ { name = "pygments" },
1244
+ { name = "stack-data" },
1245
+ { name = "traitlets" },
1246
+ { name = "typing-extensions" },
1247
1247
  ]
1248
1248
  sdist = { url = "https://files.pythonhosted.org/packages/85/31/10ac88f3357fc276dc8a64e8880c82e80e7459326ae1d0a211b40abf6665/ipython-8.37.0.tar.gz", hash = "sha256:ca815841e1a41a1e6b73a0b08f3038af9b2252564d01fc405356d34033012216", size = 5606088, upload-time = "2025-05-31T16:39:09.613Z" }
1249
1249
  wheels = [
@@ -1260,17 +1260,17 @@ resolution-markers = [
1260
1260
  "python_full_version == '3.11.*'",
1261
1261
  ]
1262
1262
  dependencies = [
1263
- { name = "colorama", marker = "python_full_version >= '3.11' and sys_platform == 'win32'" },
1264
- { name = "decorator", marker = "python_full_version >= '3.11'" },
1265
- { name = "ipython-pygments-lexers", marker = "python_full_version >= '3.11'" },
1266
- { name = "jedi", marker = "python_full_version >= '3.11'" },
1267
- { name = "matplotlib-inline", marker = "python_full_version >= '3.11'" },
1268
- { name = "pexpect", marker = "python_full_version >= '3.11' and sys_platform != 'emscripten' and sys_platform != 'win32'" },
1269
- { name = "prompt-toolkit", marker = "python_full_version >= '3.11'" },
1270
- { name = "pygments", marker = "python_full_version >= '3.11'" },
1271
- { name = "stack-data", marker = "python_full_version >= '3.11'" },
1272
- { name = "traitlets", marker = "python_full_version >= '3.11'" },
1273
- { name = "typing-extensions", marker = "python_full_version == '3.11.*'" },
1263
+ { name = "colorama", marker = "sys_platform == 'win32'" },
1264
+ { name = "decorator" },
1265
+ { name = "ipython-pygments-lexers" },
1266
+ { name = "jedi" },
1267
+ { name = "matplotlib-inline" },
1268
+ { name = "pexpect", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" },
1269
+ { name = "prompt-toolkit" },
1270
+ { name = "pygments" },
1271
+ { name = "stack-data" },
1272
+ { name = "traitlets" },
1273
+ { name = "typing-extensions", marker = "python_full_version < '3.12'" },
1274
1274
  ]
1275
1275
  sdist = { url = "https://files.pythonhosted.org/packages/6e/71/a86262bf5a68bf211bcc71fe302af7e05f18a2852fdc610a854d20d085e6/ipython-9.5.0.tar.gz", hash = "sha256:129c44b941fe6d9b82d36fc7a7c18127ddb1d6f02f78f867f402e2e3adde3113", size = 4389137, upload-time = "2025-08-29T12:15:21.519Z" }
1276
1276
  wheels = [
@@ -1282,7 +1282,7 @@ name = "ipython-pygments-lexers"
1282
1282
  version = "1.1.1"
1283
1283
  source = { registry = "https://pypi.org/simple" }
1284
1284
  dependencies = [
1285
- { name = "pygments", marker = "python_full_version >= '3.11'" },
1285
+ { name = "pygments" },
1286
1286
  ]
1287
1287
  sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393, upload-time = "2025-01-17T11:24:34.505Z" }
1288
1288
  wheels = [
@@ -2441,7 +2441,7 @@ name = "numpy-typing-compat"
2441
2441
  version = "20250818.2.3"
2442
2442
  source = { registry = "https://pypi.org/simple" }
2443
2443
  dependencies = [
2444
- { name = "numpy", version = "2.3.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" },
2444
+ { name = "numpy", version = "2.3.3", source = { registry = "https://pypi.org/simple" } },
2445
2445
  ]
2446
2446
  sdist = { url = "https://files.pythonhosted.org/packages/c9/e3/1a29f174c1e09a2bf111d37a41afceea1b501371abb39e73170ca31a7599/numpy_typing_compat-20250818.2.3.tar.gz", hash = "sha256:72e83d535b635d668ba7315e43ae80be1469a6faea6fc96d312516f39b3d8fa5", size = 4974, upload-time = "2025-08-18T23:46:42.968Z" }
2447
2447
  wheels = [
@@ -2479,7 +2479,7 @@ resolution-markers = [
2479
2479
  "python_full_version < '3.11'",
2480
2480
  ]
2481
2481
  dependencies = [
2482
- { name = "typing-extensions", marker = "python_full_version < '3.11'" },
2482
+ { name = "typing-extensions" },
2483
2483
  ]
2484
2484
  sdist = { url = "https://files.pythonhosted.org/packages/88/3c/9d59b0167458b839273ad0c4fc5f62f787058d8f5aed7f71294963a99471/optype-0.9.3.tar.gz", hash = "sha256:5f09d74127d316053b26971ce441a4df01f3a01943601d3712dd6f34cdfbaf48", size = 96143, upload-time = "2025-03-31T17:00:08.392Z" }
2485
2485
  wheels = [
@@ -2496,7 +2496,7 @@ resolution-markers = [
2496
2496
  "python_full_version == '3.11.*'",
2497
2497
  ]
2498
2498
  dependencies = [
2499
- { name = "typing-extensions", marker = "python_full_version >= '3.11' and python_full_version < '3.13'" },
2499
+ { name = "typing-extensions", marker = "python_full_version < '3.13'" },
2500
2500
  ]
2501
2501
  sdist = { url = "https://files.pythonhosted.org/packages/20/7f/daa32a35b2a6a564a79723da49c0ddc464c462e67a906fc2b66a0d64f28e/optype-0.13.4.tar.gz", hash = "sha256:131d8e0f1c12d8095d553e26b54598597133830983233a6a2208886e7a388432", size = 99547, upload-time = "2025-08-19T19:52:44.242Z" }
2502
2502
  wheels = [
@@ -2505,8 +2505,8 @@ wheels = [
2505
2505
 
2506
2506
  [package.optional-dependencies]
2507
2507
  numpy = [
2508
- { name = "numpy", version = "2.3.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" },
2509
- { name = "numpy-typing-compat", marker = "python_full_version >= '3.11'" },
2508
+ { name = "numpy", version = "2.3.3", source = { registry = "https://pypi.org/simple" } },
2509
+ { name = "numpy-typing-compat" },
2510
2510
  ]
2511
2511
 
2512
2512
  [[package]]
@@ -3498,7 +3498,7 @@ resolution-markers = [
3498
3498
  "python_full_version < '3.11'",
3499
3499
  ]
3500
3500
  dependencies = [
3501
- { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
3501
+ { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" } },
3502
3502
  ]
3503
3503
  sdist = { url = "https://files.pythonhosted.org/packages/0f/37/6964b830433e654ec7485e45a00fc9a27cf868d622838f6b6d9c5ec0d532/scipy-1.15.3.tar.gz", hash = "sha256:eae3cf522bc7df64b42cad3925c876e1b0b6c35c1337c93e12c0f366f55b0eaf", size = 59419214, upload-time = "2025-05-08T16:13:05.955Z" }
3504
3504
  wheels = [
@@ -3559,7 +3559,7 @@ resolution-markers = [
3559
3559
  "python_full_version == '3.11.*'",
3560
3560
  ]
3561
3561
  dependencies = [
3562
- { name = "numpy", version = "2.3.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" },
3562
+ { name = "numpy", version = "2.3.3", source = { registry = "https://pypi.org/simple" } },
3563
3563
  ]
3564
3564
  sdist = { url = "https://files.pythonhosted.org/packages/f5/4a/b927028464795439faec8eaf0b03b011005c487bb2d07409f28bf30879c4/scipy-1.16.1.tar.gz", hash = "sha256:44c76f9e8b6e8e488a586190ab38016e4ed2f8a038af7cd3defa903c0a2238b3", size = 30580861, upload-time = "2025-07-27T16:33:30.834Z" }
3565
3565
  wheels = [
@@ -3627,7 +3627,7 @@ resolution-markers = [
3627
3627
  "python_full_version < '3.11'",
3628
3628
  ]
3629
3629
  dependencies = [
3630
- { name = "optype", version = "0.9.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
3630
+ { name = "optype", version = "0.9.3", source = { registry = "https://pypi.org/simple" } },
3631
3631
  ]
3632
3632
  sdist = { url = "https://files.pythonhosted.org/packages/0b/5f/35c43bd7d412add4adcd68475702571b2489b50c40b6564f808b2355e452/scipy_stubs-1.15.3.0.tar.gz", hash = "sha256:e8f76c9887461cf9424c1e2ad78ea5dac71dd4cbb383dc85f91adfe8f74d1e17", size = 275699, upload-time = "2025-05-08T16:58:35.139Z" }
3633
3633
  wheels = [
@@ -3644,7 +3644,7 @@ resolution-markers = [
3644
3644
  "python_full_version == '3.11.*'",
3645
3645
  ]
3646
3646
  dependencies = [
3647
- { name = "optype", version = "0.13.4", source = { registry = "https://pypi.org/simple" }, extra = ["numpy"], marker = "python_full_version >= '3.11'" },
3647
+ { name = "optype", version = "0.13.4", source = { registry = "https://pypi.org/simple" }, extra = ["numpy"] },
3648
3648
  ]
3649
3649
  sdist = { url = "https://files.pythonhosted.org/packages/ab/7e/978c7cad40405cb927d065c31bfaefbc09b4f6cf1ce97e4af6625b1935ab/scipy_stubs-1.16.1.1.tar.gz", hash = "sha256:5b36fdcc1a66cc530c08917fa7c7499ec7a607487735419c677742dcf25803fb", size = 347578, upload-time = "2025-08-21T00:57:31.306Z" }
3650
3650
  wheels = [
File without changes
File without changes
File without changes
File without changes