Skip to content

html_formatter

appimage_updater.ui.output.html_formatter

HTML output formatter implementation.

HTMLOutputFormatter(**kwargs)

HTML output formatter for web-based display.

This formatter collects all output data and produces an HTML document suitable for web display or reporting.

Parameters:

Name Type Description Default
**kwargs Any

Additional arguments (ignored for compatibility)

{}
Source code in src/appimage_updater/ui/output/html_formatter.py
def __init__(self, **kwargs: Any):
    """Initialize the HTML formatter.

    Args:
        **kwargs: Additional arguments (ignored for compatibility)
    """
    self.content: list[str] = []
    self._current_section: str | None = None
    self._add_html_header()

content = [] instance-attribute

end_section()

End the current output section in HTML.

Source code in src/appimage_updater/ui/output/html_formatter.py
def end_section(self) -> None:
    """End the current output section in HTML."""
    if self._current_section:
        self.content.append("    </div>")
        self._current_section = None

finalize()

Finalize HTML output and print the complete HTML document.

Returns:

Type Description
str | None

None (output goes directly to stdout)

Source code in src/appimage_updater/ui/output/html_formatter.py
def finalize(self) -> str | None:
    """Finalize HTML output and print the complete HTML document.

    Returns:
        None (output goes directly to stdout)
    """
    # Close any open section
    if self._current_section:
        self.end_section()

    # Add HTML footer
    self.content.extend(["</body>", "</html>"])
    output = "\n".join(self.content)
    print(output)  # noqa: T201
    return None

print(message, **kwargs)

Add a message to HTML output.

Parameters:

Name Type Description Default
message str

The message to add

required
**kwargs Any

Additional options (ignored for HTML)

{}
Source code in src/appimage_updater/ui/output/html_formatter.py
def print(self, message: str, **kwargs: Any) -> None:
    """Add a message to HTML output.

    Args:
        message: The message to add
        **kwargs: Additional options (ignored for HTML)
    """
    escaped_message = html.escape(message)
    self.content.append(f"    <p>{escaped_message}</p>")

print_application_list(applications)

Add application list to HTML output.

Parameters:

Name Type Description Default
applications list[dict[str, Any]]

List of application dictionaries

required
Source code in src/appimage_updater/ui/output/html_formatter.py
def print_application_list(self, applications: list[dict[str, Any]]) -> None:
    """Add application list to HTML output.

    Args:
        applications: List of application dictionaries
    """
    self.print_table(applications, title="Configured Applications")

print_check_results(results)

Add check results to HTML output.

Parameters:

Name Type Description Default
results list[dict[str, Any]]

List of check result dictionaries

required
Source code in src/appimage_updater/ui/output/html_formatter.py
def print_check_results(self, results: list[dict[str, Any]]) -> None:
    """Add check results to HTML output.

    Args:
        results: List of check result dictionaries
    """
    self.print_table(results, title="Update Check Results")

print_config_settings(settings)

Add configuration settings to HTML output.

Parameters:

Name Type Description Default
settings dict[str, Any]

Dictionary of configuration settings

required
Source code in src/appimage_updater/ui/output/html_formatter.py
def print_config_settings(self, settings: dict[str, Any]) -> None:
    """Add configuration settings to HTML output.

    Args:
        settings: Dictionary of configuration settings
    """
    self.content.append("    <h3>Configuration Settings</h3>")
    self.content.append("    <table>")
    self.content.append("        <thead>")
    self.content.append("            <tr><th>Setting</th><th>Value</th></tr>")
    self.content.append("        </thead>")
    self.content.append("        <tbody>")

    for key, value in settings.items():
        escaped_key = html.escape(key)
        escaped_value = html.escape(str(value))
        self.content.append(f"            <tr><td>{escaped_key}</td><td>{escaped_value}</td></tr>")

    self.content.append("        </tbody>")
    self.content.append("    </table>")

print_error(message)

Add error message to HTML output.

Parameters:

Name Type Description Default
message str

Error message to add

required
Source code in src/appimage_updater/ui/output/html_formatter.py
def print_error(self, message: str) -> None:
    """Add error message to HTML output.

    Args:
        message: Error message to add
    """
    escaped_message = html.escape(message)
    self.content.append(f"    <p class='error'>ERROR: {escaped_message}</p>")

print_info(message)

Add info message to HTML output.

Parameters:

Name Type Description Default
message str

Info message to add

required
Source code in src/appimage_updater/ui/output/html_formatter.py
def print_info(self, message: str) -> None:
    """Add info message to HTML output.

    Args:
        message: Info message to add
    """
    escaped_message = html.escape(message)
    self.content.append(f"    <p class='info'>INFO: {escaped_message}</p>")

print_progress(current, total, description='')

Add progress information to HTML output.

Parameters:

Name Type Description Default
current int

Current progress value

required
total int

Total progress value

required
description str

Optional progress description

''
Source code in src/appimage_updater/ui/output/html_formatter.py
def print_progress(self, current: int, total: int, description: str = "") -> None:
    """Add progress information to HTML output.

    Args:
        current: Current progress value
        total: Total progress value
        description: Optional progress description
    """
    percentage = (current / total * 100) if total > 0 else 0
    progress_text = f"[{current}/{total}] ({percentage:.1f}%)"
    if description:
        progress_text = f"{html.escape(description)}: {progress_text}"

    self.content.extend(
        [
            "    <div class='progress'>",
            f"        <p>{progress_text}</p>",
            f"        <progress value='{current}' max='{total}'></progress>",
            "    </div>",
        ]
    )

print_success(message)

Add success message to HTML output.

Parameters:

Name Type Description Default
message str

Success message to add

required
Source code in src/appimage_updater/ui/output/html_formatter.py
def print_success(self, message: str) -> None:
    """Add success message to HTML output.

    Args:
        message: Success message to add
    """
    escaped_message = html.escape(message)
    self.content.append(f"    <p class='success'>SUCCESS: {escaped_message}</p>")

print_table(data, title='', headers=None)

Add tabular data to HTML output.

Parameters:

Name Type Description Default
data list[dict[str, Any]]

List of dictionaries representing table rows

required
title str

Optional table title

''
headers list[str] | None

Optional custom headers

None
Source code in src/appimage_updater/ui/output/html_formatter.py
def print_table(self, data: list[dict[str, Any]], title: str = "", headers: list[str] | None = None) -> None:
    """Add tabular data to HTML output.

    Args:
        data: List of dictionaries representing table rows
        title: Optional table title
        headers: Optional custom headers
    """
    if not data:
        return

    # Add title and prepare table structure
    self._add_table_title(title)
    table_headers = self._determine_table_headers(data, headers)

    # Build HTML table
    self._build_html_table(data, table_headers)

print_warning(message)

Add warning message to HTML output.

Parameters:

Name Type Description Default
message str

Warning message to add

required
Source code in src/appimage_updater/ui/output/html_formatter.py
def print_warning(self, message: str) -> None:
    """Add warning message to HTML output.

    Args:
        message: Warning message to add
    """
    escaped_message = html.escape(message)
    self.content.append(f"    <p class='warning'>WARNING: {escaped_message}</p>")

start_section(title)

Start a new output section in HTML.

Parameters:

Name Type Description Default
title str

Section title

required
Source code in src/appimage_updater/ui/output/html_formatter.py
def start_section(self, title: str) -> None:
    """Start a new output section in HTML.

    Args:
        title: Section title
    """
    self._current_section = title
    escaped_title = html.escape(title)
    self.content.extend(["    <div class='section'>", f"        <h2>{escaped_title}</h2>"])