From 47eb817522b24b690633015cb29adf2dbf6ec1d3 Mon Sep 17 00:00:00 2001 From: Florian Pfaff <6773539+FlorianPfaff@users.noreply.github.com> Date: Sun, 30 Aug 2026 23:57:16 +0800 Subject: [PATCH 1/3] Validate manifold dimension during construction --- .../distributions/abstract_manifold_specific_distribution.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pyrecest/distributions/abstract_manifold_specific_distribution.py b/src/pyrecest/distributions/abstract_manifold_specific_distribution.py index 4efc8e3d4..97b172c09 100644 --- a/src/pyrecest/distributions/abstract_manifold_specific_distribution.py +++ b/src/pyrecest/distributions/abstract_manifold_specific_distribution.py @@ -114,7 +114,7 @@ class AbstractManifoldSpecificDistribution(ABC): """ def __init__(self, dim: int): - self._dim = dim + self.dim = dim @abstractmethod def get_manifold_size(self) -> float: @@ -400,4 +400,4 @@ def _assert_proposal_supports_key(proposal: Callable): f"Got signature: {sig}\n" "Hint: change your proposal from `def proposal(x): ...` to\n" "`def proposal(key, x): ...` and use `jax.random` with the passed key." - ) + ) \ No newline at end of file From 391d1a1e0682d11ce1389ab64948818ade4fc979 Mon Sep 17 00:00:00 2001 From: Florian Pfaff <6773539+FlorianPfaff@users.noreply.github.com> Date: Sun, 30 Aug 2026 23:57:37 +0800 Subject: [PATCH 2/3] Add manifold constructor dimension regression --- ...anifold_constructor_dimension_validation.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 tests/distributions/test_manifold_constructor_dimension_validation.py diff --git a/tests/distributions/test_manifold_constructor_dimension_validation.py b/tests/distributions/test_manifold_constructor_dimension_validation.py new file mode 100644 index 000000000..1f7c053c1 --- /dev/null +++ b/tests/distributions/test_manifold_constructor_dimension_validation.py @@ -0,0 +1,18 @@ +import unittest + +from pyrecest.distributions.hypertorus.custom_hypertoroidal_distribution import ( + CustomHypertoroidalDistribution, +) + + +class TestManifoldConstructorDimensionValidation(unittest.TestCase): + def test_custom_hypertoroidal_rejects_nonpositive_dimensions(self): + for dim in (0, -1): + with self.subTest(dim=dim), self.assertRaisesRegex( + ValueError, "dim must be a positive integer" + ): + CustomHypertoroidalDistribution(lambda _xs: 1.0, dim) + + +if __name__ == "__main__": + unittest.main() From 2efbeb89705d37f324c526346e1dd11fd362c9eb Mon Sep 17 00:00:00 2001 From: Florian Pfaff <6773539+FlorianPfaff@users.noreply.github.com> Date: Sun, 30 Aug 2026 23:59:16 +0800 Subject: [PATCH 3/3] Preserve source trailing newline --- .../distributions/abstract_manifold_specific_distribution.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pyrecest/distributions/abstract_manifold_specific_distribution.py b/src/pyrecest/distributions/abstract_manifold_specific_distribution.py index 97b172c09..02622ea22 100644 --- a/src/pyrecest/distributions/abstract_manifold_specific_distribution.py +++ b/src/pyrecest/distributions/abstract_manifold_specific_distribution.py @@ -400,4 +400,4 @@ def _assert_proposal_supports_key(proposal: Callable): f"Got signature: {sig}\n" "Hint: change your proposal from `def proposal(x): ...` to\n" "`def proposal(key, x): ...` and use `jax.random` with the passed key." - ) \ No newline at end of file + )