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)}