code: def get_dependencies(ireq, sources=None, parent=None):
      # type: (Union[InstallRequirement, InstallationCandidate], Optional[List[Dict[S, Union[S, bool]]]], Optional[AbstractDependency]) -> Set[S, ...]
      
      if not isinstance(ireq, pip_shims.shims.InstallRequirement):
          name = getattr(
              ireq, "project_name",
              getattr(ireq, "project", ireq.name),
          )
          version = getattr(ireq, "version", None)
          if not version:
              ireq = pip_shims.shims.InstallRequirement.from_line("{0}".format(name))
          else:
              ireq = pip_shims.shims.InstallRequirement.from_line("{0}=={1}".format(name, version))
      pip_options = get_pip_options(sources=sources)
      getters = [
          get_dependencies_from_cache,
          get_dependencies_from_wheel_cache,
          get_dependencies_from_json,
          functools.partial(get_dependencies_from_index, pip_options=pip_options)
      ]
      for getter in getters:
          deps = getter(ireq)
          if deps is not None:
              return deps
      raise RuntimeError('failed to get dependencies for {}'.format(ireq))
docs: Get all dependencies for a given install requirement.
  
      :param ireq: A single InstallRequirement
      :type ireq: :class:`~pip._internal.req.req_install.InstallRequirement`
      :param sources: Pipfile-formatted sources, defaults to None
      :type sources: list[dict], optional
      :param parent: The parent of this list of dependencies, defaults to None
      :type parent: :class:`~pip._internal.req.req_install.InstallRequirement`
      :return: A set of dependency lines for generating new InstallRequirements.
      :rtype: set(str)