Commit 6ff23efb by Branch Vincent Committed by Bjorn Neergaard

chore(puzzle): remove type errors

parent fd3f3387
......@@ -108,7 +108,6 @@ files = "src"
[[tool.mypy.overrides]]
module = [
'poetry.poetry',
'poetry.config.file_config_source',
'poetry.console.*',
'poetry.factory.*',
......@@ -117,7 +116,6 @@ module = [
'poetry.layouts.*',
'poetry.mixology.*',
'poetry.packages.locker',
'poetry.puzzle.*',
'poetry.repositories.installed_repository',
'poetry.utils.*'
]
......
from typing import TYPE_CHECKING
from typing import Optional
from typing import TypeVar
if TYPE_CHECKING:
from poetry.core.packages.package import Package
T = TypeVar("T", bound="Operation")
class Operation:
def __init__(self, reason: Optional[str] = None, priority: int = 0) -> None:
......@@ -41,13 +44,13 @@ class Operation:
def format_version(self, package: "Package") -> str:
return package.full_pretty_version
def skip(self, reason: str) -> "Operation":
def skip(self: T, reason: str) -> T:
self._skipped = True
self._skip_reason = reason
return self
def unskip(self) -> "Operation":
def unskip(self: T) -> T:
self._skipped = False
self._skip_reason = None
......
......@@ -18,5 +18,5 @@ class OverrideNeeded(Exception):
self._overrides = overrides
@property
def overrides(self) -> Tuple[Dict]:
def overrides(self) -> Tuple[Dict, ...]:
return self._overrides
import logging
import os
import re
import tempfile
import time
import urllib.parse
......@@ -12,6 +13,7 @@ from typing import Dict
from typing import Iterator
from typing import List
from typing import Optional
from typing import Set
from typing import Union
from cleo.ui.progress_indicator import ProgressIndicator
......@@ -39,7 +41,6 @@ from poetry.repositories import Pool
from poetry.utils.env import Env
from poetry.utils.helpers import download_file
from poetry.utils.helpers import safe_rmtree
from poetry.utils.helpers import temporary_directory
logger = logging.getLogger(__name__)
......@@ -54,7 +55,7 @@ class Indicator(ProgressIndicator):
class Provider:
UNSAFE_PACKAGES = set()
UNSAFE_PACKAGES: Set[str] = set()
def __init__(
self, package: Package, pool: Pool, io: Any, env: Optional[Env] = None
......@@ -64,11 +65,11 @@ class Provider:
self._io = io
self._env = env
self._python_constraint = package.python_constraint
self._search_for = {}
self._search_for: Dict[Dependency, List[Package]] = {}
self._is_debugging = self._io.is_debug() or self._io.is_very_verbose()
self._in_progress = False
self._overrides = {}
self._deferred_cache = {}
self._overrides: Dict = {}
self._deferred_cache: Dict[Dependency, Package] = {}
self._load_deferred = True
@property
......@@ -351,12 +352,11 @@ class Provider:
@classmethod
def get_package_from_url(cls, url: str) -> Package:
with temporary_directory() as temp_dir:
temp_dir = Path(temp_dir)
file_name = os.path.basename(urllib.parse.urlparse(url).path)
download_file(url, str(temp_dir / file_name))
package = cls.get_package_from_file(temp_dir / file_name)
with tempfile.TemporaryDirectory() as temp_dir:
dest = Path(temp_dir) / file_name
download_file(url, str(dest))
package = cls.get_package_from_file(dest)
package._source_type = "url"
package._source_url = url
......@@ -543,7 +543,7 @@ class Provider:
# An example of this is:
# - pypiwin32 (220); sys_platform == "win32" and python_version >= "3.6"
# - pypiwin32 (219); sys_platform == "win32" and python_version < "3.6"
duplicates = {}
duplicates: Dict[str, List[Dependency]] = {}
for dep in dependencies:
if dep.complete_name not in duplicates:
duplicates[dep.complete_name] = []
......@@ -559,7 +559,7 @@ class Provider:
self.debug(f"<debug>Duplicate dependencies for {dep_name}</debug>")
# Regrouping by constraint
by_constraint = {}
by_constraint: Dict[str, List[Dependency]] = {}
for dep in deps:
if dep.constraint not in by_constraint:
by_constraint[dep.constraint] = []
......@@ -723,6 +723,8 @@ class Provider:
if message.startswith("fact:"):
if "depends on" in message:
m = re.match(r"fact: (.+?) depends on (.+?) \((.+?)\)", message)
if m is None:
raise ValueError(f"Unable to parse fact: {message}")
m2 = re.match(r"(.+?) \((.+?)\)", m.group(1))
if m2:
name = m2.group(1)
......
......@@ -57,7 +57,7 @@ class Solver:
provider = Provider(self._package, self._pool, self._io)
self._provider = provider
self._overrides = []
self._overrides: List[Dict] = []
@property
def provider(self) -> Provider:
......@@ -94,7 +94,7 @@ class Solver:
)
def solve_in_compatibility_mode(
self, overrides: Tuple[Dict], use_latest: List[str] = None
self, overrides: Tuple[Dict, ...], use_latest: List[str] = None
) -> Tuple[List["Package"], List[int]]:
locked = {}
for package in self._locked.packages:
......@@ -178,10 +178,11 @@ class Solver:
return final_packages, depths
DFSNodeID = Tuple[str, FrozenSet[str], bool]
class DFSNode:
def __init__(
self, id: Tuple[str, FrozenSet[str], bool], name: str, base_name: str
) -> None:
def __init__(self, id: DFSNodeID, name: str, base_name: str) -> None:
self.id = id
self.name = name
self.base_name = base_name
......@@ -205,9 +206,9 @@ class VisitedState(enum.Enum):
def depth_first_search(
source: "PackageNode", aggregator: Callable
) -> List[Tuple[Package, int]]:
back_edges = defaultdict(list)
visited = {}
topo_sorted_nodes = []
back_edges: Dict[DFSNodeID, List["PackageNode"]] = defaultdict(list)
visited: Dict[DFSNodeID, VisitedState] = {}
topo_sorted_nodes: List["PackageNode"] = []
dfs_visit(source, back_edges, visited, topo_sorted_nodes)
......@@ -233,8 +234,8 @@ def depth_first_search(
def dfs_visit(
node: "PackageNode",
back_edges: Dict[str, List["PackageNode"]],
visited: Dict[str, VisitedState],
back_edges: Dict[DFSNodeID, List["PackageNode"]],
visited: Dict[DFSNodeID, VisitedState],
sorted_nodes: List["PackageNode"],
) -> bool:
if visited.get(node.id, VisitedState.Unvisited) == VisitedState.Visited:
......@@ -292,12 +293,14 @@ class PackageNode(DFSNode):
if not previous:
self.category = "dev"
self.groups = frozenset()
self.groups: FrozenSet[str] = frozenset()
self.optional = True
else:
elif dep:
self.category = "main" if "default" in dep.groups else "dev"
self.groups = dep.groups
self.optional = dep.is_optional()
else:
raise ValueError("Both previous and dep must be passed")
super().__init__(
(package.complete_name, self.groups, self.optional),
......@@ -315,7 +318,8 @@ class PackageNode(DFSNode):
self.seen.append(self.package)
if (
self.previous_dep
self.dep
and self.previous_dep
and self.previous_dep is not self.dep
and self.previous_dep.name == self.dep.name
):
......@@ -359,7 +363,7 @@ class PackageNode(DFSNode):
return children
def visit(self, parents: "PackageNode") -> None:
def visit(self, parents: List["PackageNode"]) -> None:
# The root package, which has no parents, is defined as having depth -1
# So that the root package's top-level dependencies have depth 0.
self.depth = 1 + max(
......@@ -376,7 +380,7 @@ def aggregate_package_nodes(
) -> Tuple[Package, int]:
package = nodes[0].package
depth = max(node.depth for node in nodes)
groups = []
groups: List[str] = []
for node in nodes:
groups.extend(node.groups)
......
......@@ -33,7 +33,7 @@ class Transaction:
from poetry.installation.operations.uninstall import Uninstall
from poetry.installation.operations.update import Update
operations = []
operations: List["OperationTypes"] = []
for result_package, priority in self._result_packages:
installed = False
......
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