diff options
| author | 2024-01-22 17:22:57 +0800 | |
|---|---|---|
| committer | 2024-01-22 17:22:57 +0800 | |
| commit | 930b796e3af1ce1aef11a28f5f4f953736c285b0 (patch) | |
| tree | d2354b2bf5c81cf79de731b19b4e095e64676412 | |
| parent | ad199c534a36c843f47bac56aca65801579b75d4 (diff) | |
| download | ipm-930b796e3af1ce1aef11a28f5f4f953736c285b0.tar.gz ipm-930b796e3af1ce1aef11a28f5f4f953736c285b0.zip | |
:sparkles: feat(lock): add get particular method and refact get function annotation
| -rw-r--r-- | src/ipm/models/lock.py | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/ipm/models/lock.py b/src/ipm/models/lock.py index 0515b9c..790ad6c 100644 --- a/src/ipm/models/lock.py +++ b/src/ipm/models/lock.py @@ -1,7 +1,7 @@ from pathlib import Path from abc import ABCMeta from . import ipk -from ..typing import Dict, List, StrPath, Any +from ..typing import Dict, List, StrPath, Any, Package, Index, Storage from ..const import IPM_PATH, ATTENSION from ..exceptions import SyntaxError, FileNotFoundError from ..utils.uuid import generate_uuid @@ -115,7 +115,7 @@ class PackageLock(IpmLock): break return self.dump() if dump else "" - def get_index(self, index_uri: str) -> dict | None: + def get_index(self, index_uri: str) -> Index | None: index_uri = index_uri.strip() for index in self.indexes: if index["index"] == index_uri: @@ -150,7 +150,7 @@ class PackageLock(IpmLock): ) return self.dump() if dump else "" - def get_package(self, name: str) -> dict | None: + def get_package(self, name: str) -> Package | None: name = name.strip() for package in self.packages: if package["name"] == name: @@ -202,13 +202,24 @@ class PackageLock(IpmLock): break return self.dump() if dump else "" - def get_storage(self, name: str) -> dict | None: + def get_storage(self, name: str) -> Storage | None: name = name.strip() for storage in self.storages: if storage["name"] == name: return storage return None + def get_particular_storage( + self, name: str, version: str | None = None + ) -> Storage | None: + name = name.strip() + for storage in self.storages: + if storage["name"] == name and ( + version is None or storage["version"] == version + ): + return storage + return None + def has_storage(self, name: str) -> bool: name = name.strip() for storage in self.storages: |
