diff --git a/ContextSaver.py b/ContextSaver.py index 09efdbc9e95c8103827c5d265a96d0941f94d369..63c23fbff0f2237b480b6923c6884bcbabe7a570 100644 --- a/ContextSaver.py +++ b/ContextSaver.py @@ -9,6 +9,7 @@ import PyTango as tango import logging import argparse import json +import numpy __version__ = "1.0.0" @@ -32,15 +33,25 @@ def get_wattr(proxy): # Scan all attributes for attr in proxy.get_attribute_list(): - if proxy.get_attribute_config(attr).writable in [ - tango.AttrWriteType.WRITE, - tango.AttrWriteType.READ_WRITE, - tango.AttrWriteType.READ_WITH_WRITE]: - config[attr]=proxy[attr].value - - logger.debug("Detect writtable attribute %s = %s"%( - attr, - proxy[attr].value)) + logger.debug("Analyse attribute '%s' "%( + attr)) + + try: + if proxy.get_attribute_config(attr).writable in [ + tango.AttrWriteType.WRITE, + tango.AttrWriteType.READ_WRITE, + tango.AttrWriteType.READ_WITH_WRITE]: + v= proxy[attr].value + if type(v) is numpy.ndarray: + v=v.tolist() + + config[attr]=v + + logger.debug("Detect writtable attribute '%s' = %s"%( + attr, + proxy[attr].value)) + except tango.DevFailed: + logger.warning("Failed to save attribute '%s'"%attr) return config