Coverage for src / apcore_cli / display_helpers.py: 100%

14 statements  

« prev     ^ index     » next       coverage.py v7.13.0, created at 2026-04-26 10:23 +0800

1"""Display overlay helpers — shared resolution logic for CLI surfaces.""" 

2 

3from __future__ import annotations 

4 

5from typing import Any 

6 

7 

8def get_display(descriptor: Any) -> dict[str, Any]: 

9 """Extract resolved display overlay from a ModuleDescriptor's metadata.""" 

10 metadata = getattr(descriptor, "metadata", None) or {} 

11 if isinstance(metadata, dict): 

12 return metadata.get("display") or {} 

13 return {} 

14 

15 

16def get_cli_display_fields(descriptor: Any) -> tuple[str, str, list[str]]: 

17 """Return (display_name, description, tags) resolved from the display overlay. 

18 

19 Falls back to scanner-provided values when no overlay is present. 

20 """ 

21 display = get_display(descriptor) 

22 cli = display.get("cli") or {} 

23 name = ( 

24 cli.get("alias") 

25 or display.get("alias") 

26 or (descriptor.canonical_id if hasattr(descriptor, "canonical_id") else descriptor.module_id) 

27 ) 

28 desc = cli.get("description") or descriptor.description 

29 tags = display.get("tags") or (descriptor.tags if hasattr(descriptor, "tags") else []) 

30 return name, desc, tags