From 86a664c0774b420689d75c707d52f63a11f71d6f Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sun, 13 Mar 2022 12:49:35 -0400 Subject: [PATCH] check now raises Unresolved. Introduce missing function. --- CHANGES.rst | 9 +++++++++ nspektr/__init__.py | 20 ++++++++++++++++---- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index 8036680..3310c88 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,3 +1,12 @@ +v0.3.0 +====== + +``check()`` now raises an ``Unresolved`` exception, an iterable +indicating the unresolved dependencies. + +Added ``missing()`` method to generate missing dependencies for +an EntryPoint. + v0.2.0 ====== diff --git a/nspektr/__init__.py b/nspektr/__init__.py index 9708af4..31e3a78 100644 --- a/nspektr/__init__.py +++ b/nspektr/__init__.py @@ -113,6 +113,18 @@ def visit(req, seen=set()): return traverse(find_direct_dependencies(dist, extras), visit) +class Unresolved(Exception): + def __iter__(self): + return iter(self.args[0]) + + +def missing(ep): + """ + Generate the unresolved dependencies (if any) of ep. + """ + return unsatisfied(find_dependencies(ep.dist, repair_extras(ep.extras))) + + def check(ep): """ >>> ep, = metadata.entry_points(group='console_scripts', name='pip') @@ -126,8 +138,8 @@ def check(ep): >>> check(ep) Traceback (most recent call last): ... - ValueError: ('Unable to resolve all dependencies',... + nspektr.Unresolved: [...] """ - missing = list(unsatisfied(find_dependencies(ep.dist, repair_extras(ep.extras)))) - if missing: - raise ValueError("Unable to resolve all dependencies", missing) + missed = list(missing(ep)) + if missed: + raise Unresolved(missed)