diff options
| -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: |
