diff options
| author | 2024-03-12 15:41:09 +0800 | |
|---|---|---|
| committer | 2024-03-12 15:41:09 +0800 | |
| commit | 0995469da6f7e3654132c9a2c713e02cd90461cb (patch) | |
| tree | d052869dd3109924eb47ab5ba1f245d25f56309d | |
| parent | c0ff60443d0cbfceba4abc828814416e541c912b (diff) | |
| download | ipm-0995469da6f7e3654132c9a2c713e02cd90461cb.tar.gz ipm-0995469da6f7e3654132c9a2c713e02cd90461cb.zip | |
fix(ipk): fix some annocation mistakes and fix lock packages
| -rw-r--r-- | src/ipm/models/ipk.py | 13 | ||||
| -rw-r--r-- | src/ipm/models/lock.py | 206 |
2 files changed, 13 insertions, 206 deletions
diff --git a/src/ipm/models/ipk.py b/src/ipm/models/ipk.py index 9cf21b8..ffe307f 100644 --- a/src/ipm/models/ipk.py +++ b/src/ipm/models/ipk.py @@ -209,13 +209,16 @@ class InfiniProject(InfiniPackage): @property def requirements(self) -> Requirements: - # type: ignore - return Requirements(self._data.get("requirements") or {}, yggdrasils=self.yggdrasils) + return Requirements( + self._data.get("requirements") or {}, yggdrasils=self.yggdrasils + ) @property - def yggdrasils(self) -> List[Yggdrasil]: - # type: ignore - return [Yggdrasil(index) for _, index in self._data.get("yggdrasils", {}).items()] or [] + def yggdrasils(self) -> Dict[str, Yggdrasil]: + return { + name: Yggdrasil(index) + for name, index in self._data.get("yggdrasils", {}).items() + } or {} class InfiniFrozenPackage(InfiniPackage): diff --git a/src/ipm/models/lock.py b/src/ipm/models/lock.py index 9fab57b..08c02fa 100644 --- a/src/ipm/models/lock.py +++ b/src/ipm/models/lock.py @@ -1,10 +1,8 @@ from pathlib import Path -from abc import ABCMeta, abstractmethod +from abc import ABCMeta from typing import Optional -from ipm.typing import Dict, List, StrPath, Any, Package, Index, Storage -from ipm.const import IPM_PATH, ATTENTIONS, SRC_HOME -from ipm.exceptions import SyntaxError, FileNotFoundError -from ipm.utils.uuid import generate_uuid +from ipm.typing import Dict, StrPath +from ipm.const import IPM_PATH, ATTENTIONS from tomlkit import TOMLDocument from typing import TYPE_CHECKING @@ -49,200 +47,6 @@ class PackageLock(IPMLock): super().__init__(source_path=source_path or IPM_PATH) -# def load(self, auto_completion: bool = True) -> None: -# if not self.source_path.exists(): -# if auto_completion: -# self.metadata = { -# "host": socket.gethostname(), -# "uuid": generate_uuid(), -# } -# self.indexes = [] -# self.packages = [] -# self.storages = [] -# self.dumps() -# else: -# raise FileNotFoundError(f"锁文件不存在!") -# else: -# loaded_data = toml.load(self.source_path.open("r", encoding="utf-8")) - -# if "metadata" not in loaded_data.keys(): -# if not auto_completion: -# raise SyntaxError(f"锁文件缺失[metadata]项.") -# else: -# self.metadata = { -# "host": socket.gethostname(), -# "uuid": generate_uuid(), -# } -# else: -# self.metadata = loaded_data["metadata"] - -# if "uuid" not in self.metadata.keys(): -# if auto_completion: -# self.metadata["uuid"] = generate_uuid() -# else: -# raise SyntaxError(f"锁文件[metadata]项缺失[uuid]项.") - -# self.indexes = ( -# loaded_data["indexes"] if "indexes" in loaded_data.keys() else [] -# ) -# self.packages = ( -# loaded_data["packages"] if "packages" in loaded_data.keys() else [] -# ) -# self.storages = ( -# loaded_data["storages"] if "storages" in loaded_data.keys() else [] -# ) - -# def dumps(self) -> dict: -# return { -# "metadata": self.metadata, -# "indexes": self.indexes, -# "packages": self.packages, -# "storages": self.storages, -# } - -# def add_index( -# self, index_uri: str, host: str, uuid: str, dump: bool = False -# ) -> str: -# for index in self.indexes: -# if "index" not in index.keys(): -# raise SyntaxError("异常的锁文件!") -# if index["index"] == index_uri: -# self.storages.remove(index) -# break - -# self.indexes.append( -# { -# "index": index_uri, -# "host": host, -# "uuid": uuid, -# } -# ) -# return self.dump() if dump else "" - -# def remove_index(self, uuid: str, dump: bool = False) -> str: -# uuid = uuid.strip() -# for index in self.indexes: -# if "name" not in index.keys(): -# raise SyntaxError("异常的锁文件!") -# if index["name"] == uuid: -# self.packages.remove(index) -# break -# return self.dump() if dump else "" - -# def get_index(self, index_uri: str) -> Index | None: -# index_uri = index_uri.strip() -# for index in self.indexes: -# if index["index"] == index_uri: -# return index -# return None - -# def has_index(self, index_uri: str) -> bool: -# index_uri = index_uri.strip() -# for index in self.indexes: -# if index["index"] == index_uri: -# return True -# return False - -# def add_package(self, ipk: "ipk.InfiniProject", dump: bool = False) -> str: -# for package in self.packages: -# if "name" not in package.keys(): -# raise SyntaxError("异常的锁文件!") -# if package["name"] == ipk.name: -# self.storages.remove(package) -# break - -# self.packages.append( -# { -# "name": ipk.name, -# "version": ipk.version, -# "description": ipk.description, -# "requirements": ipk.requirements, -# "dependencies": ipk.dependencies, -# } -# ) -# return self.dump() if dump else "" - -# def get_package(self, name: str) -> Package | None: -# name = name.strip() -# for package in self.packages: -# if package["name"] == name: -# return package -# return None - -# def has_package(self, name: str) -> bool: -# name = name.strip() -# for package in self.packages: -# if package["name"] == name: -# return True -# return False - -# def remove_package(self, name: str, dump: bool = False) -> str: -# name = name.strip() -# for package in self.packages: -# if "name" not in package.keys(): -# raise SyntaxError("异常的锁文件!") -# if package["name"] == name: -# self.packages.remove(package) -# break -# return self.dump() if dump else "" - -# def add_storage(self, ifp: "ipk.InfiniFrozenPackage", dump: bool = False) -> str: -# for storage in self.storages: -# if "name" not in storage.keys(): -# raise SyntaxError("异常的锁文件!") -# if storage["name"] == ifp.name and storage["version"] == ifp.version: -# self.storages.remove(storage) -# break - -# self.storages.append( -# { -# "name": ifp.name, -# "version": ifp.version, -# "hash": ifp.hash, -# "source": f"storage/{ifp.name}/{ifp.default_name}", -# } -# ) -# return self.dump() if dump else "" - -# def remove_storage(self, name: str, dump: bool = False) -> str: -# name = name.strip() -# for storage in self.storages: -# if "name" not in storage.keys(): -# raise SyntaxError("异常的锁文件!") -# if storage["name"] == name: -# self.storages.remove(storage) -# break -# return self.dump() if dump else "" - -# 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: -# if storage["name"] == name: -# return True -# return False - -# def get_ipk(self, name: str) -> "ipk.InfiniProject": -# return ipk.InfiniProject(Path(SRC_HOME / name.strip()).resolve()) - - class ProjectLock(IPMLock): """IPM 项目锁""" @@ -263,8 +67,8 @@ class ProjectLock(IPMLock): metadata.add("license", project.license) lock._data.add("metadata", metadata) + packages = tomlkit.aot() for requirement in project.requirements: - packages = tomlkit.aot() if requirement.is_local(): packages.append( tomlkit.item( @@ -285,6 +89,6 @@ class ProjectLock(IPMLock): } ) ) - lock._data.add("packages", packages) + lock._data.add("packages", packages) return lock |
