app.py

from abc import ABC
from pathlib import Path
from typing import TYPE_CHECKING


if TYPE_CHECKING:
    from .engine import BaseEngine


class BaseApp(ABC):
    """
    Abstract class for app.
    """

    app_name: str                       # Unique name used for creating engine and widget
    app_module: str                     # App module string used in import_module
    app_path: Path                      # Absolute path of app folder
    display_name: str                   # Name for display on the menu.
    engine_class: type["BaseEngine"]    # App engine class
    widget_name: str                    # Class name of app widget
    icon_name: str                      # Icon file name of app widget