feat!: AbstractModelを廃止

pull/125/head
yupix 8 months ago
parent 939b74942d
commit 3158d0e4d0
No known key found for this signature in database
GPG Key ID: 2FF705F5C56D9C06

@ -1,3 +1,2 @@
from .action import *
from .manager import *
from .model import *

@ -1,16 +0,0 @@
from __future__ import annotations
from abc import ABC, abstractmethod
from typing import TYPE_CHECKING, Any
if TYPE_CHECKING:
from mipac.manager.client import ClientManager
__all__ = ("AbstractModel",)
class AbstractModel(ABC):
@abstractmethod
def __init__(self, data: Any, *, client: ClientManager) -> None:
pass

@ -3,7 +3,6 @@ from __future__ import annotations
from datetime import datetime
from typing import TYPE_CHECKING, Literal
from mipac.abstract.model import AbstractModel
from mipac.types.ads import IAd
from mipac.utils.format import str_to_datetime
@ -12,7 +11,7 @@ if TYPE_CHECKING:
from mipac.manager.client import ClientManager
class Ad(AbstractModel):
class Ad:
def __init__(self, ad_data: IAd, *, client: ClientManager) -> None:
self.__ad_data: IAd = ad_data
self.__client: ClientManager = client

@ -3,7 +3,6 @@ from __future__ import annotations
from datetime import datetime
from typing import TYPE_CHECKING
from mipac.abstract.model import AbstractModel
from mipac.models.user import MeDetailed, UserDetailedNotMe, packed_user
from mipac.types.admin import (
IIndexStat,
@ -21,7 +20,7 @@ if TYPE_CHECKING:
from mipac.manager.client import ClientManager
class UserIP(AbstractModel):
class UserIP:
def __init__(self, user_ip: IUserIP) -> None:
self.__user_ip: IUserIP = user_ip
@ -65,7 +64,7 @@ class IndexStat:
return self.__index_stat["indexdef"]
class ModerationLog(AbstractModel):
class ModerationLog:
def __init__(self, moderation_log: IModerationLog, *, client: ClientManager) -> None:
self.__moderation_log: IModerationLog = moderation_log
self.__client: ClientManager = client
@ -101,7 +100,7 @@ class ModerationLog(AbstractModel):
return not self.__eq__(__value)
class ServerInfoCpu(AbstractModel):
class ServerInfoCpu:
def __init__(self, server_info_cpu: IServerInfoCpu) -> None:
self.__server_info_cpu = server_info_cpu
@ -114,7 +113,7 @@ class ServerInfoCpu(AbstractModel):
return self.__server_info_cpu["cores"]
class ServerInfoMem(AbstractModel):
class ServerInfoMem:
def __init__(self, server_info_mem: IServerInfoMem) -> None:
self.__server_info_mem = server_info_mem
@ -123,7 +122,7 @@ class ServerInfoMem(AbstractModel):
return self.__server_info_mem["total"]
class ServerInfoFs(AbstractModel):
class ServerInfoFs:
def __init__(self, server_info_fs: IServerInfoFs) -> None:
self.__server_info_fs = server_info_fs
@ -136,7 +135,7 @@ class ServerInfoFs(AbstractModel):
return self.__server_info_fs["used"]
class ServerInfoNet(AbstractModel):
class ServerInfoNet:
def __init__(self, server_info_net: IServerInfoNet) -> None:
self.__server_info_net = server_info_net
@ -145,7 +144,7 @@ class ServerInfoNet(AbstractModel):
return self.__server_info_net["interface"]
class ServerInfo(AbstractModel):
class ServerInfo:
def __init__(self, server_info: IServerInfo) -> None:
self.__server_info = server_info

@ -3,7 +3,6 @@ from __future__ import annotations
from datetime import datetime
from typing import TYPE_CHECKING
from mipac.abstract.model import AbstractModel
from mipac.types.antenna import IAntenna, IAntennaReceiveSource
from mipac.utils.format import str_to_datetime
@ -12,7 +11,7 @@ if TYPE_CHECKING:
from mipac.manager.client import ClientManager
class Antenna(AbstractModel):
class Antenna:
def __init__(self, antenna: IAntenna, *, client: ClientManager) -> None:
self.__antenna: IAntenna = antenna
self.__client: ClientManager = client

@ -1,8 +1,7 @@
from mipac.abstract.model import AbstractModel
from mipac.types.chart import IActiveUsersChart, IDriveChart, IDriveLocalChart, IDriveRemoteChart
class ActiveUsersChart(AbstractModel):
class ActiveUsersChart:
__slots__ = ("__data",)
def __init__(self, data: IActiveUsersChart):
@ -45,7 +44,7 @@ class ActiveUsersChart(AbstractModel):
return self.__data["registered_outside_year"]
class DriveLocalChart(AbstractModel):
class DriveLocalChart:
__slots__ = ("__data",)
def __init__(self, data: IDriveLocalChart):
@ -76,7 +75,7 @@ class DriveLocalChart(AbstractModel):
return self.__data["dec_size"]
class DriveRemoteChart(AbstractModel):
class DriveRemoteChart:
__slots__ = ("__data",)
def __init__(self, data: IDriveRemoteChart):
@ -107,7 +106,7 @@ class DriveRemoteChart(AbstractModel):
return self.__data["dec_size"]
class DriveChart(AbstractModel):
class DriveChart:
__slots__ = ("__data",)
def __init__(self, data: IDriveChart):

@ -2,7 +2,6 @@ from __future__ import annotations
from typing import TYPE_CHECKING
from mipac.abstract.model import AbstractModel
from mipac.models.lite.user import PartialUser
from mipac.types.clip import IClip
@ -11,7 +10,7 @@ if TYPE_CHECKING:
from mipac.manager.clip import ClientClipManager
class Clip(AbstractModel):
class Clip:
def __init__(self, raw_clip: IClip, *, client: ClientManager) -> None:
self.__clip: IClip = raw_clip
self.__client: ClientManager = client

@ -2,7 +2,6 @@ from __future__ import annotations
from typing import TYPE_CHECKING
from mipac.abstract.model import AbstractModel
from mipac.models.lite.user import PartialUser
from mipac.types.drive import IDriveStatus
@ -44,7 +43,7 @@ class DriveStatus:
return self.__raw_drive_status["usage"]
class FileProperties(AbstractModel):
class FileProperties:
def __init__(self, raw_properties: IFileProperties) -> None:
self.__raw_properties: IFileProperties = raw_properties
@ -65,7 +64,7 @@ class FileProperties(AbstractModel):
return self.__raw_properties.get("avg_color")
class Folder(AbstractModel):
class Folder:
def __init__(self, raw_folder: IFolder, client: ClientManager):
self.__raw_folder: IFolder = raw_folder
self.__client: ClientManager = client
@ -113,7 +112,7 @@ class Folder(AbstractModel):
return not self.__eq__(__value)
class File(AbstractModel):
class File:
def __init__(self, raw_file: IFile, *, client: ClientManager):
self.__raw_file: IFile = raw_file
self.__client: ClientManager = client

@ -2,7 +2,6 @@ from __future__ import annotations
from typing import TYPE_CHECKING
from mipac.abstract.model import AbstractModel
from mipac.models.lite.user import PartialUser
from mipac.types.follow import IFollowRequest
@ -11,7 +10,7 @@ if TYPE_CHECKING:
from mipac.manager.follow import FollowRequestManager
class FollowRequest(AbstractModel):
class FollowRequest:
def __init__(self, follow_request: IFollowRequest, *, client: ClientManager) -> None:
self.__follow_request = follow_request
self.__client = client

@ -2,14 +2,13 @@ from __future__ import annotations
from typing import TYPE_CHECKING
from mipac.abstract.model import AbstractModel
from mipac.types.instance import IFederationInstance
if TYPE_CHECKING:
from mipac.client import ClientManager
class FederationInstance(AbstractModel):
class FederationInstance:
def __init__(self, instance: IFederationInstance, *, client: ClientManager) -> None:
self.__instance: IFederationInstance = instance
self.__client: ClientManager = client

@ -2,7 +2,6 @@ from __future__ import annotations
from typing import TYPE_CHECKING
from mipac.abstract.model import AbstractModel
from mipac.config import config
from mipac.types.emoji import ICustomEmojiLite
@ -10,7 +9,7 @@ if TYPE_CHECKING:
from mipac.manager.client import ClientManager
class PartialCustomEmoji(AbstractModel):
class PartialCustomEmoji:
def __init__(self, emoji: ICustomEmojiLite, *, client: ClientManager) -> None:
self.__emoji = emoji
self.__client: ClientManager = client

@ -1,10 +1,9 @@
from __future__ import annotations
from mipac.abstract.model import AbstractModel
from mipac.types.instance import IInstanceLite
class LiteInstance(AbstractModel):
class LiteInstance:
def __init__(self, instance: IInstanceLite) -> None:
self.__instance: IInstanceLite = instance

@ -2,7 +2,6 @@ from __future__ import annotations
from typing import TYPE_CHECKING
from mipac.abstract.model import AbstractModel
from mipac.models.lite.ad import PartialAd
from mipac.types.meta import IPartialMeta, IPolicies
@ -10,7 +9,7 @@ if TYPE_CHECKING:
from mipac.manager.client import ClientManager
class Policies(AbstractModel):
class Policies:
def __init__(self, raw_policies: IPolicies) -> None:
self.__raw_policies: IPolicies = raw_policies

@ -2,7 +2,6 @@ from __future__ import annotations
from typing import TYPE_CHECKING
from mipac.abstract.model import AbstractModel
from mipac.models.lite.meta import PartialMeta
from mipac.types.meta import (
IAdminMeta,
@ -16,7 +15,7 @@ if TYPE_CHECKING:
from mipac.manager.client import ClientManager
class Features(AbstractModel):
class Features:
def __init__(self, raw_features: IFeatures) -> None:
self.__raw_features = raw_features
@ -78,7 +77,7 @@ class Meta(PartialMeta[IMeta]):
return self._raw_meta["proxy_account_name"]
class AdminMeta(AbstractModel):
class AdminMeta:
def __init__(self, raw_meta: IAdminMeta, *, client: ClientManager) -> None:
self.__raw_meta: IAdminMeta = raw_meta
self.__client: ClientManager = client

@ -2,7 +2,6 @@ from __future__ import annotations
from typing import TYPE_CHECKING
from mipac.abstract.model import AbstractModel
from mipac.models.user import MeDetailed, UserDetailedNotMe, packed_user
from mipac.types.mute import IMuteUser
@ -10,7 +9,7 @@ if TYPE_CHECKING:
from mipac.manager.client import ClientManager
class MuteUser(AbstractModel):
class MuteUser:
def __init__(self, data: IMuteUser, *, client: ClientManager) -> None:
self.__data: IMuteUser = data
self.__client: ClientManager = client

@ -3,7 +3,6 @@ from __future__ import annotations
from datetime import datetime
from typing import TYPE_CHECKING
from mipac.abstract.model import AbstractModel
from mipac.models.drive import File
from mipac.models.lite.user import PartialUser
from mipac.models.poll import Poll
@ -36,7 +35,7 @@ __all__ = (
)
class NoteState(AbstractModel):
class NoteState:
def __init__(self, data: INoteState) -> None:
self.__data: INoteState = data
@ -49,7 +48,7 @@ class NoteState(AbstractModel):
return self.__data["is_muted_thread"]
class NoteDeleted(AbstractModel):
class NoteDeleted:
def __init__(self, data: INoteUpdated[INoteUpdatedDelete]) -> None:
self.__data = data
@ -74,7 +73,7 @@ class Header:
self.type = data.get("type")
class NoteReaction(AbstractModel):
class NoteReaction:
__slots__ = ("__reaction", "__client")
def __init__(self, raw_reaction: INoteReaction, *, client: ClientManager):
@ -631,7 +630,7 @@ class Note:
return not self.__eq__(__value)
class NoteTranslateResult(AbstractModel):
class NoteTranslateResult:
"""
NoteTranslateResult

@ -3,7 +3,6 @@ from __future__ import annotations
from datetime import datetime
from typing import TYPE_CHECKING
from mipac.abstract.model import AbstractModel
from mipac.models.lite.user import PartialUser
from mipac.models.note import Note
@ -20,7 +19,7 @@ if TYPE_CHECKING:
)
class Notification(AbstractModel):
class Notification:
def __init__(
self,
notification: INotification,

@ -2,7 +2,6 @@ from __future__ import annotations
from typing import TYPE_CHECKING
from mipac.abstract.model import AbstractModel
from mipac.types.poll import ICreatePoll, IPoll, IPollChoice
if TYPE_CHECKING:
@ -17,7 +16,7 @@ class MiPoll:
self.expires_at = poll.get("expires_at")
class PollChoice(AbstractModel):
class PollChoice:
def __init__(self, choice: IPollChoice, *, client: ClientManager):
self.__choice: IPollChoice = choice
self.__client: ClientManager = client
@ -35,7 +34,7 @@ class PollChoice(AbstractModel):
return self.__choice["votes"]
class Poll(AbstractModel):
class Poll:
def __init__(self, poll: IPoll, *, client: ClientManager):
self.__poll: IPoll = poll
self.__client: ClientManager = client

@ -2,7 +2,6 @@ from __future__ import annotations
from typing import TYPE_CHECKING
from mipac.abstract.model import AbstractModel
from mipac.models.lite.emoji import PartialCustomEmoji
from mipac.types.note import INoteUpdated, INoteUpdatedReaction
@ -10,7 +9,7 @@ if TYPE_CHECKING:
from mipac.manager.client import ClientManager
class PartialReaction(AbstractModel):
class PartialReaction:
def __init__(
self, reaction: INoteUpdated[INoteUpdatedReaction], *, client: ClientManager
) -> None:

@ -3,7 +3,6 @@ from __future__ import annotations
from datetime import datetime
from typing import TYPE_CHECKING
from mipac.abstract.model import AbstractModel
from mipac.models.lite.role import PartialRole
from mipac.models.user import MeDetailed, UserDetailedNotMe, packed_user
from mipac.types.roles import IMeRole, IRole, IRolePolicies, IRolePolicieValue, IRoleUser
@ -14,7 +13,7 @@ if TYPE_CHECKING:
from mipac.manager.user import UserManager
class RoleUser(AbstractModel):
class RoleUser:
def __init__(self, role_user: IRoleUser, *, client: ClientManager) -> None:
self.__role_user = role_user
self.__client = client
@ -46,7 +45,7 @@ class RoleUser(AbstractModel):
return not self.__eq__(__value)
class MeRole(AbstractModel):
class MeRole:
def __init__(self, data: IMeRole, *, client: ClientManager) -> None:
self.__role_user = data
self.__client = client
@ -78,7 +77,7 @@ class MeRole(AbstractModel):
return not self.__eq__(__value)
class RolePolicyValue(AbstractModel):
class RolePolicyValue:
def __init__(self, policiy_value_data: IRolePolicieValue) -> None:
self.__policy_value_data = policiy_value_data
@ -95,7 +94,7 @@ class RolePolicyValue(AbstractModel):
return self.__policy_value_data.get("priority")
class RolePolicies(AbstractModel):
class RolePolicies:
def __init__(self, role_policies_data: IRolePolicies) -> None:
self.__role_policies_data = role_policies_data

@ -3,7 +3,6 @@ from __future__ import annotations
from datetime import datetime
from typing import TYPE_CHECKING
from mipac.abstract.model import AbstractModel
from mipac.models.announcement import Announcement
from mipac.models.lite.role import PartialRole
from mipac.models.lite.user import BadgeRole, PartialUser
@ -86,7 +85,7 @@ class Following(FollowCommon[IFederationFollowing]):
super().__init__(raw_follow=raw_following, client=client)
class BlockingUser(AbstractModel):
class BlockingUser:
def __init__(self, blocking_user_data: IBlockingUser, *, client: ClientManager) -> None:
self.__blocking_user_data: IBlockingUser = blocking_user_data
self.__client: ClientManager = client
@ -114,7 +113,7 @@ class BlockingUser(AbstractModel):
return not self.__eq__(__value)
class Achievement(AbstractModel):
class Achievement:
def __init__(self, detail: IAchievement):
self.__detail: IAchievement = detail

@ -330,5 +330,5 @@ ENDPOINTS = Literal[
"/api/users/update-memo",
"/api/fetch-rss",
"/api/fetch-external-resources",
"/api/retention"
"/api/retention",
]

@ -247,4 +247,6 @@ class IUpdateMetaBody(TypedDict, total=False):
object_storage_use_proxy: bool
object_storage_set_public_read: bool
object_storage_s3_force_path_style: bool
server_rules: NotRequired[list[str]] # v13.11.3以降のバージョンから追加。その場合は使わないとエラー出るかも
server_rules: NotRequired[
list[str]
] # v13.11.3以降のバージョンから追加。その場合は使わないとエラー出るかも

@ -1,14 +1,10 @@
from __future__ import annotations
from typing import Any, Literal, TypeVar
from typing import Any, Literal
from mipac.abstract.model import AbstractModel
from mipac.http import HTTPClient, Route
M = TypeVar("M", bound=AbstractModel)
class Pagination[T]:
def __init__(
self,

@ -9,73 +9,73 @@ from templates import (
MANAGER_TEMPLATE,
)
ModuleTypes = Literal['manager', 'actions']
ModuleTypes = Literal["manager", "actions"]
parser = argparse.ArgumentParser()
parser.add_argument('--name', '-n')
parser.add_argument('--generate', '-g', action=argparse.BooleanOptionalAction)
parser.add_argument("--name", "-n")
parser.add_argument("--generate", "-g", action=argparse.BooleanOptionalAction)
args = parser.parse_args()
class Generator:
def __init__(self) -> None:
self.split_name = args.name.split('/')
self.path = '/'.join(self.split_name[:-1]) + '/'
self.base_path = '../mipac'
self.split_name = args.name.split("/")
self.path = "/".join(self.split_name[:-1]) + "/"
self.base_path = "../mipac"
def makedirs(self, module_type: ModuleTypes, path: str):
if os.path.exists(f'../mipac/{module_type}/{path[:-1]}') is False:
os.makedirs(f'../mipac/{module_type}/{path[:-1]}')
if os.path.exists(f"../mipac/{module_type}/{path[:-1]}") is False:
os.makedirs(f"../mipac/{module_type}/{path[:-1]}")
with open(
f'../mipac/{module_type}/{path}__init__.py', mode='w', encoding='utf-8'
f"../mipac/{module_type}/{path}__init__.py", mode="w", encoding="utf-8"
) as f:
f.close()
def get_path(self, module_type: ModuleTypes):
return f'{self.base_path}/{module_type}{self.path}{self.split_name[-1]}'
return f"{self.base_path}/{module_type}{self.path}{self.split_name[-1]}"
def get_import_path(self, module_type: ModuleTypes):
return self.get_path(module_type).replace('../', '').replace('/', '.')
return self.get_path(module_type).replace("../", "").replace("/", ".")
def get_class_name(self, module_type: ModuleTypes):
return (
MANAGER_CLASS_NAME_TEMPLATE
if module_type == 'manager'
if module_type == "manager"
else ACTIONS_CLASS_NAME_TEMPLATE
).format(self.split_name[-1].capitalize())
def create_actions(self):
import_path = self.get_import_path('actions')
class_name = self.get_class_name('actions')
os.makedirs(f'{self.base_path}/actions/{self.path}', exist_ok=True)
import_path = self.get_import_path("actions")
class_name = self.get_class_name("actions")
os.makedirs(f"{self.base_path}/actions/{self.path}", exist_ok=True)
with open(
f'{self.base_path}/actions/{self.path}{self.split_name[-1]}.py',
mode='w',
encoding='utf-8',
f"{self.base_path}/actions/{self.path}{self.split_name[-1]}.py",
mode="w",
encoding="utf-8",
) as f:
f.write(ACTIONS_TEMPLATE.format(class_name))
f.close()
return {'import_path': import_path, 'class_name': class_name}
return {"import_path": import_path, "class_name": class_name}
def create_manager(self):
created_actions = self.create_actions()
class_name = self.get_class_name('manager')
os.makedirs(f'{self.base_path}/manager/{self.path}', exist_ok=True)
class_name = self.get_class_name("manager")
os.makedirs(f"{self.base_path}/manager/{self.path}", exist_ok=True)
with open(
f'{self.base_path}/manager/{self.path}{self.split_name[-1]}.py',
mode='w',
encoding='utf-8',
f"{self.base_path}/manager/{self.path}{self.split_name[-1]}.py",
mode="w",
encoding="utf-8",
) as f:
f.write(
MANAGER_TEMPLATE.format(
class_name, created_actions['import_path'], created_actions['class_name']
class_name, created_actions["import_path"], created_actions["class_name"]
)
)
f.close()
if args.generate:
module_types = ['manager', 'actions']
module_types = ["manager", "actions"]
generator = Generator()
generator.create_manager()

@ -1,5 +1,5 @@
MANAGER_CLASS_NAME_TEMPLATE = '{0}Manager'
MANAGER_TEMPLATE = '''
MANAGER_CLASS_NAME_TEMPLATE = "{0}Manager"
MANAGER_TEMPLATE = """
from __future__ import annotations
from typing import TYPE_CHECKING
@ -19,10 +19,10 @@ class {0}(AbstractManager):
@property
def action(self) -> {2}:
return {2}(session=self.__session, client=self.__client)
'''
"""
ACTIONS_CLASS_NAME_TEMPLATE = '{0}Actions'
ACTIONS_TEMPLATE = '''
ACTIONS_CLASS_NAME_TEMPLATE = "{0}Actions"
ACTIONS_TEMPLATE = """
from __future__ import annotations
from typing import TYPE_CHECKING
@ -38,5 +38,4 @@ class {0}(AbstractAction):
def __init__(self, *, session: HTTPClient, client: ClientManager):
self.__session: HTTPClient = session
self.__client: ClientManager = client\n
'''
"""

Loading…
Cancel
Save