[Ellipse] force radii to float dtype

This commit is contained in:
Jan Petykiewicz 2026-03-31 22:03:19 -07:00
commit f1e25debec
2 changed files with 7 additions and 1 deletions

View file

@ -42,7 +42,7 @@ class Ellipse(PositionableImpl, Shape):
@radii.setter @radii.setter
def radii(self, val: ArrayLike) -> None: def radii(self, val: ArrayLike) -> None:
val = numpy.array(val).flatten() val = numpy.array(val, dtype=float).flatten()
if not val.size == 2: if not val.size == 2:
raise PatternError('Radii must have length 2') raise PatternError('Radii must have length 2')
if not val.min() >= 0: if not val.min() >= 0:

View file

@ -122,6 +122,12 @@ def test_curve_polygonizers_clamp_large_max_arclen() -> None:
assert len(polys[0].vertices) >= 3 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: def test_path_edge_cases() -> None:
# Zero-length segments # Zero-length segments
p = MPath(vertices=[[0, 0], [0, 0], [10, 0]], width=2) p = MPath(vertices=[[0, 0], [0, 0], [10, 0]], width=2)