[pytango] 137/483: prepare PyTango 8

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


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

sbodomerle-guest pushed a commit to annotated tag bliss_8.10
in repository pytango.

commit 18ebf4c5af7fd1c8ec6a569279defe85a5eb5676
Author: tiagocoutinho <tiagocoutinho at 4e9c00fd-8f2e-0410-aa12-93ce3db5e235>
Date:   Thu Sep 6 12:56:45 2012 +0000

    prepare PyTango 8
    
    git-svn-id: http://svn.code.sf.net/p/tango-cs/code/bindings/PyTango/trunk@21095 4e9c00fd-8f2e-0410-aa12-93ce3db5e235
---
 PyTango/__init__.py                            |   4 +-
 PyTango/ipython/ipython_00_11/ipython_00_11.py |   2 +-
 PyTango/utils.py                               |  58 +++++-
 doc/_static/banner.png                         | Bin 3744581 -> 427830 bytes
 doc/{ => _static}/logo-medium.png              | Bin
 doc/{ => _static}/logo.png                     | Bin
 doc/conf.py                                    |  18 +-
 doc/contents.rst                               |   6 +-
 doc/faq.rst                                    |   8 +-
 doc/index.rst                                  |  47 -----
 doc/itango/highlights.rst                      |  14 +-
 doc/itango/index.rst                           |   1 +
 doc/itango/itango00.png                        | Bin 22528 -> 30674 bytes
 doc/quicktour.rst                              | 140 ++++++--------
 doc/server/index.rst                           | 243 +++++++++++++------------
 doc/start.rst                                  |  77 ++++----
 doc/title.png                                  | Bin 80394 -> 0 bytes
 doc/utilities.rst                              |   3 +
 setup.py                                       |   1 -
 19 files changed, 303 insertions(+), 319 deletions(-)

diff --git a/PyTango/__init__.py b/PyTango/__init__.py
index 7620c5d..19acd31 100644
--- a/PyTango/__init__.py
+++ b/PyTango/__init__.py
@@ -86,6 +86,8 @@ __all__ = [ 'AccessControlType', 'ApiUtil', 'ArchiveEventInfo',
 
 __docformat__ = "restructuredtext"
 
+import sys
+
 try:
     from ._PyTango import DeviceProxy
 except ImportError as ie:
@@ -98,7 +100,6 @@ except ImportError as ie:
     print("You must leave this directory first before using PyTango, otherwise the")
     print("source distribution will conflict with the installed PyTango")
     print(80*"-")
-    import sys
     sys.exit(1)
 
 from ._PyTango import (AccessControlType, ApiUtil, ArchiveEventInfo,
@@ -166,6 +167,7 @@ from .globals import get_class, get_classes, get_cpp_class, get_cpp_classes, \
     delete_class_list, class_list, cpp_class_list, constructed_class
 from .utils import is_scalar_type, is_array_type, is_numerical_type, \
     is_int_type, is_float_type, obj_2_str, seqStr_2_obj
+from .utils import server_run
 from .tango_numpy import NumpyType, numpy_type, numpy_spectrum, numpy_image
 
 from .pytango_init import init as __init
diff --git a/PyTango/ipython/ipython_00_11/ipython_00_11.py b/PyTango/ipython/ipython_00_11/ipython_00_11.py
index fc1813e..7772545 100644
--- a/PyTango/ipython/ipython_00_11/ipython_00_11.py
+++ b/PyTango/ipython/ipython_00_11/ipython_00_11.py
@@ -1060,7 +1060,7 @@ def load_config(config):
     d.update(IPython.utils.coloransi.TermColors.__dict__)
 
     so = Struct(
-        tango_banner="""%(Blue)shint: Try typing: mydev = Device("%(LightBlue)s<tab>%(Normal)s""")
+        tango_banner="""%(Blue)shint: Try typing: mydev = Device("%(LightBlue)s<tab>%(Normal)s\n""")
 
     so = config.get("tango_options", so)
 
diff --git a/PyTango/utils.py b/PyTango/utils.py
index d2b6989..fbbb24f 100644
--- a/PyTango/utils.py
+++ b/PyTango/utils.py
@@ -44,7 +44,7 @@ import numbers
 
 from ._PyTango import StdStringVector, StdDoubleVector, \
     DbData, DbDevInfos, DbDevExportInfos, CmdArgType, AttrDataFormat, \
-    EventData, AttrConfEventData, DataReadyEventData
+    EventData, AttrConfEventData, DataReadyEventData, DevFailed
 from ._PyTango import constants
 
 _scalar_int_types = (CmdArgType.DevShort, CmdArgType.DevUShort,
@@ -1021,3 +1021,59 @@ def from_version_str_to_hex_str(version_str):
 def from_version_str_to_int(version_str):
     return int(from_version_str_to_hex_str(version_str, 16))
 
+def __server_run(classes, args=None, msg_stream=sys.stderr):
+    import PyTango
+    if msg_stream is None:
+        import io
+        msg_stream = io.BytesIO()
+    
+    if args is None:
+        args = sys.argv
+    util = PyTango.Util(args)
+
+    for klass_name, (klass_klass, klass) in classes.items():
+        util.add_class(klass_klass, klass, klass_name)
+    u_instance = PyTango.Util.instance()
+    u_instance.server_init()
+    msg_stream.write("Ready to accept request\n")
+    u_instance.server_run()
+    
+def server_run(classes, args=None, msg_stream=sys.stderr):
+    """Provides a simple way to run a tango server. It handles exceptions
+       by writting a message to the msg_stream
+       
+       For example, if you want to expose a server of type "MyServer" which
+       is defined by tango classes `MyServerClass` and `MyServer` then::
+       
+           import PyTango
+           PyTango.server_run({"MyServer": (MyServerClass, MyServer)})
+        
+       :param classes:
+           a dictionary where keyword is the tango class name and value is a 
+           sequence of Tango Class python class, and Tango python class
+       :type classes: dict
+       
+       :param args:
+           list of command line arguments [default: None, meaning use sys.argv]
+       :type args: list
+       
+       :param msg_stream:
+           stream where to put messages [default: sys.stderr]
+       
+       .. versionadded:: 8.0.0"""
+       
+    if msg_stream is None:
+        import io
+        msg_stream = io.BytesIO()
+    write = msg_stream.write
+    try:
+        return __server_run(classes, args=args)
+        write("Exiting:\n")
+    except KeyboardInterrupt:
+        write("Exiting: Keyboard interrupt\n")
+    except DevFailed as df:
+        write("Exiting: Server exited with PyTango.DevFailed:\n" + str(df) + "\n")
+    except Exception as e:
+        write("Exiting: Server exited with unforseen exception:\n" + str(e) + "\n")
+    write("\nExited\n")
+
diff --git a/doc/_static/banner.png b/doc/_static/banner.png
index b54ce1d..67ec30d 100644
Binary files a/doc/_static/banner.png and b/doc/_static/banner.png differ
diff --git a/doc/logo-medium.png b/doc/_static/logo-medium.png
similarity index 100%
rename from doc/logo-medium.png
rename to doc/_static/logo-medium.png
diff --git a/doc/logo.png b/doc/_static/logo.png
similarity index 100%
rename from doc/logo.png
rename to doc/_static/logo.png
diff --git a/doc/conf.py b/doc/conf.py
index 6946518..0443ce7 100644
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -69,7 +69,7 @@ source_suffix = '.rst'
 #source_encoding = 'utf-8'
 
 # The master toctree document.
-master_doc = 'index'
+master_doc = 'contents'
 
 # General information about the project.
 project = u'PyTango'
@@ -151,7 +151,7 @@ html_theme = 'default'
 
 # The name of an image file (relative to this directory) to place at the top
 # of the sidebar.
-html_logo = 'logo.png'
+html_logo = '_static/logo.png'
 
 # The name of an image file (within the static path) to use as favicon of the
 # docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
@@ -172,11 +172,11 @@ html_static_path = ['_static']
 #html_use_smartypants = True
 
 # Custom sidebar templates, maps document names to template names.
-#html_sidebars = {}
+html_sidebars = {'index': ['indexsidebar.html']}
 
 # Additional templates that should be rendered to pages, maps page names to
 # template names.
-#html_additional_pages = {}
+html_additional_pages = { 'index' : 'index.html' }
 
 # If false, no module index is generated.
 #html_use_modindex = True
@@ -219,13 +219,18 @@ latex_font_size = '10pt'
 # Grouping the document tree into LaTeX files. List of tuples
 # (source start file, target name, title, author, documentclass [howto/manual]).
 latex_documents = [
-  ('index', 'PyTango.tex', u'PyTango Documentation',
+  ('contents', 'PyTango.tex', u'PyTango Documentation',
    u'PyTango team', 'manual'),
 ]
 
 # The name of an image file (relative to this directory) to place at the top of
 # the title page.
-latex_logo = 'logo.png'
+latex_logo = '_static/logo.png'
+
+latex_elements = {
+    'fontpkg': '\\usepackage{palatino}',
+}
+latex_show_urls = 'footnote'
 
 # For "manual" documents, if this is true, then toplevel headings are parts,
 # not chapters.
@@ -246,6 +251,7 @@ intersphinx_mapping = {
     'http://docs.python.org/dev': None,
     'http://docs.scipy.org/doc/scipy/reference' : None,
     'http://docs.scipy.org/doc/numpy' : None,
+    'http://ipython.org/ipython-doc/stable/' : None,
 }
 
 def copy_spaces(origin):
diff --git a/doc/contents.rst b/doc/contents.rst
index 91f3c81..524f5c2 100644
--- a/doc/contents.rst
+++ b/doc/contents.rst
@@ -11,6 +11,7 @@ Contents
     :maxdepth: 2
 
     start
+    quicktour
     itango/index
     API <api>
     faq
@@ -18,4 +19,7 @@ Contents
     
 * :ref:`genindex`
 * :ref:`modindex`
-* :ref:`search`
\ No newline at end of file
+* :ref:`search`
+
+**Last update:** |today|
+
diff --git a/doc/faq.rst b/doc/faq.rst
index aec878b..d3b4908 100644
--- a/doc/faq.rst
+++ b/doc/faq.rst
@@ -268,7 +268,7 @@ In order to tell tango the dimensions of the image you had to specify them as::
     dim_y = 2
     attr.set_value(image, dim_x, dim_y)
 
-In PyTango7 it is still supported, but the preferred way is to use a
+In PyTango 8 it is still supported, but the preferred way is to use a
 sequence of sequences (instead of a flat sequence), so the dimensions
 are inherent and not needed anymore::
 
@@ -305,16 +305,16 @@ This is what you would do with PyTango <= 3.0.4::
     print "flatList =", flatList
     # flatList = [ 1, 2, 3, 4 ]
 
-You can still do it with PyTango7. However I recommend::
+You can still do it with PyTango 8. However I recommend::
 
     image = attr.get_write_value()
     print "image =", image
     # image = numpy.array([[1, 2], [3, 4]])
 
-If PyTango7 is compiled without numpy support, you will get a sequence
+If PyTango 8 is compiled without numpy support, you will get a sequence
 of sequences, which makes more sense than a flat list.
 
-If PyTango7 is compiled with numpy support it does not only makes more sense
+If PyTango 8 is compiled with numpy support it does not only makes more sense
 but it is also considerably **faster and memory friendlier**.
 
 If PyTango is compiled with numpy support but you prefer a list of lists for
diff --git a/doc/index.rst b/doc/index.rst
deleted file mode 100644
index 0118ea3..0000000
--- a/doc/index.rst
+++ /dev/null
@@ -1,47 +0,0 @@
-.. PyTango documentation master file, created by
-    sphinx-quickstart on Fri Jun  5 14:31:50 2009.
-    You can adapt this file completely to your liking, but it should at least
-    contain the root `toctree` directive.
-
-.. highlight:: python
-   :linenothreshold: 4
-
-Welcome to PyTango |version| documentation!
-===========================================
-
-PyTango is a python module that exposes to Python_ the complete Tango_ C++ API
-(including both client and server).
-
-This means that you can write not only tango applications (scripts, CLIs, GUIs) 
-that access tango device servers but also tango device servers themselves, all 
-of this in pure python.
-
-.. figure:: _static/banner.png
-    :width: 80%
-    :align: center
-    :alt: ITango
-
-Check out the :ref:`getting started guide<getting-started>` to learn how to
-build and/or install PyTango and after that the :ref:`quick tour <quick-tour>` 
-can help you with the first steps in the PyTango world.
-
-If you need help understanding what Tango itself really is, you can check the
-Tango_ homepage where you will find plenty of documentation, FAQ and tutorials.
-
-.. only:: html
-
-    For convenience here are the links to other versions:
-
-    .. hlist::
-        :columns: 4
-
-        - `Latest development <http://www.tango-controls.org/static/PyTango/development/doc/html>`_
-        - `Latest stable <http://www.tango-controls.org/static/PyTango/latest/doc/html>`_
-        - `7.2.3 <http://www.tango-controls.org/static/PyTango/v723/doc/html/index.html>`_
-        - `7.1.6 <http://www.tango-controls.org/static/PyTango/v716/doc/html/index.html>`_
-    
-:Last Update: |today|
-
-.. _Python: http://www.python.org/
-.. _IPython: http://ipython.scipy.org/
-.. _Tango: http://www.tango-controls.org/
diff --git a/doc/itango/highlights.rst b/doc/itango/highlights.rst
index 85b83cb..bfd12a1 100644
--- a/doc/itango/highlights.rst
+++ b/doc/itango/highlights.rst
@@ -577,7 +577,7 @@ Here is the code for the $HOME/.ipython/ipy_profile_orbit.py:
 
 Then start your CLI with::
 
-    ipython -p orbit
+    $ ipython --profile=orbit
 
 and you will have something like this
 
@@ -643,17 +643,5 @@ To stop monitoring the attribute:
 .. note::
     Type 'mon?' to see detailed information about this magic command
 
-.. warning::
-     
-    Experimental: The monitor table can be shown in a GUI. For this feature to 
-    be available you need two things:
-
-        #. Have PyQt4 (>= 4.1) installed
-        #. Start itango with '-q4thread' support: 'ipython -q4thread -p itango'
-
-    When you type '%mon' the following table should appear:
-
-        .. image:: itango04.png
-
 .. _IPython: http://ipython.org/
 .. _Tango: http://www.tango-controls.org/
diff --git a/doc/itango/index.rst b/doc/itango/index.rst
index 53038bf..3a6cd05 100644
--- a/doc/itango/index.rst
+++ b/doc/itango/index.rst
@@ -23,6 +23,7 @@ and you should get something like this:
 
 .. image:: itango00.png
     :align: center
+    :width: 75%
 
 .. toctree::
     :maxdepth: 1
diff --git a/doc/itango/itango00.png b/doc/itango/itango00.png
index 02d4a6a..3c0e542 100644
Binary files a/doc/itango/itango00.png and b/doc/itango/itango00.png differ
diff --git a/doc/quicktour.rst b/doc/quicktour.rst
index fd9c649..8766bb6 100644
--- a/doc/quicktour.rst
+++ b/doc/quicktour.rst
@@ -1,57 +1,54 @@
 .. _quick-tour:
 
-A quick tour
-------------
+Quick tour
+============
 
 This quick tour will guide you through the first steps on using PyTango.
 This is the new quick tour guide based on the :ref:`itango` console.
 You can still find the old version of this tour based on a simple python
 console :ref:`here <quick-tour-old>`.
 
+Quick tour on the client side
+-----------------------------
+
 Check PyTango version
 ~~~~~~~~~~~~~~~~~~~~~
 
-Start an ipython tango console with:
+Start an ipython tango console with::
 
-    #. on IPython <= 0.10:
-    
-        ipython -p tango
-        
-    #. on IPython > 0.10:
-    
-        ipython --profile=tango
+    $ itango
 
 and type:
 
     .. sourcecode:: itango
 
         ITango [1]: PyTango.__version__
-        Result [1]: '7.1.2'
+        Result [1]: '8.0.0'
 
         ITango [2]: PyTango.__version_long__
-        Result [2]: '7.1.2dev0'
+        Result [2]: '8.0.0dev0'
 
         ITango [3]: PyTango.__version_number__
-        Result [3]: 712
+        Result [3]: 800
 
         ITango [4]: PyTango.__version_description__
-        Result [4]: 'This version implements the C++ Tango 7.1 API.'
+        Result [4]: 'This version implements the C++ Tango 8.0 API.'
 
 or alternatively:
 
     .. sourcecode:: itango
 
         ITango [1]: PyTango.Release.version
-        Result [1]: '7.1.2'
+        Result [1]: '8.0.0'
 
         ITango [2]: PyTango.Release.version_long
-        Result [2]: '7.1.2dev0'
+        Result [2]: '8.0.0dev0'
 
         ITango [3]: PyTango.Release.version_number
-        Result [3]: 712
+        Result [3]: 800
 
         ITango [4]: PyTango.Release.version_description
-        Result [4]: 'This version implements the C++ Tango 7.1 API.'
+        Result [4]: 'This version implements the C++ Tango 8.0 API.'
 
 .. tip::
 
@@ -72,7 +69,7 @@ From a client (This is only possible since PyTango 7.0.0)
         ITango [1]: import PyTango.constants
 
         ITango [2]: PyTango.constants.TgLibVers
-        Result [2]: '7.1.1'
+        Result [2]: '8.0.0'
 
 From a server you can alternatively do::
     
@@ -116,14 +113,14 @@ determine if it is running or not.
 .. note::
     Did you notice that you didn't write PyTango.DeviceProxy but instead just
     DeviceProxy? This is because :ref:`itango` automatically exports the
-    :class:`PyTango.DeviceProxy`, :class:`PyTango.AttributeProxy`,
-    :class:`PyTango.Database` and :class:`PyTango.Group` classes to the
+    :class:`~PyTango.DeviceProxy`, :class:`~PyTango.AttributeProxy`,
+    :class:`PyTango.Database` and :class:`~PyTango.Group` classes to the
     namespace. If you are writting code outside :ref:`itango` you **MUST**
     use the `PyTango` module prefix.
 
 .. tip::
 
-    When typing the device name in the :class:`PyTango.DeviceProxy` creation
+    When typing the device name in the :class:`~PyTango.DeviceProxy` creation
     line, try pressing the <tab> key. You should get a list of devices::
     
         tangotest = DeviceProxy("sys<tab>
@@ -376,36 +373,37 @@ API should be accessed from Python.
                             
         ITango [24]: axis1.command_inout("AxisStop")
 
-A quick tour of Tango device server binding through an example
---------------------------------------------------------------
+Quick tour on the server side
+-----------------------------
 
-To write a tango device server in python, you need to import two modules in your script which are:
+To write a tango device server in python, you must first import the
+:mod:`PyTango` module in your code.
 
-1. The PyTango module
+Below is the python code for a Tango device server with two commands and two
+attributes. The commands are:
 
-2. The python sys module provided in the classical python distribution
+1. IOLOng which receives a Tango Long and return it multiply by 2. This command
+   is allowed only if the device is in the ON state.
 
-The following in the python script for a Tango device server with two commands and two attributes. The commands are:
-
-1. IOLOng which receives a Tango Long and return it multiply by 2. This command is allowed only if the device is in the ON state.
-
-2. IOStringArray which receives an array of Tango strings and which returns it but in the reverse order. This command is only allowed if the device is in the ON state.
+2. IOStringArray which receives an array of Tango strings and which returns it
+   but in the reverse order. This command is only allowed if the device is in
+   the ON state.
 
 The attributes are:
 
-1. Long_attr wich is a Tango long attribute, Scalar and Read only with a minimum alarm set to 1000 and a maximum alarm set to 1500
+1. Long_attr wich is a Tango long attribute, Scalar and Read only with a
+   minimum alarm set to 1000 and a maximum alarm set to 1500
 
 2. Short_attr_rw which is a Tango short attribute, Scalar and Read/Write
 
 The following code is the complete device server code::
 
     import PyTango
-    import sys
 
-    class PyDsExp(PyTango.Device_3Impl):
+    class PyDsExp(PyTango.Device_4Impl):
 
         def __init__(self,cl,name):
-            PyTango.Device_3Impl.__init__(self,cl,name)
+            PyTango.Device_4Impl.__init__(self,cl,name)
             self.debug_stream('In PyDsExp __init__')
             PyDsExp.init_device(self)
 
@@ -415,14 +413,12 @@ The following code is the complete device server code::
             self.attr_short_rw = 66
             self.attr_long = 1246
 
-    #------------------------------------------------------------------
-
         def delete_device(self):
             self.debug_stream('[delete_device] for device %s ' % self.get_name())
 
-    #------------------------------------------------------------------
-    # COMMANDS
-    #------------------------------------------------------------------
+        #------------------------------------------------------------------
+        # COMMANDS
+        #------------------------------------------------------------------
 
         def is_IOLong_allowed(self):
             return self.get_state() == PyTango.DevState.ON
@@ -433,8 +429,6 @@ The following code is the complete device server code::
             self.debug_stream('[IOLong::execute] return number %s' % str(in_data))
             return in_data;
 
-    #------------------------------------------------------------------
-
         def is_IOStringArray_allowed(self):
             return self.get_state() == PyTango.DevState.ON
 
@@ -450,58 +444,32 @@ The following code is the complete device server code::
             self.y = out_data
             return out_data
 
-    #------------------------------------------------------------------
-    # ATTRIBUTES
-    #------------------------------------------------------------------
+        #------------------------------------------------------------------
+        # ATTRIBUTES
+        #------------------------------------------------------------------
 
         def read_attr_hardware(self, data):
             self.debug_stream('In read_attr_hardware')
 
-    #------------------------------------------------------------------
-
         def read_Long_attr(self, the_att):
             self.debug_stream('[PyDsExp::read_attr] attribute name Long_attr')
-
-            # Before PyTango 7.0.0
-            #PyTango.set_attribute_value(the_att, self.attr_long)
-
-            # Now:
             the_att.set_value(self.attr_long)
 
-    #------------------------------------------------------------------
-
         def read_Short_attr_rw(self, the_att):
             self.debug_stream('[PyDsExp::read_attr] attribute name Short_attr_rw')
-
-            # Before PyTango 7.0.0
-            #PyTango.set_attribute_value(the_att, self.attr_short_rw)
-            
-            # Now:
             the_att.set_value(self.attr_short_rw)
 
-    #------------------------------------------------------------------
-
         def write_Short_attr_rw(self, the_att):
             self.debug_stream('In write_Short_attr_rw for attribute %s' % the_att.get_name())
-
-            # Before PyTango 7.0.0
-            #data = []
-            #PyTango.get_write_value(the_att, data)
-
-            # Now:
             data = the_att.get_write_value()
             self.attr_short_rw = data[0]
 
-    #------------------------------------------------------------------
-    # CLASS
-    #------------------------------------------------------------------
-
+    
     class PyDsExpClass(PyTango.DeviceClass):
 
         def __init__(self, name):
             PyTango.DeviceClass.__init__(self, name)
-            self.set_type("TestDevice")
-            print 'In PyDsExpClass __init__'
+            self.set_type("PyDsExp")
 
         cmd_list = { 'IOLong' : [ [ PyTango.ArgType.DevLong, "Number" ],
                                   [ PyTango.ArgType.DevLong, "Number * 2" ] ],
@@ -518,21 +486,17 @@ The following code is the complete device server code::
                                            PyTango.AttrDataFormat.SCALAR,
                                            PyTango.AttrWriteType.READ_WRITE ] ]
         }
+    
+    
+    def main():
+        PyTango.server_run({"PyDsExp" : (PyDsExpClass, PyDsExp)})
 
     if __name__ == '__main__':
-        try:
-            util = PyTango.Util(sys.argv)
-            
-            # 
-            # Deprecated: util.add_TgClass(PyDsExpClass, PyDsExp, 'PyDsExp')
-            util.add_class(PyDsExpClass, PyDsExp, 'PyDsExp')
-            
-            U = PyTango.Util.instance()
-            U.server_init()
-            U.server_run()
-        except PyTango.DevFailed,e:
-            print '-------> Received a DevFailed exception:',e
-        except Exception,e:
-            print '-------> An unforeseen exception occured....',e
+        main()
+
+.. toctree::
+    :hidden:
 
+    Quick tour (original) <quicktour_old>
+    
 .. _IPython: http://ipython.scipy.org/
diff --git a/doc/server/index.rst b/doc/server/index.rst
index 1c7a747..caf5099 100644
--- a/doc/server/index.rst
+++ b/doc/server/index.rst
@@ -400,6 +400,8 @@ will be the used for the input arguments. Also, it is recomended to use numpy
 arrays of the appropiate type for output arguments as well, as it is much more
 efficient.
 
+**For scalar types**
+
 +-------------------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
 |   Tango data type       |              Python 2.x type                                              |              Python 3.x type (*New in PyTango 8.0*)                       |
 +=========================+===========================================================================+===========================================================================+
@@ -434,119 +436,134 @@ efficient.
 |                         |                                                                           |    In this case it is :py:obj:`str` (decoded with default python          |
 |                         |                                                                           |    encoding *utf-8*))                                                     |
 +-------------------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
-|                         | ========= ============================================================    | ========= =============================================================== |
-|                         | ExtractAs                        Data Type                                | ExtractAs                        Data Type                                |
-|                         | ========= ============================================================    | ========= =============================================================== |
-|    DEVVAR_CHARARRAY     | [Numpy]   :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.uint8`)        | [Numpy]   :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.uint8`)        |
-|                         | Bytes     :py:obj:`bytes` (which is in fact equal to :py:obj:`str`)       | Bytes     :py:obj:`bytes`                                                 |
-|                         | ByteArray :py:obj:`bytearray`                                             | ByteArray :py:obj:`bytearray`                                             |
-|                         | String    :py:obj:`str`                                                   | String    :py:obj:`str` (decoded with default python encoding *utf-8*!!!) |
-|                         | List      :py:class:`list` <:py:obj:`int`>                                | List      :py:class:`list` <:py:obj:`int`>                                |
-|                         | Tuple     :py:class:`tuple` <:py:obj:`int`>                               | Tuple     :py:class:`tuple` <:py:obj:`int`>                               |
-|                         | ========= ============================================================    | ========= =============================================================== |
-+-------------------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
-|                         | ========= =============================================================== | ========= =============================================================== |
-|                         | ExtractAs                        Data Type                                | ExtractAs                        Data Type                                |
-|                         | ========= =============================================================== | ========= =============================================================== |
-|    DEVVAR_SHORTARRAY    | [Numpy]   :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.uint16`)       | [Numpy]   :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.uint16`)       |
-|                         | Bytes     :py:obj:`bytes` (which is in fact equal to :py:obj:`str`)       | Bytes     :py:obj:`bytes`                                                 |
-|                         | ByteArray :py:obj:`bytearray`                                             | ByteArray :py:obj:`bytearray`                                             |
-|                         | String    :py:obj:`str`                                                   | String    :py:obj:`str` (decoded with default python encoding *utf-8*!!!) |
-|                         | List      :py:class:`list` <:py:obj:`int`>                                | List      :py:class:`list` <:py:obj:`int`>                                |
-|                         | Tuple     :py:class:`tuple` <:py:obj:`int`>                               | Tuple     :py:class:`tuple` <:py:obj:`int`>                               |
-|                         | ========= =============================================================== | ========= =============================================================== |
-+-------------------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
-|                         | ========= =============================================================== | ========= =============================================================== |
-|                         | ExtractAs                        Data Type                                | ExtractAs                        Data Type                                |
-|                         | ========= =============================================================== | ========= =============================================================== |
-|    DEVVAR_LONGARRAY     | [Numpy]   :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.uint32`)       | [Numpy]   :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.uint32`)       |
-|                         | Bytes     :py:obj:`bytes` (which is in fact equal to :py:obj:`str`)       | Bytes     :py:obj:`bytes`                                                 |
-|                         | ByteArray :py:obj:`bytearray`                                             | ByteArray :py:obj:`bytearray`                                             |
-|                         | String    :py:obj:`str`                                                   | String    :py:obj:`str` (decoded with default python encoding *utf-8*!!!) |
-|                         | List      :py:class:`list` <:py:obj:`int`>                                | List      :py:class:`list` <:py:obj:`int`>                                |
-|                         | Tuple     :py:class:`tuple` <:py:obj:`int`>                               | Tuple     :py:class:`tuple` <:py:obj:`int`>                               |
-|                         | ========= =============================================================== | ========= =============================================================== |
-+-------------------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
-|                         | ========= =============================================================== | ========= =============================================================== |
-|                         | ExtractAs                        Data Type                                | ExtractAs                        Data Type                                |
-|                         | ========= =============================================================== | ========= =============================================================== |
-|    DEVVAR_LONG64ARRAY   | [Numpy]   :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.uint64`)       | [Numpy]   :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.uint64`)       |
-|                         | Bytes     :py:obj:`bytes` (which is in fact equal to :py:obj:`str`)       | Bytes     :py:obj:`bytes`                                                 |
-|                         | ByteArray :py:obj:`bytearray`                                             | ByteArray :py:obj:`bytearray`                                             |
-|                         | String    :py:obj:`str`                                                   | String    :py:obj:`str` (decoded with default python encoding *utf-8*!!!) |
-|                         | List      :py:class:`list` <int (64 bits) / long (32 bits)>               | List      :py:class:`list` <:py:obj:`int`>                                |
-|                         | Tuple     :py:class:`tuple` <int (64 bits) / long (32 bits)>              | Tuple     :py:class:`tuple` <:py:obj:`int`>                               |
-|                         | ========= =============================================================== | ========= =============================================================== |
-+-------------------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
-|                         | ========= =============================================================== | ========= =============================================================== |
-|                         | ExtractAs                        Data Type                                | ExtractAs                        Data Type                                |
-|                         | ========= =============================================================== | ========= =============================================================== |
-|    DEVVAR_FLOATARRAY    | [Numpy]   :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.float32`)      | [Numpy]   :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.float32`)      |
-|                         | Bytes     :py:obj:`bytes` (which is in fact equal to :py:obj:`str`)       | Bytes     :py:obj:`bytes`                                                 |
-|                         | ByteArray :py:obj:`bytearray`                                             | ByteArray :py:obj:`bytearray`                                             |
-|                         | String    :py:obj:`str`                                                   | String    :py:obj:`str` (decoded with default python encoding *utf-8*!!!) |
-|                         | List      :py:class:`list` <:py:obj:`int`>                                | List      :py:class:`list` <:py:obj:`int`>                                |
-|                         | Tuple     :py:class:`tuple` <:py:obj:`int`>                               | Tuple     :py:class:`tuple` <:py:obj:`int`>                               |
-|                         | ========= =============================================================== | ========= =============================================================== |
-+-------------------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
-|                         | ========= =============================================================== | ========= =============================================================== |
-|                         | ExtractAs                        Data Type                                | ExtractAs                        Data Type                                |
-|                         | ========= =============================================================== | ========= =============================================================== |
-|    DEVVAR_DOUBLEARRAY   | [Numpy]   :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.float64`)      | [Numpy]   :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.float64`)      |
-|                         | Bytes     :py:obj:`bytes` (which is in fact equal to :py:obj:`str`)       | Bytes     :py:obj:`bytes`                                                 |
-|                         | ByteArray :py:obj:`bytearray`                                             | ByteArray :py:obj:`bytearray`                                             |
-|                         | String    :py:obj:`str`                                                   | String    :py:obj:`str` (decoded with default python encoding *utf-8*!!!) |
-|                         | List      :py:class:`list` <:py:obj:`int`>                                | List      :py:class:`list` <:py:obj:`int`>                                |
-|                         | Tuple     :py:class:`tuple` <:py:obj:`int`>                               | Tuple     :py:class:`tuple` <:py:obj:`int`>                               |
-|                         | ========= =============================================================== | ========= =============================================================== |
-+-------------------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
-|                         | ========= =============================================================== | ========= =============================================================== |
-|                         | ExtractAs                        Data Type                                | ExtractAs                        Data Type                                |
-|                         | ========= =============================================================== | ========= =============================================================== |
-|    DEVVAR_USHORTARRAY   | [Numpy]   :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.uint16`)       | [Numpy]   :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.uint16`)       |
-|                         | Bytes     :py:obj:`bytes` (which is in fact equal to :py:obj:`str`)       | Bytes     :py:obj:`bytes`                                                 |
-|                         | ByteArray :py:obj:`bytearray`                                             | ByteArray :py:obj:`bytearray`                                             |
-|                         | String    :py:obj:`str`                                                   | String    :py:obj:`str` (decoded with default python encoding *utf-8*!!!) |
-|                         | List      :py:class:`list` <:py:obj:`int`>                                | List      :py:class:`list` <:py:obj:`int`>                                |
-|                         | Tuple     :py:class:`tuple` <:py:obj:`int`>                               | Tuple     :py:class:`tuple` <:py:obj:`int`>                               |
-|                         | ========= =============================================================== | ========= =============================================================== |
-+-------------------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
-|                         | ========= =============================================================== | ========= =============================================================== |
-|                         | ExtractAs                        Data Type                                | ExtractAs                        Data Type                                |
-|                         | ========= =============================================================== | ========= =============================================================== |
-|    DEVVAR_ULONGARRAY    | [Numpy]   :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.uint32`)       | [Numpy]   :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.uint32`)       |
-|                         | Bytes     :py:obj:`bytes` (which is in fact equal to :py:obj:`str`)       | Bytes     :py:obj:`bytes`                                                 |
-|                         | ByteArray :py:obj:`bytearray`                                             | ByteArray :py:obj:`bytearray`                                             |
-|                         | String    :py:obj:`str`                                                   | String    :py:obj:`str` (decoded with default python encoding *utf-8*!!!) |
-|                         | List      :py:class:`list` <:py:obj:`int`>                                | List      :py:class:`list` <:py:obj:`int`>                                |
-|                         | Tuple     :py:class:`tuple` <:py:obj:`int`>                               | Tuple     :py:class:`tuple` <:py:obj:`int`>                               |
-|                         | ========= =============================================================== | ========= =============================================================== |
-+-------------------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
-|                         | ========= =============================================================== | ========= =============================================================== |
-|                         | ExtractAs                        Data Type                                | ExtractAs                        Data Type                                |
-|                         | ========= =============================================================== | ========= =============================================================== |
-|    DEVVAR_ULONG64ARRAY  | [Numpy]   :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.uint64`)       | [Numpy]   :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.uint64`)       |
-|                         | Bytes     :py:obj:`bytes` (which is in fact equal to :py:obj:`str`)       | Bytes     :py:obj:`bytes`                                                 |
-|                         | ByteArray :py:obj:`bytearray`                                             | ByteArray :py:obj:`bytearray`                                             |
-|                         | String    :py:obj:`str`                                                   | String    :py:obj:`str` (decoded with default python encoding *utf-8*!!!) |
-|                         | List      :py:class:`list` <int (64 bits) / long (32 bits)>               | List      :py:class:`list` <:py:obj:`int`>                                |
-|                         | Tuple     :py:class:`tuple` <int (64 bits) / long (32 bits)>              | Tuple     :py:class:`tuple` <:py:obj:`int`>                               |
-|                         | ========= =============================================================== | ========= =============================================================== |
-+-------------------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
-|   DEVVAR_STRINGARRAY    | sequence<:py:obj:`str`>                                                   | sequence<:py:obj:`str`> (decoded with *latin-1*, aka *ISO-8859-1*)        |
-+-------------------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
-|                         | sequence of two elements:                                                 | sequence of two elements:                                                 |
-|  DEV_LONGSTRINGARRAY    |                                                                           |                                                                           |
-|                         | 0. :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.int32`) or            | 0. :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.int32`) or            |
-|                         |    sequence<:py:obj:`int`>                                                |    sequence<:py:obj:`int`>                                                |
-|                         | 1. sequence<:py:obj:`str`>                                                | 1.  sequence<:py:obj:`str`> (decoded with *latin-1*, aka *ISO-8859-1*)    |
-+-------------------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
-|                         | sequence of two elements:                                                 | sequence of two elements:                                                 |
-|  DEV_DOUBLESTRINGARRAY  |                                                                           |                                                                           |
-|                         | 0. :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.float64`) or          | 0. :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.float64`) or          |
-|                         |    sequence<:py:obj:`int`>                                                |    sequence<:py:obj:`int`>                                                |
-|                         | 1. sequence<:py:obj:`str`>                                                | 1. sequence<:py:obj:`str`> (decoded with *latin-1*, aka *ISO-8859-1*)     |
-+-------------------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+
+**For array types**
+
++-------------------------+-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|    Tango data type      |   ExtractAs     |                          Data type (Python 2.x)                           |             Data type (Python 3.x) (*New in PyTango 8.0*)                 |
++=========================+=================+===========================================================================+===========================================================================+
+| DEVVAR_CHARARRAY        | Numpy           | :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.uint8`)                  | :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.uint8`)                  |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | Bytes           | :py:obj:`bytes` (which is in fact equal to :py:obj:`str`)                 | :py:obj:`bytes`                                                           |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | ByteArray       | :py:obj:`bytearray`                                                       | :py:obj:`bytearray`                                                       |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | String          | :py:obj:`str`                                                             | String    :py:obj:`str` (decoded with default python encoding *utf-8*!!!) |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | List            | :py:class:`list` <:py:obj:`int`>                                          | :py:class:`list` <:py:obj:`int`>                                          |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | Tuple           | :py:class:`tuple` <:py:obj:`int`>                                         | :py:class:`tuple` <:py:obj:`int`>                                         |
++-------------------------+-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| DEVVAR_SHORTARRAY       | Numpy           | :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.uint16`)                 | :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.uint16`)                 |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | Bytes           | :py:obj:`bytes` (which is in fact equal to :py:obj:`str`)                 | :py:obj:`bytes`                                                           |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | ByteArray       | :py:obj:`bytearray`                                                       | :py:obj:`bytearray`                                                       |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | String          | :py:obj:`str`                                                             | String    :py:obj:`str` (decoded with default python encoding *utf-8*!!!) |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | List            | :py:class:`list` <:py:obj:`int`>                                          | :py:class:`list` <:py:obj:`int`>                                          |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | Tuple           | :py:class:`tuple` <:py:obj:`int`>                                         | :py:class:`tuple` <:py:obj:`int`>                                         |
++-------------------------+-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| DEVVAR_LONGARRAY        | Numpy           | :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.uint32`)                 | :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.uint32`)                 |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | Bytes           | :py:obj:`bytes` (which is in fact equal to :py:obj:`str`)                 | :py:obj:`bytes`                                                           |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | ByteArray       | :py:obj:`bytearray`                                                       | :py:obj:`bytearray`                                                       |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | String          | :py:obj:`str`                                                             | String    :py:obj:`str` (decoded with default python encoding *utf-8*!!!) |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | List            | :py:class:`list` <:py:obj:`int`>                                          | :py:class:`list` <:py:obj:`int`>                                          |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | Tuple           | :py:class:`tuple` <:py:obj:`int`>                                         | :py:class:`tuple` <:py:obj:`int`>                                         |
++-------------------------+-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| DEVVAR_LONG64ARRAY      | Numpy           | :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.uint64`)                 | :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.uint64`)                 |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | Bytes           | :py:obj:`bytes` (which is in fact equal to :py:obj:`str`)                 | :py:obj:`bytes`                                                           |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | ByteArray       | :py:obj:`bytearray`                                                       | :py:obj:`bytearray`                                                       |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | String          | :py:obj:`str`                                                             | String    :py:obj:`str` (decoded with default python encoding *utf-8*!!!) |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | List            | :py:class:`list` <int (64 bits) / long (32 bits)>                         | :py:class:`list` <:py:obj:`int`>                                          |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | Tuple           | :py:class:`tuple` <int (64 bits) / long (32 bits)>                        | :py:class:`tuple` <:py:obj:`int`>                                         |
++-------------------------+-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| DEVVAR_FLOATARRAY       | Numpy           | :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.float32`)                | :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.float32`)                |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | Bytes           | :py:obj:`bytes` (which is in fact equal to :py:obj:`str`)                 | :py:obj:`bytes`                                                           |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | ByteArray       | :py:obj:`bytearray`                                                       | :py:obj:`bytearray`                                                       |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | String          | :py:obj:`str`                                                             | String    :py:obj:`str` (decoded with default python encoding *utf-8*!!!) |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | List            | :py:class:`list` <:py:obj:`float`>                                        | :py:class:`list` <:py:obj:`float`>                                        |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | Tuple           | :py:class:`tuple` <:py:obj:`float`>                                       | :py:class:`tuple` <:py:obj:`float`>                                       |
++-------------------------+-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| DEVVAR_DOUBLEARRAY      | Numpy           | :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.float64`)                | :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.float64`)                |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | Bytes           | :py:obj:`bytes` (which is in fact equal to :py:obj:`str`)                 | :py:obj:`bytes`                                                           |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | ByteArray       | :py:obj:`bytearray`                                                       | :py:obj:`bytearray`                                                       |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | String          | :py:obj:`str`                                                             | String    :py:obj:`str` (decoded with default python encoding *utf-8*!!!) |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | List            | :py:class:`list` <:py:obj:`float`>                                        | :py:class:`list` <:py:obj:`float`>                                        |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | Tuple           | :py:class:`tuple` <:py:obj:`float`>                                       | :py:class:`tuple` <:py:obj:`float`>                                       |
++-------------------------+-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| DEVVAR_USHORTARRAY      | Numpy           | :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.uint16`)                 | :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.uint16`)                 |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | Bytes           | :py:obj:`bytes` (which is in fact equal to :py:obj:`str`)                 | :py:obj:`bytes`                                                           |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | ByteArray       | :py:obj:`bytearray`                                                       | :py:obj:`bytearray`                                                       |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | String          | :py:obj:`str`                                                             | String    :py:obj:`str` (decoded with default python encoding *utf-8*!!!) |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | List            | :py:class:`list` <:py:obj:`int`>                                          | :py:class:`list` <:py:obj:`int`>                                          |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | Tuple           | :py:class:`tuple` <:py:obj:`int`>                                         | :py:class:`tuple` <:py:obj:`int`>                                         |
++-------------------------+-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| DEVVAR_ULONGARRAY       | Numpy           | :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.uint32`)                 | :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.uint32`)                 |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | Bytes           | :py:obj:`bytes` (which is in fact equal to :py:obj:`str`)                 | :py:obj:`bytes`                                                           |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | ByteArray       | :py:obj:`bytearray`                                                       | :py:obj:`bytearray`                                                       |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | String          | :py:obj:`str`                                                             | String    :py:obj:`str` (decoded with default python encoding *utf-8*!!!) |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | List            | :py:class:`list` <:py:obj:`int`>                                          | :py:class:`list` <:py:obj:`int`>                                          |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | Tuple           | :py:class:`tuple` <:py:obj:`int`>                                         | :py:class:`tuple` <:py:obj:`int`>                                         |
++-------------------------+-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+| DEVVAR_ULONG64ARRAY     | Numpy           | :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.uint64`)                 | :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.uint64`)                 |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | Bytes           | :py:obj:`bytes` (which is in fact equal to :py:obj:`str`)                 | :py:obj:`bytes`                                                           |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | ByteArray       | :py:obj:`bytearray`                                                       | :py:obj:`bytearray`                                                       |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | String          | :py:obj:`str`                                                             | String    :py:obj:`str` (decoded with default python encoding *utf-8*!!!) |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | List            | :py:class:`list` <int (64 bits) / long (32 bits)>                         | :py:class:`list` <:py:obj:`int`>                                          |
+|                         +-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         | Tuple           | :py:class:`tuple` <int (64 bits) / long (32 bits)>                        | :py:class:`tuple` <:py:obj:`int`>                                         |
++-------------------------+-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|   DEVVAR_STRINGARRAY    |                 | sequence<:py:obj:`str`>                                                   | sequence<:py:obj:`str`> (decoded with *latin-1*, aka *ISO-8859-1*)        |
++-------------------------+-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         |                 | sequence of two elements:                                                 | sequence of two elements:                                                 |
+|  DEV_LONGSTRINGARRAY    |                 |                                                                           |                                                                           |
+|                         |                 | 0. :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.int32`) or            | 0. :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.int32`) or            |
+|                         |                 |    sequence<:py:obj:`int`>                                                |    sequence<:py:obj:`int`>                                                |
+|                         |                 | 1. sequence<:py:obj:`str`>                                                | 1.  sequence<:py:obj:`str`> (decoded with *latin-1*, aka *ISO-8859-1*)    |
++-------------------------+-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
+|                         |                 | sequence of two elements:                                                 | sequence of two elements:                                                 |
+|  DEV_DOUBLESTRINGARRAY  |                 |                                                                           |                                                                           |
+|                         |                 | 0. :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.float64`) or          | 0. :py:class:`numpy.ndarray` (dtype= :py:obj:`numpy.float64`) or          |
+|                         |                 |    sequence<:py:obj:`int`>                                                |    sequence<:py:obj:`int`>                                                |
+|                         |                 | 1. sequence<:py:obj:`str`>                                                | 1. sequence<:py:obj:`str`> (decoded with *latin-1*, aka *ISO-8859-1*)     |
++-------------------------+-----------------+---------------------------------------------------------------------------+---------------------------------------------------------------------------+
 
 The following code is an example of how you write code executed when a client
 calls a command named IOLong::
diff --git a/doc/start.rst b/doc/start.rst
index 28483cb..11d29ba 100644
--- a/doc/start.rst
+++ b/doc/start.rst
@@ -26,12 +26,12 @@ Dependencies on other libraries
 
     digraph dependencies {
         size="6,3";
-        PyTango     [shape=box, label="PyTango 7.2"];
-        Python      [shape=box, label="Python >=2.4"];
+        PyTango     [shape=box, label="PyTango 8.0"];
+        Python      [shape=box, label="Python >=2.6"];
         boostpython [shape=box, label="boost python"];
         boostp1     [shape=box, label="boost >=1.33"];
         boostp2     [shape=box, label="boost >=1.41"];
-        Tango       [shape=box, label="Tango >=7.2"];
+        Tango       [shape=box, label="Tango >=8.0.5"];
         omniORB     [shape=box, label="omniORB >=4"];
         numpy       [shape=box, label="numpy >=1.1.0"];
         IPython     [shape=box, label="IPython >=0.10"];
@@ -48,9 +48,9 @@ Dependencies on other libraries
 Don't be scared by the graph. Probably most of the packages are already installed.
 The current PyTango version has four major dependencies:
 
-- python (>= 2.4) (http://www.python.org/)
+- python (>= 2.6) (http://www.python.org/)
 - omniORB (http://omniorb.sourceforge.net/)
-- Tango (>= 7.2.0) (http://www.tango-controls.org/)
+- Tango (>= 8.0.5) (http://www.tango-controls.org/)
 - boost python (http://www.boost.org):
     if python >= 2.6.3 then: boost-python >= 1.41
     else: boost-python >= 1.33
@@ -71,8 +71,8 @@ Linux
 ~~~~~
 
 The PyTango team does **not** provide a precompiled binary for Linux since this
-would mean having to provide 12 different binaries: one for each major python
-version (2.4, 2.5, 2.6, 2.7, 3.0 and 3.1) times 2 for both 32bits and 64bits.
+would mean having to provide at least 10 different binaries: one for each major
+python version (2.6, 2.7, 3.0, 3.1 and 3.2) times 2 for both 32bits and 64bits.
 
 Tango contributers have written packages for *at least* ubuntu and debian linux
 distributions. Check the **Ubuntu GNU/Linux binary distribution** chapter under
@@ -92,25 +92,27 @@ Windows XP/Vista/7. The complete list of binaries can be downloaded from
 .. _PyTango-7.2.3.win32-py2.7.msi: http://pypi.python.org/packages/2.7/P/PyTango/PyTango-7.2.3.win32-py2.7.msi
 .. _PyTango-7.2.3.win32-py2.7.exe: http://pypi.python.org/packages/2.7/P/PyTango/PyTango-7.2.3.win32-py2.7.exe
 
-+----------------------------------+--------------------------------------------------+----------------------------------------------+
-| version                          | Dependencies                                     | Compilation env.                             |
-+==================================+==================================================+==============================================+
-| `PyTango-7.2.3.win32-py2.6.msi`_ | - Tango C++ >= 7.2.6 and < 8.0                   | - Tango 7.2.6 windows distribution           |
-| `PyTango-7.2.3.win32-py2.6.exe`_ | - Python 2.6.x (where x >= 0)                    | - Python 2.6.6                               |
-|                                  | - numpy 1.x (where x >= 1. Recommended x >= 5)   | - Numpy 1.5                                  |
-|                                  |                                                  | - boost-python 1.41 mutithreaded dll         |
-|                                  |                                                  | - Visual Studio 8.0 (2005)                   |
-|                                  |                                                  | - Windows XP Pro 2002 SP3                    |
-|                                  |                                                  | - PC: Intel Xeon E5440 @ 2.83GHz 1GB RAM     |
-+----------------------------------+--------------------------------------------------+----------------------------------------------+
-| `PyTango-7.2.3.win32-py2.7.msi`_ | - Tango C++ >= 7.2.6 and < 8.0                   | - Tango 7.2.6 windows distribution           |
-| `PyTango-7.2.3.win32-py2.7.exe`_ | - Python 2.7.x (where x >= 0)                    | - Python 2.7.2                               |
-|                                  | - numpy 1.x (where x >= 1. Recommended x >= 5)   | - Numpy 1.5                                  |
-|                                  |                                                  | - boost-python 1.47 mutithreaded dll         |
-|                                  |                                                  | - Visual Studio 8.0 (2005)                   |
-|                                  |                                                  | - Windows XP Pro 2002 SP3                    |
-|                                  |                                                  | - PC: Intel Xeon E5440 @ 2.83GHz 1GB RAM     |
-+----------------------------------+--------------------------------------------------+----------------------------------------------+
+.. only:: html
+
+    +----------------------------------+--------------------------------------------------+----------------------------------------------+
+    | version                          | Dependencies                                     | Compilation env.                             |
+    +==================================+==================================================+==============================================+
+    | `PyTango-7.2.3.win32-py2.6.msi`_ | - Tango C++ >= 7.2.6 and < 8.0                   | - Tango 7.2.6 windows distribution           |
+    | `PyTango-7.2.3.win32-py2.6.exe`_ | - Python 2.6.x (where x >= 0)                    | - Python 2.6.6                               |
+    |                                  | - numpy 1.x (where x >= 1. Recommended x >= 5)   | - Numpy 1.5                                  |
+    |                                  |                                                  | - boost-python 1.41 mutithreaded dll         |
+    |                                  |                                                  | - Visual Studio 8.0 (2005)                   |
+    |                                  |                                                  | - Windows XP Pro 2002 SP3                    |
+    |                                  |                                                  | - PC: Intel Xeon E5440 @ 2.83GHz 1GB RAM     |
+    +----------------------------------+--------------------------------------------------+----------------------------------------------+
+    | `PyTango-7.2.3.win32-py2.7.msi`_ | - Tango C++ >= 7.2.6 and < 8.0                   | - Tango 7.2.6 windows distribution           |
+    | `PyTango-7.2.3.win32-py2.7.exe`_ | - Python 2.7.x (where x >= 0)                    | - Python 2.7.2                               |
+    |                                  | - numpy 1.x (where x >= 1. Recommended x >= 5)   | - Numpy 1.5                                  |
+    |                                  |                                                  | - boost-python 1.47 mutithreaded dll         |
+    |                                  |                                                  | - Visual Studio 8.0 (2005)                   |
+    |                                  |                                                  | - Windows XP Pro 2002 SP3                    |
+    |                                  |                                                  | - PC: Intel Xeon E5440 @ 2.83GHz 1GB RAM     |
+    +----------------------------------+--------------------------------------------------+----------------------------------------------+
 
 Until version 7.2.2 (due to internal incompatibilities between tango C++ API
 and PyTango), PyTango had to be shipped with an internal copy of tango and
@@ -266,23 +268,16 @@ test
 
 If you have IPython_ installed, the best way to test your PyTango installation
 is by starting the new PyTango CLI called :ref:`itango` by typing on the command
-line:
-
-    #. IPython <= 0.10::
-
-        $ ipython -p tango
-
-    #.IPython > 0.10::
-
-        $ ipython --profile=tango
+line::
 
+    $ itango
 
 then, in ITango type:
 
 .. sourcecode:: itango
 
     ITango [1]: PyTango.Release.version
-    Result [1]: '7.2.3'
+    Result [1]: '8.0.0'
 
 (if you are wondering, :ref:`itango` automaticaly does ``import PyTango`` for you!)
 
@@ -290,13 +285,9 @@ If you don't have IPython_ installed, to test the installation start a python co
 and type:
 
     >>> import PyTango
-    >>> print PyTango.Release.version
-    7.2.3
-
-.. toctree::
-    :hidden:
+    >>> PyTango.Release.version
+    '8.0.0'
 
-    Quick tour <quicktour>
-    Quick tour (original) <quicktour_old>
     
 .. _IPython: http://ipython.scipy.org/
+
diff --git a/doc/title.png b/doc/title.png
deleted file mode 100644
index e11cda8..0000000
Binary files a/doc/title.png and /dev/null differ
diff --git a/doc/utilities.rst b/doc/utilities.rst
index 26152c9..962e8dd 100644
--- a/doc/utilities.rst
+++ b/doc/utilities.rst
@@ -3,6 +3,9 @@
 The Utilities API
 =================
 
+.. autofunction:: PyTango.server_run
+
+
 .. currentmodule:: PyTango.utils
 
 .. autoclass:: PyTango.utils.EventCallBack
diff --git a/setup.py b/setup.py
index 8968bce..b971667 100644
--- a/setup.py
+++ b/setup.py
@@ -286,7 +286,6 @@ def main():
         'PyTango.ipython',
         'PyTango.ipython.ipython_00_10',
         'PyTango.ipython.ipython_00_11',
-        'PyTango.ipython.ipython_00_12',
     ]
 
     py_modules = []

-- 
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