Skip to content

models

appimage_updater.core.models

Data models for releases and updates.

Asset

Represents a downloadable asset.

architecture property

Extract architecture from filename.

checksum_asset = Field(default=None, description='Associated checksum file asset') class-attribute instance-attribute

created_at = Field(description='Asset creation time') class-attribute instance-attribute

download_url property

Get download URL (alias for url).

file_extension property

Extract file extension from filename.

name = Field(description='Asset filename') class-attribute instance-attribute

platform property

Extract platform from filename.

size = Field(description='File size in bytes') class-attribute instance-attribute

url = Field(description='Download URL') class-attribute instance-attribute

CheckResult

Result of checking for updates.

app_name = Field(description='Application name') class-attribute instance-attribute

asset = Field(default=None, description='Associated asset') class-attribute instance-attribute

available_version = Field(default=None, description='Available version') class-attribute instance-attribute

candidate = Field(default=None, description='Update candidate') class-attribute instance-attribute

checked_at = Field(default_factory=(datetime.now), description='Check time') class-attribute instance-attribute

current_version = Field(default=None, description='Current version') class-attribute instance-attribute

download_url = Field(default=None, description='Download URL') class-attribute instance-attribute

error_message = Field(default=None, description='Error message if failed') class-attribute instance-attribute

message = Field(default=None, description='Status message') class-attribute instance-attribute

success = Field(description='Whether check was successful') class-attribute instance-attribute

update_available = Field(default=False, description='Whether update is available') class-attribute instance-attribute

ChecksumResult

Result of checksum verification.

actual = Field(default=None, description='Actual checksum') class-attribute instance-attribute

algorithm = Field(default=None, description='Hash algorithm used') class-attribute instance-attribute

error_message = Field(default=None, description='Error if verification failed') class-attribute instance-attribute

expected = Field(default=None, description='Expected checksum') class-attribute instance-attribute

verified = Field(description='Whether checksum was verified') class-attribute instance-attribute

DownloadResult

Result of downloading an update.

app_name = Field(description='Application name') class-attribute instance-attribute

checksum_result = Field(default=None, description='Checksum verification result') class-attribute instance-attribute

download_size = Field(default=0, description='Downloaded bytes') class-attribute instance-attribute

duration_seconds = Field(default=0.0, description='Download duration') class-attribute instance-attribute

error_message = Field(default=None, description='Error message if failed') class-attribute instance-attribute

file_path = Field(default=None, description='Downloaded file path') class-attribute instance-attribute

success = Field(description='Whether download was successful') class-attribute instance-attribute

InteractiveResult

Result from interactive operations.

cancelled = Field(default=False, description='Whether the operation was cancelled by user') class-attribute instance-attribute

data = Field(default=None, description='Operation result data') class-attribute instance-attribute

reason = Field(default=None, description='Reason for cancellation or failure') class-attribute instance-attribute

success = Field(description='Whether the operation completed successfully') class-attribute instance-attribute

cancelled_result(reason) classmethod

Create a cancelled result.

Source code in src/appimage_updater/core/models.py
@classmethod
def cancelled_result(cls, reason: str) -> InteractiveResult:
    """Create a cancelled result."""
    return cls(success=False, cancelled=True, reason=reason)

success_result(data=None) classmethod

Create a successful result.

Source code in src/appimage_updater/core/models.py
@classmethod
def success_result(cls, data: dict[str, Any] | None = None) -> InteractiveResult:
    """Create a successful result."""
    return cls(success=True, data=data)

Release

Represents a software release.

assets = Field(description='Available assets') class-attribute instance-attribute

is_draft = Field(default=False, description='Is draft') class-attribute instance-attribute

is_prerelease = Field(default=False, description='Is prerelease') class-attribute instance-attribute

name = Field(default=None, description='Release name') class-attribute instance-attribute

published_at = Field(description='Release publication time') class-attribute instance-attribute

tag_name = Field(description='Git tag name') class-attribute instance-attribute

version = Field(description='Release version') class-attribute instance-attribute

get_matching_assets(pattern, filter_compatible=False)

Get assets matching the given pattern.

Parameters:

Name Type Description Default
pattern str

Regex pattern to match asset names

required
filter_compatible bool

If True, filter out incompatible architectures/platforms

False

Returns:

Type Description
list[Asset]

List of matching assets, optionally filtered for compatibility

Source code in src/appimage_updater/core/models.py
def get_matching_assets(self, pattern: str, filter_compatible: bool = False) -> list[Asset]:
    """Get assets matching the given pattern.

    Args:
        pattern: Regex pattern to match asset names
        filter_compatible: If True, filter out incompatible architectures/platforms

    Returns:
        List of matching assets, optionally filtered for compatibility
    """
    regex = re.compile(pattern)
    matching_assets = [asset for asset in self.assets if regex.search(asset.name)]

    if filter_compatible:
        return self._filter_compatible_assets(matching_assets)

    return matching_assets

UpdateCandidate

Represents an available update.

app_config = Field(default=None, description='Application configuration for rotation settings') class-attribute instance-attribute

app_name = Field(description='Application name') class-attribute instance-attribute

asset = Field(description='Asset to download') class-attribute instance-attribute

checksum_required = Field(default=False, description='Whether checksum verification is required') class-attribute instance-attribute

current_version = Field(description='Currently installed version') class-attribute instance-attribute

download_path = Field(description='Local download path') class-attribute instance-attribute

is_newer = Field(description='Whether this is actually newer') class-attribute instance-attribute

latest_version = Field(description='Latest available version') class-attribute instance-attribute

needs_update property

Check if update is needed.

release = Field(default=None, description='Associated release') class-attribute instance-attribute

version property

Get version string (alias for latest_version).