Merge pull request #2049 from stonebig/master · winpython/winpython@cef9ca3 · GitHub
Skip to content

Commit cef9ca3

Browse files
authored
Merge pull request #2049 from stonebig/master
display missing dependancies
2 parents 2ed39ea + 5114738 commit cef9ca3

3 files changed

Lines changed: 32 additions & 17 deletions

File tree

wppm/__init__.py

Lines changed: 1 addition & 1 deletion

wppm/piptree.py

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ def _get_dependency_tree(self, package_name: str, extra: str = "", version_req:
166166
extras = extra.split(",")
167167
pkg_key = self.normalize(package_name)
168168
ret_all = []
169+
wall_hit = ""
169170

170171
full_name = f"{package_name}[{extra}]" if extra else package_name
171172
if full_name in path:
@@ -200,8 +201,9 @@ def _get_dependency_tree(self, package_name: str, extra: str = "", version_req:
200201
extra + ',' in dependency["req_extra"] + ',' and \
201202
Marker(dependency["req_marker"]).evaluate(environment=environment | {"extra": up_req})):
202203
# IA risk error: # dask[array] go upwards as dask[dataframe], so {"extra": up_req} , not {"extra": extra}
203-
#tag downward limiting dependancies
204+
#tag upward limiting dependancies
204205
wall = " " if dependency["req_version"][:1] == "~" or dependency["req_version"].startswith("==") or "<" in dependency["req_version"] else ""
206+
wall_hit += wall
205207
if ppend=="" or wall==" ":
206208
ret += self._get_dependency_tree(
207209
dependency["req_key"],
@@ -215,31 +217,44 @@ def _get_dependency_tree(self, package_name: str, extra: str = "", version_req:
215217
upward=upward,
216218
)
217219
elif not dependency.get("req_marker") or Marker(dependency["req_marker"]).evaluate(environment=environment):
218-
ret += self._get_dependency_tree(
219-
dependency["req_key"],
220-
dependency["req_extra"],
221-
dependency["req_version"],
222-
depth,
223-
next_path,
224-
verbose=verbose,
225-
upward=upward,
226-
)
220+
#tag downward missing dependancies
221+
wall = ""
222+
if ppend=="" or wall==" ":
223+
ret += self._get_dependency_tree(
224+
dependency["req_key"],
225+
dependency["req_extra"],
226+
dependency["req_version"],
227+
depth,
228+
next_path,
229+
verbose=verbose,
230+
upward=upward,
231+
)
232+
elif not upward and (not dependency.get("req_marker") or Marker(dependency["req_marker"]).evaluate(environment=environment)):
233+
# not there but was required
234+
wall_hit += " "
235+
ret += [[f'{dependency["req_key"]}==? {dependency["req_version"]}']]
227236

228237
ret_all.append(ret)
229-
return ret_all
238+
if ppend=="" or wall_hit != "":
239+
return ret_all
240+
else:
241+
return [""]
230242

231-
def down(self, pp: str = "", extra: str = "", depth: int = 20, indent: int = 4, version_req: str = "", verbose: bool = False) -> str:
243+
def down(self, ppw: str = "", extra: str = "", depth: int = 20, indent: int = 4, version_req: str = "", verbose: bool = False) -> str:
232244
"""Generate downward dependency tree as formatted string."""
245+
pp = ppw[:-1] if ppw.endswith('!') else ppw
246+
ppend = "!" if ppw.endswith('!') else "" #show only downward missing dependancies
233247
ppp = [pp] if pp in self.distro else ()
234248
if pp == ".":
235249
ppp = [p for p in self.distro]
236250
results = []
237251
for p in sorted(ppp):
238252
if extra == ".":
239253
for one_extra in sorted(self.distro[p]["provides"]):
240-
results += self._get_dependency_tree(p, one_extra, version_req, depth, verbose=verbose)
254+
a = self._get_dependency_tree(p, one_extra, version_req, depth, verbose=verbose, ppend=ppend)
241255
else:
242-
results += self._get_dependency_tree(p, extra, version_req, depth, verbose=verbose)
256+
a = self._get_dependency_tree(p, extra, version_req, depth, verbose=verbose, ppend=ppend)
257+
results += a if (len(a[0])>1 or ppend=="") else []
243258
rawtext = json.dumps(results, indent=indent)
244259
lines = [l[2*indent:] for l in rawtext.split("\n") if len(l.strip()) > 2]
245260
return "\n".join(lines).replace('"', "")

wppm/wppm.py

Lines changed: 2 additions & 2 deletions

0 commit comments

Comments
 (0)