From 14933a2ea067e8722815784f1455b0be187cde5e Mon Sep 17 00:00:00 2001 From: Dongdong Tian Date: Wed, 20 May 2026 11:23:31 +0800 Subject: [PATCH] Validate Position cstype eagerly --- pygmt/params/position.py | 12 ++++++++++++ pygmt/tests/test_params_position.py | 2 ++ 2 files changed, 14 insertions(+) diff --git a/pygmt/params/position.py b/pygmt/params/position.py index 1f91382d1c6..06fb724e79b 100644 --- a/pygmt/params/position.py +++ b/pygmt/params/position.py @@ -186,6 +186,18 @@ def _validate(self): description="reference point", reason="Expect a valid 2-character justification code.", ) + case _: + raise GMTValueError( + self.cstype, + description="cstype", + choices=[ + "mapcoords", + "plotcoords", + "boxcoords", + "inside", + "outside", + ], + ) # Validate the anchor if specified. if self.anchor is not None and self.anchor not in _valid_anchors: raise GMTValueError( diff --git a/pygmt/tests/test_params_position.py b/pygmt/tests/test_params_position.py index a9d67de36c5..7faaa2bb208 100644 --- a/pygmt/tests/test_params_position.py +++ b/pygmt/tests/test_params_position.py @@ -37,6 +37,8 @@ def test_params_position_invalid_location(): """ Test that invalid location inputs raise GMTValueError. """ + with pytest.raises(GMTValueError): + Position((1, 2), cstype="invalid") with pytest.raises(GMTValueError): Position("invalid", cstype="mapcoords") with pytest.raises(GMTValueError):