code: def compute_results(self, voting_method, votes=None, winners=1, **kwargs):
          
          if votes is None:
              votes = self.votes
  
          if len(votes) == 0:
              self._log(logging.DEBUG, "Could not compute results as there are "
                        "no votes!")
              return []
  
          self._log(logging.DEBUG, "Computing results from {} votes."
                    .format(len(votes)))
          return voting_method(self.candidates, votes, winners, **kwargs)
docs: Compute voting results to decide the winner(s) from the
          :attr:`votes`.
  
          The votes should have been made for the current
          :attr:`~creamas.vote.VoteOrganizer.candidates`.
  
          :param voting_method:
              A function which computes the results from the votes. Should
              accept at least three parameters: candidates, votes and number of
              vote winners. The function should return at least a list of vote
              winners. See, e.g. :func:`~creamas.vote.vote_mean` or
              :func:`~creamas.vote.vote_best`. Additional ``**kwargs`` are passed
              down to the voting method.
  
          :param list votes:
              A list of votes by which the voting is performed. Each vote should
              have the same set of artifacts in them. If ``None`` the results
              are computed for the current list of
              :attr:`~creamas.vote.VoteOrganizer.votes`.
  
          :param int winners:
              The number of vote winners
  
          :returns:
              list of :py:class:`~creamas.core.artifact.Artifact` objects,
              the winning artifacts. Some voting methods may also return a score
              associated with each winning artifact.
  
          :rtype: list