diff options
| author | 2024-01-22 19:24:02 +0800 | |
|---|---|---|
| committer | 2024-01-22 19:24:02 +0800 | |
| commit | a853b8f0ec5bb6bbd8664bab6b2cfa79596139a3 (patch) | |
| tree | aeab0c3171ae1ef8c7bf66fd19f0446fab4db83f | |
| parent | 9482e7971a62bec813058520063b86cb52c27675 (diff) | |
| download | ipm-a853b8f0ec5bb6bbd8664bab6b2cfa79596139a3.tar.gz ipm-a853b8f0ec5bb6bbd8664bab6b2cfa79596139a3.zip | |
:recycle: refactor(lock): migrate lock class functions into abstract method
| -rw-r--r-- | src/ipm/models/lock.py | 38 |
1 files changed, 28 insertions, 10 deletions
diff --git a/src/ipm/models/lock.py b/src/ipm/models/lock.py index e086403..5e64a82 100644 --- a/src/ipm/models/lock.py +++ b/src/ipm/models/lock.py @@ -1,5 +1,5 @@ from pathlib import Path -from abc import ABCMeta +from abc import ABCMeta, abstractmethod from . import ipk from ..typing import Dict, List, StrPath, Any, Package, Index, Storage from ..const import IPM_PATH, ATTENSION @@ -11,6 +11,8 @@ import socket class IpmLock(metaclass=ABCMeta): + """IPM 锁基类""" + metadata: Dict[str, str] indexes: List[Dict[str, Any]] packages: List[Dict[str, Any]] @@ -22,7 +24,26 @@ class IpmLock(metaclass=ABCMeta): self.source_path = source_path return self.load() if auto_load else None - def load(self, auto_completion: bool = True): + @abstractmethod + def load(self) -> None: + raise NotImplementedError + + @abstractmethod + def dumps(self) -> dict: + raise NotImplementedError + + @abstractmethod + def dump(self) -> str: + raise NotImplementedError + + +class PackageLock(IpmLock): + """全局包锁""" + + def __init__(self, source_path: StrPath | None = None) -> None: + super().__init__(source_path=source_path or IPM_PATH / "infini.lock") + + def load(self, auto_completion: bool = True) -> None: if not self.source_path.exists(): if auto_completion: self.metadata = { @@ -78,13 +99,7 @@ class IpmLock(metaclass=ABCMeta): source_file = self.source_path.open("w", encoding="utf-8") source_file.write(data_to_dump) source_file.close() - - -class PackageLock(IpmLock): - """全局包锁""" - - def __init__(self, source_path: StrPath | None = None) -> None: - super().__init__(source_path=source_path or IPM_PATH / "infini.lock") + return data_to_dump def add_index( self, index_uri: str, host: str, uuid: str, dump: bool = False @@ -227,4 +242,7 @@ class PackageLock(IpmLock): class ProjectLock: - ... + """IPM 项目锁""" + + def __init__(self, source_path: StrPath | None = None) -> None: + super().__init__(source_path=source_path or Path(".").resolve() / "infini.lock") |
