chore: improve type hinting

Signed-off-by: Dominik Willner <th33xitus@gmail.com>
This commit is contained in:
dw-0
2024-03-21 21:50:10 +01:00
parent ed35dc9e03
commit 4ffa057931

View File

@@ -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,