diff --git a/confuse/templates.py b/confuse/templates.py index 0281d30..d8ce93b 100644 --- a/confuse/templates.py +++ b/confuse/templates.py @@ -387,7 +387,12 @@ def convert(self, value: object, view: ConfigView) -> T: ) def __repr__(self) -> str: - return f"Choice({self.choices!r})" + args = [repr(self.choices)] + + if self.default is not REQUIRED: + args.append(repr(self.default)) + + return f"Choice({', '.join(args)})" class OneOf(Template[T]): diff --git a/test/test_valid.py b/test/test_valid.py index 1b5be61..1ba91a7 100644 --- a/test/test_valid.py +++ b/test/test_valid.py @@ -257,6 +257,12 @@ def test_validate_bad_choice_in_dict(self): with pytest.raises(confuse.ConfigValueError): config["foo"].get(confuse.Choice({2: "two", 4: "four"})) + def test_repr_without_default(self): + assert repr(confuse.Choice([1, 2])) == "Choice([1, 2])" + + def test_repr_includes_default(self): + assert repr(confuse.Choice([1, 2], 2)) == "Choice([1, 2], 2)" + class OneOfTest(unittest.TestCase): def test_default_value(self):