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): ...@@ -46,7 +46,7 @@ class CachedRepository(Repository, ABC):
def _get_release_info( def _get_release_info(
self, name: NormalizedName, version: Version self, name: NormalizedName, version: Version
) -> dict[str, Any]: ) -> dict[str, Any]:
raise NotImplementedError() ...
def get_release_info(self, name: NormalizedName, version: Version) -> PackageInfo: def get_release_info(self, name: NormalizedName, version: Version) -> PackageInfo:
""" """
......
...@@ -5,7 +5,6 @@ import os ...@@ -5,7 +5,6 @@ import os
import urllib import urllib
import urllib.parse import urllib.parse
from abc import ABC
from collections import defaultdict from collections import defaultdict
from pathlib import Path from pathlib import Path
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
...@@ -35,7 +34,7 @@ if TYPE_CHECKING: ...@@ -35,7 +34,7 @@ if TYPE_CHECKING:
from poetry.utils.authenticator import RepositoryCertificateConfig from poetry.utils.authenticator import RepositoryCertificateConfig
class HTTPRepository(CachedRepository, ABC): class HTTPRepository(CachedRepository):
def __init__( def __init__(
self, self,
name: str, name: str,
......
...@@ -6,6 +6,7 @@ from collections import OrderedDict ...@@ -6,6 +6,7 @@ from collections import OrderedDict
from enum import IntEnum from enum import IntEnum
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
from poetry.repositories.abstract_repository import AbstractRepository
from poetry.repositories.exceptions import PackageNotFound from poetry.repositories.exceptions import PackageNotFound
...@@ -25,13 +26,13 @@ class Priority(IntEnum): ...@@ -25,13 +26,13 @@ class Priority(IntEnum):
SECONDARY = enum.auto() SECONDARY = enum.auto()
class Pool: class Pool(AbstractRepository):
def __init__( def __init__(
self, self,
repositories: list[Repository] | None = None, repositories: list[Repository] | None = None,
ignore_repository_names: bool = False, ignore_repository_names: bool = False,
) -> None: ) -> None:
self._name = "poetry-pool" super().__init__("poetry-pool")
self._repositories: OrderedDict[ self._repositories: OrderedDict[
str, tuple[Repository, RepositoryPriority] str, tuple[Repository, RepositoryPriority]
] = OrderedDict() ] = OrderedDict()
...@@ -43,10 +44,6 @@ class Pool: ...@@ -43,10 +44,6 @@ class Pool:
self.add_repository(repository) self.add_repository(repository)
@property @property
def name(self) -> str:
return self._name
@property
def repositories(self) -> list[Repository]: def repositories(self) -> list[Repository]:
unsorted_repositories = self._repositories.values() unsorted_repositories = self._repositories.values()
sorted_repositories = sorted(unsorted_repositories, key=lambda p: p[1].value) sorted_repositories = sorted(unsorted_repositories, key=lambda p: p[1].value)
......
...@@ -8,6 +8,7 @@ from packaging.utils import canonicalize_name ...@@ -8,6 +8,7 @@ from packaging.utils import canonicalize_name
from poetry.core.constraints.version import Version from poetry.core.constraints.version import Version
from poetry.core.constraints.version import VersionRange from poetry.core.constraints.version import VersionRange
from poetry.repositories.abstract_repository import AbstractRepository
from poetry.repositories.exceptions import PackageNotFound from poetry.repositories.exceptions import PackageNotFound
...@@ -19,19 +20,15 @@ if TYPE_CHECKING: ...@@ -19,19 +20,15 @@ if TYPE_CHECKING:
from poetry.core.packages.utils.link import Link from poetry.core.packages.utils.link import Link
class Repository: class Repository(AbstractRepository):
def __init__(self, name: str, packages: list[Package] | None = None) -> None: def __init__(self, name: str, packages: list[Package] | None = None) -> None:
self._name = name super().__init__(name)
self._packages: list[Package] = [] self._packages: list[Package] = []
for package in packages or []: for package in packages or []:
self.add_package(package) self.add_package(package)
@property @property
def name(self) -> str:
return self._name
@property
def packages(self) -> list[Package]: def packages(self) -> list[Package]:
return self._packages 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