docs: def get_package_dependencies(package,
                               recursive=False,
                               verbose=False,
                               include_build_requirements=False):
      """ Obtain the dependencies from a package. Please note this
          function is possibly SLOW, especially if you enable
          the recursive mode.
      """
      packages_processed = set()
      package_queue = [package]
      reqs = set()
      reqs_as_names = set()
      while len(package_queue) > 0:
          current_queue = package_queue
          package_queue = []
          for package_dep in current_queue:
              new_reqs = set()
              if verbose:
                  print("get_package_dependencies: resolving dependecy "
                        "to package name: ".format(package_dep))
              package = get_package_name(package_dep)
              if package.lower() in packages_processed:
                  continue
              if verbose:
                  print("get_package_dependencies: "
                        "processing package: {}".format(package))
                  print("get_package_dependencies: "
                        "Packages seen so far: {}".format(
                            packages_processed
                        ))
              packages_processed.add(package.lower())
  
              # Use our regular folder processing to examine:
              new_reqs = new_reqs.union(_extract_info_from_package(
                  package_dep, extract_type="dependencies",
                  debug=verbose,
                  include_build_requirements=include_build_requirements,
              ))
  
              # Process new requirements:
              if verbose:
                  print('get_package_dependencies: collected '
                        "deps of '{}': {}".format(
                            package_dep, str(new_reqs),
                        ))
              for new_req in new_reqs:
                  try:
                      req_name = get_package_name(new_req)
                  except ValueError as e:
                      if new_req.find(";") >= 0:
                          # Conditional dep where condition isn't met?
                          # --> ignore it
                          continue
                      if verbose:
                          print("get_package_dependencies: " +
                                "unexpected failure to get name " +
                                "of '" + str(new_req) + "': " +
                                str(e))
                      raise RuntimeError(
                          "failed to get " +
                          "name of dependency: " + str(e)
                      )
                  if req_name.lower() in reqs_as_names:
                      continue
                  if req_name.lower() not in packages_processed:
                      package_queue.append(new_req)
                  reqs.add(new_req)
                  reqs_as_names.add(req_name.lower())
  
              # Bail out here if we're not scanning recursively:
              if not recursive:
                  package_queue[:] = []  # wipe queue
                  break
      if verbose:
          print("get_package_dependencies: returning result: {}".format(reqs))
      return reqs