8000 sup]port wppm -r .[.] · Nizhal/winpython@c71a357 · GitHub
[go: up one dir, main page]

Skip to content

Commit c71a357

Browse files
committed
sup]port wppm -r .[.]
1 parent 720b1eb commit c71a357

File tree

2 files changed

+46
-13
lines changed

2 files changed

+46
-13
lines changed

winpython/piptree.py

Lines changed: 44 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ def __init__(self, Target=None):
115115
key = normalize(name)
116116
requires = []
117117
provides = {'':None}
118+
provided = {'':None}
118119
8000 self.raw[key] = meta
119120
if p.requires:
120121
for i in p.requires:
@@ -150,6 +151,7 @@ def __init__(self, Target=None):
150151
"wanted_per": [],
151152
"description": meta["Description"] if "Description" in meta else "",
152153
"provides": provides,
154+
"provided": provided,
153155
}
154156

155157
# On a second pass, complement distro in reverse mode with 'wanted-per':
@@ -170,6 +172,9 @@ def __init__(self, Target=None):
170172
} # req_key_extra
171173
if "req_marker" in r:
172174
want_add["req_marker"] = r["req_marker"] # req_key_extra
175+
if 'extra == ' in r["req_marker"]:
176+
remove_list = {ord("'"):None, ord('"'):None}
177+
self.distro[r["req_key"]]["provided"][r["req_marker"].split('extra == ')[1].translate(remove_list)] = None
173178
self.distro[r["req_key"]]["wanted_per"] += [want_add]
174179

175180
def _downraw(self, pp, extra="", version_req="", depth=20, path=[], verbose=False):
@@ -218,14 +223,16 @@ def _upraw(self, pp, extra="", version_req="", depth=20, path=[], verbose=False)
218223
summary = f' {self.distro[p]["summary"]}' if verbose else ''
219224
if extra == "":
220225
ret_all = [f'{p}=={self.distro[p]["version"]} {version_req}{summary}']
221-
else:
226+
elif extra in self.distro[p]["provided"]:
222227
ret_all = [f'{p}[{extra}]=={self.distro[p]["version"]} {version_req}{summary}']
228+
else:
229+
return []
223230
ret = []
224231
for r in self.distro[p]["wanted_per"]:
225232
if r["req_key"] in self.distro and r["req_key"] not in path:
226-
if "req_marker" not in r or Marker(r["req_marker"]).evaluate(
233+
if ("req_marker" not in r and extra =="") or (extra !="" and "req_marker" in r and extra in r["req_marker"] and Marker(r["req_marker"]).evaluate(
227234
environment=envi
228-
):
235+
)):
229236
ret += self._upraw(
230237
r["req_key"],
231238
"",
@@ -248,28 +255,54 @@ def down(self, pp="", extra="", depth=99, indent=5, version_req="", verbose=Fals
248255
"""print the downward requirements for the package or all packages"""
249256
if not pp == ".":
250257
if not extra == ".":
258+
if pp in self.distro:
259+
extras = [s for s in extra.split(',') if s in sorted(self.distro[pp]["provides"])]
260+
if extras == []: return ''
251261
rawtext = json.dumps(
252262
self._downraw(pp, extra, version_req, depth, verbose=verbose), indent=indent
253263
)
254264
lines = [l for l in rawtext.split("\n") if len(l.strip()) > 2]
255-
print("\n".join(lines).replace('"', ""))
265+
return ("\n".join(lines).replace('"', ""))
256266
else:
257-
if self.distro[pp]:
267+
if pp in self.distro:
268+
r = []
258269
for one_extra in sorted(self.distro[pp]["provides"]):
259-
self.down(pp, one_extra, depth, indent, version_req, verbose=verbose)
270+
s = self.down(pp, one_extra, depth, indent, version_req, verbose=verbose)
271+
if s != '': r += [s]
272+
#print(r)
273+
return '\n'.join([i for i in r if i!= ''])
260274
else:
275+
r = []
261276
for one_pp in sorted(self.distro):
262-
self.down(one_pp, extra, depth, indent, version_req, verbose=verbose)
277+
s = self.down(one_pp, extra, depth, indent, version_req, verbose=verbose)
278+
if s != '': r += [s]
279+
return '\n'.join([i for i in r if i!= ''])
263280

264281
def up(self, pp, extra="", depth=99, indent=5, version_req="", verbose=False):
265282
"""print the upward needs for the package"""
283+
r = []
266284
if not pp == ".":
267-
rawtext = json.dumps(self._upraw(pp, extra, version_req, depth, verbose=verbose), indent=indent)
268-
lines = [l for l in rawtext.split("\n") if len(l.strip()) > 2]
269-
print("\n".join(lines).replace('"', ""))
285+
if not extra == ".":
286+
s = self._upraw(pp, extra, version_req, depth, verbose=verbose)
287+
if s == []: return ''
288+
rawtext = json.dumps(self._upraw(pp, extra, version_req, depth, verbose=verbose), indent=indent)
289+
lines = [l for l in rawtext.split("\n") if len(l.strip()) > 2]
290+
return ("\n".join(i for i in lines if i!= '').replace('"', "") )
291+
else:
292+
if pp in self.distro:
293+
r = []
294+
for one_extra in sorted(self.distro[pp]["provided"]):
295+
s = self.up(pp, one_extra, depth, indent, version_req, verbose=verbose)
296+
if s != '': r += [s]
297+
return '\n'.join([i for i in r if i!= ''])
270298
else:
271299
for one_pp in sorted(self.distro):
272-
self.up(one_pp, extra, depth, indent, version_req, verbose=verbose)
300+
s = self.up(one_pp, extra, depth, indent, version_req, verbose=verbose)
301+
if s != []: r += [s]
302+
if r !=[]:
303+
return '\n'.join([i for i in r if i!= ''])
304+
else:
305+
return
273306

274307
def description(self, pp):
275308
"return description of the package"

winpython/wppm.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -679,12 +679,12 @@ def main(test=False):
679679
if args.pipdown:
680680
pip = piptree.pipdata(Target=targetpython)
681681
pack, extra, *other = (args.fname + "[").replace("]", "[").split("[")
682-
pip.down(pack, extra, args.levels, verbose=args.verbose)
682+
print(pip.down(pack, extra, args.levels, verbose=args.verbose))
683683
sys.exit()
684684
elif args.pipup:
685685
pip = piptree.pipdata(Target=targetpython)
686686
pack, extra, *other = (args.fname + "[").replace("]", "[").split("[")
687-
pip.up(pack, extra, args.levels, verbose=args.verbose)
687+
print(pip.up(pack, extra, args.levels, verbose=args.verbose))
688688
sys.exit()
689689
elif args.list:
690690
pip = piptree.pipdata(Target=targetpython)

0 commit comments

Comments
 (0)
0