From cbc0797019ee6d31a24a24fc49869992781cbea4 Mon Sep 17 00:00:00 2001 From: dingsheng Date: Wed, 21 Aug 2024 05:50:13 +0000 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=E6=B3=A8=E9=87=8A=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=EF=BC=8C=E6=96=B0=E5=A2=9Eiso=E4=B8=AD=E8=BD=AF?= =?UTF-8?q?=E4=BB=B6=E5=8C=85=E8=A7=A3=E6=9E=90=E5=8C=97=E5=90=91=E4=BE=9D?= =?UTF-8?q?=E8=B5=96=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/depparse.py | 44 ++++++++++++++++++++++++++++++++++++++++++- src/utils/isocheck.py | 17 +++++++++++++++++ 2 files changed, 60 insertions(+), 1 deletion(-) diff --git a/src/utils/depparse.py b/src/utils/depparse.py index 2ff3c20..a90adf2 100755 --- a/src/utils/depparse.py +++ b/src/utils/depparse.py @@ -13,15 +13,27 @@ # ********************************************************************************** """ +import copy from collections import defaultdict class DepParse(object): + """ + 依赖解析模块 + """ def __init__(self): self.dep_dict = defaultdict(list) self.dep_by_dict = defaultdict(list) self.all_pkgs = set() def get_pkg_all_deps(self,pkg_name): + """ + 解析输入软件包的所有南向依赖软件包 + Args: + pkg_name (string): 软件包名 + + Returns: + set: 南向依赖软件包集合 + """ dep_set = set() dep_pkgs_dict = self.dep_dict to_process = {pkg_name} @@ -37,6 +49,9 @@ class DepParse(object): class ISODepParse(DepParse): + """ + ISO软件包依赖解析模块 + """ def __init__(self,iso_path): super(ISODepParse,self).__init__() self._iso_path = iso_path @@ -46,6 +61,11 @@ class ISODepParse(DepParse): self.all_pkgs = self._get_all_pkgs() def _get_all_pkgs(self): + """ + 解析iso中所有软件包名集合 + Returns: + set: iso中所有软件包名集合 + """ if isinstance(self.dep_dict,dict): res_set = set(self.dep_dict.keys()) else: @@ -56,4 +76,26 @@ class ISODepParse(DepParse): pass def _get_repo_pkg_deps_by(self): - pass + """ + 解析软件包北向依赖关系 + Returns: + dict: 软件包北向依赖关系字典 + """ + deps_by_dict = defaultdict(list) + dep_pkgs_dict = copy.deepcopy(self.dep_dict) + for p in dep_pkgs_dict.keys(): + deps_by_dict[p] + for k,v in dep_pkgs_dict.items(): + if not v: + continue + else: + for dep_pkg in v: + tmp_k = dep_pkg + if tmp_k not in deps_by_dict.keys(): + deps_by_dict[tmp_k] = [k] + else: + tmp_v = deps_by_dict.get(tmp_k) + tmp_v.append(k) + tmp_v = list(set(tmp_v)) + deps_by_dict[tmp_k] = tmp_v + return deps_by_dict \ No newline at end of file diff --git a/src/utils/isocheck.py b/src/utils/isocheck.py index f829481..093a751 100644 --- a/src/utils/isocheck.py +++ b/src/utils/isocheck.py @@ -21,16 +21,25 @@ ERROR_INFO={ } class IsoCheck(object): + """ + 输入ISO检查模块,检查失败打印错误信息 + """ def __init__(self,path): self.path=path def check_exist(self): + """ + 检查文件存在性 + """ if not os.path.exists(self.path): return False else: return True def check_format(self): + """ + 检查iso格式是否正确 + """ try: iso = pycdlib.PyCdlib() iso.open(self.path) @@ -52,6 +61,14 @@ class IsoCheck(object): @classmethod def check(cls,iso_path): + """ + 入口函数 + Args: + iso_path (string): iso文件路径 + + Returns: + bool: True/False + """ obj = cls(iso_path) if not obj.check_exist(): print(ERROR_INFO.get(1001,'')) -- Gitee