Skip to content

Commit dff57f8

Browse files
authored
Merge pull request #1629 from stonebig/master
simplify markdown generation
2 parents 00ea3fc + ec7a132 commit dff57f8

File tree

2 files changed

+27
-45
lines changed

2 files changed

+27
-45
lines changed

winpython/utils.py

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,7 @@
1111
import stat
1212
import shutil
1313
import locale
14-
import tempfile
1514
import subprocess
16-
import configparser as cp
1715
from pathlib import Path
1816
import re
1917
import tarfile
@@ -41,25 +39,24 @@ def get_site_packages_path(path=None):
4139
pypy_site_packages = base_dir / 'site-packages' # For PyPy
4240
return str(pypy_site_packages if pypy_site_packages.is_dir() else site_packages)
4341

44-
def get_installed_tools_markdown(path=None)-> str:
42+
def get_installed_tools(path=None)-> str:
4543
"""Generates Markdown for installed tools section in package index."""
4644
tool_lines = []
4745
python_exe = Path(get_python_executable(path))
4846
version = exec_shell_cmd(f'powershell (Get-Item {python_exe}).VersionInfo.FileVersion', python_exe.parent).splitlines()[0]
49-
tool_lines.append(f"[Python](http://www.python.org/) | {version} | Python programming language with standard library")
47+
tool_lines.append(("Python" ,f"http://www.python.org/", version, "Python programming language with standard library"))
5048
if (node_exe := python_exe.parent.parent / "n" / "node.exe").exists():
5149
version = exec_shell_cmd(f'powershell (Get-Item {node_exe}).VersionInfo.FileVersion', node_exe.parent).splitlines()[0]
52-
tool_lines.append(f"[Nodejs](https://nodejs.org) | {version} | a JavaScript runtime built on Chrome's V8 JavaScript engine")
50+
tool_lines.append("Nodejs", "https://nodejs.org", version, "a JavaScript runtime built on Chrome's V8 JavaScript engine")
5351

5452
if (pandoc_exe := python_exe.parent.parent / "t" / "pandoc.exe").exists():
5553
version = exec_shell_cmd("pandoc -v", pandoc_exe.parent).splitlines()[0].split(" ")[-1]
56-
tool_lines.append(f"[Pandoc](https://pandoc.org) | {version} | an universal document converter")
54+
tool_lines.append("Pandoc", "https://pandoc.org", version, "an universal document converter")
5755

5856
if (vscode_exe := python_exe.parent.parent / "t" / "VSCode" / "Code.exe").exists():
5957
version = exec_shell_cmd(f'powershell (Get-Item {vscode_exe}).VersionInfo.FileVersion', vscode_exe.parent).splitlines()[0]
60-
tool_lines.append(f"[VSCode](https://code.visualstudio.com) | {version} | a source-code editor developed by Microsoft")
61-
return "\n".join(tool_lines)
62-
58+
tool_lines.append("VSCode","https://code.visualstudio.com", version, "a source-code editor developed by Microsoft")
59+
return tool_lines
6360

6461
def onerror(function, path, excinfo):
6562
"""Error handler for `shutil.rmtree`."""

winpython/wppm.py

Lines changed: 21 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -69,24 +69,16 @@ def get_installed_packages(self, update: bool = False) -> list[Package]:
6969
pip_list = self.pip.pip_list(full=True)
7070
return [Package(f"{i[0].replace('-', '_').lower()}-{i[1]}-py3-none-any.whl", suggested_summary=i[2]) for i in pip_list]
7171

72-
def get_installed_packages_markdown(self) -> str:
73-
"""Generates Markdown for installed packages section in package index."""
74-
package_lines = [
75-
f"[{pkg.name}]({pkg.url}) | {pkg.version} | {pkg.description}"
76-
for pkg in sorted(self.get_installed_packages(), key=lambda p: p.name.lower())
77-
]
78-
return "\n".join(package_lines)
79-
80-
def get_wheelhouse_packages_markdown(self) -> str:
81-
wheeldir = self.wheelhouse / 'included.wheels'
82-
if wheeldir.is_dir():
83-
package_lines = [
84-
f"[{name}](https://pypi.org/project/{name}) | {version} | {summary}"
85-
for name, version, summary in sorted(wh.list_packages_with_metadata(str(wheeldir)), key=itemgetter(0 , 1)) # lambda p: p[0].lower())
86-
]
87-
return "\n".join(package_lines)
88-
return ""
89-
72+
def render_markdown_for_list(self, title, items):
73+
"""Generates a Markdown section; name, url, version, summary"""
74+
md = f"### {title}\n\n"
75+
md += "Name | Version | Description\n"
76+
md += "-----|---------|------------\n"
77+
for name, url, version, summary in sorted(items, key=lambda p: (p[0].lower(), p[2])):
78+
md += f"[{name}]({url}) | {version} | {summary} \n"
79+
md += "\n"
80+
return md
81+
9082
def generate_package_index_markdown(self, python_executable_directory: str|None = None, winpyver2: str|None = None,
9183
flavor: str|None = None, architecture_bits: int|None = None, release_level: str|None = None) -> str:
9284
"""Generates a Markdown formatted package index page."""
@@ -97,30 +89,23 @@ def generate_package_index_markdown(self, python_executable_directory: str|None
9789
my_flavor = flavor or os.getenv("WINPYFLAVOR", "")
9890
my_release_level = release_level or os.getenv("WINPYVER", "").replace(my_winpyver2+my_flavor, "")
9991

92+
tools_list = utils.get_installed_tools(utils.get_python_executable(python_executable_directory))
93+
package_list = [(pkg.name, pkg.url, pkg.version, pkg.description) for pkg in self.get_installed_packages()]
94+
wheelhouse_list = []
95+
wheeldir = self.wheelhouse / 'included.wheels'
96+
if wheeldir.is_dir():
97+
wheelhouse_list = [(name, f"https://pypi.org/project/{name}", version, summary)
98+
for name, version, summary in wh.list_packages_with_metadata(str(wheeldir)) ]
99+
100100
return f"""## WinPython {my_winpyver2 + my_flavor}
101101
102102
The following packages are included in WinPython-{my_arch}bit v{my_winpyver2 + my_flavor} {my_release_level}.
103103
104104
<details>
105105
106-
### Tools
107-
108-
Name | Version | Description
109-
-----|---------|------------
110-
{utils.get_installed_tools_markdown(utils.get_python_executable(python_executable_directory))}
111-
112-
### Python packages
113-
114-
Name | Version | Description
115-
-----|---------|------------
116-
{self.get_installed_packages_markdown()}
117-
118-
### WheelHouse packages
119-
120-
Name | Version | Description
121-
-----|---------|------------
122-
{self.get_wheelhouse_packages_markdown()}
123-
106+
{self.render_markdown_for_list("Tools", tools_list)}
107+
{self.render_markdown_for_list("Python packages", package_list)}
108+
{self.render_markdown_for_list("WheelHouse packages", wheelhouse_list)}
124109
</details>
125110
"""
126111

0 commit comments

Comments
 (0)