Skip to content

topmark.presentation.shared.version

topmark / presentation / shared / version

Shared helpers for the CLI version command.

VersionHumanReport dataclass

VersionHumanReport(
    *,
    version_text,
    version_format,
    error,
    verbosity_level,
    styled,
)

Representation of version information.

Attributes:

Name Type Description
version_text str

The effective version string (SemVer or PEP 440).

version_format str

The effective format label (e.g. "semver" or "pep440").

error TopmarkCliVersionConversionError | None

Optional conversion error when SemVer conversion was requested and failed.

verbosity_level int

Effective verbosity for gating extra details.

styled bool

Whether to render the output styled.

make_version_human_report

make_version_human_report(semver, verbosity_level, styled)

Create a VersionHumanReport instance.

Parameters:

Name Type Description Default
semver bool

Whether to render the version in SemVer format (default: PEP440).

required
verbosity_level int

Effective verbosity level.

required
styled bool

Whether to render the output styled.

required

Returns:

Type Description
VersionHumanReport

The VersionHumanReport object.

Source code in src/topmark/presentation/shared/version.py
def make_version_human_report(
    semver: bool,
    verbosity_level: int,
    styled: bool,
) -> VersionHumanReport:
    """Create a VersionHumanReport instance.

    Args:
        semver: Whether to render the version in SemVer format (default: PEP440).
        verbosity_level: Effective verbosity level.
        styled: Whether to render the output styled.

    Returns:
        The ``VersionHumanReport`` object.
    """
    result: ComputedVersion = compute_version_text(semver=semver)

    return VersionHumanReport(
        version_text=result.version_text,
        version_format=result.version_format,
        error=TopmarkCliVersionConversionError(
            message=str(result.error),
        )
        if result.error
        else None,
        verbosity_level=verbosity_level,
        styled=styled,
    )