diff --git a/examples/pypi_wheel_provider.py b/examples/pypi_wheel_provider.py index 04179ba..888aa69 100644 --- a/examples/pypi_wheel_provider.py +++ b/examples/pypi_wheel_provider.py @@ -14,8 +14,7 @@ from packaging.utils import canonicalize_name from packaging.version import InvalidVersion, Version -from resolvelib import BaseReporter -from resolvelib.resolvers.resolution import Resolver +from resolvelib import BaseReporter, Resolver from .extras_provider import ExtrasProvider diff --git a/examples/reporter_demo.py b/examples/reporter_demo.py index 2fbf6e1..f480d55 100644 --- a/examples/reporter_demo.py +++ b/examples/reporter_demo.py @@ -4,7 +4,6 @@ from packaging.version import Version import resolvelib -import resolvelib.resolvers.resolution index = """ first 1.0.0 @@ -125,7 +124,7 @@ def pinning(self, candidate): provider = Provider(index.splitlines()) reporter = Reporter() - resolver = resolvelib.resolvers.resolution.Resolver(provider, reporter) + resolver = resolvelib.Resolver(provider, reporter) root_reqs = [Requirement("first", SpecifierSet())] result = resolver.resolve(root_reqs) diff --git a/examples/visualization/run_pypi.py b/examples/visualization/run_pypi.py index e0faabb..d6a397d 100644 --- a/examples/visualization/run_pypi.py +++ b/examples/visualization/run_pypi.py @@ -2,7 +2,7 @@ from visualization.generate import generate_html from visualization.reporter import GraphGeneratingReporter -from resolvelib.resolvers.resolution import Resolver +from resolvelib import Resolver if __name__ == "__main__": provider = PyPIProvider() diff --git a/src/resolvelib/__init__.py b/src/resolvelib/__init__.py index e7f36c7..fd9f249 100644 --- a/src/resolvelib/__init__.py +++ b/src/resolvelib/__init__.py @@ -23,5 +23,5 @@ ResolutionError, ResolutionImpossible, ResolutionTooDeep, + Resolver, ) -from .resolvers.resolution import Resolver diff --git a/src/resolvelib/resolvers/criterion.py b/src/resolvelib/resolvers/criterion.py index 33d4257..ee5019c 100644 --- a/src/resolvelib/resolvers/criterion.py +++ b/src/resolvelib/resolvers/criterion.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from typing import Collection, Generic, Iterable, Iterator from ..structs import CT, RT, RequirementInformation diff --git a/src/resolvelib/resolvers/resolution.py b/src/resolvelib/resolvers/resolution.py index c9bfb75..ca4791f 100644 --- a/src/resolvelib/resolvers/resolution.py +++ b/src/resolvelib/resolvers/resolution.py @@ -3,18 +3,10 @@ import collections import itertools import operator -from typing import Collection, Generic, Iterable, Mapping +from typing import TYPE_CHECKING, Collection, Generic, Iterable, Mapping -from ..providers import AbstractProvider, Preference +from ..providers import AbstractProvider from ..reporters import BaseReporter -from ..resolvers.abstract import AbstractResolver, Result -from ..resolvers.exceptions import ( - InconsistentCandidate, - RequirementsConflicted, - ResolutionImpossible, - ResolutionTooDeep, - ResolverException, -) from ..structs import ( CT, KT, @@ -26,7 +18,18 @@ State, build_iter_view, ) +from .abstract import AbstractResolver, Result from .criterion import Criterion +from .exceptions import ( + InconsistentCandidate, + RequirementsConflicted, + ResolutionImpossible, + ResolutionTooDeep, + ResolverException, +) + +if TYPE_CHECKING: + from ..providers import Preference def _build_result(state: State[RT, CT, KT]) -> Result[RT, CT, KT]: diff --git a/tests/functional/cocoapods/test_resolvers_cocoapods.py b/tests/functional/cocoapods/test_resolvers_cocoapods.py index cfce99b..c1312cb 100644 --- a/tests/functional/cocoapods/test_resolvers_cocoapods.py +++ b/tests/functional/cocoapods/test_resolvers_cocoapods.py @@ -7,8 +7,7 @@ import pytest -from resolvelib import AbstractProvider, ResolutionImpossible -from resolvelib.resolvers.resolution import Resolver +from resolvelib import AbstractProvider, ResolutionImpossible, Resolver Requirement = collections.namedtuple("Requirement", "name spec") Candidate = collections.namedtuple("Candidate", "name ver deps") diff --git a/tests/functional/python/test_resolvers_python.py b/tests/functional/python/test_resolvers_python.py index 2c6496e..18c1550 100644 --- a/tests/functional/python/test_resolvers_python.py +++ b/tests/functional/python/test_resolvers_python.py @@ -11,8 +11,7 @@ import packaging.version import pytest -from resolvelib import AbstractProvider, ResolutionImpossible -from resolvelib.resolvers.resolution import Resolver +from resolvelib import AbstractProvider, ResolutionImpossible, Resolver Candidate = collections.namedtuple("Candidate", "name version extras") diff --git a/tests/functional/swift-package-manager/test_resolvers_swift.py b/tests/functional/swift-package-manager/test_resolvers_swift.py index 66d45a1..6841123 100644 --- a/tests/functional/swift-package-manager/test_resolvers_swift.py +++ b/tests/functional/swift-package-manager/test_resolvers_swift.py @@ -5,8 +5,7 @@ import pytest -from resolvelib.providers import AbstractProvider -from resolvelib.resolvers.resolution import Resolver +from resolvelib import AbstractProvider, Resolver Requirement = collections.namedtuple("Requirement", "container constraint") Candidate = collections.namedtuple("Candidate", "container version") diff --git a/tests/test_resolvers.py b/tests/test_resolvers.py index af13475..af29eb5 100644 --- a/tests/test_resolvers.py +++ b/tests/test_resolvers.py @@ -13,16 +13,13 @@ InconsistentCandidate, ResolutionImpossible, ) -from resolvelib.resolvers.criterion import Criterion -from resolvelib.resolvers.resolution import Resolution, Resolver +from resolvelib.resolvers import Resolution, Resolver if TYPE_CHECKING: from typing import Iterable, Mapping - from resolvelib.resolvers.exceptions import ( - RequirementInformation, - RequirementsConflicted, - ) + from resolvelib.resolvers import RequirementInformation, RequirementsConflicted + from resolvelib.resolvers.criterion import Criterion def test_candidate_inconsistent_error():