def get_dependencies(builder: "HasReqsHints") -> ToolRequirements: (software_requirement, _) = builder.get_requirement("SoftwareRequirement") dependencies = [] # type: List[ToolRequirement] if software_requirement and software_requirement.get("packages"): packages = cast( MutableSequence[MutableMapping[str, Union[str, MutableSequence[str]]]], software_requirement.get("packages"), ) for package in packages: version = package.get("version", None) if isinstance(version, MutableSequence): if version: version = version[0] else: version = None specs = [{"uri": s} for s in package.get("specs", [])] dependencies.append( ToolRequirement.from_dict( dict( name=cast(str, package["package"]).split("#")[-1], version=version, type="package", specs=specs, ))) return ToolRequirements.from_list(dependencies)
def from_dict(as_dict): if as_dict is None: return None requirements_dicts = as_dict.get('requirements', []) requirements = ToolRequirements.from_list(requirements_dicts) installed_tool_dependencies_dicts = as_dict.get( 'installed_tool_dependencies', []) installed_tool_dependencies = map( DependenciesDescription._toolshed_install_dependency_from_dict, installed_tool_dependencies_dicts) return DependenciesDescription( requirements=requirements, installed_tool_dependencies=installed_tool_dependencies)