From 3be5ddd57a7e943acb72bcb1dbd3ba7e0f325f4c Mon Sep 17 00:00:00 2001
From: Samuel Twum <samueltwum1@gmail.com>
Date: Thu, 18 Feb 2021 15:06:39 +0000
Subject: [PATCH] SAR-189 Fixes for single namespace

Some minor fixes to documentation and setup.py.
Linting can now be run on the whole folder instead
of just a single file, since we are no longer using
a namespace.
---
 CHANGELOG.rst                                   |  7 +++++++
 Makefile                                        |  7 ++-----
 README.md                                       | 17 ++++++++---------
 docs/src/package/guide.rst                      |  2 +-
 setup.py                                        |  9 +++++----
 .../logging => ska_ser_logging}/__init__.py     |  0
 .../configuration.py                            |  0
 tests/test_configuration.py                     | 10 +++++-----
 8 files changed, 28 insertions(+), 24 deletions(-)
 rename src/{ska/logging => ska_ser_logging}/__init__.py (100%)
 rename src/{ska/logging => ska_ser_logging}/configuration.py (100%)

diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index fdd2aa4..eb752e0 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -5,6 +5,13 @@ Change Log
 All notable changes to this project will be documented in this file.
 This project adheres to `Semantic Versioning <http://semver.org/>`_.
 
+v0.4.0
+******
+
+Change packaging to use single namespace.
+Usage like `from ska.logging import configure_logging` changes
+to `from ska_ser_logging import configure_logging`.
+
 v0.3.0
 ******
 
diff --git a/Makefile b/Makefile
index 59dd6f5..0c4c93e 100644
--- a/Makefile
+++ b/Makefile
@@ -20,13 +20,10 @@ test:
 lint:
 
 	# FIXME pylint needs to run twice since there is no way go gather the text and junit xml output at the same time
-	# Also note that we are linting just the single configuration.py module, since pylint has import issues
-	# if we call it with the src/ska/logging path - it can't find the standard library "logging".  Probably since
-	# it is running in an importable folder with the same name.
 	python3 -m pip install pylint_junit pylint2junit; \
 	cd src; \
-	pylint --output-format=parseable ska.logging.configuration | tee ../build/code_analysis.stdout; \
-	pylint --output-format=pylint2junit.JunitReporter ska.logging.configuration > ../build/reports/linting.xml;
+	pylint --output-format=parseable ska_ser_logging | tee ../build/code_analysis.stdout; \
+	pylint --output-format=pylint2junit.JunitReporter ska_ser_logging > ../build/reports/linting.xml;
 
 
 .PHONY: all test lint
diff --git a/README.md b/README.md
index 5fcc704..13d85a4 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
 SKA Logging Configuration Library
 =================================
 
-[![Documentation Status](https://readthedocs.org/projects/ska-logging/badge/?version=latest)](https://developer.skatelescope.org/projects/ska-logging/en/latest/?badge=latest)
+[![Documentation Status](https://readthedocs.org/projects/ska-ser-logging/badge/?version=latest)](https://developer.skatelescope.org/projects/ska-ser-logging/en/latest/?badge=latest)
 
 This project allows standard logging configuration across all SKA projects.  The format used is described in detail
 on the [developer portal](https://developer.skatelescope.org/en/latest/development/logging-format.html).
@@ -17,7 +17,7 @@ For Python applications, this is as simple as:
 
 ```python
 import logging
-from ska.logging import configure_logging
+from ska_ser_logging import configure_logging
 
 def main():
     configure_logging()
@@ -29,7 +29,7 @@ be specified.  It may be useful to link that to a command line option or environ
 
 ```python
 import logging
-from ska.logging import configure_logging
+from ska_ser_logging import configure_logging
 
 def main():
     configure_logging(logging.DEBUG)
@@ -45,7 +45,7 @@ No validation is done by this library.  If the filter is `None` (the default), t
 
 ```python
 import logging
-from ska.logging import configure_logging
+from ska_ser_logging import configure_logging
 
 
 class TangoDeviceTagsFilter(logging.Filter):
@@ -67,7 +67,7 @@ by the default configuration.
 
 ```python
 import logging.handlers
-from ska.logging import configure_logging
+from ska_ser_logging import configure_logging
 
 
 ADDITIONAL_LOGGING_CONFIG = {
@@ -96,7 +96,7 @@ A more practical use case is adding and removing handlers at runtime.
 ```python
 import logging
 import logging.handlers
-from ska.logging import configure_logging, get_default_formatter
+from ska_ser_logging import configure_logging, get_default_formatter
 
 
 def main():
@@ -155,7 +155,7 @@ Testing
 * Put tests into the `tests` folder
 * Use [PyTest](https://pytest.org) as the testing framework
   - Reference: [PyTest introduction](http://pythontesting.net/framework/pytest/pytest-introduction/)
-* Run tests with `python setup.py test`
+* Run tests with `python3 setup.py test` or just `make test`
   - Configure PyTest in `setup.py` and `setup.cfg`
 * Running the test creates the `htmlcov` folder
     - Inside this folder a rundown of the issues found will be accessible using the `index.html` file
@@ -165,8 +165,7 @@ Code analysis
 -------------
  * Use [Pylint](https://www.pylint.org) as the code analysis framework
  * By default it uses the [PEP8 style guide](https://www.python.org/dev/peps/pep-0008/)
- * Use the provided `code-analysis.sh` script in order to run the code analysis in the `module` and `tests`
- * Code analysis should be run by calling `pylint ska.logging`. All pertaining options reside under the `.pylintrc` file.
+ * Code analysis should be run by calling `make lint`. All pertaining options reside under the `.pylintrc` file.
  * Code analysis should only raise document related warnings (i.e. `#FIXME` comments) before merging the code
 
 Writing documentation
diff --git a/docs/src/package/guide.rst b/docs/src/package/guide.rst
index 3f55393..a568dd6 100644
--- a/docs/src/package/guide.rst
+++ b/docs/src/package/guide.rst
@@ -22,5 +22,5 @@ Public API Documentation
 Functions
 ---------
 
-.. automodule:: ska.logging
+.. automodule:: ska_ser_logging
     :members:
diff --git a/setup.py b/setup.py
index 6821fbb..08276bd 100644
--- a/setup.py
+++ b/setup.py
@@ -2,19 +2,20 @@
 # -*- coding: utf-8 -*-
 
 import setuptools
-from setuptools import setup
+from setuptools import setup, find_packages
 
 with open("README.md") as readme_file:
     readme = readme_file.read()
 
 setup(
-    name="ska_logging",
+    name="ska_ser_logging",
     description="Square Kilometre Array logging configuration library",
     long_description=readme + "\n\n",
+    long_description_content_type="text/markdown",
     author="Anton Joubert",
     author_email="ajoubert+ska@ska.ac.za",
-    url="https://gitlab.com/ska-telescope/ska-logging",
-    packages=setuptools.find_namespace_packages(where="src", include=["ska.*"]),
+    url="https://gitlab.com/ska-telescope/ska-ser-logging",
+    packages=find_packages("src"),
     package_dir={"": "src"},
     include_package_data=True,
     license="BSD license",
diff --git a/src/ska/logging/__init__.py b/src/ska_ser_logging/__init__.py
similarity index 100%
rename from src/ska/logging/__init__.py
rename to src/ska_ser_logging/__init__.py
diff --git a/src/ska/logging/configuration.py b/src/ska_ser_logging/configuration.py
similarity index 100%
rename from src/ska/logging/configuration.py
rename to src/ska_ser_logging/configuration.py
diff --git a/tests/test_configuration.py b/tests/test_configuration.py
index d10ff72..8c4e382 100644
--- a/tests/test_configuration.py
+++ b/tests/test_configuration.py
@@ -7,9 +7,9 @@ import logging.handlers
 import time
 import pytest
 
-import ska.logging.configuration as configuration
+import ska_ser_logging.configuration as configuration
 
-from ska.logging import configure_logging, get_default_formatter
+from ska_ser_logging import configure_logging, get_default_formatter
 
 
 @pytest.fixture
@@ -104,7 +104,7 @@ def recording_tags_logger():
 
 @pytest.mark.usefixtures("reset_logging")
 class TestConfigureLogging:
-    """Tests for :func:`~ska.logging.configuration.configure_logging`."""
+    """Tests for :func:`~ska_ser_logging.configuration.configure_logging`."""
 
     def test_includes_console_handler(self, default_logger):
         assert get_named_handler(default_logger, "console")
@@ -170,7 +170,7 @@ class TestConfigureLogging:
 
 @pytest.mark.usefixtures("reset_logging")
 class TestGetDefaultFormatter:
-    """Tests for :func:`~ska.logging.configuration.get_default_formatter`."""
+    """Tests for :func:`~ska_ser_logging.configuration.get_default_formatter`."""
 
     def get_recorded_message(self, logger):
         logger.info("test message")
@@ -199,7 +199,7 @@ class TestGetDefaultFormatter:
 
 
 class TestOverride:
-    """Tests for :func:`~ska.logging.configuration._override`.
+    """Tests for :func:`~ska_ser_logging.configuration._override`.
 
     Code based on:
         https://github.com/ska-sa/katsdpcontroller/blob/
-- 
GitLab