mirror of
https://github.com/dw-0/kiauh.git
synced 2025-12-24 00:03:42 +05:00
chore: improve type hinting
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
This commit is contained in:
@@ -1,5 +1,3 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
|
|
||||||
# ======================================================================= #
|
# ======================================================================= #
|
||||||
# Copyright (C) 2020 - 2024 Dominik Willner <th33xitus@gmail.com> #
|
# Copyright (C) 2020 - 2024 Dominik Willner <th33xitus@gmail.com> #
|
||||||
# #
|
# #
|
||||||
@@ -9,14 +7,13 @@
|
|||||||
# This file may be distributed under the terms of the GNU GPLv3 license #
|
# This file may be distributed under the terms of the GNU GPLv3 license #
|
||||||
# ======================================================================= #
|
# ======================================================================= #
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
from abc import abstractmethod, ABC
|
from abc import abstractmethod, ABC
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import List, Type, TypeVar
|
from typing import List, Optional
|
||||||
|
|
||||||
from utils.constants import SYSTEMD, CURRENT_USER
|
from utils.constants import SYSTEMD, CURRENT_USER
|
||||||
|
|
||||||
B = TypeVar(name="B", bound="BaseInstance", covariant=True)
|
|
||||||
|
|
||||||
|
|
||||||
class BaseInstance(ABC):
|
class BaseInstance(ABC):
|
||||||
@classmethod
|
@classmethod
|
||||||
@@ -26,7 +23,7 @@ class BaseInstance(ABC):
|
|||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
suffix: str,
|
suffix: str,
|
||||||
instance_type: B = B,
|
instance_type: BaseInstance,
|
||||||
):
|
):
|
||||||
self._instance_type = instance_type
|
self._instance_type = instance_type
|
||||||
self._suffix = suffix
|
self._suffix = suffix
|
||||||
@@ -40,11 +37,11 @@ class BaseInstance(ABC):
|
|||||||
self._gcodes_dir = self.data_dir.joinpath("gcodes")
|
self._gcodes_dir = self.data_dir.joinpath("gcodes")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def instance_type(self) -> Type["BaseInstance"]:
|
def instance_type(self) -> BaseInstance:
|
||||||
return self._instance_type
|
return self._instance_type
|
||||||
|
|
||||||
@instance_type.setter
|
@instance_type.setter
|
||||||
def instance_type(self, value: Type["BaseInstance"]) -> None:
|
def instance_type(self, value: BaseInstance) -> None:
|
||||||
self._instance_type = value
|
self._instance_type = value
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@@ -76,7 +73,7 @@ class BaseInstance(ABC):
|
|||||||
return self._data_dir
|
return self._data_dir
|
||||||
|
|
||||||
@data_dir.setter
|
@data_dir.setter
|
||||||
def data_dir(self, value: str) -> None:
|
def data_dir(self, value: Path) -> None:
|
||||||
self._data_dir = value
|
self._data_dir = value
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@@ -84,7 +81,7 @@ class BaseInstance(ABC):
|
|||||||
return self._cfg_dir
|
return self._cfg_dir
|
||||||
|
|
||||||
@cfg_dir.setter
|
@cfg_dir.setter
|
||||||
def cfg_dir(self, value: str) -> None:
|
def cfg_dir(self, value: Path) -> None:
|
||||||
self._cfg_dir = value
|
self._cfg_dir = value
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@@ -92,7 +89,7 @@ class BaseInstance(ABC):
|
|||||||
return self._log_dir
|
return self._log_dir
|
||||||
|
|
||||||
@log_dir.setter
|
@log_dir.setter
|
||||||
def log_dir(self, value: str) -> None:
|
def log_dir(self, value: Path) -> None:
|
||||||
self._log_dir = value
|
self._log_dir = value
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@@ -100,7 +97,7 @@ class BaseInstance(ABC):
|
|||||||
return self._comms_dir
|
return self._comms_dir
|
||||||
|
|
||||||
@comms_dir.setter
|
@comms_dir.setter
|
||||||
def comms_dir(self, value: str) -> None:
|
def comms_dir(self, value: Path) -> None:
|
||||||
self._comms_dir = value
|
self._comms_dir = value
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@@ -108,7 +105,7 @@ class BaseInstance(ABC):
|
|||||||
return self._sysd_dir
|
return self._sysd_dir
|
||||||
|
|
||||||
@sysd_dir.setter
|
@sysd_dir.setter
|
||||||
def sysd_dir(self, value: str) -> None:
|
def sysd_dir(self, value: Path) -> None:
|
||||||
self._sysd_dir = value
|
self._sysd_dir = value
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@@ -116,7 +113,7 @@ class BaseInstance(ABC):
|
|||||||
return self._gcodes_dir
|
return self._gcodes_dir
|
||||||
|
|
||||||
@gcodes_dir.setter
|
@gcodes_dir.setter
|
||||||
def gcodes_dir(self, value: str) -> None:
|
def gcodes_dir(self, value: Path) -> None:
|
||||||
self._gcodes_dir = value
|
self._gcodes_dir = value
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
@@ -127,7 +124,7 @@ class BaseInstance(ABC):
|
|||||||
def delete(self) -> None:
|
def delete(self) -> None:
|
||||||
raise NotImplementedError("Subclasses must implement the delete method")
|
raise NotImplementedError("Subclasses must implement the delete method")
|
||||||
|
|
||||||
def create_folders(self, add_dirs: List[Path] = None) -> None:
|
def create_folders(self, add_dirs: Optional[List[Path]] = None) -> None:
|
||||||
dirs = [
|
dirs = [
|
||||||
self.data_dir,
|
self.data_dir,
|
||||||
self.cfg_dir,
|
self.cfg_dir,
|
||||||
|
|||||||
Reference in New Issue
Block a user