|
| 1 | +# 0.10.0 |
| 2 | + |
| 3 | +Released on 2018-11-17. |
| 4 | + |
| 5 | +## Major changes: |
| 6 | +- The creation of the binary modules has been automated using Travis-CI and AppVeyor. We expect that this will allow us to release more often, bringing new features sooner. |
| 7 | +- Integrates many fixes from the upstream OpenDSS and changes specific to DSS C-API. |
| 8 | +- Reorganizes and reuses the code across DSS versions (v7 and v8) |
| 9 | +- Uses `__slots__` to simplify attribute handling. |
| 10 | +- Exposes both the our classic API (e.g. `dss.v7.DSS_IR` for the immediate/direct results) and global result API (e.g. `dss.v7.DSS_GR` for the global result interface). See [DSS C-API's docs](https://github.com/PMeira/dss_capi/blob/master/docs/usage.md) for a detailed explanation. We default to the GR interface since it will generally be faster at the cost of a small memory overhead. |
| 11 | +- Although still experimental, the v8/PM module is more stable. If you try it, please give feedback. |
| 12 | +- Error checking is now done for most API writes. That is, if a an OpenDSS error occurs, it should cause a Python exception soon after. Previously, you need to call `CheckForError()` manually to trigger this. This change was introduced after user reports indicated that manually checking for errors is a common behavior. |
| 13 | +- Expose API extensions for the classes `LineGeometry`, `WireData`, `LineSpacing`, `CNData`, `TSData`, `Reactor`. |
| 14 | +- Make most DSS classes iterable (including buses), e.g. you can now use: |
| 15 | +```python |
| 16 | +for l in DSS.ActiveCircuit.Loads: |
| 17 | + print(l.Name) |
| 18 | +``` |
| 19 | +- Add a COM patching function (`dss.patch_dss_com`) -- that is, extend the COM instance with iterators like above and some other few functions to make it easier to exchange between COM and DSS Python: |
| 20 | +```python |
| 21 | + |
| 22 | +import win32com.client, dss |
| 23 | +com = dss.patch_dss_com(win32com.client.gencache.EnsureDispatch("OpenDSSEngine.DSS")) |
| 24 | + |
| 25 | +# ...compile a circuit, etc. |
| 26 | + |
| 27 | +for l in com.ActiveCircuit.Loads: |
| 28 | + print(l.Name, l.kva) |
| 29 | + |
| 30 | +for b in com.ActiveCircuit.ActiveBus: |
| 31 | + print(b.Name, b.x, b.y) |
| 32 | +``` |
| 33 | + |
| 34 | +## Performance |
| 35 | +On microbenchmarks, the GR interface can reduce the running time up to 50% (typically 25%) on properties that return arrays. If you find issues using the default GR interface, you can always use the classic interface from 0.9.8 by importing the appropriate module: `from dss import DSS_IR as DSS`. Currently, the GR changes do not affect writing data (setting properties), only reading them. |
| 36 | + |
| 37 | +## Mixed-cased handling |
| 38 | +If you were using `use_com_compat` to allow mixed-cased attributes, it should work better than before. You may now use `use_com_compat(warn=True)` to warn when you use an attribute that wouldn't exist without calling `use_com_compat`. The intention is that the user should run their code to get a list of warnings, fix it, and then remove `use_com_compat` since it does have a small performance impact. |
| 39 | + |
0 commit comments