Skip to content

Commit b68eea0

Browse files
committed
README.md: updated for 0.10.0
1 parent da9b6d7 commit b68eea0

File tree

1 file changed

+15
-15
lines changed

1 file changed

+15
-15
lines changed

README.md

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,25 @@
1-
# dss_python: Unofficial bindings for EPRI's OpenDSS
1+
# DSS Python: Unofficial bindings for EPRI's OpenDSS
22

3-
Python bindings and misc tools for using OpenDSS (EPRI Distribution System Simulator). Based on CFFI and `dss_capi`, aiming for full COM compatibility on Windows, Linux and MacOS.
3+
Python bindings and misc tools for using OpenDSS (EPRI Distribution System Simulator). Based on CFFI and DSS C-API, aiming for full COM compatibility on Windows, Linux and MacOS.
44

55
<p align="center">
66
<img alt="Overview of related repositories" src="https://raw.githubusercontent.com/PMeira/dss_python/master/docs/images/repomap.svg?sanitize=true" width=600>
77
</p>
88

9-
If you are looking for the custom OpenDSS C-API library, see [`dss_capi`](http://github.com/PMeira/dss_capi/).
9+
If you are looking for the custom OpenDSS C-API library, see [`DSS C-API`](http://github.com/PMeira/dss_capi/).
1010

11-
Version 0.10.0 (**unreleased**), based on OpenDSS revision 2246. For version 0.9.8, see [here](https://github.com/PMeira/dss_python/tree/0.9.8).
12-
This is a work-in-progress but it's deemed stable enough to be made public. The main goal of creating a COM-compatible API was reached!
11+
Version 0.10.0, based on OpenDSS revision 2395. While we plan to add a lot more funcionality into DSS Python, the main goal of creating a COM-compatible API has been reached.
1312

1413
This module mimics the COM structure (as exposed via `win32com` or `comtypes`), effectively enabling multi-platform compatibility at Python level.
1514
Most of the COM documentation can be used as-is, but instead of returning tuples or lists, this modules returns/accepts NumPy arrays for numeric data exchange.
1615

1716
The module depends on CFFI, NumPy and, optionally, SciPy.Sparse for reading the sparse system admittance matrix.
1817

19-
If you are not bound to the COM API and its quirks, you might be insterested in OpenDSSDirect.py. [OpenDSSDirect.py](https://github.com/NREL/OpenDSSDirect.py/) exposes a more Pythonic API and contains extra utilities. Thanks to @kdheepak, OpenDSSDirect.py v0.3+ uses dss_python's backend -- this means you can use both modules at once. For example, if you have old code using the official COM objects, you could quickly switch to dss_python with very few code changes, and then use [`opendssdirect.utils`](https://nrel.github.io/OpenDSSDirect.py/opendssdirect.html#module-opendssdirect.utils) to generate some DataFrames.
18+
If you are not bound to the COM API and its quirks, you might be insterested in OpenDSSDirect.py. [OpenDSSDirect.py](https://github.com/NREL/OpenDSSDirect.py/) exposes a more Pythonic API and contains extra utilities. Thanks to @kdheepak, OpenDSSDirect.py v0.3+ uses DSS Python's backend -- this means you can use both modules at once. For example, if you have old code using the official COM objects, you could quickly switch to DSS Python with very few code changes, and then use [`opendssdirect.utils`](https://nrel.github.io/OpenDSSDirect.py/opendssdirect.html#module-opendssdirect.utils) to generate some DataFrames.
2019

2120
## Recent changes
2221

23-
- version 0.10.0 **(WIP)**: Introduce a faster but less compatible module and add optional warnings for the traditional version (e.g. warn when using `DSS.activecircuit` instead of `DSS.ActiveCircuit`).
22+
- 2018-11-17 / version 0.10.0: Lots of changes, fixes and new features. Check the new [changelog](docs/changelog.md) document for a list.
2423
- 2018-08-12 / version 0.9.8: Reorganize modules (v7 and v8), adds 8 missing methods and new backend methods for OpenDSSDirect.py v0.3+. Integrates many fixes from DSS_CAPI and the upstream OpenDSS.
2524
- 2018-04-30 / version 0.9.7: Fix some of the setters that used array data.
2625
- 2018-04-05 / version 0.9.6: Adds missing `ActiveCircuit.CktElements[index]` (or `...CktElements(index)`) and `ActiveCircuit.Buses[index]` (or `...Buses(index)`).
@@ -72,7 +71,7 @@ Get this repository:
7271
git clone https://github.com/PMeira/dss_python.git
7372
```
7473

75-
Assuming you successfully built or downloaded the `dss_capi` (check [its repository](http://github.com/PMeira/dss_capi/) for instructions), keep the folder organization as follows:
74+
Assuming you successfully built or downloaded the DSS C-API DLLs (check [its repository](http://github.com/PMeira/dss_capi/) for instructions), keep the folder organization as follows:
7675

7776
```
7877
dss_capi/
@@ -87,6 +86,8 @@ python setup.py build
8786
python setup.py install
8887
```
8988

89+
If you are familiar with `conda-build`, there is a complete recipe to build DSS C-API, KLUSolve and DSS Python in the `conda` subfolder.
90+
9091
Example usage
9192
=============
9293

@@ -126,26 +127,25 @@ for i in range(len(voltages) // 2):
126127
print('node %d: %f + j%f' % (i, voltages[2*i], voltages[2*i + 1]))
127128
```
128129

129-
If you do not need the mixed-cased handling, you can omit the call to `use_com_compat()` and use the casing used in this project.
130-
130+
If you do not need the mixed-cased handling, omit the call to `use_com_compat()` and use the casing used in this project, which should make most of the COM instance conventions.
131131

132132
If you want to play with the experimental OpenDSS-PM interface (from OpenDSS v8), it is installed side-by-side and you can import it as:
133133

134134
```
135135
import dss.v8
136-
dss.v8.use_com_compat()
137136
dss_engine = dss.v8.DSS
138137
```
139138

140-
*All validation tests succeed with `dss.v8` but beware those don't include parallel machine tests yet!*
139+
Although it is experimental, most of its funcionality is working. Depending on your use-case, the parallel interface can be an easy way of better using your machine resources. Otherwise, you can always use general distributed computing resources via Python.
140+
141141

142142
Testing
143143
=======
144144
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.
145145

146146
The validation scripts is `tests/validation.py` and requires the same folder structure as the building process. You need `win32com` to run it.
147147

148-
Currently, the following sample files from the official OpenDSS repository are used:
148+
Currently, at least the following sample files from the official OpenDSS repository are used:
149149

150150
```
151151
Distrib/EPRITestCircuits/ckt5/Master_ckt5.dss
@@ -192,7 +192,7 @@ Currently, the following sample files from the official OpenDSS repository are u
192192

193193
On Windows 10, remember to set the compatibility layer to Windows 7 (set the environment variable `__COMPAT_LAYER=WIN7RTM`), otherwise you may encounter issues with COM due to [ASLR](https://en.wikipedia.org/wiki/Address_space_layout_randomization) on Python 3.6+.
194194

195-
There is no validation on Linux yet since we cannot run the COM module there. The most likely solution will be to pickle the data on Windows and load them on Linux.
195+
There is no full validation on Linux yet since we cannot run the COM module there. There is an ongoing effort on pickling the data on Windows and loading on Linux for comparison (for the full test suite, it results in 8+GB of data and can be time-consuming).
196196

197197
Roadmap
198198
=======
@@ -209,7 +209,7 @@ Please allow me a few days to respond.
209209

210210
Credits / Acknowlegement
211211
========================
212-
`dss_python` is based on EPRI's OpenDSS via the [`dss_capi`](http://github.com/PMeira/dss_capi/) project, check its licensing information.
212+
DSS Python is based on EPRI's OpenDSS via the [`dss_capi`](http://github.com/PMeira/dss_capi/) project, check its licensing information.
213213

214214
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.
215215

0 commit comments

Comments
 (0)