code: def construct_tree(index):
      
      return dict((p, [ReqPackage(r, index.get(r.key))
                       for r in p.requires()])
                  for p in index.values())
docs: Construct tree representation of the pkgs from the index.
  
      The keys of the dict representing the tree will be objects of type
      DistPackage and the values will be list of ReqPackage objects.
  
      :param dict index: dist index ie. index of pkgs by their keys
      :returns: tree of pkgs and their dependencies
      :rtype: dict