File: sort_capability.py

package info (click to toggle)
pysmartthings 3.3.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 4,268 kB
  • sloc: python: 8,394; makefile: 3
file content (35 lines) | stat: -rw-r--r-- 1,206 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
"""Script to sort the capability constants."""

import pyperclip
from pysmartthings import Capability


def main() -> int:
    """Run the script."""
    capabilities = {}
    dot_capabilities: dict[str, dict[str, Capability]] = {}
    for capability in Capability:
        if "." in capability.value:
            category = capability.value.split(".")[0]
            if category not in dot_capabilities:
                dot_capabilities[category] = {}
            dot_capabilities[category][capability.value] = capability
        else:
            capabilities[capability.value] = capability
    capabilities = dict(sorted(capabilities.items()))
    result = "class Capability(StrEnum):"
    result += '\n    """Capability model."""\n\n'
    for name, capability in capabilities.items():
        result += f'    {capability.name} = "{name}"\n'
    for category_capabilities in dot_capabilities.values():
        result += "\n"
        capabilities = dict(sorted(category_capabilities.items()))
        for name, capability in capabilities.items():
            result += f'    {capability.name} = "{name}"\n'
    print(result)
    pyperclip.copy(result)
    return 0


if __name__ == "__main__":
    main()