from typing import Literal class BaseProfile: def __init__(self, **kwargs): self.__dict__.update({k: v for k, v in kwargs.items() if v is not None}) class FetchProfile(BaseProfile): def __init__( self, number: str, ): super().__init__( number=number, ) class ProfileName(BaseProfile): def __init__( self, name: str, ): super().__init__( name=name, ) class ProfileStatus(BaseProfile): def __init__( self, status: str, ): super().__init__( status=status, ) class ProfilePicture(BaseProfile): def __init__( self, picture: str, ): super().__init__( picture=picture, ) class PrivacySettings(BaseProfile): def __init__( self, readreceipts: Literal["all", "none"], profile: Literal["all", "contacts", "contact_blacklist", "none"], status: Literal["all", "contacts", "contact_blacklist", "none"], online: Literal["all", "match_last_seen"], last: Literal["all", "contacts", "contact_blacklist", "none"], groupadd: Literal["all", "contacts", "contact_blacklist"], ): super().__init__( readreceipts=readreceipts, profile=profile, status=status, online=online, last=last, groupadd=groupadd, )