123456789101112131415161718192021222324252627282930313233343536 |
- import abc
- from pip._internal.index.package_finder import PackageFinder
- from pip._internal.metadata.base import BaseDistribution
- from pip._internal.req import InstallRequirement
- class AbstractDistribution(metaclass=abc.ABCMeta):
- """A base class for handling installable artifacts.
- The requirements for anything installable are as follows:
- - we must be able to determine the requirement name
- (or we can't correctly handle the non-upgrade case).
- - for packages with setup requirements, we must also be able
- to determine their requirements without installing additional
- packages (for the same reason as run-time dependencies)
- - we must be able to create a Distribution object exposing the
- above metadata.
- """
- def __init__(self, req: InstallRequirement) -> None:
- super().__init__()
- self.req = req
- @abc.abstractmethod
- def get_metadata_distribution(self) -> BaseDistribution:
- raise NotImplementedError()
- @abc.abstractmethod
- def prepare_distribution_metadata(
- self, finder: PackageFinder, build_isolation: bool
- ) -> None:
- raise NotImplementedError()
|