From fb340845cd42c633cdc8dd7ac9a201e1b51ad745 Mon Sep 17 00:00:00 2001
From: DEBREUVE Eric <eric.debreuve@cnrs.fr>
Date: Thu, 4 Jul 2024 09:15:03 +0200
Subject: [PATCH] re-organization

---
 {logger_36 => package/logger_36}/__init__.py  |  0
 .../logger_36}/catalog/config/console_rich.py |  0
 .../logger_36}/catalog/handler/README.txt     |  0
 .../logger_36}/catalog/handler/console.py     |  0
 .../catalog/handler/console_rich.py           |  0
 .../logger_36}/catalog/handler/file.py        |  0
 .../logger_36}/catalog/handler/generic.py     |  0
 .../logger_36}/catalog/logging/chronos.py     |  0
 .../logger_36}/catalog/logging/exception.py   |  0
 .../logger_36}/catalog/logging/gpu.py         |  0
 .../logger_36}/catalog/logging/memory.py      |  0
 .../logger_36}/catalog/logging/system.py      |  0
 .../logger_36}/config/issue.py                |  0
 .../logger_36}/config/memory.py               |  0
 .../logger_36}/config/message.py              |  0
 .../logger_36}/config/system.py               |  0
 .../logger_36}/constant/error.py              |  0
 .../logger_36}/constant/generic.py            |  0
 .../logger_36}/constant/handler.py            |  0
 .../logger_36}/constant/issue.py              |  0
 .../logger_36}/constant/logger.py             |  0
 .../logger_36}/constant/memory.py             |  0
 .../logger_36}/constant/message.py            |  0
 .../logger_36}/constant/record.py             |  0
 .../logger_36}/constant/system.py             | 17 ++---
 .../logger_36}/instance/logger.py             |  0
 .../logger_36}/instance/loggers.py            |  0
 {logger_36 => package/logger_36}/main.py      |  0
 .../logger_36}/task/format/memory.py          |  0
 .../logger_36}/task/format/message.py         |  0
 .../logger_36}/task/format/rule.py            |  0
 .../logger_36}/task/inspection.py             |  0
 .../logger_36}/task/measure/chronos.py        |  0
 .../logger_36}/task/measure/memory.py         |  0
 .../logger_36}/task/storage.py                |  0
 .../logger_36}/type/handler.py                |  0
 .../logger_36}/type/issue.py                  |  0
 .../logger_36}/type/logger.py                 |  0
 .../logger_36}/type/loggers.py                |  0
 {logger_36 => package/logger_36}/version.py   |  0
 setup.py                                      | 64 +++----------------
 41 files changed, 15 insertions(+), 66 deletions(-)
 rename {logger_36 => package/logger_36}/__init__.py (100%)
 rename {logger_36 => package/logger_36}/catalog/config/console_rich.py (100%)
 rename {logger_36 => package/logger_36}/catalog/handler/README.txt (100%)
 rename {logger_36 => package/logger_36}/catalog/handler/console.py (100%)
 rename {logger_36 => package/logger_36}/catalog/handler/console_rich.py (100%)
 rename {logger_36 => package/logger_36}/catalog/handler/file.py (100%)
 rename {logger_36 => package/logger_36}/catalog/handler/generic.py (100%)
 rename {logger_36 => package/logger_36}/catalog/logging/chronos.py (100%)
 rename {logger_36 => package/logger_36}/catalog/logging/exception.py (100%)
 rename {logger_36 => package/logger_36}/catalog/logging/gpu.py (100%)
 rename {logger_36 => package/logger_36}/catalog/logging/memory.py (100%)
 rename {logger_36 => package/logger_36}/catalog/logging/system.py (100%)
 rename {logger_36 => package/logger_36}/config/issue.py (100%)
 rename {logger_36 => package/logger_36}/config/memory.py (100%)
 rename {logger_36 => package/logger_36}/config/message.py (100%)
 rename {logger_36 => package/logger_36}/config/system.py (100%)
 rename {logger_36 => package/logger_36}/constant/error.py (100%)
 rename {logger_36 => package/logger_36}/constant/generic.py (100%)
 rename {logger_36 => package/logger_36}/constant/handler.py (100%)
 rename {logger_36 => package/logger_36}/constant/issue.py (100%)
 rename {logger_36 => package/logger_36}/constant/logger.py (100%)
 rename {logger_36 => package/logger_36}/constant/memory.py (100%)
 rename {logger_36 => package/logger_36}/constant/message.py (100%)
 rename {logger_36 => package/logger_36}/constant/record.py (100%)
 rename {logger_36 => package/logger_36}/constant/system.py (86%)
 rename {logger_36 => package/logger_36}/instance/logger.py (100%)
 rename {logger_36 => package/logger_36}/instance/loggers.py (100%)
 rename {logger_36 => package/logger_36}/main.py (100%)
 rename {logger_36 => package/logger_36}/task/format/memory.py (100%)
 rename {logger_36 => package/logger_36}/task/format/message.py (100%)
 rename {logger_36 => package/logger_36}/task/format/rule.py (100%)
 rename {logger_36 => package/logger_36}/task/inspection.py (100%)
 rename {logger_36 => package/logger_36}/task/measure/chronos.py (100%)
 rename {logger_36 => package/logger_36}/task/measure/memory.py (100%)
 rename {logger_36 => package/logger_36}/task/storage.py (100%)
 rename {logger_36 => package/logger_36}/type/handler.py (100%)
 rename {logger_36 => package/logger_36}/type/issue.py (100%)
 rename {logger_36 => package/logger_36}/type/logger.py (100%)
 rename {logger_36 => package/logger_36}/type/loggers.py (100%)
 rename {logger_36 => package/logger_36}/version.py (100%)

diff --git a/logger_36/__init__.py b/package/logger_36/__init__.py
similarity index 100%
rename from logger_36/__init__.py
rename to package/logger_36/__init__.py
diff --git a/logger_36/catalog/config/console_rich.py b/package/logger_36/catalog/config/console_rich.py
similarity index 100%
rename from logger_36/catalog/config/console_rich.py
rename to package/logger_36/catalog/config/console_rich.py
diff --git a/logger_36/catalog/handler/README.txt b/package/logger_36/catalog/handler/README.txt
similarity index 100%
rename from logger_36/catalog/handler/README.txt
rename to package/logger_36/catalog/handler/README.txt
diff --git a/logger_36/catalog/handler/console.py b/package/logger_36/catalog/handler/console.py
similarity index 100%
rename from logger_36/catalog/handler/console.py
rename to package/logger_36/catalog/handler/console.py
diff --git a/logger_36/catalog/handler/console_rich.py b/package/logger_36/catalog/handler/console_rich.py
similarity index 100%
rename from logger_36/catalog/handler/console_rich.py
rename to package/logger_36/catalog/handler/console_rich.py
diff --git a/logger_36/catalog/handler/file.py b/package/logger_36/catalog/handler/file.py
similarity index 100%
rename from logger_36/catalog/handler/file.py
rename to package/logger_36/catalog/handler/file.py
diff --git a/logger_36/catalog/handler/generic.py b/package/logger_36/catalog/handler/generic.py
similarity index 100%
rename from logger_36/catalog/handler/generic.py
rename to package/logger_36/catalog/handler/generic.py
diff --git a/logger_36/catalog/logging/chronos.py b/package/logger_36/catalog/logging/chronos.py
similarity index 100%
rename from logger_36/catalog/logging/chronos.py
rename to package/logger_36/catalog/logging/chronos.py
diff --git a/logger_36/catalog/logging/exception.py b/package/logger_36/catalog/logging/exception.py
similarity index 100%
rename from logger_36/catalog/logging/exception.py
rename to package/logger_36/catalog/logging/exception.py
diff --git a/logger_36/catalog/logging/gpu.py b/package/logger_36/catalog/logging/gpu.py
similarity index 100%
rename from logger_36/catalog/logging/gpu.py
rename to package/logger_36/catalog/logging/gpu.py
diff --git a/logger_36/catalog/logging/memory.py b/package/logger_36/catalog/logging/memory.py
similarity index 100%
rename from logger_36/catalog/logging/memory.py
rename to package/logger_36/catalog/logging/memory.py
diff --git a/logger_36/catalog/logging/system.py b/package/logger_36/catalog/logging/system.py
similarity index 100%
rename from logger_36/catalog/logging/system.py
rename to package/logger_36/catalog/logging/system.py
diff --git a/logger_36/config/issue.py b/package/logger_36/config/issue.py
similarity index 100%
rename from logger_36/config/issue.py
rename to package/logger_36/config/issue.py
diff --git a/logger_36/config/memory.py b/package/logger_36/config/memory.py
similarity index 100%
rename from logger_36/config/memory.py
rename to package/logger_36/config/memory.py
diff --git a/logger_36/config/message.py b/package/logger_36/config/message.py
similarity index 100%
rename from logger_36/config/message.py
rename to package/logger_36/config/message.py
diff --git a/logger_36/config/system.py b/package/logger_36/config/system.py
similarity index 100%
rename from logger_36/config/system.py
rename to package/logger_36/config/system.py
diff --git a/logger_36/constant/error.py b/package/logger_36/constant/error.py
similarity index 100%
rename from logger_36/constant/error.py
rename to package/logger_36/constant/error.py
diff --git a/logger_36/constant/generic.py b/package/logger_36/constant/generic.py
similarity index 100%
rename from logger_36/constant/generic.py
rename to package/logger_36/constant/generic.py
diff --git a/logger_36/constant/handler.py b/package/logger_36/constant/handler.py
similarity index 100%
rename from logger_36/constant/handler.py
rename to package/logger_36/constant/handler.py
diff --git a/logger_36/constant/issue.py b/package/logger_36/constant/issue.py
similarity index 100%
rename from logger_36/constant/issue.py
rename to package/logger_36/constant/issue.py
diff --git a/logger_36/constant/logger.py b/package/logger_36/constant/logger.py
similarity index 100%
rename from logger_36/constant/logger.py
rename to package/logger_36/constant/logger.py
diff --git a/logger_36/constant/memory.py b/package/logger_36/constant/memory.py
similarity index 100%
rename from logger_36/constant/memory.py
rename to package/logger_36/constant/memory.py
diff --git a/logger_36/constant/message.py b/package/logger_36/constant/message.py
similarity index 100%
rename from logger_36/constant/message.py
rename to package/logger_36/constant/message.py
diff --git a/logger_36/constant/record.py b/package/logger_36/constant/record.py
similarity index 100%
rename from logger_36/constant/record.py
rename to package/logger_36/constant/record.py
diff --git a/logger_36/constant/system.py b/package/logger_36/constant/system.py
similarity index 86%
rename from logger_36/constant/system.py
rename to package/logger_36/constant/system.py
index 628cbae..799f812 100644
--- a/logger_36/constant/system.py
+++ b/package/logger_36/constant/system.py
@@ -4,21 +4,14 @@ Contributor(s): Eric Debreuve (eric.debreuve@cnrs.fr) since 2023
 SEE COPYRIGHT NOTICE BELOW
 """
 
-try:
-    import platform as pltf
-except ModuleNotFoundError:
-    pltf = None
+import platform as pltf
 
 from logger_36.config.system import SYSTEM_DETAILS
 
-if pltf is None:
-    SYSTEM_DETAILS_AS_DICT = {}
-    MAX_DETAIL_NAME_LENGTH = 0
-else:
-    SYSTEM_DETAILS_AS_DICT = {
-        _dtl.capitalize(): getattr(pltf, _dtl)() for _dtl in SYSTEM_DETAILS
-    }
-    MAX_DETAIL_NAME_LENGTH = max(map(len, SYSTEM_DETAILS_AS_DICT.keys()))
+SYSTEM_DETAILS_AS_DICT = {
+    _dtl.capitalize(): getattr(pltf, _dtl)() for _dtl in SYSTEM_DETAILS
+}
+MAX_DETAIL_NAME_LENGTH = max(map(len, SYSTEM_DETAILS_AS_DICT.keys()))
 
 """
 COPYRIGHT NOTICE
diff --git a/logger_36/instance/logger.py b/package/logger_36/instance/logger.py
similarity index 100%
rename from logger_36/instance/logger.py
rename to package/logger_36/instance/logger.py
diff --git a/logger_36/instance/loggers.py b/package/logger_36/instance/loggers.py
similarity index 100%
rename from logger_36/instance/loggers.py
rename to package/logger_36/instance/loggers.py
diff --git a/logger_36/main.py b/package/logger_36/main.py
similarity index 100%
rename from logger_36/main.py
rename to package/logger_36/main.py
diff --git a/logger_36/task/format/memory.py b/package/logger_36/task/format/memory.py
similarity index 100%
rename from logger_36/task/format/memory.py
rename to package/logger_36/task/format/memory.py
diff --git a/logger_36/task/format/message.py b/package/logger_36/task/format/message.py
similarity index 100%
rename from logger_36/task/format/message.py
rename to package/logger_36/task/format/message.py
diff --git a/logger_36/task/format/rule.py b/package/logger_36/task/format/rule.py
similarity index 100%
rename from logger_36/task/format/rule.py
rename to package/logger_36/task/format/rule.py
diff --git a/logger_36/task/inspection.py b/package/logger_36/task/inspection.py
similarity index 100%
rename from logger_36/task/inspection.py
rename to package/logger_36/task/inspection.py
diff --git a/logger_36/task/measure/chronos.py b/package/logger_36/task/measure/chronos.py
similarity index 100%
rename from logger_36/task/measure/chronos.py
rename to package/logger_36/task/measure/chronos.py
diff --git a/logger_36/task/measure/memory.py b/package/logger_36/task/measure/memory.py
similarity index 100%
rename from logger_36/task/measure/memory.py
rename to package/logger_36/task/measure/memory.py
diff --git a/logger_36/task/storage.py b/package/logger_36/task/storage.py
similarity index 100%
rename from logger_36/task/storage.py
rename to package/logger_36/task/storage.py
diff --git a/logger_36/type/handler.py b/package/logger_36/type/handler.py
similarity index 100%
rename from logger_36/type/handler.py
rename to package/logger_36/type/handler.py
diff --git a/logger_36/type/issue.py b/package/logger_36/type/issue.py
similarity index 100%
rename from logger_36/type/issue.py
rename to package/logger_36/type/issue.py
diff --git a/logger_36/type/logger.py b/package/logger_36/type/logger.py
similarity index 100%
rename from logger_36/type/logger.py
rename to package/logger_36/type/logger.py
diff --git a/logger_36/type/loggers.py b/package/logger_36/type/loggers.py
similarity index 100%
rename from logger_36/type/loggers.py
rename to package/logger_36/type/loggers.py
diff --git a/logger_36/version.py b/package/logger_36/version.py
similarity index 100%
rename from logger_36/version.py
rename to package/logger_36/version.py
diff --git a/setup.py b/setup.py
index ec5415a..72c52fa 100644
--- a/setup.py
+++ b/setup.py
@@ -7,22 +7,20 @@ SEE COPYRIGHT NOTICE BELOW
 import re as rgex
 from importlib import util
 from pathlib import Path as path_t
-from typing import Dict
 
-from setuptools import setup
+from setuptools import find_namespace_packages, setup
 
 HERE = path_t(__file__).parent.resolve()
-LOCAL_DOCUMENTATION = HERE / "documentation" / "wiki"
-ASCIIDOC_DESCRIPTION = "description.asciidoc"
 
 
-def DescriptionFromAsciidoc(documentation: path_t, /) -> Dict[str, str]:
+def DescriptionFromAsciidoc() -> dict[str, str]:
     """"""
     output = {}
 
+    where = HERE / "documentation" / "wiki" / "description.asciidoc"
     pattern = rgex.compile(r":([A-Z_]+): +(.+)\n?", flags=rgex.ASCII)
 
-    with open(documentation) as accessor:
+    with open(where) as accessor:
         for line in accessor.readlines():
             if (match := pattern.fullmatch(line)) is not None:
                 name = match.group(1)
@@ -32,24 +30,7 @@ def DescriptionFromAsciidoc(documentation: path_t, /) -> Dict[str, str]:
     return output
 
 
-DESCRIPTION = DescriptionFromAsciidoc(LOCAL_DOCUMENTATION / ASCIIDOC_DESCRIPTION)
-PACKAGES = [
-    DESCRIPTION["IMPORT_NAME"],
-    f"{DESCRIPTION['IMPORT_NAME']}.catalog",
-    f"{DESCRIPTION['IMPORT_NAME']}.catalog.config",
-    f"{DESCRIPTION['IMPORT_NAME']}.catalog.handler",
-    f"{DESCRIPTION['IMPORT_NAME']}.catalog.logging",
-    f"{DESCRIPTION['IMPORT_NAME']}.config",
-    f"{DESCRIPTION['IMPORT_NAME']}.constant",
-    f"{DESCRIPTION['IMPORT_NAME']}.instance",
-    f"{DESCRIPTION['IMPORT_NAME']}.task",
-    f"{DESCRIPTION['IMPORT_NAME']}.task.format",
-    f"{DESCRIPTION['IMPORT_NAME']}.task.measure",
-    f"{DESCRIPTION['IMPORT_NAME']}.type",
-]
-EXCLUDED_PACKAGES = (
-    f"{DESCRIPTION['IMPORT_NAME']}.documentation",
-)
+DESCRIPTION = DescriptionFromAsciidoc()
 ENTRY_POINTS = {
     "console_scripts": [],
     "gui_scripts": [],
@@ -64,37 +45,12 @@ repository_url = (
     f"{DESCRIPTION['REPOSITORY_USER']}/"
     f"{DESCRIPTION['REPOSITORY_NAME']}/"
 )
-documentation_url = f"{repository_url}/{DESCRIPTION['DOCUMENTATION_SITE']}"
-
-
-def CheckCoherenceBetweenDeclarationAndReality() -> None:
-    """"""
-    folders = [DESCRIPTION["IMPORT_NAME"]]
-    for node in (HERE / DESCRIPTION["IMPORT_NAME"]).rglob("*"):
-        if node.is_dir() and not str(node).startswith("."):
-            node = node.relative_to(HERE)
-            node = ".".join(node.parts)
-            if not (
-                (node in EXCLUDED_PACKAGES)
-                or any(node.startswith(_fld + ".") for _fld in EXCLUDED_PACKAGES)
-            ):
-                folders.append(node)
-    folders = sorted(folders)
-
-    packages = sorted(PACKAGES)
-    if packages != folders:
-        raise ValueError(
-            f"Mismatch between declared and found packages:\n"
-            f"    - Declared=\n      {packages}\n"
-            f"    - Found=\n      {folders}\n"
-            f"    - Undeclared=\n      {set(folders).difference(packages)}\n"
-            f"    - Nonexistent=\n      {set(packages).difference(folders)}"
-        )
+documentation_url = f"{repository_url}{DESCRIPTION['DOCUMENTATION_SITE']}"
 
 
 def Version() -> str:
     """"""
-    where = HERE / DESCRIPTION["IMPORT_NAME"] / "version.py"
+    where = HERE / "package" / DESCRIPTION["IMPORT_NAME"] / "version.py"
     spec = util.spec_from_file_location(where.stem, where)
     module = spec.loader.load_module(spec.name)
 
@@ -102,7 +58,7 @@ def Version() -> str:
     if isinstance(output, str) and rgex.fullmatch(r"20[0-9]{2}\.[1-9][0-9]*", output):
         return output
 
-    raise ValueError(f"{output}: Invalid version")
+    raise ValueError(f"{output}: Invalid version.")
 
 
 def Requirements() -> tuple[str, ...]:
@@ -118,7 +74,6 @@ def Requirements() -> tuple[str, ...]:
 
 if __name__ == "__main__":
     #
-    CheckCoherenceBetweenDeclarationAndReality()
     # fmt: off
     setup(
         author=DESCRIPTION["AUTHOR"],
@@ -146,7 +101,8 @@ if __name__ == "__main__":
             "Source": repository_url,
         },
         #
-        packages=PACKAGES,
+        packages=find_namespace_packages(where="package"),
+        package_dir={"": "package"},
         entry_points=ENTRY_POINTS,
         python_requires=f">={DESCRIPTION['PY_VERSION_MIN']}",
         install_requires=Requirements(),
-- 
GitLab