You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+16-59Lines changed: 16 additions & 59 deletions
Original file line number
Diff line number
Diff line change
@@ -13,7 +13,7 @@ See also the other projects from [DSS-Extensions.org](https://dss-extensions.org
13
13
-[DSS Sharp](http://github.com/dss-extensions/dss_sharp/): available for .NET/C#, also mimics the COM classes, but Windows-only at the moment. Soon it will be possible to use it via COM too.
14
14
-[DSS MATLAB](http://github.com/dss-extensions/dss_matlab/): presents multi-platform integration (Windows, Linux, MacOS) with DSS C-API and is also very compatible with the COM classes.
15
15
16
-
Version 0.10.3**in development**, based on OpenDSS revision 2504. While we plan to add a lot more funcionality into DSS Python, the main goal of creating a COM-compatible API has been reached. If you find an unexpected missing feature, please report it!
16
+
Version 0.10.3, based on OpenDSS revision 2609 (which is slightly newer than OpenDSS v8.5.9.1 and v7.6.5.86). While we plan to add a lot more funcionality into DSS Python, the main goal of creating a COM-compatible API has been reached. If you find an unexpected missing feature, please report it!
17
17
18
18
This module mimics the COM structure (as exposed via `win32com` or `comtypes`), effectively enabling multi-platform compatibility at Python level.
19
19
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.
@@ -22,9 +22,10 @@ The module depends on CFFI, NumPy and, optionally, SciPy.Sparse for reading the
22
22
23
23
## Recent changes
24
24
25
-
Check the [changelog](docs/changelog.md#0101) document for a more detailed list.
25
+
Check the [changelog](docs/changelog.md#0103) document for a detailed list.
26
26
27
-
-**2019-02-28 / version 0.10.2: Some small fixes, adds the missing `CtrlQueue.Push`, faster LoadShapes and new property `DSS.AllowEditor` to toggle editor calls.**
27
+
-**2019-05-22 / version 0.10.3: Some important fixes, better general performance, new API extensions, new features ported from COM and the OpenDSS version 8 codebase.**
28
+
- 2019-02-28 / version 0.10.2: Some small fixes, adds the missing `CtrlQueue.Push`, faster LoadShapes and new property `DSS.AllowEditor` to toggle editor calls.
28
29
- 2019-02-17 / version 0.10.1: Integrate DSS C-API changes/fix, some small fixes, and more error-checking.
29
30
- 2018-11-17 / version 0.10.0: Lots of changes, fixes and new features. Check the new [changelog](docs/changelog.md#0100) document for a list.
30
31
- 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.
@@ -66,13 +67,13 @@ Or, if you're using the Anaconda distribution, you can use:
66
67
conda install -c pmeira dss_python
67
68
```
68
69
69
-
Binary wheels are provided for all major platforms (Windows, Linux and MacOS) and many combinations of Python versions (2.7, 3.4 to 3.7). If you have issues with a specific version, please open an issue about it. Conda packages support at least Python 2.7, 3.5, 3.6 and 3.7.
70
+
Binary wheels are provided for all major platforms (Windows, Linux and MacOS) and many combinations of Python versions (2.7, 3.5 to 3.7). If you have issues with a specific version, please open an issue about it. Conda packages support at least Python 2.7, 3.5, 3.6 and 3.7.
70
71
71
72
After a successful installation, you can then import the `dss` module from your Python interpreter.
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 use most of the COM instance conventions.
138
138
139
139
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:
140
140
@@ -145,68 +145,25 @@ dss_engine = dss.v8.DSS
145
145
146
146
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.
147
147
148
+
Beware the v8 alternative can present issues and it should be removed as soon as all OpenDSS 8+ features are integrated into the default version.
148
149
149
150
Testing
150
151
=======
151
-
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.
152
-
153
-
The validation scripts is `tests/validation.py` and requires the same folder structure as the building process. You need `win32com` to run it.
154
-
155
-
Currently, at least the following sample files from the official OpenDSS repository are used:
152
+
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.
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.
199
155
200
-
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+.
201
156
202
-
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).
157
+
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 automate this validation in the future.
203
158
204
159
Roadmap
205
160
=======
206
161
Besides bug fixes, the main funcionality of this library is mostly done. Notable desirable features that may be implemented are:
Copy file name to clipboardExpand all lines: docs/changelog.md
+17-4Lines changed: 17 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -1,11 +1,24 @@
1
+
2
+
1
3
# 0.10.3
2
4
3
-
**in development, not released**
5
+
Released on 2019-05-22. This is the last release to provide pre-built binaries for Python 3.4.
4
6
5
-
- Use prebuilt binaries for DSS C-API and KLUSolve
6
-
- Prebuilt wheels for 32-bit Linux are now available
7
+
- Includes fix for issue with the line parameters on Linux and macOS due to memory-address aliasing issues.
8
+
- Prebuilt binaries for DSS C-API and KLUSolve are used instead of rebuilding everything from source.
9
+
- Prebuilt packages (wheels) for 32-bit Linux are now available.
10
+
- Development artifacts are now included in the distribution package. This enables advanced usage and easier integration with compiled languages (examples pending, please open an issue if you'd like to know more).
7
11
-`ReduceCkt` ported from COM: new circuit reduction methods available in `DSS.ActiveCircuit.ReduceCkt`
8
-
12
+
-`Lines`: ported from COM, new seasonal ratings mechanism that allows changing the current rating through the simulation
13
+
- Optimization and extended error-checking in many properties
14
+
- Includes new `Settings.LoadsTerminalCheck`: on static scenarios (no open terminals for loads) to toggle the costly checks for open terminals. If set to false, it can save around 25% of simulation time, depending on the circuit characteristics.
15
+
- All components now can be accessed by index (`idx` property)
16
+
- All components now have faster `Name` iteration
17
+
- Ported to v7/default interface: the DSS commands `CalcIncMatrix`, `CalcIncMatrix_O`, `Refine_BusLevels`, `CalcLaplacian`, and related export options: `IncMatrix`, `IncMatrixRows`, `IncMatrixCols`, `BusLevels`, `Laplacian`, `ZLL`, `ZCC`, `Contours`, `Y4`. Also includes related Python-level properties.
18
+
- Some other new properties:
19
+
-`CktElement.IsIsolated`
20
+
-`Lines.IsSwitch`
21
+
-`Transformers.LossesByType` and `Transformers.AllLossesByType`
'''A compatibility layer for DSS_CAPI that mimics the official OpenDSS COM interface.
2
2
3
-
Copyright (c) 2016-2018 Paulo Meira
3
+
``dss`` is the main package for DSS Python. DSS Python is a compatibility layer for the DSS C-API library that mimics the official OpenDSS COM interface, with many extensions and a few limitations.
0 commit comments