8000 support wppm -p .[.] and wppm -r . · Nizhal/winpython@720b1eb · GitHub
[go: up one dir, main page]

Skip to content

Commit 720b1eb

Browse files
committed
support wppm -p .[.] and wppm -r .
'.' is for all packages or all extras
1 parent 405c9a3 commit 720b1eb

File tree

1 file changed

+23
-10
lines changed

1 file changed

+23
-10
lines changed

winpython/piptree.py

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ def __init__(self, Target=None):
114114
version = p.version
115115
key = normalize(name)
116116
requires = []
117+
provides = {'':None}
117118
self.raw[key] = meta
118119
if p.requires:
119120
for i in p.requires:
@@ -129,7 +130,9 @@ def __init__(self, Target=None):
129130
req_key_extra = req_nameextra[len(req_key) + 1 :].split("]")[0]
130131
req_version = det[0][len(req_nameextra) :].translate(replacements)
131132
req_marker = det[1]
132-
133+
if 'extra == ' in req_marker:
134+
remove_list = {ord("'"):None, ord('"'):None}
135+
provides[req_marker.split('extra == ')[1].translate(remove_list)] = None
133136
req_add = {
134137
"req_key": req_key,
135138
"req_version": req_version,
@@ -146,6 +149,7 @@ def __init__(self, Target=None):
146149
"requires_dist": requires,
147150
"wanted_per": [],
148151
"description": meta["Description"] if "Description" in meta else "",
152+
"provides": provides,
149153
}
150154

151155
# On a second pass, complement distro in reverse mode with 'wanted-per':
@@ -242,21 +246,30 @@ def _upraw(self, pp, extra="", version_req="", depth=20, path=[], verbose=False)
242246

243247
def down(self, pp="", extra="", depth=99, indent=5, version_req="", verbose=False):
244248
"""print the downward requirements for the package or all packages"""
245-
if not pp == "":
246-
rawtext = json.dumps(
247-
self._downraw(pp, extra, version_req, depth, verbose=verbose), indent=indent
248-
)
249-
lines = [l for l in rawtext.split("\n") if len(l.strip()) > 2]
250-
print("\n".join(lines).replace('"', ""))
249+
if not pp == ".":
250+
if not extra == ".":
251+
rawtext = json.dumps(
252+
self._downraw(pp, extra, version_req, depth, verbose=verbose), indent=indent
253+
)
254+
lines = [l for l in rawtext.split("\n") if len(l.strip()) > 2]
255+
print("\n".join(lines).replace('"', ""))
256+
else:
257+
if self.distro[pp]:
258+
for one_extra in sorted(self.distro[pp]["provides"]):
259+
self.down(pp, one_extra, depth, indent, version_req, verbose=verbose)
251260
else:
252261
for one_pp in sorted(self.distro):
253262
self.down(one_pp, extra, depth, indent, version_req, verbose=verbose)
254263

255264
def up(self, pp, extra="", depth=99, indent=5, version_req="", verbose=False):
256265
"""print the upward needs for the package"""
257-
rawtext = json.dumps(self._upraw(pp, extra, version_req, depth, verbose=verbose), indent=indent)
258-
lines = [l for l in rawtext.split("\n") if len(l.strip()) > 2]
259-
print("\n".join(lines).replace('"', ""))
266+
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('"', ""))
270+
else:
271+
for one_pp in sorted(self.distro):
272+
self.up(one_pp, extra, depth, indent, version_req, verbose=verbose)
260273

261274
def description(self, pp):
262275
"return description of the package"

0 commit comments

Comments
 (0)
0