Skip to content

version_service

appimage_updater.core.version_service

Unified version service coordinator.

This module provides a single entry point for all version-related operations, coordinating between the specialized services for consistent version handling across the entire application.

version_service = VersionService() module-attribute

VersionService()

Unified version service coordinator.

This service provides a single interface for all version operations, delegating to specialized services while maintaining consistency.

Source code in src/appimage_updater/core/version_service.py
def __init__(self) -> None:
    """Initialize with all required services."""
    self.parser = VersionParser()
    self.info_service = InfoFileService()
    self.local_service = LocalVersionService(self.parser, self.info_service)
    self.repository_service = RepositoryVersionService(self.parser)

info_service = InfoFileService() instance-attribute

local_service = LocalVersionService(self.parser, self.info_service) instance-attribute

parser = VersionParser() instance-attribute

repository_service = RepositoryVersionService(self.parser) instance-attribute

compare_versions(current, latest)

Compare versions to determine if update is available.

Parameters:

Name Type Description Default
current str | None

Current version string (can be None)

required
latest str | None

Latest version string (can be None)

required

Returns:

Type Description
bool

True if update is available, False otherwise

Source code in src/appimage_updater/core/version_service.py
def compare_versions(self, current: str | None, latest: str | None) -> bool:
    """Compare versions to determine if update is available.

    Args:
        current: Current version string (can be None)
        latest: Latest version string (can be None)

    Returns:
        True if update is available, False otherwise
    """
    if not current or not latest:
        # If we can't determine either version, assume update is available
        return True

    try:
        current_ver = version.parse(current.lstrip("v"))
        latest_ver = version.parse(latest.lstrip("v"))
        return latest_ver > current_ver
    except (ValueError, TypeError):
        # Fallback to string comparison
        return current != latest

extract_version_from_filename(filename)

Extract version from filename.

Source code in src/appimage_updater/core/version_service.py
def extract_version_from_filename(self, filename: str) -> str | None:
    """Extract version from filename."""
    return self.parser.extract_version_from_filename(filename)

find_info_file(app_config)

Find .info file for application.

Source code in src/appimage_updater/core/version_service.py
def find_info_file(self, app_config: ApplicationConfig) -> Path | None:
    """Find .info file for application."""
    return self.info_service.find_info_file(app_config)

generate_pattern_from_filename(filename)

Generate flexible pattern from filename.

Source code in src/appimage_updater/core/version_service.py
def generate_pattern_from_filename(self, filename: str) -> str:
    """Generate flexible pattern from filename."""
    return self.parser.generate_flexible_pattern_from_filename(filename)

generate_pattern_from_repository(app_config) async

Generate flexible pattern from repository assets.

Source code in src/appimage_updater/core/version_service.py
async def generate_pattern_from_repository(self, app_config: ApplicationConfig) -> str | None:
    """Generate flexible pattern from repository assets."""
    return await self.repository_service.generate_pattern_from_repository(app_config)

get_current_version(app_config)

Get current installed version.

Uses priority: .info file -> .current file -> filename analysis

Source code in src/appimage_updater/core/version_service.py
def get_current_version(self, app_config: ApplicationConfig) -> str | None:
    """Get current installed version.

    Uses priority: .info file -> .current file -> filename analysis
    """
    return self.local_service.get_current_version(app_config)

get_latest_asset(app_config) async

Get latest matching asset from repository.

Source code in src/appimage_updater/core/version_service.py
async def get_latest_asset(self, app_config: ApplicationConfig) -> Asset | None:
    """Get latest matching asset from repository."""
    return await self.repository_service.get_latest_asset(app_config)

get_latest_version(app_config) async

Get latest version from repository.

Source code in src/appimage_updater/core/version_service.py
async def get_latest_version(self, app_config: ApplicationConfig) -> str | None:
    """Get latest version from repository."""
    return await self.repository_service.get_latest_version(app_config)

read_info_file(info_path)

Read version from .info file.

Source code in src/appimage_updater/core/version_service.py
def read_info_file(self, info_path: Path) -> str | None:
    """Read version from .info file."""
    return self.info_service.read_info_file(info_path)

write_info_file(info_path, version)

Write version to .info file.

Source code in src/appimage_updater/core/version_service.py
def write_info_file(self, info_path: Path, version: str) -> bool:
    """Write version to .info file."""
    return self.info_service.write_info_file(info_path, version)