Skip to content

Commit 3b7b21c

Browse files
committed
- CheckForError: pass a result parameter to reduce boilerplate code.
- Use CheckForError in a couple more places (ICktElement and ICircuit) - Expose DssException in v7 and v8 modules.
1 parent 3ccc7ca commit 3b7b21c

File tree

7 files changed

+16
-13
lines changed

7 files changed

+16
-13
lines changed

dss/_cffi_api_util.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,11 +69,14 @@ def __init__(self, api_util):
6969
lowercase_map = {a.lower(): a for a in cls._dss_original_attributes}
7070
cls._dss_attributes = lowercase_map
7171

72-
def CheckForError(self):
72+
def CheckForError(self, result=None):
73+
'''Checks for an OpenDSS error. Raises an exception if any, otherwise returns the `result` parameter.'''
7374
if self._errorPtr[0]:
7475
error_num = self._errorPtr[0]
7576
self._errorPtr[0] = 0
7677
raise DssException(error_num, self._get_string(self._lib.Error_Get_Description()))
78+
79+
return result
7780

7881
def _getattr(self, key):
7982
if key.startswith('_'):

dss/dss_capi_gr/ICircuit.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ def SetActiveBus(self, BusName):
208208
if type(BusName) is not bytes:
209209
BusName = BusName.encode(self._api_util.codec)
210210

211-
return self._lib.Circuit_SetActiveBus(BusName)
211+
return self.CheckForError(self._lib.Circuit_SetActiveBus(BusName))
212212

213213
def SetActiveBusi(self, BusIndex):
214214
return self._lib.Circuit_SetActiveBusi(BusIndex)
@@ -217,13 +217,13 @@ def SetActiveClass(self, ClassName):
217217
if type(ClassName) is not bytes:
218218
ClassName = ClassName.encode(self._api_util.codec)
219219

220-
return self._lib.Circuit_SetActiveClass(ClassName)
220+
return self.CheckForError(self._lib.Circuit_SetActiveClass(ClassName))
221221

222222
def SetActiveElement(self, FullName):
223223
if type(FullName) is not bytes:
224224
FullName = FullName.encode(self._api_util.codec)
225225

226-
return self._lib.Circuit_SetActiveElement(FullName)
226+
return self.CheckForError(self._lib.Circuit_SetActiveElement(FullName))
227227

228228
def UpdateStorage(self):
229229
self._lib.Circuit_UpdateStorage()

dss/dss_capi_gr/ICktElement.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -298,8 +298,8 @@ def __getitem__(self, index):
298298
index = index.encode(self._api_util.codec)
299299

300300
self._lib.Circuit_SetCktElementName(index)
301-
302-
return self
301+
302+
return self.CheckForError(self)
303303

304304
def __call__(self, index):
305305
return self.__getitem__(index)

dss/dss_capi_ir/ICircuit.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ def SetActiveBus(self, BusName):
205205
if type(BusName) is not bytes:
206206
BusName = BusName.encode(self._api_util.codec)
207207

208-
return self._lib.Circuit_SetActiveBus(BusName)
208+
return self.CheckForError(self._lib.Circuit_SetActiveBus(BusName))
209209

210210
def SetActiveBusi(self, BusIndex):
211211
return self._lib.Circuit_SetActiveBusi(BusIndex)
@@ -214,13 +214,13 @@ def SetActiveClass(self, ClassName):
214214
if type(ClassName) is not bytes:
215215
ClassName = ClassName.encode(self._api_util.codec)
216216

217-
return self._lib.Circuit_SetActiveClass(ClassName)
217+
return self.CheckForError(self._lib.Circuit_SetActiveClass(ClassName))
218218

219219
def SetActiveElement(self, FullName):
220220
if type(FullName) is not bytes:
221221
FullName = FullName.encode(self._api_util.codec)
222222

223-
return self._lib.Circuit_SetActiveElement(FullName)
223+
return self.CheckForError(self._lib.Circuit_SetActiveElement(FullName))
224224

225225
def UpdateStorage(self):
226226
self._lib.Circuit_UpdateStorage()

dss/dss_capi_ir/ICktElement.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -282,8 +282,8 @@ def __getitem__(self, index):
282282
index = index.encode(self._api_util.codec)
283283

284284
self._lib.Circuit_SetCktElementName(index)
285-
286-
return self
285+
286+
return self.CheckForError(self)
287287

288288
def __call__(self, index):
289289
return self.__getitem__(index)

dss/v7.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
'''
55
from __future__ import absolute_import
66
from ._dss_capi_v7 import ffi, lib
7-
from ._cffi_api_util import CffiApiUtil, use_com_compat
7+
from ._cffi_api_util import CffiApiUtil, use_com_compat, DssException
88
from . import dss_capi_gr, dss_capi_ir, enums
99
from .enums import *
1010

dss/v8.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
'''
55
from __future__ import absolute_import
66
from ._dss_capi_v8 import ffi, lib
7-
from ._cffi_api_util import CffiApiUtil, use_com_compat
7+
from ._cffi_api_util import CffiApiUtil, use_com_compat, DssException
88
from . import dss_capi_gr, dss_capi_ir, enums
99
from .enums import *
1010

0 commit comments

Comments
 (0)