docs: def resolve(
      requirements: typing.List[str],
      index_urls: list = None,
      python_version: int = 3,
      exclude_packages: set = None,
      transitive: bool = True,
      subgraph_check_api: str = None,
  ) -> dict:
      """Resolve given requirements for the given Python version."""
      assert python_version in (2, 3), "Unknown Python version"
  
      if subgraph_check_api and not transitive:
          _LOGGER.error("The check against subgraph API cannot be done if no transitive dependencies are resolved")
          sys.exit(2)
  
      python_bin = "python3" if python_version == 3 else "python2"
      run_command("virtualenv -p python3 venv")
      python_bin = "venv/bin/" + python_bin
  
      run_command("{} -m pip install pipdeptree".format(python_bin))
      environment_details = _get_environment_details(python_bin)
  
      result = {"tree": [], "errors": [], "unparsed": [], "unresolved": [], "environment": environment_details}
  
      all_solvers = []
      for index_url in index_urls:
          source = Source(index_url)
          all_solvers.append(PythonSolver(fetcher_kwargs={"source": source}))
  
      for solver in all_solvers:
          solver_result = _do_resolve_index(
              python_bin=python_bin,
              solver=solver,
              all_solvers=all_solvers,
              requirements=requirements,
              exclude_packages=exclude_packages,
              transitive=transitive,
              subgraph_check_api=subgraph_check_api,
          )
  
          result["tree"].extend(solver_result["tree"])
          result["errors"].extend(solver_result["errors"])
          result["unparsed"].extend(solver_result["unparsed"])
          result["unresolved"].extend(solver_result["unresolved"])
  
      return result