| from pip._internal.distributions.base import AbstractDistribution | |
| from pip._internal.distributions.sdist import SourceDistribution | |
| from pip._internal.distributions.wheel import WheelDistribution | |
| from pip._internal.req.req_install import InstallRequirement | |
| def make_distribution_for_install_requirement( | |
| install_req: InstallRequirement, | |
| ) -> AbstractDistribution: | |
| """Returns a Distribution for the given InstallRequirement""" | |
| # Editable requirements will always be source distributions. They use the | |
| # legacy logic until we create a modern standard for them. | |
| if install_req.editable: | |
| return SourceDistribution(install_req) | |
| # If it's a wheel, it's a WheelDistribution | |
| if install_req.is_wheel: | |
| return WheelDistribution(install_req) | |
| # Otherwise, a SourceDistribution | |
| return SourceDistribution(install_req) | |