diff --git a/Lib/fontTools/misc/configTools.py b/Lib/fontTools/misc/configTools.py index 869bc6e95..9a8ac7cf0 100644 --- a/Lib/fontTools/misc/configTools.py +++ b/Lib/fontTools/misc/configTools.py @@ -107,8 +107,11 @@ class Options(Mapping): __options: Dict[str, Option] - def __init__(self) -> None: + def __init__(self, other: "Options" = None) -> None: self.__options = {} + if other is not None: + for name, option in other.items(): + self.register_option(name, option) def register( self, @@ -128,8 +131,8 @@ class Options(Mapping): self.__options[name] = option return option - def __getitem__(self, __k: str) -> Option: - return self.__options.__getitem__(__k) + def __getitem__(self, key: str) -> Option: + return self.__options.__getitem__(key) def __iter__(self) -> Iterator[str]: return self.__options.__iter__() diff --git a/Tests/config_test.py b/Tests/config_test.py index 592a925f2..34ecbc6cd 100644 --- a/Tests/config_test.py +++ b/Tests/config_test.py @@ -39,10 +39,7 @@ def test_ttfont_has_config(): def test_ttfont_can_take_superset_of_fonttools_config(): # Create MyConfig with all options from fontTools.config plus some - my_options = Options() - for name, option in Config.options.items(): - my_options.register_option(name, option) - + my_options = Options(Config.options) my_options.register("custom:my_option", "help", "default", str, any) class MyConfig(AbstractConfig):