From 924b1246163bb130f2d16caa1c44dd07f358e5a0 Mon Sep 17 00:00:00 2001
From: Henry <henry.korb@geo.uu.se>
Date: Wed, 1 Feb 2023 18:20:23 +0100
Subject: [PATCH] improve python types simplify setup.py

---
 pythonbindings/pyfluids-stubs/__init__.pyi    |  1 +
 .../pyfluids-stubs/bindings/__init__.pyi      |  2 +
 .../bindings/basics/__init__.pyi              |  6 ++-
 .../pyfluids-stubs/bindings/basics/logger.pyi |  6 ++-
 .../pyfluids-stubs/bindings/gpu/__init__.pyi  |  2 +-
 .../bindings/gpu/grid_generator.pyi           | 11 +++--
 .../pyfluids-stubs/bindings/gpu/probes.pyi    | 43 +++++++++++--------
 .../pyfluids-stubs/bindings/logger.pyi        |  2 +
 setup.py                                      | 26 ++---------
 9 files changed, 49 insertions(+), 50 deletions(-)

diff --git a/pythonbindings/pyfluids-stubs/__init__.pyi b/pythonbindings/pyfluids-stubs/__init__.pyi
index e69de29bb..a8f52226f 100644
--- a/pythonbindings/pyfluids-stubs/__init__.pyi
+++ b/pythonbindings/pyfluids-stubs/__init__.pyi
@@ -0,0 +1 @@
+from . import bindings
\ No newline at end of file
diff --git a/pythonbindings/pyfluids-stubs/bindings/__init__.pyi b/pythonbindings/pyfluids-stubs/bindings/__init__.pyi
index 4e7f353ea..b0a9b3c57 100644
--- a/pythonbindings/pyfluids-stubs/bindings/__init__.pyi
+++ b/pythonbindings/pyfluids-stubs/bindings/__init__.pyi
@@ -32,6 +32,8 @@ r"""
 ! \author Henry Korb
 =======================================================================================
 """
+from . import basics as basics, gpu as gpu, lbm as lbm, logger as logger
+
 class ostream_redirect:
     def __init__(self, stdout: bool = ..., stderr: bool = ...) -> None: ...
     def __enter__(self) -> None: ...
diff --git a/pythonbindings/pyfluids-stubs/bindings/basics/__init__.pyi b/pythonbindings/pyfluids-stubs/bindings/basics/__init__.pyi
index a41b7934c..2a1de0b47 100644
--- a/pythonbindings/pyfluids-stubs/bindings/basics/__init__.pyi
+++ b/pythonbindings/pyfluids-stubs/bindings/basics/__init__.pyi
@@ -32,9 +32,11 @@ r"""
 ! \author Henry Korb
 =======================================================================================
 """
-from typing import ClassVar
+from __future__ import annotations
 
-from typing import overload
+from typing import ClassVar, overload
+
+from . import logger as logger
 
 class ConfigurationFile:
     def __init__(self) -> None: ...
diff --git a/pythonbindings/pyfluids-stubs/bindings/basics/logger.pyi b/pythonbindings/pyfluids-stubs/bindings/basics/logger.pyi
index 43938ff76..876c7037b 100644
--- a/pythonbindings/pyfluids-stubs/bindings/basics/logger.pyi
+++ b/pythonbindings/pyfluids-stubs/bindings/basics/logger.pyi
@@ -32,7 +32,9 @@ r"""
 ! \author Henry Korb
 =======================================================================================
 """
-from typing import Any, ClassVar
+from __future__ import annotations
+
+from typing import ClassVar
 
 log: None
 
@@ -62,7 +64,7 @@ class Logger:
     @staticmethod
     def enable_printed_rank_numbers(print: bool) -> None: ...
     @staticmethod
-    def set_debug_level(level: int) -> None: ...
+    def set_debug_level(level: Level) -> None: ...
     @staticmethod
     def time_stamp(time_stemp: TimeStamp) -> None: ...
 
diff --git a/pythonbindings/pyfluids-stubs/bindings/gpu/__init__.pyi b/pythonbindings/pyfluids-stubs/bindings/gpu/__init__.pyi
index 36c2fea76..cd93dfe38 100644
--- a/pythonbindings/pyfluids-stubs/bindings/gpu/__init__.pyi
+++ b/pythonbindings/pyfluids-stubs/bindings/gpu/__init__.pyi
@@ -37,7 +37,7 @@ from typing import Any, Callable, ClassVar, List, Optional
 from typing import overload
 import numpy
 import pyfluids.bindings.basics
-import pyfluids.bindings.gpu.grid_generator as grid_generator
+from . import grid_generator as grid_generator, probes as probes
 
 class ActuatorFarm(PreCollisionInteractor):
     def __init__(self, number_of_blades_per_turbine: int, density: float, number_of_nodes_per_blade: int, epsilon: float, level: int, delta_t: float, delta_x: float, use_host_arrays: bool) -> None: ...
diff --git a/pythonbindings/pyfluids-stubs/bindings/gpu/grid_generator.pyi b/pythonbindings/pyfluids-stubs/bindings/gpu/grid_generator.pyi
index 514dc5053..ccdfc1b93 100644
--- a/pythonbindings/pyfluids-stubs/bindings/gpu/grid_generator.pyi
+++ b/pythonbindings/pyfluids-stubs/bindings/gpu/grid_generator.pyi
@@ -32,7 +32,10 @@ r"""
 ! \author Henry Korb
 =======================================================================================
 """
-from typing import Any, List
+
+from __future__ import annotations
+
+from typing import List
 
 from typing import overload
 import pyfluids.bindings.basics
@@ -41,6 +44,9 @@ import pyfluids.bindings.gpu
 class BoundingBox:
     def __init__(self, min_x: float, max_x: float, min_y: float, max_y: float, min_z: float, max_z: float) -> None: ...
 
+class Object:
+    def __init__(self, *args, **kwargs) -> None: ...
+
 class Conglomerate(Object):
     def __init__(self, *args, **kwargs) -> None: ...
     def add(self, object: Object) -> None: ...
@@ -86,9 +92,6 @@ class MultipleGridBuilder(LevelGridBuilder):
     @staticmethod
     def make_shared(grid_factory: GridFactory) -> MultipleGridBuilder: ...
 
-class Object:
-    def __init__(self, *args, **kwargs) -> None: ...
-
 class Sphere(Object):
     def __init__(self, *args, **kwargs) -> None: ...
     @staticmethod
diff --git a/pythonbindings/pyfluids-stubs/bindings/gpu/probes.pyi b/pythonbindings/pyfluids-stubs/bindings/gpu/probes.pyi
index 1454ed538..702e3fbce 100644
--- a/pythonbindings/pyfluids-stubs/bindings/gpu/probes.pyi
+++ b/pythonbindings/pyfluids-stubs/bindings/gpu/probes.pyi
@@ -32,28 +32,11 @@ r"""
 ! \author Henry Korb
 =======================================================================================
 """
+from __future__ import annotations
 from typing import ClassVar, List
 
 import pyfluids.bindings.gpu
 
-class PlanarAverageProbe(Probe):
-    def __init__(self, probe_name: str, output_path: str, t_start_avg: int, t_start_tmp_avg: int, t_avg: int, t_start_out: int, t_out: int, plane_normal: str) -> None: ...
-
-class PlaneProbe(Probe):
-    def __init__(self, probe_name: str, output_path: str, t_start_avg: int, t_avg: int, t_start_out: int, t_out: int) -> None: ...
-    def set_probe_plane(self, pos_x: float, pos_y: float, pos_z: float, delta_x: float, delta_y: float, delta_z: float) -> None: ...
-
-class PointProbe(Probe):
-    def __init__(self, probe_name: str, output_path: str, t_start_avg: int, t_avg: int, t_start_out: int, t_out: int, output_timeseries: bool) -> None: ...
-    def add_probe_point(self, point_coord_x: float, point_coord_y: float, point_coord_z: float) -> None: ...
-    def add_probe_points_from_list(self, point_coords_x: List[float], point_coords_y: List[float], point_coords_z: List[float]) -> None: ...
-    def add_probe_points_from_x_normal_plane(self, pos_x: float, pos0_y: float, pos0_z: float, pos1_y: float, pos1_z: float, n_y: int, n_z: int) -> None: ...
-
-class Probe(pyfluids.bindings.gpu.PreCollisionInteractor):
-    def __init__(self, *args, **kwargs) -> None: ...
-    def add_all_available_statistics(self) -> None: ...
-    def add_statistic(self, variable: Statistic) -> None: ...
-    def set_file_name_to_n_out(self) -> None: ...
 
 class Statistic:
     __members__: ClassVar[dict] = ...  # read-only
@@ -80,6 +63,30 @@ class Statistic:
     @property
     def name(self) -> str: ...
 
+
+class Probe(pyfluids.bindings.gpu.PreCollisionInteractor):
+    def __init__(self, *args, **kwargs) -> None: ...
+    def add_all_available_statistics(self) -> None: ...
+    def add_statistic(self, variable: Statistic) -> None: ...
+    def set_file_name_to_n_out(self) -> None: ...
+
+
+class PlanarAverageProbe(Probe):
+    def __init__(self, probe_name: str, output_path: str, t_start_avg: int, t_start_tmp_avg: int, t_avg: int, t_start_out: int, t_out: int, plane_normal: str) -> None: ...
+
+
+class PlaneProbe(Probe):
+    def __init__(self, probe_name: str, output_path: str, t_start_avg: int, t_avg: int, t_start_out: int, t_out: int) -> None: ...
+    def set_probe_plane(self, pos_x: float, pos_y: float, pos_z: float, delta_x: float, delta_y: float, delta_z: float) -> None: ...
+
+
+class PointProbe(Probe):
+    def __init__(self, probe_name: str, output_path: str, t_start_avg: int, t_avg: int, t_start_out: int, t_out: int, output_timeseries: bool) -> None: ...
+    def add_probe_point(self, point_coord_x: float, point_coord_y: float, point_coord_z: float) -> None: ...
+    def add_probe_points_from_list(self, point_coords_x: List[float], point_coords_y: List[float], point_coords_z: List[float]) -> None: ...
+    def add_probe_points_from_x_normal_plane(self, pos_x: float, pos0_y: float, pos0_z: float, pos1_y: float, pos1_z: float, n_y: int, n_z: int) -> None: ...
+
+
 class WallModelProbe(Probe):
     def __init__(self, probe_name: str, output_path: str, t_start_avg: int, t_start_tmp_avg: int, t_avg: int, t_start_out: int, t_out: int) -> None: ...
     def set_evaluate_pressure_gradient(self, eval_press_grad: bool) -> None: ...
diff --git a/pythonbindings/pyfluids-stubs/bindings/logger.pyi b/pythonbindings/pyfluids-stubs/bindings/logger.pyi
index fe84eeb18..ce1afc013 100644
--- a/pythonbindings/pyfluids-stubs/bindings/logger.pyi
+++ b/pythonbindings/pyfluids-stubs/bindings/logger.pyi
@@ -32,6 +32,8 @@ r"""
 ! \author Henry Korb
 =======================================================================================
 """
+from __future__ import annotations
+
 class Logger:
     @staticmethod
     def change_log_path(path: str) -> None: ...
diff --git a/setup.py b/setup.py
index 530431b37..12628591a 100644
--- a/setup.py
+++ b/setup.py
@@ -1,7 +1,7 @@
 import sys
 from pathlib import Path
-from typing import List
 
+from setuptools import find_namespace_packages
 import skbuild
 
 """
@@ -25,26 +25,7 @@ or install via pip:
 package_name = "pyfluids"
 target = "python_bindings"
 src_dir = "pythonbindings"
-stub_package = package_name+"-stubs"
 
-stub_dir = Path(src_dir)/stub_package
-
-
-def add_subfiles(dir_path: Path, suffix: str, root_dir: Path) -> List[str]:
-    files = []
-    for f in dir_path.iterdir():
-        if f.is_dir():
-            files.extend(add_subfiles(f, suffix, root_dir))
-        if f.is_file():
-            if f.suffix != suffix:
-                continue
-            files.append(str(f.relative_to(root_dir)))
-    return files
-
-def add_directory(dir_path: Path, suffix: str):
-    return add_subfiles(dir_path, suffix, dir_path)
-
-stub_files = add_directory(stub_dir, ".pyi")
 
 # hack to get config-args for installation with pip>21
 cmake_args = []
@@ -62,11 +43,10 @@ cmake_args += [
 
 skbuild.setup(
     name=package_name,
-    packages=[package_name, "pymuparser", "pyfluids-stubs"],
+    packages=find_namespace_packages(src_dir),
     package_dir={"": src_dir},
     cmake_args=cmake_args,
     cmake_install_target=target,
-    package_data={  "pyfluids": ["py.typed"],
-                    "pyfluids-stubs": stub_files},
+    package_data={package_name: ["py.typed"]},
     include_package_data=True,
 )
-- 
GitLab