AutoFramework/venv/Lib/site-packages/pip/_internal/distributions/base.py

40 lines
1.2 KiB
Python
Raw Normal View History

2022-07-17 01:48:29 +08:00
import abc
from pip._internal.index.package_finder import PackageFinder
2022-07-21 08:44:10 +08:00
from pip._internal.metadata.base import BaseDistribution
2022-07-17 01:48:29 +08:00
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.
"""
2022-07-21 08:44:10 +08:00
def __init__(self, req: InstallRequirement) -> None:
2022-07-17 01:48:29 +08:00
super().__init__()
self.req = req
@abc.abstractmethod
2022-07-21 08:44:10 +08:00
def get_metadata_distribution(self) -> BaseDistribution:
2022-07-17 01:48:29 +08:00
raise NotImplementedError()
@abc.abstractmethod
2022-07-21 08:44:10 +08:00
def prepare_distribution_metadata(
self,
finder: PackageFinder,
build_isolation: bool,
check_build_deps: bool,
) -> None:
2022-07-17 01:48:29 +08:00
raise NotImplementedError()