Source code for appstoreserverlibrary.models.HelperValidationUtils
# Copyright (c) 2026 Apple Inc. Licensed under MIT License.
from typing import TypeVar
T = TypeVar('T')
[docs]
class HelperValidationUtils:
MAXIMUM_DESCRIPTION_LENGTH = 45
MAXIMUM_DISPLAY_NAME_LENGTH = 30
MAXIMUM_SKU_LENGTH = 128
MIN_PERIOD = 1
MAX_PERIOD = 12
[docs]
@staticmethod
def description_validator(instance, attribute, value):
"""
Validates description is not None and does not exceed maximum length.
Raises:
ValueError: If description exceeds maximum length
"""
if len(value) > HelperValidationUtils.MAXIMUM_DESCRIPTION_LENGTH:
raise ValueError(
f"Description length cannot exceed "
f"{HelperValidationUtils.MAXIMUM_DESCRIPTION_LENGTH} characters"
)
[docs]
@staticmethod
def display_name_validator(instance, attribute, value):
"""
Validates display name is not None and does not exceed maximum length.
Raises:
ValueError: If display name exceeds maximum length
"""
if len(value) > HelperValidationUtils.MAXIMUM_DISPLAY_NAME_LENGTH:
raise ValueError(
f"Display name length cannot exceed "
f"{HelperValidationUtils.MAXIMUM_DISPLAY_NAME_LENGTH} characters"
)
[docs]
@staticmethod
def sku_validator(instance, attribute, value):
"""
Validates SKU does not exceed maximum length.
Raises:
ValueError: If SKU exceeds maximum length
"""
if len(value) > HelperValidationUtils.MAXIMUM_SKU_LENGTH:
raise ValueError(
f"SKU length cannot exceed "
f"{HelperValidationUtils.MAXIMUM_SKU_LENGTH} characters"
)
[docs]
@staticmethod
def period_count_validator(instance, attribute, value):
"""
Validates periodCount is not None and between `MIN_PERIOD` and `MAX_PERIOD` inclusive.
Raises:
ValueError: If period_count is out of range
"""
if (value < HelperValidationUtils.MIN_PERIOD or
value > HelperValidationUtils.MAX_PERIOD):
raise ValueError(
f"Period count must be between "
f"{HelperValidationUtils.MIN_PERIOD} and "
f"{HelperValidationUtils.MAX_PERIOD}"
)
[docs]
@staticmethod
def items_validator(instance, attribute, value):
"""
Validates a list of items is not None, not empty, and contains no None elements.
Raises:
ValueError: If list is empty or contains None elements
"""
if not value:
raise ValueError("Items list cannot be empty")
for i, item in enumerate(value):
if item is None:
raise ValueError(f"Item at index {i} in the list cannot be None")
[docs]
@staticmethod
def dependent_skus_validator(instance, attribute, value):
"""
Validates that each SKU in the dependentSKUs list does not exceed maximum length.
Raises:
ValueError: If any SKU exceeds maximum length
"""
for sku in value:
if len(sku) > HelperValidationUtils.MAXIMUM_SKU_LENGTH:
raise ValueError(
f"SKU length cannot exceed "
f"{HelperValidationUtils.MAXIMUM_SKU_LENGTH} characters"
)