[pytango] 02/98: Implement AttributeConfig and AttributeInfo changes

Sandor Bodo-Merle sbodomerle-guest at moszumanska.debian.org
Thu Sep 28 19:17:39 UTC 2017


This is an automated email from the git hooks/post-receive script.

sbodomerle-guest pushed a commit to tag v9.2.0
in repository pytango.

commit 5415fbd3a3a008d13c415d9011ca967f43580c22
Author: Jose Tiago Coutinho Macara <tiago.coutinho at esrf.fr>
Date:   Tue Dec 1 09:05:25 2015 +0100

    Implement AttributeConfig and AttributeInfo changes
---
 src/boost/cpp/attribute_info_ex.cpp |   3 +
 src/boost/cpp/enums.cpp             |  19 ++++++-
 src/boost/cpp/from_py.cpp           |  53 +++++++++++++++++-
 src/boost/cpp/from_py.h             |   2 +
 src/boost/cpp/server/attribute.cpp  |  48 ----------------
 src/boost/cpp/to_py.cpp             |  46 +++++++++++++++
 src/boost/cpp/to_py.h               |   3 +
 src/boost/python/device_class.py    |  20 +++++++
 src/boost/python/device_server.py   | 109 ++++++++++++++----------------------
 src/boost/python/pytango_pprint.py  |   4 +-
 10 files changed, 188 insertions(+), 119 deletions(-)

diff --git a/src/boost/cpp/attribute_info_ex.cpp b/src/boost/cpp/attribute_info_ex.cpp
index bdec946..2a4f89b 100644
--- a/src/boost/cpp/attribute_info_ex.cpp
+++ b/src/boost/cpp/attribute_info_ex.cpp
@@ -20,6 +20,9 @@ void export_attribute_info_ex()
         ("AttributeInfoEx")
         .def(init<const Tango::AttributeInfoEx&>())
         .enable_pickling()
+	.def_readwrite("root_attr_name",  &Tango::AttributeInfoEx::root_attr_name)
+	.def_readwrite("memorized",  &Tango::AttributeInfoEx::memorized)
+	.def_readwrite("enum_labels",  &Tango::AttributeInfoEx::enum_labels)
         .def_readwrite("alarms", &Tango::AttributeInfoEx::alarms)
         .def_readwrite("events", &Tango::AttributeInfoEx::events)
         .def_readwrite("sys_extensions", &Tango::AttributeInfoEx::sys_extensions)
diff --git a/src/boost/cpp/enums.cpp b/src/boost/cpp/enums.cpp
index 4f4fa53..c86ddff 100644
--- a/src/boost/cpp/enums.cpp
+++ b/src/boost/cpp/enums.cpp
@@ -50,7 +50,10 @@ void export_enums()
         .value(Tango::CmdArgTypeName[Tango::DEVVAR_LONG64ARRAY], Tango::DEVVAR_LONG64ARRAY)
         .value(Tango::CmdArgTypeName[Tango::DEVVAR_ULONG64ARRAY], Tango::DEVVAR_ULONG64ARRAY)
         .value(Tango::CmdArgTypeName[Tango::DEV_INT], Tango::DEV_INT)
-        .value("DevEncoded", Tango::DEV_ENCODED)
+        .value(Tango::CmdArgTypeName[Tango::DEV_ENCODED], Tango::DEV_ENCODED)
+        .value(Tango::CmdArgTypeName[Tango::DEV_ENUM], Tango::DEV_ENUM)
+        .value(Tango::CmdArgTypeName[Tango::DEV_PIPE_BLOB], Tango::DEV_PIPE_BLOB)
+        .value(Tango::CmdArgTypeName[Tango::DEVVAR_STATEARRAY], Tango::DEVVAR_STATEARRAY)
         .export_values()
     ;
 
@@ -170,6 +173,7 @@ void export_enums()
         .value("READ_WITH_WRITE", Tango::READ_WITH_WRITE)
         .value("WRITE", Tango::WRITE)
         .value("READ_WRITE", Tango::READ_WRITE)
+        .value("WT_UNKNOWN", Tango::READ_WRITE)
         .export_values()
     ;
 
@@ -213,6 +217,19 @@ void export_enums()
     enum_<Tango::DispLevel>("DispLevel")
         .value("OPERATOR", Tango::OPERATOR)
         .value("EXPERT", Tango::EXPERT)
+        .value("DL_UNKNOWN", Tango::DL_UNKNOWN)
     ;
 
+    enum_<Tango::PipeWriteType>("PipeWriteType")
+        .value("PIPE_READ", Tango::PIPE_READ)
+        .value("PIPE_READ_WRITE", Tango::PIPE_READ_WRITE)
+        .value("PIPE_WT_UNKNOWN", Tango::PIPE_WT_UNKNOWN)
+    ;
+
+    enum_<Tango::AttrMemorizedType>("AttrMemorizedType")
+        .value("NOT_KNOWN", Tango::NOT_KNOWN)
+        .value("NONE", Tango::NONE)
+        .value("MEMORIZED", Tango::MEMORIZED)
+        .value("MEMORIZED_WRITE_INIT", Tango::MEMORIZED_WRITE_INIT)
+    ;
 }
diff --git a/src/boost/cpp/from_py.cpp b/src/boost/cpp/from_py.cpp
index 0ec3c8d..478c47c 100644
--- a/src/boost/cpp/from_py.cpp
+++ b/src/boost/cpp/from_py.cpp
@@ -307,6 +307,38 @@ void from_py_object(object &py_obj, Tango::AttributeConfig_3 &attr_conf)
     convert2array(py_obj.attr("sys_extensions"), attr_conf.sys_extensions);
 }
 
+void from_py_object(object &py_obj, Tango::AttributeConfig_5 &attr_conf)
+{
+    attr_conf.name = obj_to_new_char(py_obj.attr("name"));
+    attr_conf.writable = extract<Tango::AttrWriteType>(py_obj.attr("writable"));
+    attr_conf.data_format = extract<Tango::AttrDataFormat>(py_obj.attr("data_format"));
+    attr_conf.data_type = extract<CORBA::Long>(py_obj.attr("data_type"));
+    attr_conf.memorized = extract<CORBA::Boolean>(py_obj.attr("memorized"));
+    attr_conf.mem_init = extract<CORBA::Boolean>(py_obj.attr("mem_init"));
+    attr_conf.max_dim_x = extract<CORBA::Long>(py_obj.attr("max_dim_x"));
+    attr_conf.max_dim_y = extract<CORBA::Long>(py_obj.attr("max_dim_y"));
+    attr_conf.description = obj_to_new_char(py_obj.attr("description"));
+    attr_conf.label = obj_to_new_char(py_obj.attr("label"));
+    attr_conf.unit = obj_to_new_char(py_obj.attr("unit"));
+    attr_conf.standard_unit = obj_to_new_char(py_obj.attr("standard_unit"));
+    attr_conf.display_unit = obj_to_new_char(py_obj.attr("display_unit"));
+    attr_conf.format = obj_to_new_char(py_obj.attr("format"));
+    attr_conf.min_value = obj_to_new_char(py_obj.attr("min_value"));
+    attr_conf.max_value = obj_to_new_char(py_obj.attr("max_value"));
+    attr_conf.writable_attr_name = obj_to_new_char(py_obj.attr("writable_attr_name"));
+    attr_conf.level = extract<Tango::DispLevel>(py_obj.attr("level"));
+    attr_conf.root_attr_name = obj_to_new_char(py_obj.attr("root_attr_name"));
+
+    convert2array(py_obj.attr("enum_labels"), attr_conf.enum_labels);
+
+    object py_att_alarm = py_obj.attr("att_alarm");
+    object py_event_prop = py_obj.attr("event_prop");
+
+    from_py_object(py_att_alarm, attr_conf.att_alarm);
+    from_py_object(py_event_prop, attr_conf.event_prop);
+    convert2array(py_obj.attr("extensions"), attr_conf.extensions);
+    convert2array(py_obj.attr("sys_extensions"), attr_conf.sys_extensions);
+}
 
 void from_py_object(object &py_obj, Tango::AttributeConfigList &attr_conf_list)
 {
@@ -349,7 +381,26 @@ void from_py_object(object &py_obj, Tango::AttributeConfigList_2 &attr_conf_list
 void from_py_object(object &py_obj, Tango::AttributeConfigList_3 &attr_conf_list)
 {
     PyObject* py_obj_ptr = py_obj.ptr();
-    
+
+    if (!PySequence_Check(py_obj_ptr))
+    {
+        attr_conf_list.length(1);
+        from_py_object(py_obj, attr_conf_list[0]);
+        return;
+    }
+
+    CORBA::ULong size = static_cast<CORBA::ULong>(boost::python::len(py_obj));
+    attr_conf_list.length(size);
+    for (CORBA::ULong i=0; i < size; ++i) {
+        object tmp = py_obj[i];
+        from_py_object(tmp, attr_conf_list[i]);
+    }
+}
+
+void from_py_object(object &py_obj, Tango::AttributeConfigList_5 &attr_conf_list)
+{
+    PyObject* py_obj_ptr = py_obj.ptr();
+
     if (!PySequence_Check(py_obj_ptr))
     {
         attr_conf_list.length(1);
diff --git a/src/boost/cpp/from_py.h b/src/boost/cpp/from_py.h
index f03bd6b..efe33a5 100644
--- a/src/boost/cpp/from_py.h
+++ b/src/boost/cpp/from_py.h
@@ -276,6 +276,7 @@ void from_py_object(bopy::object &, Tango::EventProperties &);
 void from_py_object(bopy::object &, Tango::AttributeConfig &);
 void from_py_object(bopy::object &, Tango::AttributeConfig_2 &);
 void from_py_object(bopy::object &, Tango::AttributeConfig_3 &);
+void from_py_object(bopy::object &, Tango::AttributeConfig_5 &);
 
 template<typename T>
 void from_py_object(bopy::object &py_obj, Tango::MultiAttrProp<T> &multi_attr_prop)
@@ -699,3 +700,4 @@ inline void from_py_object(bopy::object &py_obj, Tango::MultiAttrProp<Tango::Dev
 void from_py_object(bopy::object &, Tango::AttributeConfigList &);
 void from_py_object(bopy::object &, Tango::AttributeConfigList_2 &);
 void from_py_object(bopy::object &, Tango::AttributeConfigList_3 &);
+void from_py_object(bopy::object &, Tango::AttributeConfigList_5 &);
diff --git a/src/boost/cpp/server/attribute.cpp b/src/boost/cpp/server/attribute.cpp
index e92ad9b..ebfdbc6 100644
--- a/src/boost/cpp/server/attribute.cpp
+++ b/src/boost/cpp/server/attribute.cpp
@@ -393,34 +393,6 @@ namespace PyAttribute
                                        long x, long y)
     { __set_value("set_value_date_quality", att, value, &x, &y, t, &quality); }
     
-    /* According to tango attribute.h these "methods not usable for
-       the external world (outside the lib)" */
-    /*
-    inline bopy::object get_properties(Tango::Attribute &att,
-                                                bopy::object &attr_cfg)
-    {
-        Tango::AttributeConfig tg_attr_cfg;
-        att.get_properties(tg_attr_cfg);
-        return to_py(tg_attr_cfg, attr_cfg);
-    }
-    
-    inline bopy::object get_properties_2(Tango::Attribute &att,
-                                                  bopy::object &attr_cfg)
-    {
-        Tango::AttributeConfig_2 tg_attr_cfg;
-        att.get_properties(tg_attr_cfg);
-        return to_py(tg_attr_cfg, attr_cfg);
-    }
-
-    inline bopy::object get_properties_3(Tango::Attribute &att,
-                                                  bopy::object &attr_cfg)
-    {
-        Tango::AttributeConfig_3 tg_attr_cfg;
-        att.get_properties(tg_attr_cfg);
-        return to_py(tg_attr_cfg, attr_cfg);
-    }
-    */
-
     template<typename TangoScalarType>
     inline void _get_properties_multi_attr_prop(Tango::Attribute &att, bopy::object &multi_attr_prop)
     {
@@ -439,26 +411,6 @@ namespace PyAttribute
 		return multi_attr_prop;
     }
 
-    /*
-    void set_properties(Tango::Attribute &att, bopy::object &attr_cfg,
-                        bopy::object &dev)
-    {
-        Tango::AttributeConfig tg_attr_cfg;
-        from_py_object(attr_cfg, tg_attr_cfg);
-        Tango::DeviceImpl *dev_ptr = extract<Tango::DeviceImpl*>(dev);
-        att.set_properties(tg_attr_cfg, dev_ptr);
-    }
-
-    void set_properties_3(Tango::Attribute &att, bopy::object &attr_cfg,
-                          bopy::object &dev)
-    {
-        Tango::AttributeConfig_3 tg_attr_cfg;
-        from_py_object(attr_cfg, tg_attr_cfg);
-        Tango::DeviceImpl *dev_ptr = extract<Tango::DeviceImpl*>(dev);
-        att.set_properties(tg_attr_cfg, dev_ptr);
-    }
-    */
-
     template<typename TangoScalarType>
     inline void _set_properties_multi_attr_prop(Tango::Attribute &att, bopy::object &multi_attr_prop)
     {
diff --git a/src/boost/cpp/to_py.cpp b/src/boost/cpp/to_py.cpp
index 3c2600d..ea57a03 100644
--- a/src/boost/cpp/to_py.cpp
+++ b/src/boost/cpp/to_py.cpp
@@ -176,6 +176,40 @@ object to_py(const Tango::AttributeConfig_3 &attr_conf, object py_attr_conf)
     return py_attr_conf;
 }
 
+object to_py(const Tango::AttributeConfig_5 &attr_conf, object py_attr_conf)
+{
+    if(py_attr_conf.ptr() == Py_None)
+    {
+        PYTANGO_MOD
+        py_attr_conf = pytango.attr("AttributeConfig_5")();
+    }
+
+    py_attr_conf.attr("name") = str(attr_conf.name.in());
+    py_attr_conf.attr("writable") = attr_conf.writable;
+    py_attr_conf.attr("data_format") = attr_conf.data_format;
+    py_attr_conf.attr("data_type") = attr_conf.data_type;
+    py_attr_conf.attr("memorized") = attr_conf.memorized;
+    py_attr_conf.attr("mem_init") = attr_conf.mem_init;
+    py_attr_conf.attr("max_dim_x") = attr_conf.max_dim_x;
+    py_attr_conf.attr("max_dim_y") = attr_conf.max_dim_y;
+    py_attr_conf.attr("description") = str(attr_conf.description.in());
+    py_attr_conf.attr("label") = str(attr_conf.label.in());
+    py_attr_conf.attr("unit") = str(attr_conf.unit.in());
+    py_attr_conf.attr("standard_unit") = str(attr_conf.standard_unit.in());
+    py_attr_conf.attr("display_unit") = str(attr_conf.display_unit.in());
+    py_attr_conf.attr("format") = str(attr_conf.format.in());
+    py_attr_conf.attr("min_value") = str(attr_conf.min_value.in());
+    py_attr_conf.attr("max_value") = str(attr_conf.max_value.in());
+    py_attr_conf.attr("writable_attr_name") = str(attr_conf.writable_attr_name.in());
+    py_attr_conf.attr("level") = attr_conf.level;
+    py_attr_conf.attr("root_attr_name") = str(attr_conf.root_attr_name.in());
+    py_attr_conf.attr("enum_labels") = CORBA_sequence_to_list<Tango::DevVarStringArray>::to_list(attr_conf.enum_labels);
+    py_attr_conf.attr("att_alarm") = to_py(attr_conf.att_alarm);
+    py_attr_conf.attr("event_prop") = to_py(attr_conf.event_prop);
+    py_attr_conf.attr("extensions") = CORBA_sequence_to_list<Tango::DevVarStringArray>::to_list(attr_conf.extensions);
+    py_attr_conf.attr("sys_extensions") = CORBA_sequence_to_list<Tango::DevVarStringArray>::to_list(attr_conf.sys_extensions);
+    return py_attr_conf;
+}
 boost::python::list to_py(const Tango::AttributeConfigList &attr_conf_list)
 {
     boost::python::list py_attr_conf_list;
@@ -211,3 +245,15 @@ boost::python::list to_py(const Tango::AttributeConfigList_3 &attr_conf_list)
     }
     return py_attr_conf_list;
 }
+
+boost::python::list to_py(const Tango::AttributeConfigList_5 &attr_conf_list)
+{
+    boost::python::list py_attr_conf_list;
+    boost::python::object none;
+    for(unsigned long index = 0; index < attr_conf_list.length(); ++index)
+    {
+        const Tango::AttributeConfig_5 &attr_conf = attr_conf_list[index];
+        py_attr_conf_list.append(to_py(attr_conf, none));
+    }
+    return py_attr_conf_list;
+}
diff --git a/src/boost/cpp/to_py.h b/src/boost/cpp/to_py.h
index 691779c..0fdd1cb 100644
--- a/src/boost/cpp/to_py.h
+++ b/src/boost/cpp/to_py.h
@@ -353,10 +353,13 @@ boost::python::object to_py(const Tango::AttributeConfig_2 &,
                             boost::python::object py_attr_conf);
 boost::python::object to_py(const Tango::AttributeConfig_3 &,
                             boost::python::object py_attr_conf);
+boost::python::object to_py(const Tango::AttributeConfig_5 &,
+                            boost::python::object py_attr_conf);
 
 boost::python::list to_py(const Tango::AttributeConfigList &);
 boost::python::list to_py(const Tango::AttributeConfigList_2 &);
 boost::python::list to_py(const Tango::AttributeConfigList_3 &);
+boost::python::list to_py(const Tango::AttributeConfigList_5 &);
 
 template<class T>
 inline boost::python::object to_py_list(const T *seq)
diff --git a/src/boost/python/device_class.py b/src/boost/python/device_class.py
index 38888c1..1eb7b41 100644
--- a/src/boost/python/device_class.py
+++ b/src/boost/python/device_class.py
@@ -303,6 +303,25 @@ def __throw_create_command_exception(msg):
     Except.throw_exception("PyDs_WrongCommandDefinition", msg,
                            "create_command()")
 
+def __DeviceClass__create_user_default_attr_prop(self, attr_name, extra_info):
+    """for internal usage only"""
+    p = UserDefaultAttrProp()
+    for k, v in extra_info.items():
+        k_lower = k.lower()
+        method_name = "set_%s" % k_lower.replace(' ','_')
+        if hasattr(p, method_name):
+            method = getattr(p, method_name)
+            method(str(v))
+        elif k == 'delta_time':
+            p.set_delta_t(str(v))
+        elif not k_lower in ('display level', 'polling period', 'memorized'):
+            name = self.get_name()
+            msg = "Wrong definition of attribute %s in " \
+                  "class %s\nThe object extra information '%s' " \
+                  "is not recognized!" % (attr_name, name, k)
+            self.__throw_create_attribute_exception(msg)
+    return p
+
 def __DeviceClass__attribute_factory(self, attr_list):
     """for internal usage only"""
     for attr_name, attr_info in self.attr_list.items():
@@ -636,6 +655,7 @@ def __init_DeviceClass():
     DeviceClass.__init__ = __DeviceClass__init__
     DeviceClass.__str__ = __DeviceClass__str__
     DeviceClass.__repr__ = __DeviceClass__repr__
+    DeviceClass._create_user_default_attr_prop = __DeviceClass__create_user_default_attr_prop
     DeviceClass._attribute_factory = __DeviceClass__attribute_factory
     DeviceClass._command_factory = __DeviceClass__command_factory
     DeviceClass._new_device = __DeviceClass__new_device
diff --git a/src/boost/python/device_server.py b/src/boost/python/device_server.py
index 068b567..9178231 100644
--- a/src/boost/python/device_server.py
+++ b/src/boost/python/device_server.py
@@ -15,9 +15,10 @@ This is an internal PyTango module.
 
 from __future__ import print_function
 
-__all__ = [ "ChangeEventProp", "PeriodicEventProp", "ArchiveEventProp",
-            "AttributeAlarm", "EventProperties",
-            "AttributeConfig", "AttributeConfig_2", "AttributeConfig_3",
+__all__ = [ "ChangeEventProp", "PeriodicEventProp",
+            "ArchiveEventProp","AttributeAlarm", "EventProperties",
+            "AttributeConfig", "AttributeConfig_2",
+            "AttributeConfig_3", "AttributeConfig_5", "PipeConfig",
             "MultiAttrProp",
             "device_server_init"]
 
@@ -25,9 +26,11 @@ __docformat__ = "restructuredtext"
 
 import copy
 
-from ._PyTango import DevFailed, DeviceImpl, Device_3Impl, Device_4Impl, \
-    Attribute, WAttribute, MultiAttribute, MultiClassAttribute, \
-    Attr, Logger, AttrWriteType, AttrDataFormat, DispLevel, UserDefaultAttrProp
+from ._PyTango import DeviceImpl, Device_3Impl, Device_4Impl, \
+    DevFailed, Attribute, WAttribute, \
+    MultiAttribute, MultiClassAttribute, \
+    Attr, Logger, AttrWriteType, PipeWriteType, AttrDataFormat, \
+    DispLevel, UserDefaultAttrProp
 
 from .utils import document_method as __document_method
 from .utils import copy_doc
@@ -159,16 +162,34 @@ class AttributeConfig_3(object):
         self.event_prop = EventProperties()
         self.sys_extensions = []
 
+class AttributeConfig_5(object):
+    """This class represents the python interface for the Tango IDL object
+    AttributeConfig_5."""
+
+    def __init__(self):
+        _init_attr_config(self)
+        self.memorized = False
+        self.mem_init = False
+        self.level = -1
+        self.root_attr_name = ''
+        self.enum_labels = []
+        self.att_alarm = AttributeAlarm()
+        self.event_prop = EventProperties()
+        self.sys_extensions = []
+
 def __Attribute__get_properties(self, attr_cfg = None):
     """get_properties(self, attr_cfg = None) -> AttributeConfig
 
                 Get attribute properties.
 
             Parameters :
-                - conf : (AttributeConfig) the config object to be filled with 
+                - conf : the config object to be filled with
                          the attribute configuration. Default is None meaning the
-                         method will create internally a new AttributeConfig
-                         and return it
+                         method will create internally a new AttributeConfig_5
+                         and return it.
+                         Can be AttributeConfig, AttributeConfig_2,
+                         AttributeConfig_3, AttributeConfig_5 or
+                         MultiAttrProp
 
             Return     : (AttributeConfig) the config object filled with
                          attribute configuration information
@@ -176,54 +197,11 @@ def __Attribute__get_properties(self, attr_cfg = None):
             New in PyTango 7.1.4
     """
 
-    if isinstance(attr_cfg,MultiAttrProp):
-        return self._get_properties_multi_attr_prop(attr_cfg)
-    else:
-        if attr_cfg is None:
-            attr_cfg = AttributeConfig()
-        return self._get_properties(attr_cfg)
-
-def __Attribute__get_properties_2(self, attr_cfg = None):
-    """get_properties_2(self, attr_cfg = None) -> AttributeConfig_2
-
-                Get attribute properties.
-
-            Parameters :
-                - conf : (AttributeConfig_2) the config object to be filled with 
-                         the attribute configuration. Default is None meaning the
-                         method will create internally a new AttributeConfig
-                         and return it
-
-            Return     : (AttributeConfig_2) the config object filled with
-                         attribute configuration information
-
-            New in PyTango 7.1.4
-    """
-
     if attr_cfg is None:
-        attr_cfg = AttributeConfig_2()
-    return self._get_properties_2(attr_cfg)
-
-def __Attribute__get_properties_3(self, attr_cfg = None):
-    """get_properties_3(self, attr_cfg = None) -> AttributeConfig_3
-
-                Get attribute properties.
-
-            Parameters :
-                - conf : (AttributeConfig_3) the config object to be filled with 
-                         the attribute configuration. Default is None meaning the
-                         method will create internally a new AttributeConfig
-                         and return it
-
-            Return     : (AttributeConfig_3) the config object filled with
-                         attribute configuration information
-
-            New in PyTango 7.1.4
-    """
-
-    if attr_cfg is None:
-        attr_cfg = AttributeConfig_3()
-    return self._get_properties_3(attr_cfg)
+        attr_cfg = MultiAttrProp()
+    if not isinstance(attr_cfg, MultiAttrProp):
+        raise TypeError("attr_cfg must be an instance of MultiAttrProp")
+    return self._get_properties_multi_attr_prop(attr_cfg)
 
 def __Attribute__set_properties(self, attr_cfg, dev = None):
     """set_properties(self, attr_cfg, dev) -> None
@@ -234,20 +212,17 @@ def __Attribute__set_properties(self, attr_cfg, dev = None):
                 of the fileds in the AttributeConfig/ AttributeConfig_3 object
 
             Parameters :
-                - conf : (AttributeConfig or AttributeConfig_3) the config 
+                - conf : (AttributeConfig or AttributeConfig_3) the config
                          object.
-                - dev : (DeviceImpl) the device
+                - dev : (DeviceImpl) the device (not used, maintained
+                        for backward compatibility)
 
             New in PyTango 7.1.4
     """
-    
-    if isinstance(attr_cfg,MultiAttrProp):
-        return self._set_properties_multi_attr_prop(attr_cfg)
-    else:
-        if isinstance(attr_cfg, AttributeConfig_3):
-            self._set_properties_3(attr_cfg, dev)
-        else:
-            self._set_properties(attr_cfg, dev)
+
+    if not isinstance(attr_cfg, MultiAttrProp):
+        raise TypeError("attr_cfg must be an instance of MultiAttrProp")
+    return self._set_properties_multi_attr_prop(attr_cfg)
 
 def __Attribute__str(self):
     return '%s(%s)' % (self.__class__.__name__, self.get_name())
@@ -256,8 +231,6 @@ def __init_Attribute():
     Attribute.__str__ = __Attribute__str
     Attribute.__repr__ = __Attribute__str
     Attribute.get_properties = __Attribute__get_properties
-    Attribute.get_properties_2 = __Attribute__get_properties_2
-    Attribute.get_properties_3 = __Attribute__get_properties_3
     Attribute.set_properties = __Attribute__set_properties
     
 def __DeviceImpl__get_device_class(self):
diff --git a/src/boost/python/pytango_pprint.py b/src/boost/python/pytango_pprint.py
index 952d786..1f048af 100644
--- a/src/boost/python/pytango_pprint.py
+++ b/src/boost/python/pytango_pprint.py
@@ -36,7 +36,8 @@ from ._PyTango import (StdStringVector, StdLongVector, CommandInfoList,
 
 from .device_server import AttributeAlarm, EventProperties
 from .device_server import ChangeEventProp, PeriodicEventProp, ArchiveEventProp
-from .device_server import AttributeConfig, AttributeConfig_2, AttributeConfig_3
+from .device_server import AttributeConfig, AttributeConfig_2
+from .device_server import AttributeConfig_3, AttributeConfig_5
 import collections
 
 def __inc_param(obj, name):
@@ -123,6 +124,7 @@ def __registerStructStr():
         GroupReply, GroupAttrReply, GroupCmdReply,
         DevError, EventData, AttrConfEventData, DataReadyEventData,
         AttributeConfig, AttributeConfig_2, AttributeConfig_3,
+        AttributeConfig_5,
         ChangeEventProp, PeriodicEventProp, ArchiveEventProp,
         AttributeAlarm, EventProperties)
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/pytango.git



More information about the debian-science-commits mailing list