From f6fd3fce1c4c07ab38936b1dcd28c8c106d1e8db Mon Sep 17 00:00:00 2001 From: Rotzbua Date: Tue, 24 Jan 2023 21:03:54 +0100 Subject: [PATCH] UIGroup: add typing --- boxes/generators/__init__.py | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/boxes/generators/__init__.py b/boxes/generators/__init__.py index 2c56ab0..b859bd2 100644 --- a/boxes/generators/__init__.py +++ b/boxes/generators/__init__.py @@ -3,15 +3,17 @@ from __future__ import annotations import importlib import inspect import pkgutil +from types import ModuleType from typing import Any import boxes ui_groups_by_name = {} + class UIGroup: - def __init__(self, name, title=None, description="", image="") -> None: + def __init__(self, name: str, title: str | None = None, description: str = "", image: str = "") -> None: self.name = name self.title = title or name self.description = description @@ -20,19 +22,20 @@ class UIGroup: # register ui_groups_by_name[name] = self - def add(self, box): + def add(self, box) -> None: self.generators.append(box) - self.generators.sort(key=lambda b:getattr(b, '__name__', None) or b.__class__.__name__) + self.generators.sort(key=lambda b: getattr(b, '__name__', None) or b.__class__.__name__) @property - def thumbnail(self): + def thumbnail(self) -> str: return self._image and f"{self._image}-thumb.jpg" @property - def image(self): + def image(self) -> str: return self._image and f"{self._image}.jpg" -ui_groups = [ + +ui_groups: list[UIGroup] = [ UIGroup("Box", "Boxes", image="UniversalBox"), UIGroup("FlexBox", "Boxes with flex", image="RoundedBox"), UIGroup("Tray", "Trays and Drawer Inserts", image="TypeTray"), @@ -42,31 +45,29 @@ ui_groups = [ UIGroup("Part", "Parts and Samples", image="BurnTest"), UIGroup("Misc", image="TrafficLight"), UIGroup("Unstable", description="Generators are still untested or need manual adjustment to be useful."), - ] +] -def getAllBoxGenerators(): + +def getAllBoxGenerators() -> dict[str, type[boxes.Boxes]]: generators = {} - for importer, modname, ispkg in pkgutil.walk_packages( - path=__path__, - prefix=__name__+'.'): + for importer, modname, ispkg in pkgutil.walk_packages(path=__path__, prefix=__name__ + '.'): module = importlib.import_module(modname) if module.__name__.split('.')[-1].startswith("_"): continue for k, v in module.__dict__.items(): if v is boxes.Boxes: continue - if (inspect.isclass(v) and issubclass(v, boxes.Boxes) and - v.__name__[0] != '_'): + if inspect.isclass(v) and issubclass(v, boxes.Boxes) and v.__name__[0] != '_': generators[modname + '.' + v.__name__] = v return generators -def getAllGeneratorModules(): + +def getAllGeneratorModules() -> dict[str, ModuleType]: generators = {} for importer, modname, ispkg in pkgutil.walk_packages( path=__path__, - prefix=__name__+'.', + prefix=__name__ + '.', onerror=lambda x: None): module = importlib.import_module(modname) generators[modname.split('.')[-1]] = module return generators -