Commit df90acb6 by Bart Kamphorst Committed by Bjorn Neergaard

refactor: introduce AbstractRepository

parent 46ae4f54
from __future__ import annotations
from abc import ABC
from abc import abstractmethod
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from poetry.core.packages.dependency import Dependency
from poetry.core.packages.package import Package
from poetry.core.semver.version import Version
class AbstractRepository(ABC):
def __init__(self, name: str) -> None:
self._name = name
@property
def name(self) -> str:
return self._name
@abstractmethod
def find_packages(self, dependency: Dependency) -> list[Package]:
...
@abstractmethod
def search(self, query: str) -> list[Package]:
...
@abstractmethod
def package(
self,
name: str,
version: Version,
extras: list[str] | None = None,
) -> Package:
...
......@@ -46,7 +46,7 @@ class CachedRepository(Repository, ABC):
def _get_release_info(
self, name: NormalizedName, version: Version
) -> dict[str, Any]:
raise NotImplementedError()
...
def get_release_info(self, name: NormalizedName, version: Version) -> PackageInfo:
"""
......
......@@ -5,7 +5,6 @@ import os
import urllib
import urllib.parse
from abc import ABC
from collections import defaultdict
from pathlib import Path
from typing import TYPE_CHECKING
......@@ -35,7 +34,7 @@ if TYPE_CHECKING:
from poetry.utils.authenticator import RepositoryCertificateConfig
class HTTPRepository(CachedRepository, ABC):
class HTTPRepository(CachedRepository):
def __init__(
self,
name: str,
......
......@@ -6,6 +6,7 @@ from collections import OrderedDict
from enum import IntEnum
from typing import TYPE_CHECKING
from poetry.repositories.abstract_repository import AbstractRepository
from poetry.repositories.exceptions import PackageNotFound
......@@ -25,13 +26,13 @@ class Priority(IntEnum):
SECONDARY = enum.auto()
class Pool:
class Pool(AbstractRepository):
def __init__(
self,
repositories: list[Repository] | None = None,
ignore_repository_names: bool = False,
) -> None:
self._name = "poetry-pool"
super().__init__("poetry-pool")
self._repositories: OrderedDict[
str, tuple[Repository, RepositoryPriority]
] = OrderedDict()
......@@ -43,10 +44,6 @@ class Pool:
self.add_repository(repository)
@property
def name(self) -> str:
return self._name
@property
def repositories(self) -> list[Repository]:
unsorted_repositories = self._repositories.values()
sorted_repositories = sorted(unsorted_repositories, key=lambda p: p[1].value)
......
......@@ -8,6 +8,7 @@ from packaging.utils import canonicalize_name
from poetry.core.constraints.version import Version
from poetry.core.constraints.version import VersionRange
from poetry.repositories.abstract_repository import AbstractRepository
from poetry.repositories.exceptions import PackageNotFound
......@@ -19,19 +20,15 @@ if TYPE_CHECKING:
from poetry.core.packages.utils.link import Link
class Repository:
class Repository(AbstractRepository):
def __init__(self, name: str, packages: list[Package] | None = None) -> None:
self._name = name
super().__init__(name)
self._packages: list[Package] = []
for package in packages or []:
self.add_package(package)
@property
def name(self) -> str:
return self._name
@property
def packages(self) -> list[Package]:
return self._packages
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment