未验证 提交 cc88d92b 编写于 作者: F Frost Ming 提交者: GitHub

Merge pull request #237 from frostming/feature/236

change dependencies to a list of PEP 508 strings
Change the dependencies of a package in the lock file to a list of PEP 508 strings
......@@ -15,7 +15,7 @@ from resolvelib.structs import DirectedGraph
from pdm.exceptions import NoPythonVersion, ProjectError
from pdm.formats import FORMATS
from pdm.formats.base import make_inline_table
from pdm.formats.base import make_array, make_inline_table
from pdm.iostream import stream
from pdm.models.environment import WorkingSet
from pdm.models.requirements import Requirement, strip_extras
......@@ -26,6 +26,7 @@ if TYPE_CHECKING:
from typing import Dict, Iterable, List, Optional, Tuple
from resolvelib.resolvers import RequirementInformation, ResolutionImpossible
from tomlkit.container import Container
from pdm.models.candidates import Candidate
......@@ -322,7 +323,11 @@ def format_reverse_dependency_graph(project: Project, graph: DirectedGraph) -> s
return "".join(content).strip()
def format_lockfile(mapping, fetched_dependencies, summary_collection):
def format_lockfile(
mapping: Dict[str, Candidate],
fetched_dependencies: Dict[str, List[Requirement]],
summary_collection: Dict[str, str],
) -> Container:
"""Format lock file from a dict of resolved candidates, a mapping of dependencies
and a collection of package summaries.
"""
......@@ -332,13 +337,7 @@ def format_lockfile(mapping, fetched_dependencies, summary_collection):
base = tomlkit.table()
base.update(v.as_lockfile_entry())
base.add("summary", summary_collection[strip_extras(k)[0]])
deps = tomlkit.table()
for r in fetched_dependencies[k].values():
name, req = r.as_req_dict()
if getattr(req, "items", None) is not None:
deps.add(name, make_inline_table(req))
else:
deps.add(name, req)
deps = make_array([r.as_line() for r in fetched_dependencies[k]], True)
if len(deps) > 0:
base.add("dependencies", deps)
packages.append(base)
......
......@@ -123,7 +123,7 @@ def extract_metadata(result: Result) -> Dict[str, Metaset]:
def resolve(
resolver: Resolver, requirements: List[Requirement], requires_python: PySpecSet
) -> Tuple[Dict[str, Candidate], Dict[str, Dict[str, Requirement]], Dict[str, str]]:
) -> Tuple[Dict[str, Candidate], Dict[str, List[Requirement]], Dict[str, str]]:
"""Core function to perform the actual resolve process.
Return a tuple containing 3 items:
......
......@@ -21,7 +21,7 @@ class BaseProvider(AbstractProvider):
self.allow_prereleases = allow_prereleases # Root allow_prereleases value
self.requires_python_collection = {} # type: Dict[Optional[str], PySpecSet]
self.summary_collection = {} # type: Dict[str, str]
self.fetched_dependencies = {} # type: Dict[str, Dict[str, List[Requirement]]]
self.fetched_dependencies = {} # type: Dict[str, List[Requirement]]
def identify(self, req: Union[Requirement, Candidate]) -> Optional[str]:
return req.identify()
......@@ -75,7 +75,7 @@ class BaseProvider(AbstractProvider):
# Filter out incompatible dependencies(e.g. functools32) early so that
# we don't get errors when building wheels.
valid_deps = []
valid_deps: List[Requirement] = []
for dep in deps:
if (
dep.requires_python & requires_python & self.requires_python
......@@ -85,9 +85,7 @@ class BaseProvider(AbstractProvider):
valid_deps.append(dep)
candidate_key = self.identify(candidate)
self.fetched_dependencies[candidate_key] = {
self.identify(r): r for r in valid_deps
}
self.fetched_dependencies[candidate_key] = valid_deps
self.summary_collection[candidate.req.key] = summary
self.requires_python_collection[candidate.req.key] = requires_python
return valid_deps
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册