diff --git a/MANIFEST.in b/MANIFEST.in index 2971d2a..1c827de 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,6 +1,7 @@ include README.md include LICENSE include CHANGELOG.md +include spinstep/py.typed recursive-exclude benchmark * recursive-exclude demos * recursive-exclude examples * diff --git a/spinstep/discrete.py b/spinstep/discrete.py index 48ab185..f84b07b 100644 --- a/spinstep/discrete.py +++ b/spinstep/discrete.py @@ -6,6 +6,8 @@ from __future__ import annotations +__all__ = ["DiscreteOrientationSet"] + from typing import Any import numpy as np diff --git a/spinstep/discrete_iterator.py b/spinstep/discrete_iterator.py index 0bc7075..5632a37 100644 --- a/spinstep/discrete_iterator.py +++ b/spinstep/discrete_iterator.py @@ -6,6 +6,8 @@ from __future__ import annotations +__all__ = ["DiscreteQuaternionIterator"] + from typing import Iterator, List, Set, Tuple import numpy as np diff --git a/spinstep/node.py b/spinstep/node.py index e4cbd6d..a98846d 100644 --- a/spinstep/node.py +++ b/spinstep/node.py @@ -6,6 +6,8 @@ from __future__ import annotations +__all__ = ["Node"] + from typing import List, Optional, Sequence import numpy as np diff --git a/spinstep/py.typed b/spinstep/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/spinstep/traversal.py b/spinstep/traversal.py index bde9cf4..5a61851 100644 --- a/spinstep/traversal.py +++ b/spinstep/traversal.py @@ -6,6 +6,8 @@ from __future__ import annotations +__all__ = ["QuaternionDepthIterator"] + from typing import Iterator, List, Optional, Tuple import numpy as np diff --git a/spinstep/utils/__init__.py b/spinstep/utils/__init__.py index 4d602f2..2f41c50 100644 --- a/spinstep/utils/__init__.py +++ b/spinstep/utils/__init__.py @@ -2,4 +2,40 @@ # Author: Eraldo B. Marques — Created: 2025-05-14 # See LICENSE.txt for full terms. This header must be retained in redistributions. -"""Internal utilities for quaternion math and array backend selection.""" +"""Utilities for quaternion math and array backend selection. + +This sub-package provides: + +- :func:`~.array_backend.get_array_module` — NumPy / CuPy backend selection. +- :func:`~.quaternion_math.batch_quaternion_angle` — batch angular distances. +- Quaternion helpers in :mod:`~.quaternion_utils` (conversion, distance, + multiplication, etc.). +""" + +__all__ = [ + "get_array_module", + "batch_quaternion_angle", + "quaternion_from_euler", + "quaternion_distance", + "rotate_quaternion", + "is_within_angle_threshold", + "quaternion_conjugate", + "quaternion_multiply", + "rotation_matrix_to_quaternion", + "get_relative_spin", + "get_unique_relative_spins", +] + +from .array_backend import get_array_module +from .quaternion_math import batch_quaternion_angle +from .quaternion_utils import ( + get_relative_spin, + get_unique_relative_spins, + is_within_angle_threshold, + quaternion_conjugate, + quaternion_distance, + quaternion_from_euler, + quaternion_multiply, + rotate_quaternion, + rotation_matrix_to_quaternion, +) diff --git a/spinstep/utils/array_backend.py b/spinstep/utils/array_backend.py index cda0a84..cddace0 100644 --- a/spinstep/utils/array_backend.py +++ b/spinstep/utils/array_backend.py @@ -6,6 +6,8 @@ from __future__ import annotations +__all__ = ["get_array_module"] + from types import ModuleType diff --git a/spinstep/utils/quaternion_math.py b/spinstep/utils/quaternion_math.py index b4c0e81..fbba4bf 100644 --- a/spinstep/utils/quaternion_math.py +++ b/spinstep/utils/quaternion_math.py @@ -6,10 +6,13 @@ from __future__ import annotations +from types import ModuleType from typing import Any +__all__ = ["batch_quaternion_angle"] -def batch_quaternion_angle(qs1: Any, qs2: Any, xp: Any) -> Any: + +def batch_quaternion_angle(qs1: Any, qs2: Any, xp: ModuleType) -> Any: """Compute pairwise angular distances between two sets of quaternions. Parameters diff --git a/spinstep/utils/quaternion_utils.py b/spinstep/utils/quaternion_utils.py index 81a0c92..1d711c9 100644 --- a/spinstep/utils/quaternion_utils.py +++ b/spinstep/utils/quaternion_utils.py @@ -6,6 +6,18 @@ from __future__ import annotations +__all__ = [ + "quaternion_from_euler", + "quaternion_distance", + "rotate_quaternion", + "is_within_angle_threshold", + "quaternion_conjugate", + "quaternion_multiply", + "rotation_matrix_to_quaternion", + "get_relative_spin", + "get_unique_relative_spins", +] + from typing import List, Sequence import numpy as np