예제 #1
0
 def get_locked_candidates(self,
                           section: Optional[str] = None
                           ) -> Dict[str, Candidate]:
     if not self.lockfile_file.is_file():
         return {}
     section = section or "default"
     result = {}
     for package in [dict(p) for p in self.lockfile.get("package", [])]:
         if section != "__all__" and section not in package["sections"]:
             continue
         version = package.get("version")
         if version:
             package["version"] = f"=={version}"
         package_name = package.pop("name")
         req = Requirement.from_req_dict(package_name, dict(package))
         can = Candidate(req,
                         self.environment,
                         name=package_name,
                         version=version)
         can.marker = req.marker
         can.hashes = {
             item["file"]: item["hash"]
             for item in self.lockfile["metadata"].get(
                 f"{req.key} {version}", [])
         } or None
         result[req.identify()] = can
     if section in ("default",
                    "__all__") and self.meta.name and self.meta.version:
         result[safe_name(
             self.meta.name).lower()] = self.make_self_candidate(True)
     return result
예제 #2
0
 def get_hashes(self, candidate: Candidate) -> None:
     candidate.hashes = {}