From b0c1db8716b0e7af5fa0d8c95fcbc750d5fb1c75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Mr=C3=A1zek?= Date: Wed, 15 Nov 2023 08:57:01 +0100 Subject: [PATCH] Fix handling of layer specification via number --- kikit/panelize_ui_sections.py | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) 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):