From c3c625fdbd12536735a8cd847aad4551f4b00764 Mon Sep 17 00:00:00 2001 From: Daniel Thom Date: Thu, 21 Sep 2023 19:17:30 -0600 Subject: [PATCH] Upgrade to OpenDSSDirect v0.8.4 This works around a mis-use of an OpenDSSDirect function call. Prior to v0.8.0 OpenDSSDirect ignored the error. Now it raises an exception. This preserves the previous behavior in order to take advantage of new features. --- PyDSS/dssElement.py | 13 +++++++++++-- requirements.txt | 2 +- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/PyDSS/dssElement.py b/PyDSS/dssElement.py index c08dccf4..74127cd5 100755 --- a/PyDSS/dssElement.py +++ b/PyDSS/dssElement.py @@ -1,10 +1,13 @@ import ast +from opendssdirect import DSSException + from PyDSS.dssBus import dssBus from PyDSS.dssObjectBase import dssObjectBase from PyDSS.exceptions import InvalidParameter from PyDSS.value_storage import ValueByNumber + class dssElement(dssObjectBase): VARIABLE_OUTPUTS_BY_LABEL = { @@ -81,8 +84,14 @@ def __init__(self, dssInstance): self._Parameters[PptName] = str(i) CktElmVarDict = dssInstance.CktElement.__dict__ - for VarName in dssInstance.CktElement.AllVariableNames(): - CktElmVarDict[VarName] = None + try: + for VarName in dssInstance.CktElement.AllVariableNames(): + CktElmVarDict[VarName] = None + except DSSException as e: + # Prior to OpenDSSDirect.py v0.8.0 this returned an empty list for non-PC elements. + # v0.8.0 and later raises an exception. Ignore the error. + if e.args[1] != "The active circuit element is not a PC Element": + raise for key in CktElmVarDict.keys(): try: diff --git a/requirements.txt b/requirements.txt index 4be99c10..08eeec08 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,7 +3,7 @@ scipy bokeh networkx toml -OpenDSSDirect.py~=0.7.0 +OpenDSSDirect.py~=0.8.4 Shapely click numpy