lib/modules: make categories class method

This commit is contained in:
Johannes Kirschbauer
2025-08-21 14:41:03 +02:00
parent a83f301e59
commit 1f2f71ab03
2 changed files with 6 additions and 7 deletions

View File

@@ -32,7 +32,7 @@ from typing import Any
from clan_lib.errors import ClanError from clan_lib.errors import ClanError
from clan_lib.services.modules import ( from clan_lib.services.modules import (
CategoryInfo, CategoryInfo,
ModuleFrontmatter, ModuleManifest,
) )
# Get environment variables # 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"`clan.modules.{module_name}`\n"
output += f"*{module_info['manifest']['description']}*\n" output += f"*{module_info['manifest']['description']}*\n"
fm = ModuleFrontmatter("")
# output += "## Categories\n\n" # output += "## Categories\n\n"
output += render_categories( output += render_categories(
module_info["manifest"]["categories"], fm.categories_info module_info["manifest"]["categories"], ModuleManifest.categories_info()
) )
output += f"{module_info['manifest']['readme']}\n" output += f"{module_info['manifest']['readme']}\n"

View File

@@ -27,8 +27,8 @@ class ModuleManifest:
categories: list[str] = field(default_factory=lambda: ["Uncategorized"]) categories: list[str] = field(default_factory=lambda: ["Uncategorized"])
features: list[str] = field(default_factory=list) features: list[str] = field(default_factory=list)
@property @classmethod
def categories_info(self) -> dict[str, CategoryInfo]: def categories_info(cls) -> dict[str, CategoryInfo]:
category_map: dict[str, CategoryInfo] = { category_map: dict[str, CategoryInfo] = {
"AudioVideo": { "AudioVideo": {
"color": "#AEC6CF", "color": "#AEC6CF",
@@ -54,14 +54,14 @@ class ModuleManifest:
def __post_init__(self) -> None: def __post_init__(self) -> None:
for category in self.categories: for category in self.categories:
if category not in self.categories_info: if category not in ModuleManifest.categories_info():
msg = f"Invalid category: {category}" msg = f"Invalid category: {category}"
raise ValueError(msg) raise ValueError(msg)
@classmethod @classmethod
def from_dict(cls, data: dict) -> "ModuleManifest": 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. Drops any keys that are not defined in the dataclass.
""" """
valid = {f.name for f in fields(cls)} valid = {f.name for f in fields(cls)}