diff --git a/kikit/panelize_ui_sections.py b/kikit/panelize_ui_sections.py index 7c165d5c..0961b2e5 100644 --- a/kikit/panelize_ui_sections.py +++ b/kikit/panelize_ui_sections.py @@ -187,12 +187,15 @@ def __init__(self, *args, **kwargs): for item in Layer], *args, **kwargs) def validate(self, s): - if isinstance(s, int): - if s in tuple(item.value for item in Layer): - return Layer(s) + if isinstance(s, int) or s.isdigit(): + if int(s) in tuple(item.value for item in Layer): + return Layer(int(s)) raise PresetError(f"{s} is not a valid layer number") if isinstance(s, str): - return Layer[s.replace(".", "_")] + try: + return Layer[s.replace(".", "_")] + except Exception: + pass raise PresetError(f"Got {s}, expected layer name or number") class SList(SectionBase): @@ -210,12 +213,15 @@ def validate(self, x: str) -> Any: return [self.readLayer(x) for x in super().validate(x)] def readLayer(self, s: str) -> Layer: - if isinstance(s, int): - if s in tuple(item.value for item in Layer): - return Layer(s) + if isinstance(s, int) or s.isdigit(): + if int(s) in tuple(item.value for item in Layer): + return Layer(int(s)) raise PresetError(f"{s} is not a valid layer number") if isinstance(s, str): - return Layer[s.replace(".", "_")] + try: + return Layer[s.replace(".", "_")] + except Exception: + pass raise PresetError(f"Got {s}, expected layer name or number") class SFootprintList(SList):