From 1f2f71ab03b8c9b70d3b72620bfc20ebcf0191e0 Mon Sep 17 00:00:00 2001 From: Johannes Kirschbauer Date: Thu, 21 Aug 2025 14:41:03 +0200 Subject: [PATCH] lib/modules: make categories class method --- docs/nix/render_options/__init__.py | 5 ++--- pkgs/clan-cli/clan_lib/services/modules.py | 8 ++++---- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/docs/nix/render_options/__init__.py b/docs/nix/render_options/__init__.py index a20dfffb6..f5331110c 100644 --- a/docs/nix/render_options/__init__.py +++ b/docs/nix/render_options/__init__.py @@ -32,7 +32,7 @@ from typing import Any from clan_lib.errors import ClanError from clan_lib.services.modules import ( CategoryInfo, - ModuleFrontmatter, + ModuleManifest, ) # Get environment variables @@ -336,10 +336,9 @@ Learn how to use `clanServices` in practice in the [Using clanServices guide](.. # output += f"`clan.modules.{module_name}`\n" output += f"*{module_info['manifest']['description']}*\n" - fm = ModuleFrontmatter("") # output += "## Categories\n\n" output += render_categories( - module_info["manifest"]["categories"], fm.categories_info + module_info["manifest"]["categories"], ModuleManifest.categories_info() ) output += f"{module_info['manifest']['readme']}\n" diff --git a/pkgs/clan-cli/clan_lib/services/modules.py b/pkgs/clan-cli/clan_lib/services/modules.py index 2627c128f..1989ef0a3 100644 --- a/pkgs/clan-cli/clan_lib/services/modules.py +++ b/pkgs/clan-cli/clan_lib/services/modules.py @@ -27,8 +27,8 @@ class ModuleManifest: categories: list[str] = field(default_factory=lambda: ["Uncategorized"]) features: list[str] = field(default_factory=list) - @property - def categories_info(self) -> dict[str, CategoryInfo]: + @classmethod + def categories_info(cls) -> dict[str, CategoryInfo]: category_map: dict[str, CategoryInfo] = { "AudioVideo": { "color": "#AEC6CF", @@ -54,14 +54,14 @@ class ModuleManifest: def __post_init__(self) -> None: for category in self.categories: - if category not in self.categories_info: + if category not in ModuleManifest.categories_info(): msg = f"Invalid category: {category}" raise ValueError(msg) @classmethod def from_dict(cls, data: dict) -> "ModuleManifest": """ - Create an instance of ModuleFrontmatter from a dictionary. + Create an instance of this class from a dictionary. Drops any keys that are not defined in the dataclass. """ valid = {f.name for f in fields(cls)}