text: # coding: utf-8
  from __future__ import (absolute_import, division, print_function,
                          unicode_literals)
  
  from abc import ABCMeta, abstractmethod
  from contextlib import contextmanager
  
  from six import add_metaclass
  
  
  @add_metaclass(ABCMeta)
  class BaseRepository(object):
  
      def clear_caches(self):
          """Should clear any caches used by the implementation."""
  
      def freshen_build_caches(self):
          """Should start with fresh build/source caches."""
  
      @abstractmethod
      def find_best_match(self, ireq):
          """
          Return a Version object that indicates the best match for the given
          InstallRequirement according to the repository.
          """
  
      @abstractmethod
      def get_dependencies(self, ireq):
          """
          Given a pinned or an editable InstallRequirement, returns a set of
          dependencies (also InstallRequirements, but not necessarily pinned).
          They indicate the secondary dependencies for the given requirement.
          """
  
      @abstractmethod
      def get_hashes(self, ireq):
          """
          Given a pinned InstallRequire, returns a set of hashes that represent
          all of the files for a given requirement. It is not acceptable for an
          editable or unpinned requirement to be passed to this function.
          """
  
      @abstractmethod
      @contextmanager
      def allow_all_wheels(self):
          """
          Monkey patches pip.Wheel to allow wheels from all platforms and Python versions.
          """
  