aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author苏向夜 <fu050409@163.com>2024-01-22 17:22:57 +0800
committer苏向夜 <fu050409@163.com>2024-01-22 17:22:57 +0800
commit930b796e3af1ce1aef11a28f5f4f953736c285b0 (patch)
treed2354b2bf5c81cf79de731b19b4e095e64676412
parentad199c534a36c843f47bac56aca65801579b75d4 (diff)
downloadipm-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.py19
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: