dss-python 0.15.0rc1__tar.gz → 0.15.1__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 (70) hide show
  1. {dss_python-0.15.0rc1 → dss_python-0.15.1}/.gitignore +133 -129
  2. {dss_python-0.15.0rc1 → dss_python-0.15.1}/LICENSE +30 -30
  3. {dss_python-0.15.0rc1 → dss_python-0.15.1}/PKG-INFO +28 -22
  4. {dss_python-0.15.0rc1 → dss_python-0.15.1}/README.md +165 -160
  5. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/IActiveClass.py +124 -127
  6. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/IBus.py +441 -445
  7. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/ICNData.py +185 -189
  8. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/ICapControls.py +226 -230
  9. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/ICapacitors.py +104 -108
  10. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/ICircuit.py +707 -711
  11. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/ICktElement.py +558 -561
  12. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/ICtrlQueue.py +144 -148
  13. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/IDSS.py +549 -554
  14. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/IDSSElement.py +60 -64
  15. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/IDSSEvents.py +202 -205
  16. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/IDSSProgress.py +45 -49
  17. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/IDSSProperty.py +64 -68
  18. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/IDSS_Executive.py +71 -75
  19. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/IDSSimComs.py +18 -22
  20. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/IError.py +99 -103
  21. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/IFuses.py +197 -201
  22. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/IGICSources.py +105 -108
  23. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/IGenerators.py +304 -308
  24. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/IISources.py +55 -59
  25. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/ILineCodes.py +208 -212
  26. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/ILineGeometries.py +143 -147
  27. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/ILineSpacings.py +73 -77
  28. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/ILines.py +411 -415
  29. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/ILoadShapes.py +196 -200
  30. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/ILoads.py +536 -540
  31. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/IMeters.py +431 -435
  32. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/IMonitors.py +281 -285
  33. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/IPDElements.py +345 -348
  34. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/IPVSystems.py +262 -267
  35. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/IParallel.py +132 -136
  36. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/IParser.py +166 -170
  37. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/IReactors.py +271 -275
  38. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/IReclosers.py +215 -219
  39. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/IReduceCkt.py +156 -158
  40. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/IRegControls.py +319 -323
  41. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/IRelays.py +128 -132
  42. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/ISensors.py +197 -201
  43. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/ISettings.py +311 -315
  44. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/ISolution.py +677 -681
  45. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/IStorages.py +59 -62
  46. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/ISwtControls.py +118 -122
  47. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/ITSData.py +173 -177
  48. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/IText.py +51 -55
  49. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/ITopology.py +197 -201
  50. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/ITransformers.py +332 -336
  51. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/IVsources.py +83 -87
  52. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/IWireData.py +122 -126
  53. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/IXYCurves.py +143 -147
  54. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/IYMatrix.py +151 -155
  55. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/IZIP.py +96 -99
  56. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/UserModels/__init__.py +10 -10
  57. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/UserModels/bases.py +279 -279
  58. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/UserModels/wrappers.py +313 -313
  59. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/__init__.py +48 -50
  60. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/_cffi_api_util.py +1011 -1004
  61. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/_types.py +21 -21
  62. dss_python-0.15.1/dss/_version.py +1 -0
  63. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/enums.py +1 -1
  64. dss_python-0.15.1/dss/examples.py +69 -0
  65. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/patch_dss_com.py +194 -194
  66. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/plot.py +1998 -1998
  67. {dss_python-0.15.0rc1 → dss_python-0.15.1}/pyproject.toml +84 -83
  68. dss_python-0.15.0rc1/dss/_version.py +0 -1
  69. dss_python-0.15.0rc1/dss/messages/properties-alt-en-US.mo +0 -0
  70. {dss_python-0.15.0rc1 → dss_python-0.15.1}/dss/messages/properties-en-US.mo +0 -0
@@ -1,129 +1,133 @@
1
- # Byte-compiled / optimized / DLL files
2
- __pycache__/
3
- *.py[cod]
4
- *$py.class
5
-
6
- # C extensions
7
- *.so
8
-
9
- # Distribution / packaging
10
- .Python
11
- env/
12
- build/
13
- develop-eggs/
14
- dist/
15
- downloads/
16
- eggs/
17
- .eggs/
18
- lib/
19
- lib64/
20
- parts/
21
- sdist/
22
- var/
23
- wheels/
24
- *.egg-info/
25
- .installed.cfg
26
- *.egg
27
-
28
- # Py.test
29
- .pytest_cache
30
-
31
- # Test reports
32
- tests/reports
33
-
34
- # PyInstaller
35
- # Usually these files are written by a python script from a template
36
- # before PyInstaller builds the exe, so as to inject date/other infos into it.
37
- *.manifest
38
- *.spec
39
-
40
- # Installer logs
41
- pip-log.txt
42
- pip-delete-this-directory.txt
43
-
44
- # Unit test / coverage reports
45
- htmlcov/
46
- .tox/
47
- .coverage
48
- .coverage.*
49
- .cache
50
- nosetests.xml
51
- coverage.xml
52
- *.cover
53
- .hypothesis/
54
-
55
- # Translations
56
- *.mo
57
- *.pot
58
-
59
- # Django stuff:
60
- *.log
61
- local_settings.py
62
-
63
- # Flask stuff:
64
- instance/
65
- .webassets-cache
66
-
67
- # Scrapy stuff:
68
- .scrapy
69
-
70
- # Sphinx documentation
71
- docs/_build/
72
-
73
- # PyBuilder
74
- target/
75
-
76
- # Jupyter Notebook
77
- .ipynb_checkpoints
78
-
79
- # pyenv
80
- .python-version
81
-
82
- # celery beat schedule file
83
- celerybeat-schedule
84
-
85
- # SageMath parsed files
86
- *.sage.py
87
-
88
- # dotenv
89
- .env
90
-
91
- # virtualenv
92
- .venv
93
- venv/
94
- ENV/
95
-
96
- # Spyder project settings
97
- .spyderproject
98
- .spyproject
99
-
100
- .vscode
101
-
102
- # Rope project settings
103
- .ropeproject
104
-
105
- # mkdocs documentation
106
- /site
107
-
108
- # mypy
109
- .mypy_cache/
110
-
111
- *.dll*
112
-
113
- README.rst
114
-
115
- conda_wheels/
116
- dss/*.lib
117
- dss/**/*.h
118
- dss/**/*.hpp
119
- dss/messages/*
120
-
121
- *.CSV
122
- *.lib
123
- *.exp
124
- *.orig
125
- *.obj
126
- *.pickle
127
- *.dbl
128
- *.sng
129
- *.pdb
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ env/
12
+ build/
13
+ develop-eggs/
14
+ dist/
15
+ downloads/
16
+ eggs/
17
+ .eggs/
18
+ lib/
19
+ lib64/
20
+ parts/
21
+ sdist/
22
+ var/
23
+ wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+
28
+ # Py.test
29
+ .pytest_cache
30
+
31
+ # Test reports
32
+ tests/reports
33
+
34
+ # PyInstaller
35
+ # Usually these files are written by a python script from a template
36
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
37
+ *.manifest
38
+ *.spec
39
+
40
+ # Installer logs
41
+ pip-log.txt
42
+ pip-delete-this-directory.txt
43
+
44
+ # Unit test / coverage reports
45
+ htmlcov/
46
+ .tox/
47
+ .coverage
48
+ .coverage.*
49
+ .cache
50
+ nosetests.xml
51
+ coverage.xml
52
+ *.cover
53
+ .hypothesis/
54
+
55
+ # Translations
56
+ *.mo
57
+ *.pot
58
+
59
+ # Django stuff:
60
+ *.log
61
+ local_settings.py
62
+
63
+ # Flask stuff:
64
+ instance/
65
+ .webassets-cache
66
+
67
+ # Scrapy stuff:
68
+ .scrapy
69
+
70
+ # Sphinx documentation
71
+ docs/_build/
72
+
73
+ # PyBuilder
74
+ target/
75
+
76
+ # Jupyter Notebook
77
+ .ipynb_checkpoints
78
+
79
+ # pyenv
80
+ .python-version
81
+
82
+ # celery beat schedule file
83
+ celerybeat-schedule
84
+
85
+ # SageMath parsed files
86
+ *.sage.py
87
+
88
+ # dotenv
89
+ .env
90
+
91
+ # virtualenv
92
+ .venv
93
+ venv/
94
+ ENV/
95
+
96
+ # Spyder project settings
97
+ .spyderproject
98
+ .spyproject
99
+
100
+ .vscode
101
+
102
+ # Rope project settings
103
+ .ropeproject
104
+
105
+ # mkdocs documentation
106
+ /site
107
+
108
+ # mypy
109
+ .mypy_cache/
110
+
111
+ *.dll*
112
+
113
+ README.rst
114
+
115
+ conda_wheels/
116
+ dss/*.lib
117
+ dss/**/*.h
118
+ dss/**/*.hpp
119
+ dss/messages/*
120
+
121
+ *.CSV
122
+ *.lib
123
+ *.exp
124
+ *.orig
125
+ *.obj
126
+ *.pickle
127
+ *.dbl
128
+ *.sng
129
+ *.pdb
130
+
131
+ docs/apidocs
132
+ tests/result*.zip
133
+ tmp/
@@ -1,30 +1,30 @@
1
- BSD 3-Clause License
2
-
3
- Copyright (c) 2017-2023, Paulo Meira
4
- Copyright (c) 2017-2023, DSS-Python contributors
5
- All rights reserved.
6
-
7
- Redistribution and use in source and binary forms, with or without
8
- modification, are permitted provided that the following conditions are met:
9
-
10
- * Redistributions of source code must retain the above copyright notice, this
11
- list of conditions and the following disclaimer.
12
-
13
- * Redistributions in binary form must reproduce the above copyright notice,
14
- this list of conditions and the following disclaimer in the documentation
15
- and/or other materials provided with the distribution.
16
-
17
- * Neither the name of the copyright holder nor the names of its
18
- contributors may be used to endorse or promote products derived from
19
- this software without specific prior written permission.
20
-
21
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
24
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
25
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
27
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28
- CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29
- OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1
+ BSD 3-Clause License
2
+
3
+ Copyright (c) 2017-2023, Paulo Meira
4
+ Copyright (c) 2017-2023, DSS-Python contributors
5
+ All rights reserved.
6
+
7
+ Redistribution and use in source and binary forms, with or without
8
+ modification, are permitted provided that the following conditions are met:
9
+
10
+ * Redistributions of source code must retain the above copyright notice, this
11
+ list of conditions and the following disclaimer.
12
+
13
+ * Redistributions in binary form must reproduce the above copyright notice,
14
+ this list of conditions and the following disclaimer in the documentation
15
+ and/or other materials provided with the distribution.
16
+
17
+ * Neither the name of the copyright holder nor the names of its
18
+ contributors may be used to endorse or promote products derived from
19
+ this software without specific prior written permission.
20
+
21
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
24
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
25
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
27
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dss-python
3
- Version: 0.15.0rc1
3
+ Version: 0.15.1
4
4
  Summary: Python bindings and tools based on the DSS C-API project, the alternative OpenDSS implementation from DSS-Extensions.org. API-compatible with the COM version of OpenDSS.
5
5
  Project-URL: Homepage, https://github.com/dss-extensions/dss_python
6
6
  Project-URL: Documentation, https://dss-extensions.org/dss_python
@@ -55,13 +55,14 @@ Classifier: Programming Language :: Python :: Implementation :: CPython
55
55
  Classifier: Programming Language :: Python :: Implementation :: PyPy
56
56
  Classifier: Topic :: Scientific/Engineering
57
57
  Requires-Python: >=3.7
58
- Requires-Dist: dss-python-backend==0.14.0rc2
58
+ Requires-Dist: dss-python-backend==0.14.0
59
59
  Requires-Dist: numpy>=1.21.0
60
60
  Requires-Dist: typing-extensions<5,>=4.5
61
61
  Provides-Extra: all
62
62
  Requires-Dist: altdss; extra == 'all'
63
63
  Requires-Dist: matplotlib; extra == 'all'
64
- Requires-Dist: opendssdirect; extra == 'all'
64
+ Requires-Dist: opendssdirect-py[extras]; extra == 'all'
65
+ Requires-Dist: pandas; extra == 'all'
65
66
  Requires-Dist: scipy; extra == 'all'
66
67
  Provides-Extra: plot
67
68
  Requires-Dist: matplotlib; extra == 'plot'
@@ -122,16 +123,16 @@ Since no GUI components are used in the FreePascal DLL, we map nearly all OpenDS
122
123
  On all major platforms, you can install directly from pip:
123
124
 
124
125
  ```
125
- pip install dss_python
126
+ pip install dss-python
126
127
  ```
127
128
 
128
- Or, if you're using the Anaconda distribution, you can try:
129
+ For a full experience, install the optional dependencies with:
129
130
 
130
131
  ```
131
- conda install -c dss-extensions dss_python
132
+ pip install dss-python[all]
132
133
  ```
133
134
 
134
- Binary wheels are provided for all major platforms (Windows, Linux and MacOS) and many combinations of Python versions (3.5 to 3.10). If you have issues with a specific version, please open an issue about it. Conda packages support at least Python 3.7 to 3.10 (varying according to the release).
135
+ Binary wheels are provided for all major platforms (Windows, Linux and MacOS) and many combinations of Python versions (3.7 to 3.12). If you have issues with a specific version, please open an issue about it.
135
136
 
136
137
  After a successful installation, you can then import the `dss` module from your Python interpreter.
137
138
 
@@ -164,10 +165,15 @@ cd ../dss_python
164
165
  python -m pip install .
165
166
  ```
166
167
 
167
- ~~If you are familiar with `conda-build`, there is a complete recipe to build DSS C-API, KLUSolve(X) and DSS-Python in the `conda` subfolder.~~ (outdated)
168
168
 
169
- Example usage
170
- =============
169
+ ## Documentation
170
+
171
+ The compiled documentation is hosted at https://dss-extensions.org/dss_python
172
+
173
+ ## Example usage
174
+
175
+ **Check the documentation for more details.**
176
+
171
177
 
172
178
  If you were using `win32com` in code like:
173
179
 
@@ -188,7 +194,7 @@ you can replace that fragment with:
188
194
  from dss import DSS as dss_engine
189
195
  ```
190
196
 
191
- If you need the mixed-cased handling (that is, you were not using early bindings with win32com), add a call to `dss.set_case_insensitive_attributes()`.
197
+ If you need support for arbitrary capitalization (that is, you were not using early bindings with win32com), add a call to `dss.set_case_insensitive_attributes()`.
192
198
 
193
199
  Assuming you have a DSS script named `master.dss`, you should be able to run it as shown below:
194
200
 
@@ -203,32 +209,32 @@ for i in range(len(voltages) // 2):
203
209
  print('node %d: %f + j%f' % (i, voltages[2*i], voltages[2*i + 1]))
204
210
  ```
205
211
 
206
- Testing
207
- =======
212
+ ## Testing
213
+
208
214
  Since the DLL is built using the Free Pascal compiler, which is not officially supported by EPRI, the results are validated running sample networks provided in the official OpenDSS distribution. The only modifications are done directly by the script, removing interactive features and some other minor issues. Most of the sample files from the official OpenDSS repository are used for validation.
209
215
 
210
216
  The validation scripts is `tests/validation.py` and requires the same folder structure as the building process. You need `win32com` to run it on Windows.
211
217
 
212
218
  As of version 0.11, the full validation suite can be run on the three supported platforms. This is possible by saving the official COM DLL output and loading it on macOS and Linux. We hope to fully automate this validation in the future.
213
219
 
214
- Roadmap: docs and interactive features
215
- ======================================
220
+ ## Roadmap: docs and interactive features
221
+
216
222
  Besides bug fixes, the main functionality of this library is mostly done. Notable desirable features that may be implemented are:
217
223
 
218
- - More and better documentation. Initial reference at [https://dss-extensions.org/dss_python/](https://dss-extensions.org/dss_python/), watch also https://github.com/dss-extensions/dss-extensions for more.
219
- - Reports integrated in Python and interactive features on plots. Since most of the plot types from the official OpenDSS are optionally available in DSS-Python 0.14.2, advanced integration and interactive features are planned for a future feature.
224
+ - More examples, especially for the extra features. There is a growing documentation hosted at [https://dss-extensions.org/dss_python/](https://dss-extensions.org/dss_python/); watch also https://github.com/dss-extensions/dss-extensions for more.
225
+ - Reports integrated in Python and interactive features on plots. Since most of the plot types from the official OpenDSS are optionally available since DSS-Python 0.14.2, advanced integration and interactive features are planned for a future feature.
220
226
 
221
227
  Expect news about these items by version 1.0.
222
228
 
223
- While the base library (DSS C-API) will go through some API changes before v1.0, those do not affect usage from the Python side.
229
+ While the base library (AltDSS/DSS C-API) will go through some API changes before v1.0, those do not affect usage from the Python side.
230
+
231
+ ## Questions?
224
232
 
225
- Questions?
226
- ==========
227
233
  If you have any question, feel free to open a ticket on GitHub (here or at https://github.com/dss-extensions/dss-extensions), or contact directly me through email (pmeira at ieee.org). Please allow me a few days to respond.
228
234
 
229
235
 
230
- Credits / Acknowledgment
231
- ========================
236
+ ## Credits / Acknowledgments
237
+
232
238
  DSS-Python is based on EPRI's OpenDSS via the [`dss_capi`](http://github.com/dss-extensions/dss_capi/) project, so check its licensing information too.
233
239
 
234
240
  This project is licensed under the (new) BSD, available in the `LICENSE` file. It's the same license OpenDSS uses (`OPENDSS_LICENSE`). OpenDSS itself uses KLUSolve and SuiteSparse, licensed under the GNU LGPL 2.1.