From f1e25debecd452214723d77145e6adc2da9cf21d Mon Sep 17 00:00:00 2001 From: Jan Petykiewicz Date: Tue, 31 Mar 2026 22:03:19 -0700 Subject: [PATCH] [Ellipse] force radii to float dtype --- masque/shapes/ellipse.py | 2 +- masque/test/test_shape_advanced.py | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/masque/shapes/ellipse.py b/masque/shapes/ellipse.py index 55ce9fd..49f6489 100644 --- a/masque/shapes/ellipse.py +++ b/masque/shapes/ellipse.py @@ -42,7 +42,7 @@ class Ellipse(PositionableImpl, Shape): @radii.setter def radii(self, val: ArrayLike) -> None: - val = numpy.array(val).flatten() + val = numpy.array(val, dtype=float).flatten() if not val.size == 2: raise PatternError('Radii must have length 2') if not val.min() >= 0: diff --git a/masque/test/test_shape_advanced.py b/masque/test/test_shape_advanced.py index fc76fcb..9f04b61 100644 --- a/masque/test/test_shape_advanced.py +++ b/masque/test/test_shape_advanced.py @@ -122,6 +122,12 @@ def test_curve_polygonizers_clamp_large_max_arclen() -> None: assert len(polys[0].vertices) >= 3 +def test_ellipse_integer_radii_scale_cleanly() -> None: + ellipse = Ellipse(radii=(10, 20)) + ellipse.scale_by(0.5) + assert_allclose(ellipse.radii, [5, 10]) + + def test_path_edge_cases() -> None: # Zero-length segments p = MPath(vertices=[[0, 0], [0, 0], [10, 0]], width=2)