def _gen_requirements_file(self, requirements_list) -> str:
modules = {}
for req in requirements_list:
name, req_spec = self._parse_line(req)
if name is None:
name = req
url = None
version = None
try:
# this will fail is an url is supplied
parsed_req = list(pkg_resources.parse_requirements(req_spec))
if len(parsed_req) > 0:
item = parsed_req[0]
if hasattr(item, "name"):
name = item.name
elif hasattr(item, "unsafe_name"):
name = item.unsafe_name
version = item.specs
if hasattr(item, "url"):
url = item.url
except pkg_resources.RequirementParseError:
url = req_spec
if name not in modules:
modules[name] = {"name": name, "version": []}
if version is not None:
modules[name]["version"].extend(version)
if url is not None:
modules[name]["url"] = url
requirements_file = ""
for module, info in modules.items():
version_spec = ""
if len(info["version"]) > 0:
version_spec = " " + (", ".join(["%s %s" % (a, b) for a, b in info["version"]]))
if "url" in info:
module = info["url"]
requirements_file += module + version_spec + "\n"
return requirements_file
评论列表
文章目录