Skip to content

Commit 72f911b

Browse files
authored
Fix available libraries listing version (#1733)
This commit adds support for displaying plugin_host specific versions of available libraries.
1 parent 6aba0a9 commit 72f911b

1 file changed

Lines changed: 41 additions & 8 deletions

File tree

package_control/commands/list_available_libraries_command.py

Lines changed: 41 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from ..console_write import console_write
1111
from ..package_manager import PackageManager
1212
from ..show_error import show_message
13+
from ..sys_path import python_versions
1314

1415
USE_QUICK_PANEL_ITEM = hasattr(sublime, "QuickPanelItem")
1516

@@ -48,11 +49,41 @@ def show_quick_panel():
4849

4950
threading.Thread(target=show_quick_panel).start()
5051

52+
@staticmethod
53+
def latest_releases(releases):
54+
versions = []
55+
for pyver in python_versions():
56+
for release in releases:
57+
if pyver in release["python_versions"]:
58+
versions.append([release["version"], pyver])
59+
break
60+
61+
if not versions:
62+
return ""
63+
64+
if len(versions) > 1 and versions[0][0] != versions[1][0]:
65+
return ",".join(
66+
" v{} (py{})".format(ver, pyver)
67+
for ver, pyver in versions
68+
)
69+
70+
return " v" + versions[0][0]
71+
72+
@staticmethod
73+
def latest_release_date(releases):
74+
pyver = python_versions()[-1]
75+
for release in releases:
76+
if pyver in release["python_versions"]:
77+
return release["date"].split(" ", 1)[0]
78+
79+
return releases[0]["date"].split(" ", 1)[0]
80+
5181
def show_quick_panel_st3(self, libraries):
52-
items = [
53-
[info["name"] + " v" + info["releases"][0]["version"], info["description"]]
54-
for info in libraries
55-
]
82+
items = []
83+
for info in libraries:
84+
versions = self.latest_releases(info["releases"])
85+
if versions:
86+
items.append([info["name"] + versions, info["description"]])
5687

5788
def on_done(picked):
5889
if picked > -1:
@@ -63,11 +94,13 @@ def on_done(picked):
6394
)
6495

6596
def show_quick_panel_st4(self, libraries):
66-
# TODO: display supported python versions
67-
6897
items = []
6998
for info in libraries:
70-
display_name = info["name"] + " v" + info["releases"][0]["version"]
99+
versions = self.latest_releases(info["releases"])
100+
if not versions:
101+
continue
102+
103+
display_name = info["name"] + versions
71104

72105
details = [html.escape(info["description"])]
73106

@@ -79,7 +112,7 @@ def show_quick_panel_st4(self, libraries):
79112
)
80113

81114
try:
82-
date = info["releases"][0]["date"].split(" ", 1)[0]
115+
date = self.latest_release_date(info["releases"])
83116
annotation = datetime.strptime(date, "%Y-%m-%d").strftime(
84117
"Updated on %a %b %d, %Y"
85118
)

0 commit comments

Comments
 (0)