from dataclasses import dataclass from typing import Optional from .datamodel_base import ForwardingBase @dataclass class Creator(ForwardingBase): username: Optional[str] = None modelCount: Optional[int] = None link: Optional[str] = None image: Optional[str] = None def __post_init__(self): super().__post_init__() self._forwarding = {} self._key_field = 'username' @dataclass class Tag(ForwardingBase): name: Optional[str] = None link: Optional[str] = None def __post_init__(self): super().__post_init__() self._forwarding = {} self._key_field = 'name' @dataclass class ModelVersionStats(ForwardingBase): downloadCount: Optional[int] = None ratingCount: Optional[int] = None rating: Optional[int] = None thumbsUpCount: Optional[int] = None thumbsDownCount: Optional[int] = None def __post_init__(self): super().__post_init__() self._forwarding = {} @dataclass class ModelVersion(ForwardingBase): id: Optional[int] = None index: Optional[int] = None name: Optional[str] = None baseModel: Optional[str] = None baseModelType: Optional[str] = None publishedAt: Optional[str] = None availability: Optional[str] = None nsfwLevel: Optional[int] = None description: Optional[str] = None trainedWords: Optional[list[str]] = None stats: Optional[ModelVersionStats] = None supportsGeneration: Optional[bool] = None downloadUrl: Optional[str] = None # FILES # IMAGES def __post_init__(self): super().__post_init__() self._forwarding = { 'stats': ModelVersionStats, } self._key_field = 'id' @dataclass class ModelStats(ForwardingBase): downloadCount: Optional[int] = None favoriteCount: Optional[int] = None thumbsUpCount: Optional[int] = None thumbsDownCount: Optional[int] = None commentCount: Optional[int] = None ratingCount: Optional[int] = None rating: Optional[int] = None def __post_init__(self): super().__post_init__() self._forwarding = {} @dataclass class Model(ForwardingBase): id: Optional[int] = None name: Optional[str] = None description: Optional[str] = None allowNoCredit: Optional[bool] = None allowCommercialUse: Optional[list] = None allowDerivatives: Optional[bool] = None allowDifferentLicense: Optional[bool] = None type: Optional[str] = None minor: Optional[bool] = None sfwOnly: Optional[bool] = None poi: Optional[bool] = None nsfw: Optional[bool] = None nsfwLevel: Optional[int] = None availability: Optional[str] = None cosmetic: Optional[str] = None supportsGeneration: Optional[bool] = None stats: Optional[ModelStats] = None creator: Optional[Creator] = None tags: Optional[list[Tag]] = None modelVersions: Optional[list[ModelVersion]] = None def __post_init__(self): super().__post_init__() self._forwarding = { 'stats': ModelStats, 'creator': Creator, 'tags': Tag, 'modelVersions': ModelVersion, } self._key_field = 'id'