Some more refactoring.

This commit is contained in:
Jelmer Vernooij 2021-02-27 16:20:07 +00:00
parent dd14deb00d
commit 7c61fa0e43
6 changed files with 39 additions and 28 deletions

View file

@ -16,7 +16,7 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
class MissingDependencies(Exception):
class UnsatisfiedRequirements(Exception):
def __init__(self, reqs):
self.requirements = reqs
@ -55,7 +55,7 @@ class CPANResolver(Resolver):
user="root", env={"PERL_MM_USE_DEFAULT": "1"}
)
if missing:
raise MissingDependencies(missing)
raise UnsatisfiedRequirements(missing)
def explain(self, requirements):
raise NotImplementedError(self.explain)
@ -83,7 +83,7 @@ class CargoResolver(Resolver):
["cargo", "install", requirement.crate],
user="root")
if missing:
raise MissingDependencies(missing)
raise UnsatisfiedRequirements(missing)
def explain(self, requirements):
raise NotImplementedError(self.explain)
@ -109,7 +109,7 @@ class PypiResolver(Resolver):
continue
self.session.check_call(["pip", "install", requirement.package])
if missing:
raise MissingDependencies(missing)
raise UnsatisfiedRequirements(missing)
def explain(self, requirements):
raise NotImplementedError(self.explain)
@ -145,7 +145,7 @@ class NpmResolver(Resolver):
continue
self.session.check_call(["npm", "-g", "install", package])
if missing:
raise MissingDependencies(missing)
raise UnsatisfiedRequirements(missing)
def explain(self, requirements):
raise NotImplementedError(self.explain)
@ -165,7 +165,7 @@ class StackedResolver(Resolver):
for sub in self.subs:
try:
sub.install(requirements)
except MissingDependencies as e:
except UnsatisfiedRequirements as e:
requirements = e.requirements
else:
return
@ -188,7 +188,7 @@ class ExplainResolver(Resolver):
return cls(session)
def install(self, requirements):
raise MissingDependencies(requirements)
raise UnsatisfiedRequirements(requirements)
def auto_resolver(session):

View file

@ -21,7 +21,7 @@ import posixpath
from ..debian.apt import AptManager
from . import Resolver, MissingDependencies
from . import Resolver, UnsatisfiedRequirements
from ..requirements import (
BinaryRequirement,
CHeaderRequirement,
@ -520,19 +520,20 @@ class AptResolver(Resolver):
missing.append(req)
except NotImplementedError:
missing.append(req)
if missing:
still_missing = []
apt_requirements = []
for m in missing:
apt_req = self.resolve(m)
if apt_req is None:
still_missing.append(m)
else:
apt_requirements.append(m)
self.apt.install(
[req.package for req in apt_requirements])
if still_missing:
raise MissingDependencies(still_missing)
if not missing:
return
still_missing = []
apt_requirements = []
for m in missing:
apt_req = self.resolve(m)
if apt_req is None:
still_missing.append(m)
else:
apt_requirements.append(m)
self.apt.install(
[req.package for req in apt_requirements])
if still_missing:
raise UnsatisfiedRequirements(still_missing)
def explain(self, requirements):
raise NotImplementedError(self.explain)