matpowercaseframes 2.0.1__tar.gz → 2.0.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 (27) hide show
  1. {matpowercaseframes-2.0.1 → matpowercaseframes-2.0.2}/PKG-INFO +9 -8
  2. {matpowercaseframes-2.0.1 → matpowercaseframes-2.0.2}/README.md +3 -2
  3. matpowercaseframes-2.0.2/matpowercaseframes/__init__.py +15 -0
  4. {matpowercaseframes-2.0.1 → matpowercaseframes-2.0.2}/matpowercaseframes/constants.py +51 -0
  5. matpowercaseframes-2.0.2/matpowercaseframes/core.py +1567 -0
  6. matpowercaseframes-2.0.2/matpowercaseframes/testing.py +88 -0
  7. matpowercaseframes-2.0.2/matpowercaseframes/utils.py +27 -0
  8. matpowercaseframes-2.0.2/matpowercaseframes/version.py +1 -0
  9. {matpowercaseframes-2.0.1 → matpowercaseframes-2.0.2}/matpowercaseframes.egg-info/PKG-INFO +9 -8
  10. {matpowercaseframes-2.0.1 → matpowercaseframes-2.0.2}/matpowercaseframes.egg-info/SOURCES.txt +1 -0
  11. {matpowercaseframes-2.0.1 → matpowercaseframes-2.0.2}/matpowercaseframes.egg-info/requires.txt +5 -5
  12. {matpowercaseframes-2.0.1 → matpowercaseframes-2.0.2}/pyproject.toml +5 -5
  13. {matpowercaseframes-2.0.1 → matpowercaseframes-2.0.2}/tests/test_core.py +9 -3
  14. matpowercaseframes-2.0.2/tests/test_read_matpower_cases.py +280 -0
  15. matpowercaseframes-2.0.2/tests/test_run_matpower_cases.py +46 -0
  16. matpowercaseframes-2.0.1/matpowercaseframes/__init__.py +0 -2
  17. matpowercaseframes-2.0.1/matpowercaseframes/core.py +0 -808
  18. matpowercaseframes-2.0.1/matpowercaseframes/utils.py +0 -11
  19. matpowercaseframes-2.0.1/matpowercaseframes/version.py +0 -1
  20. matpowercaseframes-2.0.1/tests/test_read_matpower_cases.py +0 -118
  21. matpowercaseframes-2.0.1/tests/test_run_matpower_cases.py +0 -16
  22. {matpowercaseframes-2.0.1 → matpowercaseframes-2.0.2}/LICENSE.rst +0 -0
  23. {matpowercaseframes-2.0.1 → matpowercaseframes-2.0.2}/matpowercaseframes/reader.py +0 -0
  24. {matpowercaseframes-2.0.1 → matpowercaseframes-2.0.2}/matpowercaseframes.egg-info/dependency_links.txt +0 -0
  25. {matpowercaseframes-2.0.1 → matpowercaseframes-2.0.2}/matpowercaseframes.egg-info/top_level.txt +0 -0
  26. {matpowercaseframes-2.0.1 → matpowercaseframes-2.0.2}/setup.cfg +0 -0
  27. {matpowercaseframes-2.0.1 → matpowercaseframes-2.0.2}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: matpowercaseframes
3
- Version: 2.0.1
3
+ Version: 2.0.2
4
4
  Summary: Parse MATPOWER case into pandas DataFrame.
5
5
  Author-email: Muhammad Yasirroni <muhammadyasirroni@gmail.com>
6
6
  Maintainer-email: Muhammad Yasirroni <muhammadyasirroni@gmail.com>
@@ -35,11 +35,11 @@ Requires-Dist: numpy>=1.21.5; extra == "dev"
35
35
  Requires-Dist: oct2py>=5.5.1; extra == "dev"
36
36
  Requires-Dist: openpyxl>=3.1.2; extra == "dev"
37
37
  Requires-Dist: pandas>=1.2.0; extra == "dev"
38
- Requires-Dist: pre-commit>=2.21.0; extra == "dev"
39
- Requires-Dist: pytest>=7.2.0; extra == "dev"
40
- Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
41
- Requires-Dist: pytest-xdist>=3.1.0; extra == "dev"
42
- Requires-Dist: ruff>=0.6.4; extra == "dev"
38
+ Requires-Dist: pre-commit>=3.8.0; extra == "dev"
39
+ Requires-Dist: pytest>=9.0.2; extra == "dev"
40
+ Requires-Dist: pytest-cov>=7.0.0; extra == "dev"
41
+ Requires-Dist: pytest-xdist>=3.8.0; extra == "dev"
42
+ Requires-Dist: ruff>=0.14.10; extra == "dev"
43
43
  Dynamic: license-file
44
44
 
45
45
  # MATPOWER Case Frames
@@ -128,6 +128,7 @@ m.exit()
128
128
  Furthermore, `matpowercaseframes` also support generating data that is acceptable by `matpower` via `matpower-pip` package (requires `matlab` or `octave`),
129
129
 
130
130
  ```python
131
+ from matpower import start_instance
131
132
  from matpowercaseframes import CaseFrames
132
133
 
133
134
  case_path = 'case9.m'
@@ -152,7 +153,7 @@ LOAD_COL = ["LD_ID", "LD_BUS", "LD_STATUS", "LD_PD", "LD_QD"]
152
153
 
153
154
  mpc = m.loadcase('case9', verbose=False)
154
155
  cf = CaseFrames(mpc)
155
- cf.setattr_as_df('load', mpc.load, columns_template=LOAD_COL)
156
+ cf.set_attribute_as_df('load', mpc.load, columns_template=LOAD_COL)
156
157
  ```
157
158
 
158
159
  If data already in `DataFrame`, we can use `setattr` directly as follows,
@@ -165,7 +166,7 @@ m = start_instance()
165
166
 
166
167
  mpc = m.loadcase('case9', verbose=False)
167
168
  cf = CaseFrames(mpc)
168
- cf.setattr('load', df_load)
169
+ cf.set_attribute('load', df_load)
169
170
  ```
170
171
 
171
172
  ### Export as `xlsx`
@@ -84,6 +84,7 @@ m.exit()
84
84
  Furthermore, `matpowercaseframes` also support generating data that is acceptable by `matpower` via `matpower-pip` package (requires `matlab` or `octave`),
85
85
 
86
86
  ```python
87
+ from matpower import start_instance
87
88
  from matpowercaseframes import CaseFrames
88
89
 
89
90
  case_path = 'case9.m'
@@ -108,7 +109,7 @@ LOAD_COL = ["LD_ID", "LD_BUS", "LD_STATUS", "LD_PD", "LD_QD"]
108
109
 
109
110
  mpc = m.loadcase('case9', verbose=False)
110
111
  cf = CaseFrames(mpc)
111
- cf.setattr_as_df('load', mpc.load, columns_template=LOAD_COL)
112
+ cf.set_attribute_as_df('load', mpc.load, columns_template=LOAD_COL)
112
113
  ```
113
114
 
114
115
  If data already in `DataFrame`, we can use `setattr` directly as follows,
@@ -121,7 +122,7 @@ m = start_instance()
121
122
 
122
123
  mpc = m.loadcase('case9', verbose=False)
123
124
  cf = CaseFrames(mpc)
124
- cf.setattr('load', df_load)
125
+ cf.set_attribute('load', df_load)
125
126
  ```
126
127
 
127
128
  ### Export as `xlsx`
@@ -0,0 +1,15 @@
1
+ from .core import (
2
+ CaseFrames,
3
+ DataFramesStruct,
4
+ ReservesFrames,
5
+ xGenDataTableFrames,
6
+ )
7
+ from .version import __version__
8
+
9
+ __all__ = [
10
+ "CaseFrames",
11
+ "DataFramesStruct",
12
+ "ReservesFrames",
13
+ "xGenDataTableFrames",
14
+ "__version__",
15
+ ]
@@ -15,8 +15,17 @@ ATTRIBUTES = (
15
15
  "dcline",
16
16
  "dclinecost",
17
17
  "case",
18
+ "reserves",
19
+ "xgd_table",
20
+ "xgd",
21
+ "f",
22
+ "et",
23
+ "success",
18
24
  )
19
25
 
26
+ ATTRIBUTES_NAME = ("bus_name", "branch_name", "gen_name")
27
+ ATTRIBUTES_INFO = ("version", "baseMVA", "f", "et", "success")
28
+
20
29
  COLUMNS = {
21
30
  "bus": [
22
31
  "BUS_I",
@@ -112,6 +121,48 @@ COLUMNS = {
112
121
  "MU_QMINT",
113
122
  "MU_QMAXT",
114
123
  ],
124
+ "reserves": {
125
+ "zones": [],
126
+ "req": ["PREQ"],
127
+ "cost": ["C1"],
128
+ "qty": ["PQTY"],
129
+ },
130
+ "xgd_table": [
131
+ "CommitKey",
132
+ "CommitSched",
133
+ "MinUp",
134
+ "MinDown",
135
+ "PositiveActiveReservePrice",
136
+ "PositiveActiveReserveQuantity",
137
+ "NegativeActiveReservePrice",
138
+ "NegativeActiveReserveQuantity",
139
+ "PositiveActiveDeltaPrice",
140
+ "NegativeActiveDeltaPrice",
141
+ "PositiveLoadFollowReservePrice",
142
+ "PositiveLoadFollowReserveQuantity",
143
+ "NegativeLoadFollowReservePrice",
144
+ "NegativeLoadFollowReserveQuantity",
145
+ ],
146
+ "xgd": { # xGenData
147
+ "CommitSched": [],
148
+ "InitialPg": [],
149
+ "RampWearCostCoeff": [],
150
+ "PositiveActiveReservePrice": [],
151
+ "PositiveActiveReserveQuantity": [],
152
+ "NegativeActiveReservePrice": [],
153
+ "NegativeActiveReserveQuantity": [],
154
+ "PositiveActiveDeltaPrice": [],
155
+ "NegativeActiveDeltaPrice": [],
156
+ "PositiveLoadFollowReservePrice": [],
157
+ "PositiveLoadFollowReserveQuantity": [],
158
+ "NegativeLoadFollowReservePrice": [],
159
+ "NegativeLoadFollowReserveQuantity": [],
160
+ "TerminalPg": [],
161
+ "CommitKey": [],
162
+ "InitialState": [],
163
+ "MinUp": [],
164
+ "MinDow": [],
165
+ },
115
166
  "if": {
116
167
  # negative 'BRANCHIDX' defines opposite direction
117
168
  "map": ["IFNUM", "BRANCHIDX"],