From 930b796e3af1ce1aef11a28f5f4f953736c285b0 Mon Sep 17 00:00:00 2001 From: 苏向夜 Date: Mon, 22 Jan 2024 17:22:57 +0800 Subject: :sparkles: feat(lock): add get particular method and refact get function annotation --- src/ipm/models/lock.py | 19 +++++++++++++++---- 1 file 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: -- cgit v1.2.3-70-g09d2