From b9c84931a7da968b7846ec69e275ccc041915201 Mon Sep 17 00:00:00 2001
From: Aditya Dange <adityadange.ska@gmail.com>
Date: Fri, 1 Feb 2019 16:18:02 +0530
Subject: [PATCH] Remove release.py file from individual directory. Add single
 release.py file for entire package. Corrected some failing unit tests.

---
 docs/source/SKAAlarmHandler.rst               |  4 +-
 docs/source/SKABaseDevice.rst                 |  2 +-
 docs/source/SKAObsDevice.rst                  |  2 +-
 docs/source/conf.py                           |  1 -
 docs/source/index.rst                         |  8 ++--
 setup.py                                      | 14 +++++--
 skabase/SKAAlarmHandler/SKAAlarmHandler.py    |  7 +---
 skabase/SKAAlarmHandler/__init__.py           | 12 +++---
 skabase/SKAAlarmHandler/release.py            | 18 --------
 skabase/SKAAlarmHandler/setup.py              | 40 ------------------
 .../test/SKAAlarmHandler_test.py              | 17 +++++---
 skabase/SKABaseDevice/SKABaseDevice.py        | 12 ++----
 skabase/SKABaseDevice/__init__.py             | 15 ++++---
 skabase/SKABaseDevice/release.py              | 18 --------
 .../SKABaseDevice/test/SKABaseDevice_test.py  | 15 +++++--
 skabase/SKACapability/SKACapability.py        |  2 +-
 skabase/SKACapability/__init__.py             | 14 +++----
 skabase/SKACapability/release.py              | 18 --------
 skabase/SKACapability/setup.py                | 42 -------------------
 .../SKACapability/test/SKACapability_test.py  | 15 +++++--
 skabase/SKALogger/SKALogger.py                |  8 ++--
 skabase/SKALogger/__init__.py                 | 14 +++----
 skabase/SKALogger/release.py                  | 18 --------
 skabase/SKALogger/test/SKALogger_test.py      | 11 +++--
 skabase/SKAMaster/SKAMaster.py                | 22 ++++++----
 skabase/SKAMaster/__init__.py                 | 14 +++----
 skabase/SKAMaster/release.py                  | 18 --------
 skabase/SKAMaster/test/SKAMaster_test.py      | 15 +++++--
 skabase/SKAObsDevice/SKAObsDevice.py          | 18 ++++----
 skabase/SKAObsDevice/__init__.py              | 14 +++----
 skabase/SKAObsDevice/release.py               | 18 --------
 .../SKAObsDevice/test/SKAObsDevice_test.py    | 15 +++++--
 skabase/SKASubarray/SKASubarray.py            | 24 ++++++-----
 skabase/SKASubarray/__init__.py               | 14 +++----
 skabase/SKASubarray/release.py                | 18 --------
 skabase/SKASubarray/test/SKASubarray_test.py  | 17 ++++++--
 skabase/SKATelState/SKATelState.py            |  2 +-
 skabase/SKATelState/__init__.py               | 15 +++----
 skabase/SKATelState/release.py                | 18 --------
 skabase/SKATelState/setup.py                  | 42 -------------------
 skabase/SKATelState/test/SKATelState_test.py  | 15 +++++--
 skabase/SKATestDevice/SKATestDevice.py        | 10 ++---
 skabase/SKATestDevice/__init__.py             | 12 +++---
 skabase/SKATestDevice/release.py              | 18 --------
 skabase/SKATestDevice/setup.py                | 40 ------------------
 .../SKATestDevice/test/SKATestDevice_test.py  | 16 +++++--
 skabase/conftest.py                           |  7 ----
 skabase/release.py                            | 18 ++++++++
 48 files changed, 259 insertions(+), 488 deletions(-)
 delete mode 100644 skabase/SKAAlarmHandler/release.py
 delete mode 100644 skabase/SKAAlarmHandler/setup.py
 delete mode 100644 skabase/SKABaseDevice/release.py
 delete mode 100644 skabase/SKACapability/release.py
 delete mode 100644 skabase/SKACapability/setup.py
 delete mode 100644 skabase/SKALogger/release.py
 delete mode 100644 skabase/SKAMaster/release.py
 delete mode 100644 skabase/SKAObsDevice/release.py
 delete mode 100644 skabase/SKASubarray/release.py
 delete mode 100644 skabase/SKATelState/release.py
 delete mode 100644 skabase/SKATelState/setup.py
 delete mode 100644 skabase/SKATestDevice/release.py
 delete mode 100644 skabase/SKATestDevice/setup.py
 create mode 100644 skabase/release.py

diff --git a/docs/source/SKAAlarmHandler.rst b/docs/source/SKAAlarmHandler.rst
index 67573b6a..d2fb79e6 100644
--- a/docs/source/SKAAlarmHandler.rst
+++ b/docs/source/SKAAlarmHandler.rst
@@ -9,5 +9,5 @@ SKA AlarmHandler
 .. toctree::
    :maxdepth: 2
 
-.. automodule:: SKAAlarmHandler
-   :members: SKAAlarmHandler.SKAAlarmHandler
+.. automodule:: SKAAlarmHandler.SKAAlarmHandler
+    :members: SKAAlarmHandler
\ No newline at end of file
diff --git a/docs/source/SKABaseDevice.rst b/docs/source/SKABaseDevice.rst
index e8ed3b43..ffc4606e 100644
--- a/docs/source/SKABaseDevice.rst
+++ b/docs/source/SKABaseDevice.rst
@@ -10,5 +10,5 @@ SKA BaseDevice
    :maxdepth: 2
 
 .. automodule:: SKABaseDevice.SKABaseDevice
-   :members: SKABaseDevice
+   :members: __all__
 
diff --git a/docs/source/SKAObsDevice.rst b/docs/source/SKAObsDevice.rst
index effee65f..f679938c 100644
--- a/docs/source/SKAObsDevice.rst
+++ b/docs/source/SKAObsDevice.rst
@@ -10,5 +10,5 @@ SKA ObsDevice
    :maxdepth: 2
 
 .. automodule:: SKAObsDevice.SKAObsDevice
-   :members: SKAObsDevice
+   :members:
 
diff --git a/docs/source/conf.py b/docs/source/conf.py
index 345f7279..6ac21014 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -30,7 +30,6 @@ sys.modules.update((mod_name, Mock()) for mod_name in MOCK_MODULES)
 # 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('../../skabase'))
-print ("from conf sys.path: ", sys.path)
 # -- General configuration ------------------------------------------------
 
 # If your documentation needs a minimal Sphinx version, state it here.
diff --git a/docs/source/index.rst b/docs/source/index.rst
index defdd2ec..474b68de 100644
--- a/docs/source/index.rst
+++ b/docs/source/index.rst
@@ -6,12 +6,12 @@
 Welcome to LMC Base Classes documentation!
 ============================================
 
-Contents:
-
 .. toctree::
-   :maxdepth: 2
+  :caption: Table of Contents
+  :maxdepth: 2
 
-   SKA AlarmHandler<SKAAlarmHandler>
+.. automodule:: SKABaseDevice.SKABaseDevice
+   :members: SKABaseDevice
 
 Indices and tables
 ==================
diff --git a/setup.py b/setup.py
index a640b3c3..a2d012cc 100644
--- a/setup.py
+++ b/setup.py
@@ -1,16 +1,24 @@
 #!/usr/bin/env python
 
+import os
 import sys
 
 from setuptools import setup, find_packages
 
+setup_dir = os.path.dirname(os.path.abspath(__file__))
+release_filename = os.path.join(setup_dir, 'skabase', 'release.py')
+exec(open(release_filename).read())
+
 # prevent unnecessary installation of pytest-runner
 needs_pytest = {'pytest', 'test', 'ptr'}.intersection(sys.argv)
 pytest_runner = ['pytest-runner'] if needs_pytest else []
 
-setup(name="lmc_base_classes",
-      description="Element Base Classes - Evolutionary Prototype",
-      author="SKA Team",
+setup(name=name,
+      description=description,
+      version=version,
+      author=author,
+      author_email=author_email,
+      license=license,
       packages=find_packages(),
       include_package_data=True,
       scripts=["scripts/gen_csv_info.py",
diff --git a/skabase/SKAAlarmHandler/SKAAlarmHandler.py b/skabase/SKAAlarmHandler/SKAAlarmHandler.py
index ad489f51..c7af9e51 100644
--- a/skabase/SKAAlarmHandler/SKAAlarmHandler.py
+++ b/skabase/SKAAlarmHandler/SKAAlarmHandler.py
@@ -24,14 +24,11 @@ import sys
 from future.utils import with_metaclass
 
 # SKA specific imports\
-file_path = os.path.dirname(os.path.abspath(__file__))
-# TODO: remove the release.py file
-sys.path.insert(0, os.path.abspath(os.path.join(file_path, os.curdir)))
-import release # DO NOT import after modifying system path
+from skabase import release
 
+file_path = os.path.dirname(os.path.abspath(__file__))
 basedevice_path = os.path.abspath(os.path.join(file_path, os.pardir)) + "/SKABaseDevice"
 sys.path.insert(0, basedevice_path)
-print ("SKAAlarmHandler sys.path: ", sys.path)
 from SKABaseDevice import SKABaseDevice
 # PROTECTED REGION END #    //  SKAAlarmHandler.additionnal_import
 
diff --git a/skabase/SKAAlarmHandler/__init__.py b/skabase/SKAAlarmHandler/__init__.py
index 0e1be40a..54916ec9 100644
--- a/skabase/SKAAlarmHandler/__init__.py
+++ b/skabase/SKAAlarmHandler/__init__.py
@@ -12,11 +12,11 @@ SKA Alarms and SKA/Element Alerts are rules-based configurable conditions that c
 attribute values and quality factors, and are separate from the "built-in" TANGO attribute alarms.
 """
 
-__all__ = ["SKAAlarmHandler", "main", "release"]
+__all__ = ["SKAAlarmHandler", "main"]
 
-# from . import release
-# from .SKAAlarmHandler import SKAAlarmHandler, main
+from skabase import release
+from .SKAAlarmHandler import SKAAlarmHandler, main
 
-# __version__ = release.version
-# __version_info__ = release.version_info
-# __author__ = release.author
+__version__ = release.version
+__version_info__ = release.version_info
+__author__ = release.author
diff --git a/skabase/SKAAlarmHandler/release.py b/skabase/SKAAlarmHandler/release.py
deleted file mode 100644
index e577110a..00000000
--- a/skabase/SKAAlarmHandler/release.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKAAlarmHandler project
-#
-#
-#
-
-"""Release information for Python Package"""
-
-name = """tangods-skaalarmhandler"""
-version = "1.0.0"
-version_info = version.split(".")
-description = """A generic base device for Alarms for SKA."""
-author = "cam"
-author_email = "cam at ska.ac.za"
-license = """BSD-3-Clause"""
-url = """www.skatelescope.org"""
-copyright = """"""
diff --git a/skabase/SKAAlarmHandler/setup.py b/skabase/SKAAlarmHandler/setup.py
deleted file mode 100644
index af4570cb..00000000
--- a/skabase/SKAAlarmHandler/setup.py
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKAAlarmHandler project
-#
-#
-#
-"""Setup file for SKAAlarmHandler base class"""
-import os
-import sys
-from setuptools import setup
-
-setup_dir = os.path.dirname(os.path.abspath(__file__))
-
-# make sure we use latest info from local code
-sys.path.insert(0, setup_dir)
-
-readme_filename = os.path.join(setup_dir, 'README.rst')
-with open(readme_filename) as file:
-    long_description = file.read()
-
-release_filename = os.path.join(setup_dir, 'SKAAlarmHandler', 'release.py')
-exec(open(release_filename).read())
-
-pack = ['SKAAlarmHandler']
-
-setup(name=name,
-      version=version,
-      description='A generic base device for Alarms for SKA.',
-      packages=pack,
-      include_package_data=True,
-      test_suite="test",
-      entry_points={'console_scripts':['SKAAlarmHandler = SKAAlarmHandler:main']},
-      author='cam',
-      author_email='cam at ska.ac.za',
-      license='BSD-3-Clause',
-      long_description=long_description,
-      url='www.tango-controls.org',
-      platforms="All Platforms"
-      )
diff --git a/skabase/SKAAlarmHandler/test/SKAAlarmHandler_test.py b/skabase/SKAAlarmHandler/test/SKAAlarmHandler_test.py
index 40d2ebb9..68f3479d 100644
--- a/skabase/SKAAlarmHandler/test/SKAAlarmHandler_test.py
+++ b/skabase/SKAAlarmHandler/test/SKAAlarmHandler_test.py
@@ -18,6 +18,7 @@ sys.path.insert(0, os.path.abspath(path))
 # Imports
 import pytest
 from tango import DevState
+import re
 
 # PROTECTED REGION ID(SKAAlarmHandler.test_additional_imports) ENABLED START #
 # PROTECTED REGION END #    //  SKAAlarmHandler.test_additional_imports
@@ -141,8 +142,11 @@ class TestSKAAlarmHandler(object):
     def test_GetVersionInfo(self, tango_context):
         """Test for GetVersionInfo"""
         # PROTECTED REGION ID(SKAAlarmHandler.test_GetVersionInfo) ENABLED START #
-        assert tango_context.device.GetVersionInfo() == ['tangods-skaalarmhandler, 1.0.0,'
-                                                         ' A generic base device for Alarms for SKA.']
+        versionPattern = re.compile(
+            r'SKAAlarmHandler, lmc-base-classes, [0-9].[0-9].[0-9], '
+            r'A set of generic base devices for SKA Telescope.')
+        versionInfo = tango_context.device.GetVersionInfo()
+        assert (re.match(versionPattern, versionInfo[0])) != None
         # PROTECTED REGION END #    //  SKAAlarmHandler.test_GetVersionInfo
 
 
@@ -191,8 +195,10 @@ class TestSKAAlarmHandler(object):
     def test_buildState(self, tango_context):
         """Test for buildState"""
         # PROTECTED REGION ID(SKAAlarmHandler.test_buildState) ENABLED START #
-        assert tango_context.device.buildState == 'tangods-skaalarmhandler, 1.0.0,' \
-                                                  ' A generic base device for Alarms for SKA.'
+        buildPattern = re.compile(
+            r'lmc-base-classes, [0-9].[0-9].[0-9], '
+            r'A set of generic base devices for SKA Telescope')
+        assert (re.match(buildPattern, tango_context.device.buildState)) != None
         # PROTECTED REGION END #    //  SKAAlarmHandler.test_buildState
 
     # PROTECTED REGION ID(SKAAlarmHandler.test_versionId_decorators) ENABLED START #
@@ -200,7 +206,8 @@ class TestSKAAlarmHandler(object):
     def test_versionId(self, tango_context):
         """Test for versionId"""
         # PROTECTED REGION ID(SKAAlarmHandler.test_versionId) ENABLED START #
-        assert tango_context.device.versionId == '1.0.0'
+        versionIdPattern = re.compile(r'[0-9].[0-9].[0-9]')
+        assert (re.match(versionIdPattern, tango_context.device.versionId)) != None
         # PROTECTED REGION END #    //  SKAAlarmHandler.test_versionId
 
     # PROTECTED REGION ID(SKAAlarmHandler.test_centralLoggingLevel_decorators) ENABLED START #
diff --git a/skabase/SKABaseDevice/SKABaseDevice.py b/skabase/SKABaseDevice/SKABaseDevice.py
index ea53f622..2007119d 100644
--- a/skabase/SKABaseDevice/SKABaseDevice.py
+++ b/skabase/SKABaseDevice/SKABaseDevice.py
@@ -5,9 +5,8 @@
 #
 #
 
-""" SKABASE
-
-A generic base device for SKA. It exposes the generic attributes, properties and commands of an SKA device.
+"""skabasedevice.py: A generic base device for SKA. It exposes the generic attributes,
+properties and commands of an SKA device.
 """
 from __future__ import print_function
 from __future__ import absolute_import
@@ -33,12 +32,9 @@ from builtins import range
 
 # SKA specific imports
 file_path = os.path.dirname(os.path.abspath(__file__))
-sys.path.insert(0, os.path.abspath(os.path.join(file_path, os.curdir)))
-import release # DO NOT import after modifying system path
-
 auxiliary_path = os.path.abspath(os.path.join(file_path, os.pardir)) + "/auxiliary"
 sys.path.insert(0, auxiliary_path)
-
+from skabase import release
 from utils import (get_dp_command, exception_manager,
                            tango_type_conversion, coerce_value,
                            get_groups_from_json, get_tango_device_type_id)
@@ -50,12 +46,10 @@ from logging.handlers import SysLogHandler
 
 # Initialize logging
 logging.basicConfig()
-
 # PROTECTED REGION END #    //  SKABaseDevice.additionnal_import
 
 __all__ = ["SKABaseDevice", "main"]
 
-
 class SKABaseDevice(with_metaclass(DeviceMeta, Device)):
     """
     A generic base device for SKA.
diff --git a/skabase/SKABaseDevice/__init__.py b/skabase/SKABaseDevice/__init__.py
index 5864df45..cead7c0f 100644
--- a/skabase/SKABaseDevice/__init__.py
+++ b/skabase/SKABaseDevice/__init__.py
@@ -7,14 +7,13 @@
 
 """SKABASE
 
-A generic base device for SKA. It exposes the generic attributes, properties and commands of an SKA device.
+__init__.py: A generic base device for SKA. It exposes the generic attributes, properties and commands of an SKA device.
 """
+__all__ = ["SKABaseDevice", "main"]
 
-__all__ = ["SKABaseDevice", "main", "release"]
+from skabase import release
+from .SKABaseDevice import SKABaseDevice, main
 
-# import release
-# from .SKABaseDevice import SKABaseDevice, main
-#
-# __version__ = release.version
-# __version_info__ = release.version_info
-# __author__ = release.author
+__version__ = release.version
+__version_info__ = release.version_info
+__author__ = release.author
\ No newline at end of file
diff --git a/skabase/SKABaseDevice/release.py b/skabase/SKABaseDevice/release.py
deleted file mode 100644
index e126d562..00000000
--- a/skabase/SKABaseDevice/release.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKABaseDevice project
-#
-#
-#
-
-"""Release information for Python Package"""
-
-name = """tangods-skabasedevice"""
-version = "1.0.0"
-version_info = version.split(".")
-description = """A generic base device for SKA."""
-author = "cam"
-author_email = "cam at ska.ac.za"
-license = """BSD-3-Clause"""
-url = """www.tango-controls.org"""
-copyright = """"""
diff --git a/skabase/SKABaseDevice/test/SKABaseDevice_test.py b/skabase/SKABaseDevice/test/SKABaseDevice_test.py
index 9bbea200..9cd9c9ad 100644
--- a/skabase/SKABaseDevice/test/SKABaseDevice_test.py
+++ b/skabase/SKABaseDevice/test/SKABaseDevice_test.py
@@ -18,6 +18,7 @@ sys.path.insert(0, os.path.abspath(path))
 # Imports
 import pytest
 from tango import DevState
+import re
 
 # PROTECTED REGION ID(SKABaseDevice.test_additional_imports) ENABLED START #
 # PROTECTED REGION END #    //  SKABaseDevice.test_additional_imports
@@ -90,7 +91,11 @@ class TestSKABaseDevice(object):
     def test_GetVersionInfo(self, tango_context):
         """Test for GetVersionInfo"""
         # PROTECTED REGION ID(SKABaseDevice.test_GetVersionInfo) ENABLED START #
-        assert tango_context.device.GetVersionInfo() == [""]
+        versionPattern = re.compile(
+            r'SKABaseDevice, lmc-base-classes, [0-9].[0-9].[0-9], '
+            r'A set of generic base devices for SKA Telescope.')
+        versionInfo = tango_context.device.GetVersionInfo()
+        assert (re.match(versionPattern, versionInfo[0])) != None
         # PROTECTED REGION END #    //  SKABaseDevice.test_GetVersionInfo
 
     # PROTECTED REGION ID(SKABaseDevice.test_Reset_decorators) ENABLED START #
@@ -107,7 +112,10 @@ class TestSKABaseDevice(object):
     def test_buildState(self, tango_context):
         """Test for buildState"""
         # PROTECTED REGION ID(SKABaseDevice.test_buildState) ENABLED START #
-        assert tango_context.device.buildState == ''
+        buildPattern = re.compile(
+            r'lmc-base-classes, [0-9].[0-9].[0-9], '
+            r'A set of generic base devices for SKA Telescope')
+        assert (re.match(buildPattern, tango_context.device.buildState)) != None
         # PROTECTED REGION END #    //  SKABaseDevice.test_buildState
 
     # PROTECTED REGION ID(SKABaseDevice.test_versionId_decorators) ENABLED START #
@@ -115,7 +123,8 @@ class TestSKABaseDevice(object):
     def test_versionId(self, tango_context):
         """Test for versionId"""
         # PROTECTED REGION ID(SKABaseDevice.test_versionId) ENABLED START #
-        assert tango_context.device.versionId == ''
+        versionIdPattern = re.compile(r'[0-9].[0-9].[0-9]')
+        assert (re.match(versionIdPattern, tango_context.device.versionId)) != None
         # PROTECTED REGION END #    //  SKABaseDevice.test_versionId
 
     # PROTECTED REGION ID(SKABaseDevice.test_centralLoggingLevel_decorators) ENABLED START #
diff --git a/skabase/SKACapability/SKACapability.py b/skabase/SKACapability/SKACapability.py
index 04c2b2f8..46eef6cd 100644
--- a/skabase/SKACapability/SKACapability.py
+++ b/skabase/SKACapability/SKACapability.py
@@ -24,7 +24,7 @@ import sys
 from future.utils import with_metaclass
 
 # SKA specific imports
-import release # DO NOT import after modifying system path
+from skabase import release
 
 file_path = os.path.dirname(os.path.abspath(__file__))
 obs_device_path = os.path.abspath(os.path.join(file_path, os.pardir)) + "/SKAObsDevice"
diff --git a/skabase/SKACapability/__init__.py b/skabase/SKACapability/__init__.py
index 7d36f075..c1527cba 100644
--- a/skabase/SKACapability/__init__.py
+++ b/skabase/SKACapability/__init__.py
@@ -10,10 +10,10 @@
 A Subarray handling device. It exposes the instances of configured capabilities.
 """
 
-__all__ = ["SKACapability", "main", "release"]
-# from . import release
-# from .SKACapability import SKACapability, main
-#
-# __version__ = release.version
-# __version_info__ = release.version_info
-# __author__ = release.author
+__all__ = ["SKACapability", "main"]
+from skabase import release
+from .SKACapability import SKACapability, main
+
+__version__ = release.version
+__version_info__ = release.version_info
+__author__ = release.author
diff --git a/skabase/SKACapability/release.py b/skabase/SKACapability/release.py
deleted file mode 100644
index 37c9327f..00000000
--- a/skabase/SKACapability/release.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKACapability project
-#
-#
-#
-
-"""Release information for Python Package"""
-
-name = """tangods-skacapability"""
-version = "1.0.0"
-version_info = version.split(".")
-description = """Subarray handling device"""
-author = "cam"
-author_email = "cam at ska.ac.za"
-license = """BSD-3-Clause"""
-url = """www.tango-controls.org"""
-copyright = """"""
diff --git a/skabase/SKACapability/setup.py b/skabase/SKACapability/setup.py
deleted file mode 100644
index 960ecf22..00000000
--- a/skabase/SKACapability/setup.py
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKACapability project
-#
-#
-#
-
-""" Setup file for SKAcapability base class"""
-
-import os
-import sys
-from setuptools import setup
-
-setup_dir = os.path.dirname(os.path.abspath(__file__))
-
-# make sure we use latest info from local code
-sys.path.insert(0, setup_dir)
-
-readme_filename = os.path.join(setup_dir, 'README.rst')
-with open(readme_filename) as file:
-    long_description = file.read()
-
-release_filename = os.path.join(setup_dir, 'SKACapability', 'release.py')
-exec(open(release_filename).read())
-
-pack = ['SKACapability']
-
-setup(name=name,
-      version=version,
-      description='Subarray handling device',
-      packages=pack,
-      include_package_data=True,
-      test_suite="test",
-      entry_points={'console_scripts':['SKACapability = SKACapability:main']},
-      author='cam',
-      author_email='cam at ska.ac.za',
-      license='BSD-3-Clause',
-      long_description=long_description,
-      url='www.tango-controls.org',
-      platforms="All Platforms"
-      )
diff --git a/skabase/SKACapability/test/SKACapability_test.py b/skabase/SKACapability/test/SKACapability_test.py
index 8044e89e..be9aded9 100644
--- a/skabase/SKACapability/test/SKACapability_test.py
+++ b/skabase/SKACapability/test/SKACapability_test.py
@@ -18,6 +18,7 @@ sys.path.insert(0, os.path.abspath(path))
 # Imports
 import pytest
 from tango import DevState
+import re
 
 # PROTECTED REGION ID(SKACapability.test_additional_imports) ENABLED START #
 # PROTECTED REGION END #    //  SKACapability.test_additional_imports
@@ -102,7 +103,11 @@ class TestSKACapability(object):
     def test_GetVersionInfo(self, tango_context):
         """Test for GetVersionInfo"""
         # PROTECTED REGION ID(SKACapability.test_GetVersionInfo) ENABLED START #
-        assert tango_context.device.GetVersionInfo() == [""]
+        versionPattern = re.compile(
+            r'SKACapability, lmc-base-classes, [0-9].[0-9].[0-9], '
+            r'A set of generic base devices for SKA Telescope.')
+        versionInfo = tango_context.device.GetVersionInfo()
+        assert (re.match(versionPattern, versionInfo[0])) != None
         # PROTECTED REGION END #    //  SKACapability.test_GetVersionInfo
 
     # PROTECTED REGION ID(SKACapability.test_ConfigureInstances_decorators) ENABLED START #
@@ -167,7 +172,10 @@ class TestSKACapability(object):
     def test_buildState(self, tango_context):
         """Test for buildState"""
         # PROTECTED REGION ID(SKACapability.test_buildState) ENABLED START #
-        assert tango_context.device.buildState == ''
+        buildPattern = re.compile(
+            r'lmc-base-classes, [0-9].[0-9].[0-9], '
+            r'A set of generic base devices for SKA Telescope')
+        assert (re.match(buildPattern, tango_context.device.buildState)) != None
         # PROTECTED REGION END #    //  SKACapability.test_buildState
 
     # PROTECTED REGION ID(SKACapability.test_versionId_decorators) ENABLED START #
@@ -175,7 +183,8 @@ class TestSKACapability(object):
     def test_versionId(self, tango_context):
         """Test for versionId"""
         # PROTECTED REGION ID(SKACapability.test_versionId) ENABLED START #
-        assert tango_context.device.versionId == ''
+        versionIdPattern = re.compile(r'[0-9].[0-9].[0-9]')
+        assert (re.match(versionIdPattern, tango_context.device.versionId)) != None
         # PROTECTED REGION END #    //  SKACapability.test_versionId
 
     # PROTECTED REGION ID(SKACapability.test_centralLoggingLevel_decorators) ENABLED START #
diff --git a/skabase/SKALogger/SKALogger.py b/skabase/SKALogger/SKALogger.py
index 94366234..fce2fa6a 100644
--- a/skabase/SKALogger/SKALogger.py
+++ b/skabase/SKALogger/SKALogger.py
@@ -22,15 +22,17 @@ from tango.server import run, DeviceMeta, command
 # PROTECTED REGION ID(SKALogger.additionnal_import) ENABLED START #
 from future.utils import with_metaclass
 from builtins import str
-
-# SKA specific imports
+# standard imports
 import os
 import sys
+
+# SKA specific imports
+from skabase import release
 file_path = os.path.dirname(os.path.abspath(__file__))
 basedevice_path = os.path.abspath(os.path.join(file_path, os.pardir)) + "/SKABaseDevice"
 sys.path.insert(0, basedevice_path)
 from SKABaseDevice import SKABaseDevice
-import release
+
 
 # Log related imports
 import logging
diff --git a/skabase/SKALogger/__init__.py b/skabase/SKALogger/__init__.py
index 6e736eda..4948b3a9 100644
--- a/skabase/SKALogger/__init__.py
+++ b/skabase/SKALogger/__init__.py
@@ -12,11 +12,11 @@ A generic base device for Logging for SKA. It enables to view on-line logs throu
 and to store logs using Python logging. It configures the log levels of remote logging for selected devices.
 """
 
-__all__ = ["SKALogger", "main", "release"]
+__all__ = ["SKALogger", "main"]
 
-# from . import release
-# from .SKALogger import SKALogger, main
-#
-# __version__ = release.version
-# __version_info__ = release.version_info
-# __author__ = release.author
+from skabase import release
+from .SKALogger import SKALogger, main
+
+__version__ = release.version
+__version_info__ = release.version_info
+__author__ = release.author
diff --git a/skabase/SKALogger/release.py b/skabase/SKALogger/release.py
deleted file mode 100644
index ebb2cd7d..00000000
--- a/skabase/SKALogger/release.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKALogger project
-#
-#
-#
-
-"""Release information for Python Package"""
-
-name = """tangods-skalogger"""
-version = "1.0.0"
-version_info = version.split(".")
-description = """A generic base device for Logging for SKA."""
-author = "lochanb.ska"
-author_email = "lochanb.ska at gmail.com"
-license = """BSD-3-Clause"""
-url = """www.tango-controls.org"""
-copyright = """"""
diff --git a/skabase/SKALogger/test/SKALogger_test.py b/skabase/SKALogger/test/SKALogger_test.py
index 9c2047b6..c2e3b841 100644
--- a/skabase/SKALogger/test/SKALogger_test.py
+++ b/skabase/SKALogger/test/SKALogger_test.py
@@ -146,7 +146,8 @@ class TestSKALogger(object):
         """Test for GetVersionInfo"""
         # PROTECTED REGION ID(SKALogger.test_GetVersionInfo) ENABLED START #
         versionPattern = re.compile(
-            r'SKALogger, tangods-skalogger, [0-9].[0-9].[0-9], A generic logger device for SKA')
+            r'SKALogger, lmc-base-classes, [0-9].[0-9].[0-9], '
+            r'A set of generic base devices for SKA Telescope.')
         versionInfo = tango_context.device.GetVersionInfo()
         assert (re.match(versionPattern, versionInfo[0])) != None
         # PROTECTED REGION END #    //  SKALogger.test_GetVersionInfo
@@ -164,7 +165,10 @@ class TestSKALogger(object):
     def test_buildState(self, tango_context):
         """Test for buildState"""
         # PROTECTED REGION ID(SKALogger.test_buildState) ENABLED START #
-        assert tango_context.device.buildState == 'tangods-skalogger, 1.0.0, A generic logger device for SKA.'
+        buildPattern = re.compile(
+            r'lmc-base-classes, [0-9].[0-9].[0-9], '
+            r'A set of generic base devices for SKA Telescope')
+        assert (re.match(buildPattern, tango_context.device.buildState)) != None
         # PROTECTED REGION END #    //  SKALogger.test_buildState
 
     # PROTECTED REGION ID(SKALogger.test_versionId_decorators) ENABLED START #
@@ -172,7 +176,8 @@ class TestSKALogger(object):
     def test_versionId(self, tango_context):
         """Test for versionId"""
         # PROTECTED REGION ID(SKALogger.test_versionId) ENABLED START #
-        assert tango_context.device.versionId == '1.0.0'
+        versionIdPattern = re.compile(r'[0-9].[0-9].[0-9]')
+        assert (re.match(versionIdPattern, tango_context.device.versionId)) != None
         # PROTECTED REGION END #    //  SKALogger.test_versionId
 
     # PROTECTED REGION ID(SKALogger.test_centralLoggingLevel_decorators) ENABLED START #
diff --git a/skabase/SKAMaster/SKAMaster.py b/skabase/SKAMaster/SKAMaster.py
index f7158ef0..23e6c94b 100644
--- a/skabase/SKAMaster/SKAMaster.py
+++ b/skabase/SKAMaster/SKAMaster.py
@@ -12,28 +12,32 @@ A master test
 from __future__ import print_function
 from __future__ import absolute_import
 
+# tango imports
+from tango import DebugIt
+from tango.server import run, DeviceMeta, attribute, command, device_property
+
+# Additional import
+# PROTECTED REGION ID(SKAMaster.additionnal_import) ENABLED START #
 from builtins import zip
 import os
 import sys
 from future.utils import with_metaclass
+from itertools import zip_longest as zip
+
+# SKA specific imports
+from skabase import release
+
 file_path = os.path.dirname(os.path.abspath(__file__))
 basedevice_path = os.path.abspath(os.path.join(file_path, os.pardir)) + "/SKABaseDevice"
 sys.path.insert(0, basedevice_path)
-
-# tango imports
-from tango import DebugIt
-from tango.server import run, DeviceMeta, attribute, command, device_property
 from SKABaseDevice import SKABaseDevice
-# Additional import
-# PROTECTED REGION ID(SKAMaster.additionnal_import) ENABLED START #
-from itertools import zip_longest as zip
 
 from utils import (validate_capability_types, validate_input_sizes,
                            convert_dict_to_list)
-import release
+
 # PROTECTED REGION END #    //  SKAMaster.additionnal_import
 
-#__all__ = ["SKAMaster", "main"]
+__all__ = ["SKAMaster", "main"]
 
 
 class SKAMaster(with_metaclass(DeviceMeta, SKABaseDevice)):
diff --git a/skabase/SKAMaster/__init__.py b/skabase/SKAMaster/__init__.py
index 0538f488..4afa5cb2 100644
--- a/skabase/SKAMaster/__init__.py
+++ b/skabase/SKAMaster/__init__.py
@@ -10,11 +10,11 @@
 A generic master device for SKA Element Master.
 """
 
-__all__ = ["SKAMaster", "main", "release"]
+__all__ = ["SKAMaster", "main"]
 
-# from . import release
-# from .SKAMaster import SKAMaster, main
-#
-# __version__ = release.version
-# __version_info__ = release.version_info
-# __author__ = release.author
+from skabase import release
+from .SKAMaster import SKAMaster, main
+
+__version__ = release.version
+__version_info__ = release.version_info
+__author__ = release.author
diff --git a/skabase/SKAMaster/release.py b/skabase/SKAMaster/release.py
deleted file mode 100644
index 06b3b257..00000000
--- a/skabase/SKAMaster/release.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKAMaster project
-#
-#
-#
-
-"""Release information for Python Package"""
-
-name = """tangods-skamaster"""
-version = "1.0.0"
-version_info = version.split(".")
-description = """A master test"""
-author = "cam"
-author_email = "cam at ska.ac.za"
-license = """BSD-3-Clause"""
-url = """www.tango-controls.org"""
-copyright = """"""
diff --git a/skabase/SKAMaster/test/SKAMaster_test.py b/skabase/SKAMaster/test/SKAMaster_test.py
index 1a87c2b9..f8a73007 100644
--- a/skabase/SKAMaster/test/SKAMaster_test.py
+++ b/skabase/SKAMaster/test/SKAMaster_test.py
@@ -20,6 +20,7 @@ import pytest
 from mock import MagicMock
 
 from tango import DevState
+import re
 
 # PROTECTED REGION ID(SKAMaster.test_additional_imports) ENABLED START #
 # PROTECTED REGION END #    //  SKAMaster.test_additional_imports
@@ -95,7 +96,11 @@ class TestSKAMaster(object):
     def test_GetVersionInfo(self, tango_context):
         """Test for GetVersionInfo"""
         # PROTECTED REGION ID(SKAMaster.test_GetVersionInfo) ENABLED START #
-        assert tango_context.device.GetVersionInfo() == [""]
+        versionPattern = re.compile(
+            r'SKAMaster, lmc-base-classes, [0-9].[0-9].[0-9], '
+            r'A set of generic base devices for SKA Telescope.')
+        versionInfo = tango_context.device.GetVersionInfo()
+        assert (re.match(versionPattern, versionInfo[0])) != None
         # PROTECTED REGION END #    //  SKAMaster.test_GetVersionInfo
 
     # PROTECTED REGION ID(SKAMaster.test_isCapabilityAchievable_decorators) ENABLED START #
@@ -152,7 +157,10 @@ class TestSKAMaster(object):
     def test_buildState(self, tango_context):
         """Test for buildState"""
         # PROTECTED REGION ID(SKAMaster.test_buildState) ENABLED START #
-        assert tango_context.device.buildState == ''
+        buildPattern = re.compile(
+            r'lmc-base-classes, [0-9].[0-9].[0-9], '
+            r'A set of generic base devices for SKA Telescope')
+        assert (re.match(buildPattern, tango_context.device.buildState)) != None
         # PROTECTED REGION END #    //  SKAMaster.test_buildState
 
     # PROTECTED REGION ID(SKAMaster.test_versionId_decorators) ENABLED START #
@@ -160,7 +168,8 @@ class TestSKAMaster(object):
     def test_versionId(self, tango_context):
         """Test for versionId"""
         # PROTECTED REGION ID(SKAMaster.test_versionId) ENABLED START #
-        assert tango_context.device.versionId == ''
+        versionIdPattern = re.compile(r'[0-9].[0-9].[0-9]')
+        assert (re.match(versionIdPattern, tango_context.device.versionId)) != None
         # PROTECTED REGION END #    //  SKAMaster.test_versionId
 
     # PROTECTED REGION ID(SKAMaster.test_centralLoggingLevel_decorators) ENABLED START #
diff --git a/skabase/SKAObsDevice/SKAObsDevice.py b/skabase/SKAObsDevice/SKAObsDevice.py
index 58818d35..dcc49bac 100644
--- a/skabase/SKAObsDevice/SKAObsDevice.py
+++ b/skabase/SKAObsDevice/SKAObsDevice.py
@@ -13,22 +13,26 @@ an obsMode will inherit from SKAObsDevice instead of just SKABaseDevice.
 from __future__ import print_function
 from __future__ import absolute_import
 
+# tango imports
+from tango.server import run, DeviceMeta, attribute
+
+# Additional import
+# PROTECTED REGION ID(SKAObsDevice.additionnal_import) ENABLED START #
+# standard imports
 import os
 import sys
 from future.utils import with_metaclass
+
+# SKA specific imports
+from skabase import release
+
 file_path = os.path.dirname(os.path.abspath(__file__))
 basedevice_path = os.path.abspath(os.path.join(file_path, os.pardir)) + "/SKABaseDevice"
 sys.path.insert(0, basedevice_path)
-
-# tango imports
-from tango.server import run, DeviceMeta, attribute
 from SKABaseDevice import SKABaseDevice
-# Additional import
-# PROTECTED REGION ID(SKAObsDevice.additionnal_import) ENABLED START #
-import release
 # PROTECTED REGION END #    //  SKAObsDevice.additionnal_import
 
-#__all__ = ["SKAObsDevice", "main"]
+__all__ = ["SKAObsDevice", "main"]
 
 
 class SKAObsDevice(with_metaclass(DeviceMeta, SKABaseDevice)):
diff --git a/skabase/SKAObsDevice/__init__.py b/skabase/SKAObsDevice/__init__.py
index d7633222..536230ee 100644
--- a/skabase/SKAObsDevice/__init__.py
+++ b/skabase/SKAObsDevice/__init__.py
@@ -11,11 +11,11 @@ A generic base device for Observations for SKA. It inherits SKABaseDevice class.
 and obsMode will inherit from SKAObsDevice instead of just SKABaseDevice.
 """
 
-__all__ = ["SKAObsDevice", "main", "release"]
+__all__ = ["SKAObsDevice", "main"]
 
-# from . import release
-# from .SKAObsDevice import SKAObsDevice, main
-#
-# __version__ = release.version
-# __version_info__ = release.version_info
-# __author__ = release.author
+from skabase import release
+from .SKAObsDevice import SKAObsDevice, main
+
+__version__ = release.version
+__version_info__ = release.version_info
+__author__ = release.author
diff --git a/skabase/SKAObsDevice/release.py b/skabase/SKAObsDevice/release.py
deleted file mode 100644
index 4ff1cb9a..00000000
--- a/skabase/SKAObsDevice/release.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKAObsDevice project
-#
-#
-#
-
-"""Release information for Python Package"""
-
-name = """tangods-skaobsdevice"""
-version = "1.0.0"
-version_info = version.split(".")
-description = """A generic base device for Observations for SKA."""
-author = "cam"
-author_email = "cam at ska.ac.za"
-license = """BSD-3-Clause"""
-url = """www.tango-controls.org"""
-copyright = """"""
diff --git a/skabase/SKAObsDevice/test/SKAObsDevice_test.py b/skabase/SKAObsDevice/test/SKAObsDevice_test.py
index 1222da46..3c1982aa 100644
--- a/skabase/SKAObsDevice/test/SKAObsDevice_test.py
+++ b/skabase/SKAObsDevice/test/SKAObsDevice_test.py
@@ -18,6 +18,7 @@ sys.path.insert(0, os.path.abspath(path))
 # Imports
 import pytest
 from tango import DevState
+import re
 
 # PROTECTED REGION ID(SKAObsDevice.test_additional_imports) ENABLED START #
 # PROTECTED REGION END #    //  SKAObsDevice.test_additional_imports
@@ -98,7 +99,11 @@ class TestSKAObsDevice(object):
     def test_GetVersionInfo(self, tango_context):
         """Test for GetVersionInfo"""
         # PROTECTED REGION ID(SKAObsDevice.test_GetVersionInfo) ENABLED START #
-        assert tango_context.device.GetVersionInfo() == [""]
+        versionPattern = re.compile(
+            r'SKAObsDevice, lmc-base-classes, [0-9].[0-9].[0-9], '
+            r'A set of generic base devices for SKA Telescope.')
+        versionInfo = tango_context.device.GetVersionInfo()
+        assert (re.match(versionPattern, versionInfo[0])) != None
         # PROTECTED REGION END #    //  SKAObsDevice.test_GetVersionInfo
 
     # PROTECTED REGION ID(SKAObsDevice.test_Reset_decorators) ENABLED START #
@@ -146,7 +151,10 @@ class TestSKAObsDevice(object):
     def test_buildState(self, tango_context):
         """Test for buildState"""
         # PROTECTED REGION ID(SKAObsDevice.test_buildState) ENABLED START #
-        assert tango_context.device.buildState == ''
+        buildPattern = re.compile(
+            r'lmc-base-classes, [0-9].[0-9].[0-9], '
+            r'A set of generic base devices for SKA Telescope')
+        assert (re.match(buildPattern, tango_context.device.buildState)) != None
         # PROTECTED REGION END #    //  SKAObsDevice.test_buildState
 
     # PROTECTED REGION ID(SKAObsDevice.test_versionId_decorators) ENABLED START #
@@ -154,7 +162,8 @@ class TestSKAObsDevice(object):
     def test_versionId(self, tango_context):
         """Test for versionId"""
         # PROTECTED REGION ID(SKAObsDevice.test_versionId) ENABLED START #
-        assert tango_context.device.versionId == ''
+        versionIdPattern = re.compile(r'[0-9].[0-9].[0-9]')
+        assert (re.match(versionIdPattern, tango_context.device.versionId)) != None
         # PROTECTED REGION END #    //  SKAObsDevice.test_versionId
 
     # PROTECTED REGION ID(SKAObsDevice.test_centralLoggingLevel_decorators) ENABLED START #
diff --git a/skabase/SKASubarray/SKASubarray.py b/skabase/SKASubarray/SKASubarray.py
index f8c2454f..b886cd86 100644
--- a/skabase/SKASubarray/SKASubarray.py
+++ b/skabase/SKASubarray/SKASubarray.py
@@ -12,25 +12,29 @@ capabilities, and exposes the related information like assigned resources, confi
 """
 from __future__ import print_function
 from __future__ import absolute_import
-from builtins import zip
-import os
-import sys
-from future.utils import with_metaclass
-file_path = os.path.dirname(os.path.abspath(__file__))
-obs_device_path = os.path.abspath(os.path.join(file_path, os.pardir)) + "/SKAObsDevice"
-sys.path.insert(0, obs_device_path)
 
 # tango imports
 from tango import DebugIt
 from tango.server import run, DeviceMeta, attribute, command
 from tango.server import device_property
-from SKAObsDevice import SKAObsDevice
+from tango import DeviceProxy, Except, ErrSeverity, DevState
+
 # Additional import
 # PROTECTED REGION ID(SKASubarray.additionnal_import) ENABLED START #
-import release
+# standard imports
+from builtins import zip
+import os
+import sys
+from future.utils import with_metaclass
 from itertools import zip_longest as zip
-from tango import DeviceProxy, Except, ErrSeverity, DevState
 
+# SKA specific imports
+from skabase import release
+
+file_path = os.path.dirname(os.path.abspath(__file__))
+obs_device_path = os.path.abspath(os.path.join(file_path, os.pardir)) + "/SKAObsDevice"
+sys.path.insert(0, obs_device_path)
+from SKAObsDevice import SKAObsDevice
 # PROTECTED REGION END #    //  SKASubarray.additionnal_import
 
 __all__ = ["SKASubarray", "main"]
diff --git a/skabase/SKASubarray/__init__.py b/skabase/SKASubarray/__init__.py
index 5fb1ca60..a66e73d5 100644
--- a/skabase/SKASubarray/__init__.py
+++ b/skabase/SKASubarray/__init__.py
@@ -11,11 +11,11 @@ A SubArray handling device. It allows the assigning/releasing of resources into/
 capabilities, and exposes the related information like assigned resources, configured capabilities, etc.
 """
 
-__all__ = ["SKASubarray", "main", "release"]
+__all__ = ["SKASubarray", "main"]
 
-# from . import release
-# from .SKASubarray import SKASubarray, main
-#
-# __version__ = release.version
-# __version_info__ = release.version_info
-# __author__ = release.author
+from skabase import release
+from .SKASubarray import SKASubarray, main
+
+__version__ = release.version
+__version_info__ = release.version_info
+__author__ = release.author
diff --git a/skabase/SKASubarray/release.py b/skabase/SKASubarray/release.py
deleted file mode 100644
index 134c54c0..00000000
--- a/skabase/SKASubarray/release.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKASubarray project
-#
-#
-#
-
-"""Release information for Python Package"""
-
-name = """tangods-skasubarray"""
-version = "1.0.0"
-version_info = version.split(".")
-description = """SubArray handling device"""
-author = "cam"
-author_email = "cam at ska.ac.za"
-license = """BSD-3-Clause"""
-url = """www.tango-controls.org"""
-copyright = """"""
diff --git a/skabase/SKASubarray/test/SKASubarray_test.py b/skabase/SKASubarray/test/SKASubarray_test.py
index 9dfbd546..92d70f92 100644
--- a/skabase/SKASubarray/test/SKASubarray_test.py
+++ b/skabase/SKASubarray/test/SKASubarray_test.py
@@ -18,6 +18,7 @@ sys.path.insert(0, os.path.abspath(path))
 # Imports
 import pytest
 from tango import DevState
+import re
 
 # PROTECTED REGION ID(SKASubarray.test_additional_imports) ENABLED START #
 # PROTECTED REGION END #    //  SKASubarray.test_additional_imports
@@ -100,7 +101,11 @@ class TestSKASubarray(object):
     def test_GetVersionInfo(self, tango_context):
         """Test for GetVersionInfo"""
         # PROTECTED REGION ID(SKASubarray.test_GetVersionInfo) ENABLED START #
-        assert tango_context.device.GetVersionInfo() == [""]
+        versionPattern = re.compile(
+            r'SKASubarray, lmc-base-classes, [0-9].[0-9].[0-9], '
+            r'A set of generic base devices for SKA Telescope.')
+        versionInfo = tango_context.device.GetVersionInfo()
+        assert (re.match(versionPattern, versionInfo[0])) != None
         # PROTECTED REGION END #    //  SKASubarray.test_GetVersionInfo
 
     # PROTECTED REGION ID(SKASubarray.test_Status_decorators) ENABLED START #
@@ -148,7 +153,7 @@ class TestSKASubarray(object):
     def test_ObsState(self, tango_context):
         """Test for ObsState"""
         # PROTECTED REGION ID(SKASubarray.test_ObsState) ENABLED START #
-        assert tango_context.device.ObsState() == ""
+        assert tango_context.device.ObsState == 0
         # PROTECTED REGION END #    //  SKASubarray.test_ObsState
 
     # PROTECTED REGION ID(SKASubarray.test_Pause_decorators) ENABLED START #
@@ -228,7 +233,10 @@ class TestSKASubarray(object):
     def test_buildState(self, tango_context):
         """Test for buildState"""
         # PROTECTED REGION ID(SKASubarray.test_buildState) ENABLED START #
-        assert tango_context.device.buildState == ''
+        buildPattern = re.compile(
+            r'lmc-base-classes, [0-9].[0-9].[0-9], '
+            r'A set of generic base devices for SKA Telescope')
+        assert (re.match(buildPattern, tango_context.device.buildState)) != None
         # PROTECTED REGION END #    //  SKASubarray.test_buildState
 
     # PROTECTED REGION ID(SKASubarray.test_centralLoggingLevel_decorators) ENABLED START #
@@ -324,7 +332,8 @@ class TestSKASubarray(object):
     def test_versionId(self, tango_context):
         """Test for versionId"""
         # PROTECTED REGION ID(SKASubarray.test_versionId) ENABLED START #
-        assert tango_context.device.versionId == ''
+        versionIdPattern = re.compile(r'[0-9].[0-9].[0-9]')
+        assert (re.match(versionIdPattern, tango_context.device.versionId)) != None
         # PROTECTED REGION END #    //  SKASubarray.test_versionId
 
     # PROTECTED REGION ID(SKASubarray.test_assignedResources_decorators) ENABLED START #
diff --git a/skabase/SKATelState/SKATelState.py b/skabase/SKATelState/SKATelState.py
index 489dc6eb..9cbbe462 100644
--- a/skabase/SKATelState/SKATelState.py
+++ b/skabase/SKATelState/SKATelState.py
@@ -21,7 +21,7 @@ import sys
 from future.utils import with_metaclass
 
 # SKA specific imports
-import release # DO NOT import after modifying system path
+from skabase import release
 
 file_path = os.path.dirname(os.path.abspath(__file__))
 basedevice_path = os.path.abspath(os.path.join(file_path, os.pardir)) + "/SKABaseDevice"
diff --git a/skabase/SKATelState/__init__.py b/skabase/SKATelState/__init__.py
index 01ce4463..d3af93c2 100644
--- a/skabase/SKATelState/__init__.py
+++ b/skabase/SKATelState/__init__.py
@@ -9,10 +9,11 @@
 
 A generic base device for Telescope State for SKA.
 """
-__all__ = ["SKATelState", "main", "release"]
-# from . import release
-# from .SKATelState import SKATelState, main
-#
-# __version__ = release.version
-# __version_info__ = release.version_info
-# __author__ = release.author
+__all__ = ["SKATelState", "main"]
+
+from skabase import release
+from .SKATelState import SKATelState, main
+
+__version__ = release.version
+__version_info__ = release.version_info
+__author__ = release.author
diff --git a/skabase/SKATelState/release.py b/skabase/SKATelState/release.py
deleted file mode 100644
index f8d3063e..00000000
--- a/skabase/SKATelState/release.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKATelState project
-#
-#
-#
-
-"""Release information for Python Package"""
-
-name = """tangods-skatelstate"""
-version = "1.0.0"
-version_info = version.split(".")
-description = """A generic base device for Telescope State for SKA."""
-author = "cam"
-author_email = "cam at ska.ac.za"
-license = """BSD-3-Clause"""
-url = """www.tango-controls.org"""
-copyright = """"""
diff --git a/skabase/SKATelState/setup.py b/skabase/SKATelState/setup.py
deleted file mode 100644
index 47560cc8..00000000
--- a/skabase/SKATelState/setup.py
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKATelState project
-#
-#
-#
-
-"""Setup file of SKATelState base class"""
-
-import os
-import sys
-from setuptools import setup
-
-setup_dir = os.path.dirname(os.path.abspath(__file__))
-
-# make sure we use latest info from local code
-sys.path.insert(0, setup_dir)
-
-readme_filename = os.path.join(setup_dir, 'README.rst')
-with open(readme_filename) as file:
-    long_description = file.read()
-
-release_filename = os.path.join(setup_dir, 'SKATelState', 'release.py')
-exec(open(release_filename).read())
-
-pack = ['SKATelState']
-
-setup(name=name,
-      version=version,
-      description='A generic base device for Telescope State for SKA.',
-      packages=pack,
-      include_package_data=True,
-      test_suite="test",
-      entry_points={'console_scripts':['SKATelState = SKATelState:main']},
-      author='cam',
-      author_email='cam at ska.ac.za',
-      license='BSD-3-Clause',
-      long_description=long_description,
-      url='www.tango-controls.org',
-      platforms="All Platforms"
-      )
diff --git a/skabase/SKATelState/test/SKATelState_test.py b/skabase/SKATelState/test/SKATelState_test.py
index 655e9939..9ff5392f 100644
--- a/skabase/SKATelState/test/SKATelState_test.py
+++ b/skabase/SKATelState/test/SKATelState_test.py
@@ -20,6 +20,7 @@ import pytest
 from mock import MagicMock
 
 from PyTango import DevState
+import re
 
 # PROTECTED REGION ID(SKATelState.test_additional_imports) ENABLED START #
 # PROTECTED REGION END #    //  SKATelState.test_additional_imports
@@ -93,7 +94,11 @@ class TestSKATelState(object):
     def test_GetVersionInfo(self, tango_context):
         """Test for GetVersionInfo"""
         # PROTECTED REGION ID(SKATelState.test_GetVersionInfo) ENABLED START #
-        assert tango_context.device.GetVersionInfo() == [""]
+        versionPattern = re.compile(
+            r'SKATelState, lmc-base-classes, [0-9].[0-9].[0-9], '
+            r'A set of generic base devices for SKA Telescope.')
+        versionInfo = tango_context.device.GetVersionInfo()
+        assert (re.match(versionPattern, versionInfo[0])) != None
         # PROTECTED REGION END #    //  SKATelState.test_GetVersionInfo
 
     # PROTECTED REGION ID(SKATelState.test_Reset_decorators) ENABLED START #
@@ -110,7 +115,10 @@ class TestSKATelState(object):
     def test_buildState(self, tango_context):
         """Test for buildState"""
         # PROTECTED REGION ID(SKATelState.test_buildState) ENABLED START #
-        assert tango_context.device.buildState == ''
+        buildPattern = re.compile(
+            r'lmc-base-classes, [0-9].[0-9].[0-9], '
+            r'A set of generic base devices for SKA Telescope')
+        assert (re.match(buildPattern, tango_context.device.buildState)) != None
         # PROTECTED REGION END #    //  SKATelState.test_buildState
 
     # PROTECTED REGION ID(SKATelState.test_versionId_decorators) ENABLED START #
@@ -118,7 +126,8 @@ class TestSKATelState(object):
     def test_versionId(self, tango_context):
         """Test for versionId"""
         # PROTECTED REGION ID(SKATelState.test_versionId) ENABLED START #
-        assert tango_context.device.versionId == ''
+        versionIdPattern = re.compile(r'[0-9].[0-9].[0-9]')
+        assert (re.match(versionIdPattern, tango_context.device.versionId)) != None
         # PROTECTED REGION END #    //  SKATelState.test_versionId
 
     # PROTECTED REGION ID(SKATelState.test_centralLoggingLevel_decorators) ENABLED START #
diff --git a/skabase/SKATestDevice/SKATestDevice.py b/skabase/SKATestDevice/SKATestDevice.py
index 91b42fa8..6d4d3481 100644
--- a/skabase/SKATestDevice/SKATestDevice.py
+++ b/skabase/SKATestDevice/SKATestDevice.py
@@ -18,20 +18,20 @@ from tango.server import DeviceMeta, attribute, command
 
 # Additional import
 # PROTECTED REGION ID(SKATestDevice.additionnal_import) ENABLED START #
+# standard imports
 import os
 import sys
-import logging
+from future.utils import with_metaclass
+import json
+
 # SKA specific imports
-import release # DO NOT import after modifying system path
+from skabase import release
 
 file_path = os.path.dirname(os.path.abspath(__file__))
 basedevice_path = os.path.abspath(os.path.join(file_path, os.pardir)) + "/SKABaseDevice"
 sys.path.insert(0, basedevice_path)
 from SKABaseDevice import SKABaseDevice
-import json
 from skabase.auxiliary.utils import (exception_manager, convert_api_value, coerce_value)
-from future.utils import with_metaclass
-
 # PROTECTED REGION END #    //  SKATestDevice.additionnal_import
 
 __all__ = ["SKATestDevice", "main"]
diff --git a/skabase/SKATestDevice/__init__.py b/skabase/SKATestDevice/__init__.py
index 69816b1b..051d77b0 100644
--- a/skabase/SKATestDevice/__init__.py
+++ b/skabase/SKATestDevice/__init__.py
@@ -10,9 +10,9 @@
 A generic Test device for testing SKA base class functionalities.
 """
 
-# import release
-# from .SKATestDevice import SKATestDevice, main
-#
-# __version__ = release.version
-# __version_info__ = release.version_info
-# __author__ = release.author
+from skabase import release
+from .SKATestDevice import SKATestDevice, main
+
+__version__ = release.version
+__version_info__ = release.version_info
+__author__ = release.author
diff --git a/skabase/SKATestDevice/release.py b/skabase/SKATestDevice/release.py
deleted file mode 100644
index ced34b15..00000000
--- a/skabase/SKATestDevice/release.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKATestDevice project
-#
-#
-#
-
-"""Release information for Python Package"""
-
-name = """tangods-skatestdevice"""
-version = "1.0.0"
-version_info = version.split(".")
-description = """A generic Test device for testing SKA base class functionalites."""
-author = "cam"
-author_email = "cam at ska.ac.za"
-license = """BSD-3-Clause"""
-url = """www.tango-controls.org"""
-copyright = """"""
diff --git a/skabase/SKATestDevice/setup.py b/skabase/SKATestDevice/setup.py
deleted file mode 100644
index cad5c1cd..00000000
--- a/skabase/SKATestDevice/setup.py
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKATestDevice project
-#
-#
-#
-
-import os
-import sys
-from setuptools import setup
-
-setup_dir = os.path.dirname(os.path.abspath(__file__))
-
-# make sure we use latest info from local code
-sys.path.insert(0, setup_dir)
-
-readme_filename = os.path.join(setup_dir, 'README.rst')
-with open(readme_filename) as file:
-    long_description = file.read()
-
-release_filename = os.path.join(setup_dir, 'SKATestDevice', 'release.py')
-exec(open(release_filename).read())
-
-pack = ['SKATestDevice']
-
-setup(name=name,
-      version=version,
-      description='A generic Test device for testing SKA base class functionalites.',
-      packages=pack,
-      include_package_data=True,
-      test_suite="test",
-      entry_points={'console_scripts':['SKATestDevice = SKATestDevice:main']},
-      author='cam',
-      author_email='cam at ska.ac.za',
-      license='BSD-3-Clause',
-      long_description=long_description,
-      url='www.tango-controls.org',
-      platforms="All Platforms"
-      )
diff --git a/skabase/SKATestDevice/test/SKATestDevice_test.py b/skabase/SKATestDevice/test/SKATestDevice_test.py
index 8b60b8e5..82441e88 100644
--- a/skabase/SKATestDevice/test/SKATestDevice_test.py
+++ b/skabase/SKATestDevice/test/SKATestDevice_test.py
@@ -18,7 +18,7 @@ sys.path.insert(0, os.path.abspath(path))
 # Imports
 import pytest
 from tango import DevFailed, DevState
-
+import re
 
 # PROTECTED REGION ID(SKATestDevice.test_additional_imports) ENABLED START #
 # PROTECTED REGION END #    //  SKATestDevice.test_additional_imports
@@ -79,7 +79,11 @@ class TestSKATestDevice(object):
     def test_GetVersionInfo(self, tango_context):
         """Test for GetVersionInfo"""
         # PROTECTED REGION ID(SKATestDevice.test_GetVersionInfo) ENABLED START #
-        assert tango_context.device.GetVersionInfo() == [""]
+        versionPattern = re.compile(
+            r'SKATestDevice, lmc-base-classes, [0-9].[0-9].[0-9], '
+            r'A set of generic base devices for SKA Telescope.')
+        versionInfo = tango_context.device.GetVersionInfo()
+        assert (re.match(versionPattern, versionInfo[0])) != None
         # PROTECTED REGION END #    //  SKATestDevice.test_GetVersionInfo
 
     # PROTECTED REGION ID(SKATestDevice.test_State_decorators) ENABLED START #
@@ -163,7 +167,10 @@ class TestSKATestDevice(object):
     def test_buildState(self, tango_context):
         """Test for buildState"""
         # PROTECTED REGION ID(SKATestDevice.test_buildState) ENABLED START #
-        assert tango_context.device.buildState == ''
+        buildPattern = re.compile(
+            r'lmc-base-classes, [0-9].[0-9].[0-9], '
+            r'A set of generic base devices for SKA Telescope')
+        assert (re.match(buildPattern, tango_context.device.buildState)) != None
         # PROTECTED REGION END #    //  SKATestDevice.test_buildState
 
     # PROTECTED REGION ID(SKATestDevice.test_versionId_decorators) ENABLED START #
@@ -171,7 +178,8 @@ class TestSKATestDevice(object):
     def test_versionId(self, tango_context):
         """Test for versionId"""
         # PROTECTED REGION ID(SKATestDevice.test_versionId) ENABLED START #
-        assert tango_context.device.versionId == ''
+        versionIdPattern = re.compile(r'[0-9].[0-9].[0-9]')
+        assert (re.match(versionIdPattern, tango_context.device.versionId)) != None
         # PROTECTED REGION END #    //  SKATestDevice.test_versionId
 
     # PROTECTED REGION ID(SKATestDevice.test_centralLoggingLevel_decorators) ENABLED START #
diff --git a/skabase/conftest.py b/skabase/conftest.py
index cd27dda9..61a7079b 100644
--- a/skabase/conftest.py
+++ b/skabase/conftest.py
@@ -22,17 +22,10 @@ def tango_context(request):
     """
     fq_test_class_name = request.cls.__module__
     fq_test_class_name_details = fq_test_class_name.split(".")
-    print(("fq_test_class_name_details are: ", fq_test_class_name_details))
     package_name = fq_test_class_name_details[0]
-    print(("package name:", package_name))
     class_name = module_name = fq_test_class_name_details[1]
-    #module = importlib.import_module("{}.{}".format(package_name, module_name))
-    #module = importlib.import_module("SKABaseDevice","SKABaseDevice")
     module = importlib.import_module(fq_test_class_name_details[1], fq_test_class_name_details[1])
-    print(("Module and class_name: ", module_name))
-    print(class_name)
     klass = getattr(module, class_name)
-    #klass = getattr("SKABaseDevice","SKABaseDevice")
 
     tango_context = DeviceTestContext(klass)
     tango_context.start()
diff --git a/skabase/release.py b/skabase/release.py
new file mode 100644
index 00000000..970272e8
--- /dev/null
+++ b/skabase/release.py
@@ -0,0 +1,18 @@
+# -*- coding: utf-8 -*-
+#
+# This file is part of the SKA LMC Base Classes project
+#
+#
+#
+
+"""Release information for lmc-base-classes Python Package"""
+
+name = """lmc-base-classes"""
+version = "1.0.0"
+version_info = version.split(".")
+description = """A set of generic base devices for SKA Telescope."""
+author = "SKA India"
+author_email = "adityadange.ska at gmail.com"
+license = """BSD-3-Clause"""
+url = """https://www.skatelescope.org/"""
+copyright = """NCRA"""
\ No newline at end of file
-- 
GitLab