From 94bfb1a0a8dafae90660bd9bc3499c96b61a20a5 Mon Sep 17 00:00:00 2001
From: Anton Joubert <ajoubert@ska.ac.za>
Date: Fri, 26 Feb 2021 12:54:50 +0200
Subject: [PATCH] Improve Sphinx documentation

Building on newer Sphinx versions was not working correctly.
E.g., Tango commands, attributes and properties were omitted.
The commands which use decorators are now working.  Device attributes
defined like `myAttr = attribute(..)` are now visible, using a workaround
in the autodoc mock.  Similarly, device properties also use the
workaround.

Removed some duplication, and an unused requirement: `future`.

Improved layout and updated to be more like the SKA theme,
based on ska-mccs-low.  This includes links to the source code.

Added a make target to build locally:  `make docs-in-docker`
---
 Makefile                                      |   9 +
 docs/Makefile                                 | 183 +---
 docs/requirements.txt                         |   2 +
 docs/source/Commands.rst                      |   2 +-
 docs/source/CspSubElementMaster.rst           |   6 +-
 docs/source/CspSubElementObsDevice.rst        |   6 +-
 docs/source/CspSubElementSubarray.rst         |   6 +-
 docs/source/SKAAlarmHandler.rst               |   6 +-
 docs/source/SKABaseDevice.rst                 |  12 +-
 docs/source/SKACapability.rst                 |   6 +-
 docs/source/SKALogger.rst                     |   6 +-
 docs/source/SKAMaster.rst                     |   6 +-
 docs/source/SKAObsDevice.rst                  |  13 +-
 docs/source/SKASubarray.rst                   |  20 +-
 docs/source/SKATelState.rst                   |   6 +-
 docs/source/State_Machine.rst                 |  11 -
 docs/source/_static/css/custom.css            |  78 ++
 docs/source/_static/dummy                     |   0
 docs/source/_static/img/favicon.ico           | Bin 0 -> 1406 bytes
 docs/source/_static/img/logo.jpg              | Bin 0 -> 14772 bytes
 docs/source/_static/img/logo.svg              | 949 ++++++++++++++++++
 docs/source/_static/js/gitlab.js              |  10 +
 docs/source/_templates/footer.html            |  48 +
 docs/source/_templates/layout.html            |  43 +
 docs/source/conf.py                           | 123 ++-
 docs/source/index.rst                         |  38 +-
 setup.py                                      |   2 +-
 src/ska_tango_base/alarm_handler_device.py    |   7 +
 src/ska_tango_base/base_device.py             |  72 ++
 src/ska_tango_base/capability_device.py       |   3 +
 src/ska_tango_base/csp_subelement_master.py   |  15 +
 .../csp_subelement_obsdevice.py               |   8 +
 src/ska_tango_base/csp_subelement_subarray.py |  17 +
 src/ska_tango_base/master_device.py           |   6 +
 src/ska_tango_base/obs_device.py              |   8 +-
 src/ska_tango_base/subarray_device.py         |   3 +
 36 files changed, 1477 insertions(+), 253 deletions(-)
 create mode 100644 docs/requirements.txt
 create mode 100644 docs/source/_static/css/custom.css
 delete mode 100644 docs/source/_static/dummy
 create mode 100644 docs/source/_static/img/favicon.ico
 create mode 100644 docs/source/_static/img/logo.jpg
 create mode 100644 docs/source/_static/img/logo.svg
 create mode 100644 docs/source/_static/js/gitlab.js
 create mode 100644 docs/source/_templates/footer.html
 create mode 100644 docs/source/_templates/layout.html

diff --git a/Makefile b/Makefile
index b69e60e0..d120dd29 100644
--- a/Makefile
+++ b/Makefile
@@ -18,6 +18,7 @@ SHELL = /bin/bash
 DOCKER_REGISTRY_USER:=ska-telescope
 PROJECT = ska_tango_base
 IMAGE_FOR_DIAGRAMS = nexus.engageska-portugal.pt/ska-docker/ska-python-buildenv:9.3.3.1
+IMAGE_FOR_DOCS = sphinxdoc/sphinx:latest
 #
 # include makefile to pick up the standard Make targets, e.g., 'make build'
 # build, 'make push' docker push procedure, etc. The other Make targets
@@ -55,6 +56,14 @@ generate-diagrams-in-docker-internals:  ## Generate state machine diagrams (with
 	cd /diagrams/docs/source && python3 draw_state_machines.py
 	ls -lo /diagrams/docs/source/images/
 
+docs-in-docker: ## Generate docs inside a container
+	@docker run --rm -v $(PWD):/project $(IMAGE_FOR_DOCS) bash -c "cd /project && make docs-in-docker-internals"
+
+docs-in-docker-internals:  ## Generate docs (within a container!)
+	test -f /.dockerenv  # ensure running in docker container
+	python3 -m pip install -r /project/docs/requirements.txt
+	cd /project/docs && make clean && make html
+
 help:  ## show this help.
 	@grep -hE '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
 
diff --git a/docs/Makefile b/docs/Makefile
index 5f44cc48..d0c3cbf1 100644
--- a/docs/Makefile
+++ b/docs/Makefile
@@ -1,177 +1,20 @@
-# Makefile for Sphinx documentation
+# Minimal makefile for Sphinx documentation
 #
 
-# You can set these variables from the command line.
-SPHINXOPTS    =
-SPHINXBUILD   = sphinx-build
-PAPER         =
+# You can set these variables from the command line, and also
+# from the environment for the first two.
+SPHINXOPTS    ?=
+SPHINXBUILD   ?= sphinx-build
+SOURCEDIR     = source
 BUILDDIR      = build
 
-# User-friendly check for sphinx-build
-ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
-$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/)
-endif
-
-# Internal variables.
-PAPEROPT_a4     = -D latex_paper_size=a4
-PAPEROPT_letter = -D latex_paper_size=letter
-ALLSPHINXOPTS   = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
-# the i18n builder cannot share the environment and doctrees with the others
-I18NSPHINXOPTS  = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
-
-.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext
-
+# Put it first so that "make" without argument is like "make help".
 help:
-	@echo "Please use \`make <target>' where <target> is one of"
-	@echo "  html       to make standalone HTML files"
-	@echo "  dirhtml    to make HTML files named index.html in directories"
-	@echo "  singlehtml to make a single large HTML file"
-	@echo "  pickle     to make pickle files"
-	@echo "  json       to make JSON files"
-	@echo "  htmlhelp   to make HTML files and a HTML help project"
-	@echo "  qthelp     to make HTML files and a qthelp project"
-	@echo "  devhelp    to make HTML files and a Devhelp project"
-	@echo "  epub       to make an epub"
-	@echo "  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
-	@echo "  latexpdf   to make LaTeX files and run them through pdflatex"
-	@echo "  latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
-	@echo "  text       to make text files"
-	@echo "  man        to make manual pages"
-	@echo "  texinfo    to make Texinfo files"
-	@echo "  info       to make Texinfo files and run them through makeinfo"
-	@echo "  gettext    to make PO message catalogs"
-	@echo "  changes    to make an overview of all changed/added/deprecated items"
-	@echo "  xml        to make Docutils-native XML files"
-	@echo "  pseudoxml  to make pseudoxml-XML files for display purposes"
-	@echo "  linkcheck  to check all external links for integrity"
-	@echo "  doctest    to run all doctests embedded in the documentation (if enabled)"
-
-clean:
-	rm -rf $(BUILDDIR)/*
-
-html:
-	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
-	@echo
-	@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
-
-dirhtml:
-	$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
-	@echo
-	@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
-
-singlehtml:
-	$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
-	@echo
-	@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
-
-pickle:
-	$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
-	@echo
-	@echo "Build finished; now you can process the pickle files."
-
-json:
-	$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
-	@echo
-	@echo "Build finished; now you can process the JSON files."
-
-htmlhelp:
-	$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
-	@echo
-	@echo "Build finished; now you can run HTML Help Workshop with the" \
-	      ".hhp project file in $(BUILDDIR)/htmlhelp."
-
-qthelp:
-	$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
-	@echo
-	@echo "Build finished; now you can run "qcollectiongenerator" with the" \
-	      ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
-	@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/SKA_TangoBase.qhcp"
-	@echo "To view the help file:"
-	@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/SKA_TangoBase.qhc"
-
-devhelp:
-	$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
-	@echo
-	@echo "Build finished."
-	@echo "To view the help file:"
-	@echo "# mkdir -p $$HOME/.local/share/devhelp/SKA_TangoBase"
-	@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/SKA_TangoBase"
-	@echo "# devhelp"
-
-epub:
-	$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
-	@echo
-	@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
-
-latex:
-	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
-	@echo
-	@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
-	@echo "Run \`make' in that directory to run these through (pdf)latex" \
-	      "(use \`make latexpdf' here to do that automatically)."
-
-latexpdf:
-	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
-	@echo "Running LaTeX files through pdflatex..."
-	$(MAKE) -C $(BUILDDIR)/latex all-pdf
-	@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
-
-latexpdfja:
-	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
-	@echo "Running LaTeX files through platex and dvipdfmx..."
-	$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
-	@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
-
-text:
-	$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
-	@echo
-	@echo "Build finished. The text files are in $(BUILDDIR)/text."
-
-man:
-	$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
-	@echo
-	@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
-
-texinfo:
-	$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
-	@echo
-	@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
-	@echo "Run \`make' in that directory to run these through makeinfo" \
-	      "(use \`make info' here to do that automatically)."
-
-info:
-	$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
-	@echo "Running Texinfo files through makeinfo..."
-	make -C $(BUILDDIR)/texinfo info
-	@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
-
-gettext:
-	$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
-	@echo
-	@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
-
-changes:
-	$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
-	@echo
-	@echo "The overview file is in $(BUILDDIR)/changes."
-
-linkcheck:
-	$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
-	@echo
-	@echo "Link check complete; look for any errors in the above output " \
-	      "or in $(BUILDDIR)/linkcheck/output.txt."
-
-doctest:
-	$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
-	@echo "Testing of doctests in the sources finished, look at the " \
-	      "results in $(BUILDDIR)/doctest/output.txt."
+	@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
 
-xml:
-	$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
-	@echo
-	@echo "Build finished. The XML files are in $(BUILDDIR)/xml."
+.PHONY: help Makefile
 
-pseudoxml:
-	$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
-	@echo
-	@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."
+# Catch-all target: route all unknown targets to Sphinx using the new
+# "make mode" option.  $(O) is meant as a shortcut for $(SPHINXOPTS).
+%: Makefile
+	@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
diff --git a/docs/requirements.txt b/docs/requirements.txt
new file mode 100644
index 00000000..e4e2f8ea
--- /dev/null
+++ b/docs/requirements.txt
@@ -0,0 +1,2 @@
+Sphinx >= 3.5.0
+sphinx-rtd-theme >= 0.4.3
diff --git a/docs/source/Commands.rst b/docs/source/Commands.rst
index 1da962ae..134d62ce 100644
--- a/docs/source/Commands.rst
+++ b/docs/source/Commands.rst
@@ -1,5 +1,5 @@
 
-SKA Commands
+Commands
 ============================================
 
 .. toctree::
diff --git a/docs/source/CspSubElementMaster.rst b/docs/source/CspSubElementMaster.rst
index 1c88c268..6128b98d 100644
--- a/docs/source/CspSubElementMaster.rst
+++ b/docs/source/CspSubElementMaster.rst
@@ -3,7 +3,7 @@
    You can adapt this file completely to your liking, but it should at least
    contain the root `toctree` directive.
 
-SKA CSP Sub-element Master
+CSP Sub-element Master
 ============================================
 This module implements a general Master device for a CSP Sub-element.
 
@@ -11,6 +11,10 @@ This module implements a general Master device for a CSP Sub-element.
    :maxdepth: 2
 
 .. automodule:: ska_tango_base.csp_subelement_master
+
+Tango Device Class
+------------------
+
 .. autoclass:: ska_tango_base.CspSubElementMaster
    :members:
    :undoc-members:
diff --git a/docs/source/CspSubElementObsDevice.rst b/docs/source/CspSubElementObsDevice.rst
index b17da7d3..859d6e2c 100644
--- a/docs/source/CspSubElementObsDevice.rst
+++ b/docs/source/CspSubElementObsDevice.rst
@@ -7,13 +7,17 @@
 
    <br />
 
-SKA CSP Sub-element ObsDevice
+CSP Sub-element ObsDevice
 ============================================
 
 .. toctree::
    :maxdepth: 2
 
 .. automodule:: ska_tango_base.csp_subelement_obsdevice
+
+Tango Device Class
+------------------
+
 .. autoclass:: ska_tango_base.CspSubElementObsDevice
    :members:
    :undoc-members:
diff --git a/docs/source/CspSubElementSubarray.rst b/docs/source/CspSubElementSubarray.rst
index ee08f12a..78863176 100644
--- a/docs/source/CspSubElementSubarray.rst
+++ b/docs/source/CspSubElementSubarray.rst
@@ -3,7 +3,7 @@
    You can adapt this file completely to your liking, but it should at least
    contain the root `toctree` directive.
 
-SKA CSP Sub-element Subarray
+CSP Sub-element Subarray
 ============================================
 This module implements a generic Subarray device for a CSP Sub-element.
 The scope of this module is to provide a uniform access to a CSP Sub-element
@@ -14,6 +14,10 @@ subarray from the CSP.LMC side.
    :maxdepth: 2
 
 .. automodule:: ska_tango_base.csp_subelement_subarray
+
+Tango Device Class
+------------------
+
 .. autoclass:: ska_tango_base.CspSubElementSubarray
    :members:
    :undoc-members:
diff --git a/docs/source/SKAAlarmHandler.rst b/docs/source/SKAAlarmHandler.rst
index fd8f8548..fde7bbc1 100644
--- a/docs/source/SKAAlarmHandler.rst
+++ b/docs/source/SKAAlarmHandler.rst
@@ -3,13 +3,17 @@
    You can adapt this file completely to your liking, but it should at least
    contain the root `toctree` directive.
 
-SKA AlarmHandler
+Alarm Handler
 ============================================
 
 .. toctree::
    :maxdepth: 2
 
 .. automodule:: ska_tango_base.alarm_handler_device
+
+Tango Device Class
+------------------
+
 .. autoclass:: ska_tango_base.SKAAlarmHandler
    :members:
    :undoc-members:
diff --git a/docs/source/SKABaseDevice.rst b/docs/source/SKABaseDevice.rst
index 2d3e2576..6fe03c19 100644
--- a/docs/source/SKABaseDevice.rst
+++ b/docs/source/SKABaseDevice.rst
@@ -3,7 +3,7 @@
    You can adapt this file completely to your liking, but it should at least
    contain the root `toctree` directive.
 
-SKA BaseDevice
+Base Device
 ============================================
 
 .. toctree::
@@ -11,10 +11,16 @@ SKA BaseDevice
 
 .. automodule:: ska_tango_base.base_device
 
-.. autoclass:: ska_tango_base.DeviceStateModel
+Tango Device Class
+------------------
+
+.. autoclass:: ska_tango_base.SKABaseDevice
    :members:
    :undoc-members:
 
-.. autoclass:: ska_tango_base.SKABaseDevice
+Device State Model
+------------------
+
+.. autoclass:: ska_tango_base.DeviceStateModel
    :members:
    :undoc-members:
diff --git a/docs/source/SKACapability.rst b/docs/source/SKACapability.rst
index 91ba5dad..1f465f8f 100644
--- a/docs/source/SKACapability.rst
+++ b/docs/source/SKACapability.rst
@@ -3,13 +3,17 @@
    You can adapt this file completely to your liking, but it should at least
    contain the root `toctree` directive.
 
-SKA Capability
+Capability
 ============================================
 
 .. toctree::
    :maxdepth: 2
 
 .. automodule:: ska_tango_base.capability_device
+
+Tango Device Class
+------------------
+
 .. autoclass:: ska_tango_base.SKACapability
    :members:
    :undoc-members:
diff --git a/docs/source/SKALogger.rst b/docs/source/SKALogger.rst
index 2f628ef1..1ef5114f 100644
--- a/docs/source/SKALogger.rst
+++ b/docs/source/SKALogger.rst
@@ -3,13 +3,17 @@
    You can adapt this file completely to your liking, but it should at least
    contain the root `toctree` directive.
 
-SKA Logger
+Logger
 ============================================
 
 .. toctree::
    :maxdepth: 2
 
 .. automodule:: ska_tango_base.logger_device
+
+Tango Device Class
+------------------
+
 .. autoclass:: ska_tango_base.SKALogger
    :members:
    :undoc-members:
diff --git a/docs/source/SKAMaster.rst b/docs/source/SKAMaster.rst
index 3356684f..adfb37d2 100644
--- a/docs/source/SKAMaster.rst
+++ b/docs/source/SKAMaster.rst
@@ -3,13 +3,17 @@
    You can adapt this file completely to your liking, but it should at least
    contain the root `toctree` directive.
 
-SKA Master
+Master
 ============================================
 
 .. toctree::
    :maxdepth: 2
 
 .. automodule:: ska_tango_base.master_device
+
+Tango Device Class
+------------------
+
 .. autoclass:: ska_tango_base.SKAMaster
    :members:
    :undoc-members:
diff --git a/docs/source/SKAObsDevice.rst b/docs/source/SKAObsDevice.rst
index 89166e8c..6f8322a9 100644
--- a/docs/source/SKAObsDevice.rst
+++ b/docs/source/SKAObsDevice.rst
@@ -3,13 +3,24 @@
    You can adapt this file completely to your liking, but it should at least
    contain the root `toctree` directive.
 
-SKA ObsDevice
+Observation Device
 ============================================
 
 .. toctree::
    :maxdepth: 2
 
 .. automodule:: ska_tango_base.obs_device
+
+Tango Device Class
+------------------
+
 .. autoclass:: ska_tango_base.SKAObsDevice
    :members:
    :undoc-members:
+
+Device State Model
+------------------
+
+.. autoclass:: ska_tango_base.ObsDeviceStateModel
+   :members:
+   :undoc-members:
\ No newline at end of file
diff --git a/docs/source/SKASubarray.rst b/docs/source/SKASubarray.rst
index 29c354be..7b4a3b6e 100644
--- a/docs/source/SKASubarray.rst
+++ b/docs/source/SKASubarray.rst
@@ -3,13 +3,31 @@
    You can adapt this file completely to your liking, but it should at least
    contain the root `toctree` directive.
 
-SKA Subarray
+Subarray
 ============================================
 
 .. toctree::
    :maxdepth: 2
 
 .. automodule:: ska_tango_base.subarray_device
+
+Device Class
+------------
+
 .. autoclass:: ska_tango_base.SKASubarray
    :members:
    :undoc-members:
+
+Device State Model
+------------------
+
+.. autoclass:: ska_tango_base.SKASubarrayStateModel
+   :members:
+   :undoc-members:
+
+Resource Manager
+----------------
+
+.. autoclass:: ska_tango_base.SKASubarrayResourceManager
+   :members:
+   :undoc-members:
diff --git a/docs/source/SKATelState.rst b/docs/source/SKATelState.rst
index fac3623c..4a1ba646 100644
--- a/docs/source/SKATelState.rst
+++ b/docs/source/SKATelState.rst
@@ -3,13 +3,17 @@
    You can adapt this file completely to your liking, but it should at least
    contain the root `toctree` directive.
 
-SKA TelState
+Telescope State
 ============================================
 
 .. toctree::
    :maxdepth: 2
 
 .. automodule:: ska_tango_base.tel_state_device
+
+Tango Device Class
+------------------
+
 .. autoclass:: ska_tango_base.SKATelState
    :members:
    :undoc-members:
diff --git a/docs/source/State_Machine.rst b/docs/source/State_Machine.rst
index 4b57eacd..ed542bfd 100644
--- a/docs/source/State_Machine.rst
+++ b/docs/source/State_Machine.rst
@@ -188,18 +188,7 @@ API
     :members:
     :undoc-members:
 
-.. autoclass:: OperationStateMachine
-    :members:
-
-.. autoclass:: AdminModeStateMachine
-    :members:
-
-.. autoclass:: ObservationStateMachine
-    :members:
 
 .. automodule:: ska_tango_base.csp_subelement_state_machine
     :members:
     :undoc-members:
-
-.. autoclass:: CspSubElementObsDeviceStateMachine
-    :members:
diff --git a/docs/source/_static/css/custom.css b/docs/source/_static/css/custom.css
new file mode 100644
index 00000000..4ee45f4c
--- /dev/null
+++ b/docs/source/_static/css/custom.css
@@ -0,0 +1,78 @@
+/*
+Following SKA brand guidelines colors are defined as
+
+SKA Sky Blue:    rgb(0, 174, 239)
+SKA Ocean Blue:  rgb(0, 84, 164)
+SKA Teal Blue:   rgb(0, 104, 138)
+SKA Burnt Sun:   rgb(236, 134, 35)
+SKA Earth Green: rgb(166, 206, 57)
+*/
+
+.wy-nav-side{
+        background-color: rgb(0, 84, 164);
+        color: white;
+}
+
+.wy-side-nav-search{
+        padding-top: 0px;
+        /*background-color: rgb(0, 174, 239);*/
+        background-color: rgb(0, 84, 164);
+        text-align: center;
+}
+
+.wy-menu-vertical p.caption{
+        color: rgb(236, 134, 35);
+}
+
+.wy-menu {
+        color: white;
+}
+
+.wy-menu-vertical a{
+  color: white;
+}
+
+.local-toc ul li a:hover {
+        background-color: rgb(0, 174, 239);
+}
+
+.wy-side-nav-search a{
+    padding-top: 0px;
+}
+
+.wy-side-nav-search a img.logo{
+	background-color: rgb(255, 255, 255);
+	border-bottom-left-radius: 6px;
+	border-bottom-right-radius: 6px;
+      padding-top: 40px;
+}
+
+.ska-logo, ska-logo:hover{
+	background-attachment: scroll;
+	background-clip: border-box;
+	background-color: rgb(255, 255, 255);
+	background-image: url("https://www.skatelescope.org/wp-content/themes/skatelescope.org-theme/img/img-logo3.png");
+	background-origin: padding-box;
+	background-position: 22px 35px;
+	background-position-x: 22px;
+	background-position-y: 35px;
+	background-repeat: no-repeat;
+	background-size: 153px 98px;
+	border-bottom-left-radius: 6px;
+	border-bottom-right-radius: 6px;
+	/*color: rgb(0, 86, 120);
+	float: left;
+	font-family: "Eurostile LT W01 Demi", sans-serif;
+	font-size: 44.8px;
+	font-weight: 400;
+	line-height: 60px;
+	list-style-image: none;
+	list-style-position: outside;
+	list-style-type: none;*/
+	margin-bottom: 0px;
+	margin-left: 0px;
+	margin-right: 0px;
+	margin-top: 0px;
+	width: 186px;
+	height: 135px;
+}
diff --git a/docs/source/_static/dummy b/docs/source/_static/dummy
deleted file mode 100644
index e69de29b..00000000
diff --git a/docs/source/_static/img/favicon.ico b/docs/source/_static/img/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..31871e8982a9724ccff281ab86276932b2595abf
GIT binary patch
literal 1406
zcmZQzU}Ruq5D;JhgA7&%1~CQ(1`P%V29S^f14y0&EXTkIp}-`ReQk+0!`p|u8Gb!o
z%&@!Nk>OCECd08caSXqo?O^!*Vjsibzke8xENfzTejtb8-`_tB=ND8me0%qZ;qX)j
zhI?B>87^-uV|aLE4#R_Eix~FTIWf$R<zv{_<;3vs_dA9oi^>`1CW$a?nG?eBdKWjt
zrRCWSmzQTV+}^&J;q{HZ3}4^AWZ2l`#_(`01H;+rehhnSY#Dw&T*Pp5b1lQ;Q_C1G
zF9>INdUid-i|srNXJ*tf+}k&m;p>~{3}4?rXZZPW7Q^=suNY2Fj$?RuXcfct4Rs99
z&rD+Y`Q<Ic^^J`T-@kuj`1S2G!_6&?47awmGu+%Vnc=|}4Td$<HVjt}&15(?r-|X(
zs%VDY{mcxjGI$woED~p!8p_1*^}{2Eef7EwSJ##?yt;Li;q=TfhKENNG2B@$%W!nh
zVunvA^cXglDly#N*}?GV_b-OeFV8XDT)@dNHH3lT(z05HOB)&(9v)rHaAR`=!@oaY
z8P3kCV>q?Ch2iy$Qw%qcZD6={Yy-o-9jh7EwlFZ9-7<|~e}fCdn}?Sf{{DEy@Z(l0
z!|$Kp82<hF#&ERTi(yNZ7Q_Gl{~7j7U|=}6vW(%+`{N7`4$WaWGL3=Z=$uG~N9&mw
zzJB@0Fe#s#VSk@D!~18q7*<zWG2GeJ$8crOT!z`@91MTno@ThXq>ACn+6;y#*N!oK
zImW?oWEvyG!y~g8E-mR{IM`~)@bmL~hMQ}f86KWo$?)jpN`}ARUoza<-o|iXc{Rh+
zGn*JL?wrT)@83U$TU!<~Tv%AmaCv1u!{_q>3@<MqXP8-|$ngFB6NU*%j0`Iq7#JQN
znGH@}qr}h%feZxb>gwu3@G>$AV!h1}{8T2%^2w}l1>wnk6XJ4fT_y?&3f4^#oWk$L
zP?)Ki&nTxITIyz`VcDDGIf>6lDu6dkTE@apHPFevt=&P<np;0XSy|XhsYYG7Qr?zD
zEkj4Pv9Z3piOa5EOG_)lJj0~HHO;_~rzff_xWm*VBg5TMs3of^U6h$4q{z29BO}q-
zrX(m&L02NO*jXecBcrQ~Q(V9}I-@$?zcU8p+UyE8l_U@YipBKUTcJz{h3ZL4V+jE9
C35a0;

literal 0
HcmV?d00001

diff --git a/docs/source/_static/img/logo.jpg b/docs/source/_static/img/logo.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..495034a869903e5114264dbbabc5b4adc5e3dfa8
GIT binary patch
literal 14772
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
UP%|ENX)qiY*&!0>Apid+0IcT<oB#j-

literal 0
HcmV?d00001

diff --git a/docs/source/_static/img/logo.svg b/docs/source/_static/img/logo.svg
new file mode 100644
index 00000000..0130216c
--- /dev/null
+++ b/docs/source/_static/img/logo.svg
@@ -0,0 +1,949 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="300px" height="212px" viewBox="0 0 300 212" enable-background="new 0 0 300 212" xml:space="preserve">  <image id="image0" width="300" height="212" x="0" y="0"
+    xlink:href="data:image/png;base64,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" />
+</svg>
diff --git a/docs/source/_static/js/gitlab.js b/docs/source/_static/js/gitlab.js
new file mode 100644
index 00000000..bb4314df
--- /dev/null
+++ b/docs/source/_static/js/gitlab.js
@@ -0,0 +1,10 @@
+jQuery(function(){
+    var ci_dashboard = "https://ska-telescope.gitlab.io/ska_ci_dashboard/";
+    var dashboard_table = $("#ci-dashboard > table");
+    if( dashboard_table.length ){
+        $.get(ci_dashboard, function(data){
+            dashboard_table.html($(data).find("#dataTable"));            
+        });
+    }
+});
+
diff --git a/docs/source/_templates/footer.html b/docs/source/_templates/footer.html
new file mode 100644
index 00000000..2ae1d851
--- /dev/null
+++ b/docs/source/_templates/footer.html
@@ -0,0 +1,48 @@
+
+{% extends "!footer.html" %}
+{% block extrafooter %}
+
+<a rel="license" href="http://creativecommons.org/licenses/by/4.0/">
+    <img alt="Creative Commons Licence"
+         style="border-width:0"
+         src="https://i.creativecommons.org/l/by/4.0/88x31.png" />
+</a>
+<br />
+<span xmlns:dct="http://purl.org/dc/terms/"
+      property="dct:title">
+          SKA developer documentation
+</span>
+by
+<a xmlns:cc="http://creativecommons.org/ns#"
+   href="developer.skatelscope.org"
+   property="cc:attributionName"
+   rel="cc:attributionURL">
+       SKA organisation
+</a>
+is licensed under a
+<a rel="license"
+   href="http://creativecommons.org/licenses/by/4.0/">
+      Creative Commons Attribution 4.0 International License
+</a>.
+<br />Based on a work at
+<a xmlns:dct="http://purl.org/dc/terms/"
+   href="https://github.com/ska-telescope/developer.skatelescope.org"
+   rel="dct:source">
+       github.com/ska-telescope/developer.skatelescope.org
+</a>.
+<br /><br />
+This work is inspired by the
+<a href="https://developer.lsst.io/">
+    LSST developer guide
+</a> © Copyright 2016-2018 Association of Universities for Research in Astronomy, licensed under a
+<a rel="license" href="http://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</a>.
+
+
+<br /><br />
+This work is inspired by the
+<a href="https://www.apache.org/dev/">
+    Apache developer information
+</a>
+Copyright © 2018 The Apache Software Foundation, Licensed under the
+<a rel="license" href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.
+{% endblock %}
diff --git a/docs/source/_templates/layout.html b/docs/source/_templates/layout.html
new file mode 100644
index 00000000..a69a86a0
--- /dev/null
+++ b/docs/source/_templates/layout.html
@@ -0,0 +1,43 @@
+{% extends "!layout.html" %}
+
+{# 
+{% block sidebartitle %}
+#}
+
+{# original content
+
+{% if logo and theme_logo_only %}
+<a href="{{ pathto(master_doc) }}">
+{% else %}
+<a href="{{ pathto(master_doc) }}" class="icon icon-home"> {{project }}
+{% endif %}
+
+{% if logo %}
+
+<img src="{{ pathto('_static/' + logo, 1) }}" class="logo" />
+{% endif %}
+</a>
+
+{% if theme_display_version %}
+{%- set nav_version = version %}
+{% if READTHEDOCS and current_version %}
+{%- set nav_version = current_version %}
+{% endif %}
+{% if nav_version %}
+<div class="version">
+{{ nav_version }}
+</div>
+{% endif %}
+{% endif %}
+
+{% include "searchbox.html" %}
+
+end of original content #}
+
+{# 
+<a href="{{pathto(master_doc)}}" class="ska-logo"></a>
+
+{% include "searchbox.html" %}
+
+{% endblock %}
+#}
diff --git a/docs/source/conf.py b/docs/source/conf.py
index 5a69f8f6..7f7c596a 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -12,48 +12,83 @@
 # All configuration values have a default; values that are commented out
 # serve to show the default.
 
-# import sys
-# import os
-# from unittest.mock import Mock as MagicMock
-#
-# class Mock(MagicMock):
-#     @classmethod
-#     def __getattr__(cls, name):
-#         return MagicMock()
-#
-# # Mock tango modules
-# MOCK_MODULES = ['PyTango', 'tango', 'tango.server', 'run', 'command',
-#                 'future', 'future.utils', 'logging', 'logging.handlers']
-# sys.modules.update((mod_name, Mock()) for mod_name in MOCK_MODULES)
-
-from unittest.mock import Mock as MagicMock
 import os
 import sys
-autodoc_mock_imports = ['PyTango', 'tango', 'tango.server', 'run', 'command',
-                        'future', 'future.utils', 'transitions',
-                        'ska_ser_logging', 'ska_ser_logging.configuration',
-                        'numpy'
-                        ]
+
+# This is an elaborate hack to insert write property into _all_
+# mock decorators. It is needed for getting @command to build
+# in mocked out tango.server.  Also add dummy classes for
+# attribute and device_property so that they at least
+# appear in the docs, even if there is not other useful info.
+# see https://github.com/sphinx-doc/sphinx/issues/6709
+from sphinx.ext.autodoc.mock import _MockObject
+
+
+def get_kwarg_comma_separated_values(kwargs):
+    pairs = (f"{key}={value}" for key, value in kwargs.items())
+    return ", ".join(pairs)
+
+
+class TangoKwargMethodMock:
+    def __init__(self, name, **kwargs):
+        self.name = name
+        self.kwargs = kwargs
+
+    def __repr__(self):
+        return f"{self.name}({get_kwarg_comma_separated_values(self.kwargs)})"
+
+
+def call_mock(self, *args, **kw):
+    from types import FunctionType, MethodType
+
+    if args and type(args[0]) in [type, FunctionType, MethodType]:
+        # Appears to be a decorator, pass through unchanged
+        args[0].write = lambda x: x
+        return args[0]
+
+    if repr(self) in ['tango.server.attribute', 'tango.server.device_property']:
+        return TangoKwargMethodMock(repr(self), **kw)
+
+    return self
+
+
+_MockObject.__call__ = call_mock
+# hack end
+
+autodoc_mock_imports = [
+    'tango',
+    'transitions',
+    'ska_ser_logging',
+    'numpy',
+]
+
+autodoc_default_options = {
+    'member-order': 'bysource',
+}
 
 
-class Mock(MagicMock):
-    @classmethod
-    def __getattr__(cls, name):
-        return MagicMock()
+# Both the class’ and the __init__ method’s docstring are concatenated and inserted.
+autoclass_content = 'both'
 
 
-# Mock tango modules
-MOCK_MODULES = ['logging', 'logging.handlers']
-sys.modules.update((mod_name, Mock()) for mod_name in MOCK_MODULES)
+def setup(app):
+    """
+    Initialise app.
+    """
+    app.add_css_file("css/custom.css")
+    app.add_js_file("js/gitlab.js")
 
+
+# -- Path set up --------------------------------------------------------------
 # If extensions (or modules to document with autodoc) are in another directory,
 # add these directories to sys.path here. If the directory is relative to the
 # documentation root, use os.path.abspath to make it absolute, like shown here.
 sys.path.insert(0, os.path.abspath('../../src'))
+
 # -- General configuration ------------------------------------------------
 
 # If your documentation needs a minimal Sphinx version, state it here.
-#needs_sphinx = '1.0'
+needs_sphinx = '3.5'
 
 # Add any Sphinx extension module names here, as strings. They can be
 # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
@@ -63,6 +98,7 @@ extensions = [
     'sphinx.ext.doctest',
     'sphinx.ext.todo',
     'sphinx.ext.coverage',
+    'sphinx.ext.viewcode',
 ]
 
 # Add any paths that contain templates here, relative to this directory.
@@ -79,26 +115,25 @@ master_doc = 'index'
 
 # General information about the project.
 project = u'SKA Tango Base'
-copyright = u'2019, NCRA India and SARAO'
 
 # The version info for the project you're documenting, acts as replacement for
 # |version| and |release|, also used in various other places throughout the
 # built documents.
 #
 
-
-def get_release_version():
+def get_release_info():
     release_filename = os.path.join("..", "..", "src", "ska_tango_base", "release.py")
     exec(open(release_filename).read())
-    return locals()["version"]
+    return locals()
 
 
-release_version = get_release_version()
+release_info = get_release_info()
+copyright = release_info["copyright"]
 
 # The short X.Y version.
-version = release_version
+version = release_info["version"]
 # The full version, including alpha/beta/rc tags.
-release = release_version
+release = release_info["version"]
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
@@ -138,15 +173,11 @@ pygments_style = 'sphinx'
 # If true, keep warnings as "system message" paragraphs in the built documents.
 #keep_warnings = False
 
-autodoc_default_options = {
-    'member-order': 'bysource',
-}
-
 # -- Options for HTML output ----------------------------------------------
 
 # The theme to use for HTML and HTML Help pages.  See the documentation for
 # a list of builtin themes.
-html_theme = 'default'
+html_theme = "sphinx_rtd_theme"
 
 # Theme options are theme-specific and customize the look and feel of a theme
 # further.  For a list of options available for each theme, see the
@@ -172,6 +203,18 @@ html_theme = 'default'
 # pixels large.
 #html_favicon = None
 
+html_context = {
+    "display_gitlab": True,  # Integrate GitHub
+    "favicon": "img/favicon.ico",
+    "logo": "img/logo.jpg",
+    "theme_logo_only": True,
+    "gitlab_user": "ska-telescope",  # Username
+    "gitlab_repo": "ska-tango-base",  # Repo name
+    "gitlab_version": "master",  # Version
+    "conf_py_path": "/docs/source/",  # Path in the checkout to the docs root
+}
+
+
 # Add any paths that contain custom static files (such as style sheets) here,
 # relative to this directory. They are copied after the builtin static files,
 # so a file named "default.css" will overwrite the builtin "default.css".
diff --git a/docs/source/index.rst b/docs/source/index.rst
index b82d7f1f..036121da 100644
--- a/docs/source/index.rst
+++ b/docs/source/index.rst
@@ -7,26 +7,34 @@ Welcome to SKA Tango Base documentation!
 ========================================
 
 .. toctree::
-  :caption: Table of Contents
+  :caption: Standard Devices
   :maxdepth: 2
 
-   Device:  SKA Base Device<SKABaseDevice>
-   Device:  SKA Alarm Handler<SKAAlarmHandler>
-   Device:  SKA Logger<SKALogger>
-   Device:  SKA Master<SKAMaster>
-   Device:  SKA TelState<SKATelState>
+   Base Device<SKABaseDevice>
+   Alarm Handler<SKAAlarmHandler>
+   Logger<SKALogger>
+   Master<SKAMaster>
+   Tel State<SKATelState>
 
-   Device:  SKA ObsDevice<SKAObsDevice>
-   Device:  SKA Capability<SKACapability>
-   Device:  SKA Subarray<SKASubarray>
+   Obs Device<SKAObsDevice>
+   Capability<SKACapability>
+   Subarray<SKASubarray>
 
-   Device:  SKA CSP Sub-element Master<CspSubElementMaster>
-   Device:  SKA CSP Sub-element ObsDevice<CspSubElementObsDevice>
-   Device:  SKA CSP Sub-element Subarray<CspSubElementSubarray>
+.. toctree::
+  :caption: CSP Devices
+  :maxdepth: 2
+
+   CSP Sub-element Master<CspSubElementMaster>
+   CSP Sub-element Obs Device<CspSubElementObsDevice>
+   CSP Sub-element Subarray<CspSubElementSubarray>
+
+.. toctree::
+  :caption: Control Model
+  :maxdepth: 2
 
-   SKA Control Model<Control_Model>
-   SKA Commands<Commands>
-   SKA State Machine<State_Machine>
+   Control Model<Control_Model>
+   Commands<Commands>
+   State Machine<State_Machine>
 
 Indices and tables
 ==================
diff --git a/setup.py b/setup.py
index 10ca6a16..8a1b1755 100644
--- a/setup.py
+++ b/setup.py
@@ -35,7 +35,7 @@ setuptools.setup(
     ],
     platforms=["OS Independent"],
     setup_requires=[] + pytest_runner,
-    install_requires=["future", "transitions", "ska_ser_logging"],
+    install_requires=["transitions", "ska_ser_logging"],
     tests_require=["pytest", "coverage", "pytest-json-report", "pytest-forked"],
     entry_points={
         "console_scripts": [
diff --git a/src/ska_tango_base/alarm_handler_device.py b/src/ska_tango_base/alarm_handler_device.py
index 10c8c881..d1e74161 100644
--- a/src/ska_tango_base/alarm_handler_device.py
+++ b/src/ska_tango_base/alarm_handler_device.py
@@ -52,38 +52,45 @@ class SKAAlarmHandler(SKABaseDevice):
         dtype='int',
         doc="Number of active Alerts",
     )
+    """Device attribute."""
 
     statsNrAlarms = attribute(
         dtype='int',
         doc="Number of active Alarms",
     )
+    """Device attribute."""
 
     statsNrNewAlarms = attribute(
         dtype='int',
         doc="Number of New active alarms",
     )
+    """Device attribute."""
 
     statsNrUnackAlarms = attribute(
         dtype='double',
         doc="Number of unacknowledged alarms",
     )
+    """Device attribute."""
 
     statsNrRtnAlarms = attribute(
         dtype='double',
         doc="Number of returned alarms",
     )
+    """Device attribute."""
 
     activeAlerts = attribute(
         dtype=('str',),
         max_dim_x=10000,
         doc="List of active alerts",
     )
+    """Device attribute."""
 
     activeAlarms = attribute(
         dtype=('str',),
         max_dim_x=10000,
         doc="List of active alarms",
     )
+    """Device attribute."""
 
     # ---------------
     # General methods
diff --git a/src/ska_tango_base/base_device.py b/src/ska_tango_base/base_device.py
index 6986253c..b78fac15 100644
--- a/src/ska_tango_base/base_device.py
+++ b/src/ska_tango_base/base_device.py
@@ -711,18 +711,77 @@ class SKABaseDevice(Device):
     SkaLevel = device_property(
         dtype='int16', default_value=4
     )
+    """
+    Device property.
+       
+    Indication of importance of the device in the SKA hierarchy
+    to support drill-down navigation: 1..6, with 1 highest.
+    """
 
     GroupDefinitions = device_property(
         dtype=('str',),
     )
+    """
+    Device property.
+       
+    Each string in the list is a JSON serialised dict defining the ``group_name``,
+    ``devices`` and ``subgroups`` in the group.  A TANGO Group object is created
+    for each item in the list, according to the hierarchy defined.  This provides
+    easy access to the managed devices in bulk, or individually.
+    
+    The general format of the list is as follows, with optional ``devices`` and
+    ``subgroups`` keys::
+    
+        [ {"group_name": "<name>",
+           "devices": ["<dev name>", ...]},
+          {"group_name": "<name>",
+           "devices": ["<dev name>", "<dev name>", ...],
+           "subgroups" : [{<nested group>},
+                            {<nested group>}, ...]},
+          ...
+          ]
+    
+    For example, a hierarchy of racks, servers and switches::
+    
+        [ {"group_name": "servers",
+           "devices": ["elt/server/1", "elt/server/2",
+                         "elt/server/3", "elt/server/4"]},
+          {"group_name": "switches",
+           "devices": ["elt/switch/A", "elt/switch/B"]},
+          {"group_name": "pdus",
+           "devices": ["elt/pdu/rackA", "elt/pdu/rackB"]},
+          {"group_name": "racks",
+           "subgroups": [
+                {"group_name": "rackA",
+                 "devices": ["elt/server/1", "elt/server/2",
+                               "elt/switch/A", "elt/pdu/rackA"]},
+                {"group_name": "rackB",
+                 "devices": ["elt/server/3", "elt/server/4",
+                               "elt/switch/B", "elt/pdu/rackB"],
+                 "subgroups": []}
+           ]} ]
+
+    """
 
     LoggingLevelDefault = device_property(
         dtype='uint16', default_value=LoggingLevel.INFO
     )
+    """
+    Device property.
+       
+    Default logging level at device startup.
+    See :py:class:`~ska_tango_base.control_model.LoggingLevel`
+    """
 
     LoggingTargetsDefault = device_property(
         dtype='DevVarStringArray', default_value=["tango::logger"]
     )
+    """
+    Device property.
+       
+    Default logging targets at device startup.
+    See the project readme for details.
+    """
 
     # ----------
     # Attributes
@@ -732,11 +791,13 @@ class SKABaseDevice(Device):
         dtype='str',
         doc="Build state of this device",
     )
+    """Device attribute."""
 
     versionId = attribute(
         dtype='str',
         doc="Version Id of this device",
     )
+    """Device attribute."""
 
     loggingLevel = attribute(
         dtype=LoggingLevel,
@@ -744,6 +805,11 @@ class SKABaseDevice(Device):
         doc="Current logging level for this device - "
             "initialises to LoggingLevelDefault on startup",
     )
+    """
+    Device attribute.
+    
+    See :py:class:`~ska_tango_base.control_model.LoggingLevel`
+    """
 
     loggingTargets = attribute(
         dtype=('str',),
@@ -752,6 +818,7 @@ class SKABaseDevice(Device):
         doc="Logging targets for this device, excluding ska_ser_logging defaults"
             " - initialises to LoggingTargetsDefault on startup",
     )
+    """Device attribute."""
 
     healthState = attribute(
         dtype=HealthState,
@@ -760,6 +827,7 @@ class SKABaseDevice(Device):
             " condition and condition of all managed devices to set this. "
             "Most possibly an aggregate attribute.",
     )
+    """Device attribute."""
 
     adminMode = attribute(
         dtype=AdminMode,
@@ -769,6 +837,7 @@ class SKABaseDevice(Device):
             "device condition and condition of all managed devices to set this. "
             "Most possibly an aggregate attribute.",
     )
+    """Device attribute."""
 
     controlMode = attribute(
         dtype=ControlMode,
@@ -779,6 +848,7 @@ class SKABaseDevice(Device):
             "queries received from TM or any other ‘remote’ clients. The Local clients"
             " has to release LOCAL control before REMOTE clients can take control again.",
     )
+    """Device attribute."""
 
     simulationMode = attribute(
         dtype=SimulationMode,
@@ -788,6 +858,7 @@ class SKABaseDevice(Device):
             "both modes, while others will have simulators that set simulationMode "
             "to True while the real devices always set simulationMode to False.",
     )
+    """Device attribute."""
 
     testMode = attribute(
         dtype=TestMode,
@@ -797,6 +868,7 @@ class SKABaseDevice(Device):
             "Either no test mode or an "
             "indication of the test mode.",
     )
+    """Device attribute."""
 
     # ---------------
     # General methods
diff --git a/src/ska_tango_base/capability_device.py b/src/ska_tango_base/capability_device.py
index 5c7dba6a..3ede5b04 100644
--- a/src/ska_tango_base/capability_device.py
+++ b/src/ska_tango_base/capability_device.py
@@ -88,17 +88,20 @@ class SKACapability(SKAObsDevice):
         display_unit="s",
         doc="Time of activation in seconds since Unix epoch.",
     )
+    """Device attribute."""
 
     configuredInstances = attribute(
         dtype='uint16',
         doc="Number of instances of this Capability Type currently in use on this subarray.",
     )
+    """Device attribute."""
 
     usedComponents = attribute(
         dtype=('str',),
         max_dim_x=100,
         doc="A list of components with no. of instances in use on this Capability.",
     )
+    """Device attribute."""
 
     # ---------------
     # General methods
diff --git a/src/ska_tango_base/csp_subelement_master.py b/src/ska_tango_base/csp_subelement_master.py
index ddd9fe3e..7bd30eb5 100644
--- a/src/ska_tango_base/csp_subelement_master.py
+++ b/src/ska_tango_base/csp_subelement_master.py
@@ -72,6 +72,7 @@ class CspSubElementMaster(SKAMaster):
         unit="sec.",
         doc="Delay in sec between the power-up stages in Standby<->On transitions.",
     )
+    """Device attribute."""
 
     powerDelayStandbyOff = attribute(
         dtype='DevFloat',
@@ -80,6 +81,7 @@ class CspSubElementMaster(SKAMaster):
         unit="sec",
         doc="Delay in sec between the power-up stages in Standby->Off transitions.",
     )
+    """Device attribute."""
 
     onProgress = attribute(
         dtype='DevUShort',
@@ -88,6 +90,7 @@ class CspSubElementMaster(SKAMaster):
         min_value=0,
         doc="Progress percentage of the command execution.",
     )
+    """Device attribute."""
 
     onMaximumDuration = attribute(
         dtype='DevFloat',
@@ -96,6 +99,7 @@ class CspSubElementMaster(SKAMaster):
         unit="sec.",
         doc="The expected maximum duration (sec.) to execute the On command.",
     )
+    """Device attribute."""
 
     onMeasuredDuration = attribute(
         dtype='DevFloat',
@@ -103,6 +107,7 @@ class CspSubElementMaster(SKAMaster):
         unit="sec",
         doc="The measured time (sec) taken to execute the command.",
     )
+    """Device attribute."""
 
     standbyProgress = attribute(
         dtype='DevUShort',
@@ -111,6 +116,7 @@ class CspSubElementMaster(SKAMaster):
         min_value=0,
         doc="Progress percentage of the command execution.",
     )
+    """Device attribute."""
 
     standbyMaximumDuration = attribute(
         dtype='DevFloat',
@@ -119,6 +125,7 @@ class CspSubElementMaster(SKAMaster):
         unit="sec.",
         doc="The expected maximum duration (sec.) to execute the Standby command.",
     )
+    """Device attribute."""
 
     standbyMeasuredDuration = attribute(
         dtype='DevFloat',
@@ -126,6 +133,7 @@ class CspSubElementMaster(SKAMaster):
         unit="sec",
         doc="The measured time (sec) taken to execute the Standby command.",
     )
+    """Device attribute."""
 
     offProgress = attribute(
         dtype='DevUShort',
@@ -134,6 +142,7 @@ class CspSubElementMaster(SKAMaster):
         min_value=0,
         doc="Progress percentage of the command execution.",
     )
+    """Device attribute."""
 
     offMaximumDuration = attribute(
         dtype='DevFloat',
@@ -142,6 +151,7 @@ class CspSubElementMaster(SKAMaster):
         unit="sec.",
         doc="The expected maximum duration (sec.) to execute the Off command.",
     )
+    """Device attribute."""
 
     offMeasuredDuration = attribute(
         dtype='DevFloat',
@@ -149,6 +159,7 @@ class CspSubElementMaster(SKAMaster):
         unit="sec",
         doc="The measured time (sec) taken to execute the Off command.",
     )
+    """Device attribute."""
 
     totalOutputDataRateToSdp = attribute(
         dtype='DevFloat',
@@ -156,6 +167,7 @@ class CspSubElementMaster(SKAMaster):
         unit="GB/s",
         doc="Report the total link expected  output data rate.",
     )
+    """Device attribute."""
 
     loadFirmwareProgress = attribute(
         dtype='DevUShort',
@@ -164,6 +176,7 @@ class CspSubElementMaster(SKAMaster):
         min_value=0,
         doc="The command progress percentage.",
     )
+    """Device attribute."""
 
     loadFirmwareMaximumDuration = attribute(
         dtype='DevFloat',
@@ -172,6 +185,7 @@ class CspSubElementMaster(SKAMaster):
         unit="sec",
         doc="The expected maximum duration (in sec) for command execution.",
     )
+    """Device attribute."""
 
     loadFirmwareMeasuredDuration = attribute(
         dtype='DevFloat',
@@ -179,6 +193,7 @@ class CspSubElementMaster(SKAMaster):
         unit="sec",
         doc="The command execution measured duration (in sec).",
     )
+    """Device attribute."""
 
     # ---------------
     # General methods
diff --git a/src/ska_tango_base/csp_subelement_obsdevice.py b/src/ska_tango_base/csp_subelement_obsdevice.py
index c378502c..ebdec295 100644
--- a/src/ska_tango_base/csp_subelement_obsdevice.py
+++ b/src/ska_tango_base/csp_subelement_obsdevice.py
@@ -118,24 +118,28 @@ class CspSubElementObsDevice(SKAObsDevice):
         label="scanID",
         doc="The scan identification number to be inserted in the output\nproducts.",
     )
+    """Device attribute."""
 
     configurationID = attribute(
         dtype='DevString',
         label="configurationID",
         doc="The configuration ID specified into the JSON configuration.",
     )
+    """Device attribute."""
 
     deviceID = attribute(
         dtype='DevUShort',
         label="deviceID",
         doc="The observing device ID.",
     )
+    """Device attribute."""
 
     lastScanConfiguration = attribute(
         dtype='DevString',
         label="lastScanConfiguration",
         doc="The last valid scan configuration.",
     )
+    """Device attribute."""
 
     sdpDestinationAddresses = attribute(
         dtype='DevString',
@@ -145,12 +149,14 @@ class CspSubElementObsDevice(SKAObsDevice):
             " visibility channels\nPSS ? Pss pipelines\nPST ? PSTBeam\nNot used by al CSP Sub-element"
             " observing device (for ex. Mid CBF VCCs)",
     )
+    """Device attribute."""
 
     sdpLinkCapacity = attribute(
         dtype='DevFloat',
         label="sdpLinkCapacity",
         doc="The SDP link capavity in GB/s.",
     )
+    """Device attribute."""
 
     sdpLinkActive = attribute(
         dtype=('DevBoolean',),
@@ -158,12 +164,14 @@ class CspSubElementObsDevice(SKAObsDevice):
         label="sdpLinkActive",
         doc="Flag reporting if the SDP link is active.\nTrue: active\nFalse:down",
     )
+    """Device attribute."""
 
     healthFailureMessage = attribute(
         dtype='DevString',
         label="healthFailureMessage",
         doc="Message providing info about device health failure.",
     )
+    """Device attribute."""
 
     # ---------------
     # General methods
diff --git a/src/ska_tango_base/csp_subelement_subarray.py b/src/ska_tango_base/csp_subelement_subarray.py
index a9c1fb00..541cc8d4 100644
--- a/src/ska_tango_base/csp_subelement_subarray.py
+++ b/src/ska_tango_base/csp_subelement_subarray.py
@@ -55,12 +55,14 @@ class CspSubElementSubarray(SKASubarray):
         label="scanID",
         doc="The scan identification number to be inserted in the output products.",
     )
+    """Device attribute."""
 
     configurationID = attribute(
         dtype='DevString',
         label="configurationID",
         doc="The configuration ID specified into the JSON configuration.",
     )
+    """Device attribute."""
 
     sdpDestinationAddresses = attribute(
         dtype='DevString',
@@ -68,6 +70,7 @@ class CspSubElementSubarray(SKASubarray):
         label="sdpDestinationAddresses",
         doc="JSON formatted string.\nReport the list of all the SDP addresses provided by SDP to receive the output products.\nSpecifies the Mac, IP, Port for each resource:CBF visibility channels, Pss pipelines, PSTBeam",
     )
+    """Device attribute."""
 
     outputDataRateToSdp = attribute(
         dtype='DevFloat',
@@ -75,12 +78,14 @@ class CspSubElementSubarray(SKASubarray):
         unit="GB/s",
         doc="The output data rate (GB/s) on the link for each scan.",
     )
+    """Device attribute."""
 
     lastScanConfiguration = attribute(
         dtype='DevString',
         label="lastScanConfiguration",
         doc="The last valid scan configuration.",
     )
+    """Device attribute."""
 
     sdpLinkActive = attribute(
         dtype=('DevBoolean',),
@@ -88,12 +93,14 @@ class CspSubElementSubarray(SKASubarray):
         label="sdpLinkActive",
         doc="Flag reporting if the SDP links are active.",
     )
+    """Device attribute."""
 
     listOfDevicesCompletedTasks = attribute(
         dtype='DevString',
         label="listOfDevicesCompletedTasks",
         doc="JSON formatted string reporting for each task/command the list of devices\nthat completed successfully the task.\nEx.\n{``cmd1``: [``device1``, ``device2``], ``cmd2``: [``device2``, ``device3``]}",
     )
+    """Device attribute."""
 
     configureScanMeasuredDuration = attribute(
         dtype='DevFloat',
@@ -101,12 +108,14 @@ class CspSubElementSubarray(SKASubarray):
         unit="sec",
         doc="The measured time (sec) taken to execute the command",
     )
+    """Device attribute."""
 
     configureScanTimeoutExpiredFlag = attribute(
         dtype='DevBoolean',
         label="configureScanTimeoutExpiredFlag",
         doc="Flag reporting  ConfigureScan command timeout expiration.",
     )
+    """Device attribute."""
 
     assignResourcesMaximumDuration = attribute(
         dtype='DevFloat',
@@ -115,6 +124,7 @@ class CspSubElementSubarray(SKASubarray):
         unit="sec",
         doc="The maximum expected command duration.",
     )
+    """Device attribute."""
 
     assignResourcesMeasuredDuration = attribute(
         dtype='DevFloat',
@@ -122,6 +132,7 @@ class CspSubElementSubarray(SKASubarray):
         unit="sec",
         doc="The measured command execution duration.",
     )
+    """Device attribute."""
 
     assignResourcesProgress = attribute(
         dtype='DevUShort',
@@ -130,12 +141,14 @@ class CspSubElementSubarray(SKASubarray):
         min_value=0,
         doc="The percentage progress of the command in the [0,100].",
     )
+    """Device attribute."""
 
     assignResourcesTimeoutExpiredFlag = attribute(
         dtype='DevBoolean',
         label="assignResourcesTimeoutExpiredFlag",
         doc="Flag reporting  AssignResources command timeout expiration.",
     )
+    """Device attribute."""
 
     releaseResourcesMaximumDuration = attribute(
         dtype='DevFloat',
@@ -144,6 +157,7 @@ class CspSubElementSubarray(SKASubarray):
         unit="sec",
         doc="The maximum expected command duration.",
     )
+    """Device attribute."""
 
     releaseResourcesMeasuredDuration = attribute(
         dtype='DevFloat',
@@ -151,6 +165,7 @@ class CspSubElementSubarray(SKASubarray):
         unit="sec",
         doc="The measured command execution duration.",
     )
+    """Device attribute."""
 
     releaseResourcesProgress = attribute(
         dtype='DevUShort',
@@ -159,12 +174,14 @@ class CspSubElementSubarray(SKASubarray):
         min_value=0,
         doc="The percentage progress of the command in the [0,100].",
     )
+    """Device attribute."""
 
     releaseResourcesTimeoutExpiredFlag = attribute(
         dtype='DevBoolean',
         label="timeoutExpiredFlag",
         doc="Flag reporting  command timeout expiration.",
     )
+    """Device attribute."""
 
     # ---------------
     # General methods
diff --git a/src/ska_tango_base/master_device.py b/src/ska_tango_base/master_device.py
index 224f99ee..0fb64d15 100644
--- a/src/ska_tango_base/master_device.py
+++ b/src/ska_tango_base/master_device.py
@@ -100,21 +100,25 @@ class SKAMaster(SKABaseDevice):
         dtype='str',
         doc="FQDN of Element Logger",
     )
+    """Device attribute."""
 
     elementAlarmAddress = attribute(
         dtype='str',
         doc="FQDN of Element Alarm Handlers",
     )
+    """Device attribute."""
 
     elementTelStateAddress = attribute(
         dtype='str',
         doc="FQDN of Element TelState device",
     )
+    """Device attribute."""
 
     elementDatabaseAddress = attribute(
         dtype='str',
         doc="FQDN of Element Database device",
     )
+    """Device attribute."""
 
     maxCapabilities = attribute(
         dtype=('str',),
@@ -122,6 +126,7 @@ class SKAMaster(SKABaseDevice):
         doc=("Maximum number of instances of each capability type,"
              " e.g. 'CORRELATOR:512', 'PSS-BEAMS:4'."),
     )
+    """Device attribute."""
 
     availableCapabilities = attribute(
         dtype=('str',),
@@ -129,6 +134,7 @@ class SKAMaster(SKABaseDevice):
         doc="A list of available number of instances of each capability type, "
             "e.g. 'CORRELATOR:512', 'PSS-BEAMS:4'.",
     )
+    """Device attribute."""
 
     # ---------------
     # General methods
diff --git a/src/ska_tango_base/obs_device.py b/src/ska_tango_base/obs_device.py
index d936d3bb..b275530e 100644
--- a/src/ska_tango_base/obs_device.py
+++ b/src/ska_tango_base/obs_device.py
@@ -51,9 +51,9 @@ class ObsDeviceStateModel(DeviceStateModel):
            state machine class
         :type action_breakdown: dictionary defining actions to be performed
             on the observation state machine and,as needed, on the device state machine.
-        :param obs_machine_class
-        :type obs_machine_class: state machine for the observing state of a
+        :param obs_machine_class: state machine for the observing state of a
             SKAObsDevice class device.
+        :type obs_machine_class: :py:class:`transitions.Machine`
         :param logger: the logger to be used by this state model.
         :type logger: a logger that implements the standard library
             logger interface
@@ -273,11 +273,13 @@ class SKAObsDevice(SKABaseDevice):
         dtype=ObsState,
         doc="Observing State",
     )
+    """Device attribute."""
 
     obsMode = attribute(
         dtype=ObsMode,
         doc="Observing Mode",
     )
+    """Device attribute."""
 
     configurationProgress = attribute(
         dtype='uint16',
@@ -286,12 +288,14 @@ class SKAObsDevice(SKABaseDevice):
         min_value=0,
         doc="Percentage configuration progress",
     )
+    """Device attribute."""
 
     configurationDelayExpected = attribute(
         dtype='uint16',
         unit="seconds",
         doc="Configuration delay expected in seconds",
     )
+    """Device attribute."""
 
     # ---------------
     # General methods
diff --git a/src/ska_tango_base/subarray_device.py b/src/ska_tango_base/subarray_device.py
index 2119d27d..1108c653 100644
--- a/src/ska_tango_base/subarray_device.py
+++ b/src/ska_tango_base/subarray_device.py
@@ -784,12 +784,14 @@ class SKASubarray(SKAObsDevice):
         display_unit="s",
         doc="Time of activation in seconds since Unix epoch.",
     )
+    """Device attribute."""
 
     assignedResources = attribute(
         dtype=('str',),
         max_dim_x=100,
         doc="The list of resources assigned to the subarray.",
     )
+    """Device attribute."""
 
     configuredCapabilities = attribute(
         dtype=('str',),
@@ -799,6 +801,7 @@ class SKASubarray(SKAObsDevice):
             "e.g.\nCorrelators:512, PssBeams:4, "
             "PstBeams:4, VlbiBeams:0.",
     )
+    """Device attribute."""
 
     # ---------------
     # General methods
-- 
GitLab