aboutsummaryrefslogtreecommitdiff
path: root/ethosu/vela/errors.py
diff options
context:
space:
mode:
authorManupa Karunaratne <manupa.karunaratne@arm.com>2020-07-20 12:05:32 +0100
committerManupa Karunaratne <manupa.karunaratne@arm.com>2020-07-27 13:28:03 +0100
commitd83d2e11d3dff5031fec513ca2aa22c19c9ea4d8 (patch)
tree0603685c456b736fe9ed9faf44df65fa89a8af03 /ethosu/vela/errors.py
parentebe26c7af49ad277df347dac7c4c05959d83f387 (diff)
downloadethos-u-vela-d83d2e11d3dff5031fec513ca2aa22c19c9ea4d8.tar.gz
[EXTAPI] refactor weight compression to be used by an external consumer
*lint *added unit tests *added typecheck *added docstring for the api Change-Id: Ibd4bc40d4381ac40ad2ea3d500b26c4ec565ab07 Signed-off-by: Manupa Karunaratne <manupa.karunaratne@arm.com>
Diffstat (limited to 'ethosu/vela/errors.py')
-rw-r--r--ethosu/vela/errors.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/ethosu/vela/errors.py b/ethosu/vela/errors.py
index 2c93fbc6..59740aac 100644
--- a/ethosu/vela/errors.py
+++ b/ethosu/vela/errors.py
@@ -15,6 +15,7 @@
# limitations under the License.
# Description:
# Defines custom exceptions.
+import inspect
import sys
from .operation import Operation
@@ -121,3 +122,20 @@ def TensorError(tens, msg):
print("Error: {}".format(data))
sys.exit(1)
+
+
+def typecheck(func):
+ def wrapper(*args, **kwargs):
+ fsig = inspect.signature(func)
+ args_zipped = zip(kwargs.values(), fsig.parameters.keys())
+ for actual, expected in args_zipped:
+ expected_type = fsig.parameters[expected].annotation
+ actual_type = type(actual)
+ if expected_type is inspect.Parameter.empty:
+ raise TypeError("Please provide type info for {}, hint = {}".format(expected, actual_type))
+ if expected_type is not actual_type:
+ raise TypeError("expected : {}, but got {}".format(expected_type, actual_type))
+ # Actual execution
+ return func(*args, **kwargs)
+
+ return wrapper