openubmc-bingo 0.6.51__py3-none-any.whl → 0.6.55__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of openubmc-bingo might be problematic. Click here for more details.

bmcgo/__init__.py CHANGED
@@ -9,4 +9,4 @@
9
9
  # MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
10
10
  # See the Mulan PSL v2 for more details.
11
11
 
12
- __version__ = '0.6.51'
12
+ __version__ = '0.6.55'
bmcgo/bmcgo_config.py CHANGED
@@ -140,6 +140,7 @@ class BmcgoConfig(object):
140
140
 
141
141
  def _bmcgo_config_init(self):
142
142
  """配置初始化"""
143
+ self.bingo_version_range = None
143
144
  cwd = self.cwd
144
145
  if os.path.isfile("frame.py"):
145
146
  self.manifest = BmcgoManifest(os.path.realpath(os.path.join(cwd, "..")), None)
@@ -185,6 +186,9 @@ class BmcgoConfig(object):
185
186
  self.component = BmcgoComp(folder, conf)
186
187
  except (NoSectionError, NoOptionError):
187
188
  log.debug("不是一个合法的组件仓,尝试查找mds/service.json")
189
+
190
+ #检查是否需要升级
191
+ self._bingo_version_check(conf)
188
192
 
189
193
  self._bmcgo_signature_config_load(conf)
190
194
 
@@ -194,6 +198,18 @@ class BmcgoConfig(object):
194
198
  return
195
199
 
196
200
  cwd = os.path.dirname(cwd)
201
+
202
+ def _bingo_version_check(self, conf: configparser.ConfigParser):
203
+ try:
204
+ version_range = conf.get("bingo", "version")
205
+ except Exception as e:
206
+ version_range = ""
207
+ version_range_str = version_range.strip("[").rstrip("]")
208
+ import semver
209
+ if semver.satisfies(__version__, version_range_str):
210
+ return
211
+ else:
212
+ self.bingo_version_range = version_range_str.replace(" ", ",")
197
213
 
198
214
  def _bmcgo_config_load(self):
199
215
  """读取配置"""
bmcgo/cli/cli.py CHANGED
@@ -40,6 +40,7 @@ from bmcgo.bmcgo_config import BmcgoConfig
40
40
  from bmcgo.utils.tools import Tools
41
41
  from bmcgo.utils.config import Config
42
42
 
43
+
43
44
  cwd = os.getcwd()
44
45
  tools = Tools()
45
46
  log = tools.log
@@ -265,6 +266,12 @@ class Command(object):
265
266
  if command in ["-h", "--help"]:
266
267
  self._show_help()
267
268
  return 0
269
+ #检查是否需要升级
270
+ if self.bconfig.bingo_version_range:
271
+ result_code = self.bingo_upgrade()
272
+ if result_code == 0:
273
+ log.info("自动升级完成,请重新运行命令")
274
+ return result_code
268
275
  valid_command = self._find_real_command(command)
269
276
  # 命令参数
270
277
  command_args = args[0][1:]
@@ -316,6 +323,13 @@ class Command(object):
316
323
  if studio_version:
317
324
  log.info("bmc-studio 版本为: %s", studio_version)
318
325
 
326
+ def bingo_upgrade(self):
327
+ version_range = self.bconfig.bingo_version_range.replace(",", " ")
328
+ log.info(f"检测到当前版本:{client_version}与约束版本{version_range}不匹配,将自动升级,完成后请重新运行")
329
+ from bmcgo.functional.upgrade import BmcgoCommand as upcommand
330
+ cmd = upcommand(self.bconfig, (["-v", f"bingo{self.bconfig.bingo_version_range}", "-f"]))
331
+ return cmd.run()
332
+
319
333
  def conan_init(self):
320
334
  if misc.conan_v2():
321
335
  tools.run_command("conan profile detect --force")
@@ -451,14 +465,6 @@ class Command(object):
451
465
  """检查当前环境中正在使用的bmc studio版本,
452
466
  优先通过pip获取,获取不到通过bmc_studio/mds/server获取
453
467
  """
454
- package_info = tools.run_command('pip3 show hw_ibmc_bmc_studio', sudo=True,
455
- command_echo=False, ignore_error=True, capture_output=True)
456
- version = ""
457
- if package_info:
458
- version = package_info.stdout.replace("\n", " ")
459
- match = re.match(r".*([0-9]+\.[0-9]+\.[0-9]+)", version)
460
- if match:
461
- return match.group(1)
462
468
  studio_path = tools.get_studio_path()
463
469
  bmc_studio_conf = os.path.join(f"{studio_path}/mds/service.json")
464
470
  if not os.path.isfile(bmc_studio_conf):
@@ -43,8 +43,7 @@ bingo 升级工具
43
43
 
44
44
  class BmcgoCommand:
45
45
  VERSION_PATTERN = re.compile(
46
- r"^([a-zA-Z0-9_-]+)\s*([<>]=?|[!~]?=)?\s*([a-zA-Z0-9._+-]*|"
47
- rf"{install_consts.INSTALL_LATEST})$"
46
+ r"^([a-zA-Z0-9._-]+)((?:>=|<=|>|<|=)\s*[\s\S]+)"
48
47
  )
49
48
 
50
49
  def __init__(self, bconfig: BmcgoConfig, *args):
@@ -73,7 +72,7 @@ class BmcgoCommand:
73
72
  help="列出可安装版本"
74
73
  )
75
74
 
76
- args, _ = parser.parse_known_args()
75
+ args, _ = parser.parse_known_args(*args)
77
76
 
78
77
  self.version = args.version
79
78
  self.force = args.force
@@ -83,8 +82,9 @@ class BmcgoCommand:
83
82
  self.plugin_path = Path(bconfig.bmcgo_config_list.get(misc.CUSTOM_PLUGINS, misc.DEFAULT_PLUGINS_PATH))
84
83
 
85
84
  def run(self):
86
- app, opt, ver = self._parse_version()
87
- self.installer.init(app, opt, ver, self.plugin_path)
85
+ app, version_range = self._parse_version()
86
+ version_range = version_range.replace(",", " ")
87
+ self.installer.init(app, version_range, self.plugin_path)
88
88
 
89
89
  if self.list:
90
90
  self._list_all_versions()
@@ -105,4 +105,4 @@ class BmcgoCommand:
105
105
  if match:
106
106
  return match.groups()
107
107
  self.version = install_consts.INSTALL_DEFAULT
108
- return self._parse_version()
108
+ return install_consts.INSTALL_ALL, install_consts.INSTALL_LATEST
@@ -94,7 +94,7 @@ class ComponentVersionCheck:
94
94
  def get_dict(self):
95
95
  self.openubmc_folder()
96
96
  self.manifest_dict = self.generate_manifest_dict()
97
- self.ibmc_lock_dict = self.generate_ibmc_lock_dict()
97
+ self.ibmc_lock_dict = self.generate_bmc_lock_dict()
98
98
 
99
99
  def generate_manifest_dict(self) -> dict:
100
100
  """根据 manifest.yml(conan目录) 配置生成 组件名: 组件配置 的字典
@@ -106,8 +106,8 @@ class ComponentVersionCheck:
106
106
  manifest_dict = {x[misc.CONAN].split('/')[0]: x[misc.CONAN].split('@')[0] for x in dependency_list}
107
107
  return manifest_dict
108
108
 
109
- def generate_ibmc_lock_dict(self) -> dict:
110
- """根据 ibmc.lock 配置生成 组件名: 组件配置 的字典
109
+ def generate_bmc_lock_dict(self) -> dict:
110
+ """根据 bmc.lock 配置生成 组件名: 组件配置 的字典
111
111
 
112
112
  Returns:
113
113
  dict: 返回 组件名: 组件配置 的字典
@@ -116,7 +116,7 @@ class ComponentVersionCheck:
116
116
  component_list = self.ibmc_lock["graph_lock"]["nodes"]
117
117
  ibmc_lock_dict = {x["ref"].split('/')[0]: x["ref"].split('@')[0]
118
118
  for x in [component_conf for _, component_conf in component_list.items()]}
119
- ibmc_lock_dict.pop("openubmc")
119
+ ibmc_lock_dict.pop(misc.community_name())
120
120
  else:
121
121
  component_list = self.ibmc_lock["requires"]
122
122
  ibmc_lock_dict = {x.split('/')[0]: x.split('@')[0] for x in component_list}
bmcgo/utils/config.py CHANGED
@@ -762,6 +762,8 @@ class Config:
762
762
 
763
763
  def merge_dependencies(self, dependencies, subsys_comps, base_deps):
764
764
  for com_package in dependencies:
765
+ if "overwrite" in com_package:
766
+ del com_package["overwrite"]
765
767
  com_package_split = com_package.get(misc.CONAN).split("/")
766
768
  if len(com_package_split) > 2:
767
769
  continue
@@ -38,7 +38,7 @@ class InstallManager:
38
38
  def custom_install_plan_path(self):
39
39
  return self._custom_path / install_consts.PLUGIN_INSTALL_PLAN_PATH
40
40
 
41
- def init(self, app_name, operator, version, custom_path):
41
+ def init(self, app_name, version_range, custom_path):
42
42
  self._set_custom_path(custom_path)
43
43
 
44
44
  if app_name == install_consts.INSTALL_ALL:
@@ -54,7 +54,7 @@ class InstallManager:
54
54
  if not inst_type:
55
55
  raise ValueError(f"未配置 {wname}/{install_consts.PLAN_STEPS}/{install_consts.PLAN_INSTALL_TYPE}")
56
56
  inst = BaseInstaller.get_installer(inst_type)
57
- inst.init(plan, operator, version)
57
+ inst.init(plan, version_range)
58
58
  self._installers.setdefault(wname, []).append(inst)
59
59
 
60
60
  def show_versions(self):
@@ -86,11 +86,11 @@ class BaseInstaller(abc.ABC):
86
86
  raise ValueError(f"未定义的安装方法:{installer_type}")
87
87
  return installer_cls()
88
88
 
89
- def init(self, plan, operator, version):
89
+ def init(self, plan, version_range):
90
90
  self.parse_plan(plan)
91
91
 
92
92
  versions = self.get_versions()
93
- self.resolve_constraint(versions, operator, version)
93
+ self.resolve_constraint(versions, version_range)
94
94
 
95
95
  self.get_current_version()
96
96
 
@@ -113,39 +113,22 @@ class BaseInstaller(abc.ABC):
113
113
  return
114
114
  self.parse_custom_plan(plan)
115
115
 
116
- def resolve_constraint(self, versions, opt, ver):
116
+ def resolve_constraint(self, versions, version_range):
117
117
  if not versions:
118
118
  self.warning("当前没有可下载版本!")
119
119
  return
120
120
 
121
- if ver == install_consts.INSTALL_LATEST or not opt:
121
+ if version_range == install_consts.INSTALL_LATEST or not version_range:
122
122
  self._target_ver = versions[0]
123
123
  return
124
-
125
- pkg_ver = PkgVersion(ver)
124
+
125
+ import semver
126
126
  for avl_ver in versions:
127
- v = PkgVersion(avl_ver)
128
- if opt == ">=" and v >= pkg_ver:
129
- self._target_ver = v.origin
130
- break
131
- elif opt == "<=" and v <= pkg_ver:
132
- self._target_ver = v.origin
133
- break
134
- elif opt == "!=" and v != pkg_ver:
135
- self._target_ver = v.origin
127
+ if semver.satisfies(avl_ver, version_range):
128
+ self._target_ver = avl_ver
136
129
  break
137
- elif opt == "<" and v < pkg_ver:
138
- self._target_ver = v.origin
139
- break
140
- elif opt == ">" and v > pkg_ver:
141
- self._target_ver = v.origin
142
- break
143
- elif opt == "=" and v == pkg_ver:
144
- self._target_ver = v.origin
145
- break
146
- else:
147
- self.warning(f"没有找到匹配的版本:{self._pkg_name}{opt}{ver}")
148
- return
130
+ if not self._target_ver:
131
+ raise ValueError(f"没有找到匹配的版本:{self._pkg_name}{version_range}")
149
132
 
150
133
  def info(self, msg):
151
134
  self.logger and self.logger.info(f"[{self.type_name}] {msg}")
@@ -128,7 +128,7 @@ def rename_json_prop(obj, array, depth, new_key):
128
128
  elif isinstance(obj, list) and array[depth] < len(obj):
129
129
  node = obj[array[depth]]
130
130
  if node is not None:
131
- remove_json_prop(node, array, depth + 1, new_key)
131
+ rename_json_prop(node, array, depth + 1, new_key)
132
132
 
133
133
 
134
134
  class MappingConfigPatch(Task):
bmcgo/utils/tools.py CHANGED
@@ -245,16 +245,19 @@ class Tools():
245
245
  pkg_name = pkg_info[0]
246
246
  has_version = len(pkg_info) > 1
247
247
  for sub in base_manifest.get(dependency_type, {}):
248
+ overwrite = sub.get("overwrite", False)
248
249
  sub_name = sub.get(misc.CONAN)
249
250
  sub_pkg_name = sub_name.split("/")[0]
250
251
  # 上下层具有相同组件名的组件
251
252
  if pkg_name == sub_pkg_name:
252
- if has_version:
253
+ if not has_version:
254
+ com_package[misc.CONAN] = sub_name
255
+ elif overwrite:
256
+ com_package[misc.CONAN] = name
257
+ else:
253
258
  raise errors.BmcGoException(
254
259
  "配置错误: 不允许删除平台组件或定制平台组件版本号{}".format(name)
255
260
  )
256
- else:
257
- com_package[misc.CONAN] = sub_name
258
261
  break
259
262
 
260
263
  @staticmethod
@@ -630,7 +633,7 @@ class Tools():
630
633
  self.run_command(f"chown {user_group} {img_path}", sudo=True)
631
634
 
632
635
  def get_studio_path(self):
633
- ret = self.run_command("whereis bmc_studio", sudo=True, ignore_error=True,
636
+ ret = self.run_command("whereis bmc_studio", sudo=False, ignore_error=True,
634
637
  command_echo=False, capture_output=True).stdout
635
638
  if not ret:
636
639
  return ""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: openubmc-bingo
3
- Version: 0.6.51
3
+ Version: 0.6.55
4
4
  Summary: Tools provided by openubmc
5
5
  Home-page: https://openubmc.cn
6
6
  Classifier: Programming Language :: Python :: 3
@@ -1,13 +1,13 @@
1
- bmcgo/__init__.py,sha256=gPR11fdu-7LXVTAiD7rNONaYFEKBD8FQRCv_fHBZFg4,562
1
+ bmcgo/__init__.py,sha256=kPOx3PSU7WJGVIwqgX-wmHpPAd0GuOH0ws0CUMBz40E,562
2
2
  bmcgo/bmcgo.py,sha256=uD4TsfjrFB5aQPIS6WRUVc9ShXX-dSImY9ezkB13g1w,685
3
- bmcgo/bmcgo_config.py,sha256=-HZcTsnccE5wUsgGJ59kq8sDdu8feftIbpyoFvyvBhU,11264
3
+ bmcgo/bmcgo_config.py,sha256=-KYhC3jNqWkCWu6YkyxDZlyC3floXIHaibGpmyB6YWQ,11873
4
4
  bmcgo/errors.py,sha256=QW1ndrJcJ2Ws7riOznPKVvZsNlrYk73eZol7w8gJTPU,3076
5
5
  bmcgo/frame.py,sha256=xv-9d8KN98ivmZQe-k_QQn_miPjELSNwkkVtOt95J1Y,10680
6
6
  bmcgo/logger.py,sha256=rcMqJnyQ5Ag3k04KLEskrG8ZJ508OOU_JH4fMFiGOqQ,6644
7
7
  bmcgo/misc.py,sha256=w0vzsD7uzrsxTly5Y1viLgYTKHhLP4sxa499XwbqHnU,6986
8
8
  bmcgo/worker.py,sha256=OXz5Gam3pmZjgQeoGJrYy73ZrQszCOxk9X19nbeBI_A,15710
9
9
  bmcgo/cli/__init__.py,sha256=BDXz8BcSlCkfo5UYt6j2rm89-HiYA1ZzfpFhy99MH-0,538
10
- bmcgo/cli/cli.py,sha256=REX_9QUHPEyrYEQ3BU10py4nssIXkaK0XEpAcY6KejM,27398
10
+ bmcgo/cli/cli.py,sha256=O4FHWNLUyqNjs0BoD3aYzPyi3L3mCg7rsIL0mP7_x0U,27748
11
11
  bmcgo/cli/config.conan2.yaml,sha256=SAtM_6_qOjZbkgUT5fzWbhbq4aWCayqE8o4xJ2vBRww,261
12
12
  bmcgo/cli/config.yaml,sha256=tbnFhz2TTrl2-ALpHHujbXB1ymZpjGC4f0zTfqfUZfM,194
13
13
  bmcgo/codegen/__init__.py,sha256=eplRBfR_obzVWMQtIeX1RRq6DOEezBx_l1EqcZYLRPM,775
@@ -209,7 +209,7 @@ bmcgo/functional/maintain.py,sha256=lUn0BtMKMqYKm56aYhvuvnzj47p4BinwVCRuNZ2c1P0,
209
209
  bmcgo/functional/new.py,sha256=g7J4qLRTi4F9N6wlKHOVgJJwDmUFiWZbxO1PeGIWqTE,6171
210
210
  bmcgo/functional/schema_valid.py,sha256=WI7_NOJqU8wFC51bgiU9G7HJTYnxnMyzxH-L6jn339A,3924
211
211
  bmcgo/functional/simple_sign.py,sha256=AstEnGzcTIxAYs5U9G82JDXj7CnfhN9LyYcnkpGEH2Y,4086
212
- bmcgo/functional/upgrade.py,sha256=HgTtUYtntuRcsO9qb1ciBvZ2gwyHrd0snyH7gjPKA6o,3131
212
+ bmcgo/functional/upgrade.py,sha256=y5smvMoKlfdnNjMtfImS9VW_p8rGhZctkzUkT7tymQU,3180
213
213
  bmcgo/ipmigen/__init__.py,sha256=xrppKUuQkt1jTqnr6gHWiWeEyUMFJeiZxcA7Hx9XXUo,789
214
214
  bmcgo/ipmigen/ctype_defination.py,sha256=PmkKRWTvmVQsZ-njio16ayXpsyFhC6le9Tu0baWU-xw,3179
215
215
  bmcgo/ipmigen/ipmigen.py,sha256=SZWoylTM-Tp4KSOQyfHidMjhhIzp4WIa40oxcrFfKB8,14506
@@ -244,18 +244,18 @@ bmcgo/utils/buffer.py,sha256=t1SkWntWksboNFMPsltslwRdXZi3FAe8eV0JAAE7Vto,4004
244
244
  bmcgo/utils/build_conans.py,sha256=3afY0XOwFtfcKud2yp6nODIuPoMKjjsoAl5AV8GbJ6w,8997
245
245
  bmcgo/utils/combine_json_schemas.py,sha256=08JrAlLeo_JgUqzYcZNgSwJZPLfjbWVJ4esPPt9bPMY,7967
246
246
  bmcgo/utils/component_post.py,sha256=rTSMv36geI6rbm6ZFQenZfG0mn1nVPpdJqn7g8bYtKA,2330
247
- bmcgo/utils/component_version_check.py,sha256=nKfav7EnJ_JWfCvH_SiyhhIapGXUzhFs1QvLb58MPBs,6266
248
- bmcgo/utils/config.py,sha256=QFhPR_ndHLrEcdhFP4X8zRNChEl8cIw4rC2W1wQqaec,50989
247
+ bmcgo/utils/component_version_check.py,sha256=ukc-H-A4ljkOShzVtkYWL0oTIYwxgDIZtP-fPqqHnRY,6274
248
+ bmcgo/utils/config.py,sha256=rXk3_UbweJSdDcj8ISgXKJHcjg9erGSPjf9BJ1nODTo,51077
249
249
  bmcgo/utils/fetch_component_code.py,sha256=WtPJ5h1nM87X6RicrAhMOJzOzh9A0jD3CbjPc4A-REo,11280
250
- bmcgo/utils/install_manager.py,sha256=XMZUuIHm7_DWRdLV4dAevsyamQ6rt8lb_7OqGWzNBC8,4927
250
+ bmcgo/utils/install_manager.py,sha256=Ag7tcTbhBfc6aTe5FOiET-8koq8_iY38Sozmi3dquio,4919
251
251
  bmcgo/utils/json_validator.py,sha256=_k5wU78wfYGrzvSDaqOEtT4otgKUjquVhZNpVf2PW_c,7524
252
- bmcgo/utils/mapping_config_patch.py,sha256=_gKfZnrvsLPgHn1yXhEJRVTAeuGpeGD9T-Pqyw5Ydys,16827
252
+ bmcgo/utils/mapping_config_patch.py,sha256=rfCfeiEU3WAEMDuUxLDARNjne3pWtK0Bxga3dQrEWoM,16827
253
253
  bmcgo/utils/merge_csr.py,sha256=JNxHCfW1au84WQshdz0aQy8wMTEOHonjQT3s6LjlZN4,4580
254
254
  bmcgo/utils/perf_analysis.py,sha256=fh6lV9AAKVhpPkGPwAJ8EWfGfUoHjqGYQxrvc32Xiac,4767
255
- bmcgo/utils/tools.py,sha256=xJFmhIQdC2IjqMbVgjcjWOYJk3TwWG0EjN0-FQ4LJ4s,33012
255
+ bmcgo/utils/tools.py,sha256=MmFWnfL1ahRReBb7QaHjLNH3731IXDiBBRiOk9CPsQE,33152
256
256
  bmcgo/utils/installations/README.md,sha256=hKXnFYmeHEuROFMFE-vzlGLSHg71bei5ZYwyYZphWNk,2
257
257
  bmcgo/utils/installations/__init__.py,sha256=BDXz8BcSlCkfo5UYt6j2rm89-HiYA1ZzfpFhy99MH-0,538
258
- bmcgo/utils/installations/base_installer.py,sha256=3UZiKWoa41ygRbLD3QsE2FTp-VFp79V0I53QLRIf4E8,5902
258
+ bmcgo/utils/installations/base_installer.py,sha256=0l19uzKD0IXsSp0XgBHFQnP-nuaXX06-43wNmBKxjlk,5339
259
259
  bmcgo/utils/installations/install_consts.py,sha256=QrRYfjw-rkwRllXDvC-pqoAH3Ii_tXsj590gzYxnAFA,1104
260
260
  bmcgo/utils/installations/install_workflow.py,sha256=wT6lTE_s-NZP8LSZR1xlu4dXTtPTEai1dsq3D5-kLzE,3162
261
261
  bmcgo/utils/installations/version_util.py,sha256=dOwvLZ7iOmnzSeyD6_pRm7NS7I13Um5mSD_y0dVyO6M,3212
@@ -264,8 +264,8 @@ bmcgo/utils/installations/install_plans/qemu.yml,sha256=lT7aKag60QUH6hTGFKa3hGRq
264
264
  bmcgo/utils/installations/install_plans/studio.yml,sha256=APR3GM-3Q11LFfe8vh7t3LztDn4LLEpNHRUNjkaVekA,143
265
265
  bmcgo/utils/installations/installers/apt_installer.py,sha256=nPaCb4cobSi9InN_aHsEPtQ0k4FgsCUWE5_VgBPvcRE,3769
266
266
  bmcgo/utils/installations/installers/pip_installer.py,sha256=dDdios1EQ7fzt90r02pZeoM3jCmjslLzkSvzd2hgRVM,3241
267
- openubmc_bingo-0.6.51.dist-info/METADATA,sha256=LhSm0RCzavLoRo86bOwXimNKy7gEFCurUCor5ak9dnw,1010
268
- openubmc_bingo-0.6.51.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
269
- openubmc_bingo-0.6.51.dist-info/entry_points.txt,sha256=UUoUP-vAWTgg9vEYbRwYqOBHgpRtkngdzMPb-ocz90g,42
270
- openubmc_bingo-0.6.51.dist-info/top_level.txt,sha256=9AcvCAt1nZcOgMsGt6T07mg2Bgtdet-3mHTwg91axgI,6
271
- openubmc_bingo-0.6.51.dist-info/RECORD,,
267
+ openubmc_bingo-0.6.55.dist-info/METADATA,sha256=rwg9UScKpnA_TWlGjXbb4abjn2Tdx2Bi5JySyoSNukk,1010
268
+ openubmc_bingo-0.6.55.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
269
+ openubmc_bingo-0.6.55.dist-info/entry_points.txt,sha256=UUoUP-vAWTgg9vEYbRwYqOBHgpRtkngdzMPb-ocz90g,42
270
+ openubmc_bingo-0.6.55.dist-info/top_level.txt,sha256=9AcvCAt1nZcOgMsGt6T07mg2Bgtdet-3mHTwg91axgI,6
271
+ openubmc_bingo-0.6.55.dist-info/RECORD,,