Commit 6ff23efb by Branch Vincent Committed by Bjorn Neergaard

chore(puzzle): remove type errors

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