Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

simplify markdown generation #1629

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jun 1, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 6 additions & 9 deletions 15 winpython/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,7 @@
import stat
import shutil
import locale
import tempfile
import subprocess
import configparser as cp
from pathlib import Path
import re
import tarfile
Expand Down Expand Up @@ -41,25 +39,24 @@ def get_site_packages_path(path=None):
pypy_site_packages = base_dir / 'site-packages' # For PyPy
return str(pypy_site_packages if pypy_site_packages.is_dir() else site_packages)

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

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

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

tool_lines.append("VSCode","https://code.visualstudio.com", version, "a source-code editor developed by Microsoft")
return tool_lines

def onerror(function, path, excinfo):
"""Error handler for `shutil.rmtree`."""
Expand Down
57 changes: 21 additions & 36 deletions 57 winpython/wppm.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,24 +69,16 @@ def get_installed_packages(self, update: bool = False) -> list[Package]:
pip_list = self.pip.pip_list(full=True)
return [Package(f"{i[0].replace('-', '_').lower()}-{i[1]}-py3-none-any.whl", suggested_summary=i[2]) for i in pip_list]

def get_installed_packages_markdown(self) -> str:
"""Generates Markdown for installed packages section in package index."""
package_lines = [
f"[{pkg.name}]({pkg.url}) | {pkg.version} | {pkg.description}"
for pkg in sorted(self.get_installed_packages(), key=lambda p: p.name.lower())
]
return "\n".join(package_lines)

def get_wheelhouse_packages_markdown(self) -> str:
wheeldir = self.wheelhouse / 'included.wheels'
if wheeldir.is_dir():
package_lines = [
f"[{name}](https://pypi.org/project/{name}) | {version} | {summary}"
for name, version, summary in sorted(wh.list_packages_with_metadata(str(wheeldir)), key=itemgetter(0 , 1)) # lambda p: p[0].lower())
]
return "\n".join(package_lines)
return ""

def render_markdown_for_list(self, title, items):
"""Generates a Markdown section; name, url, version, summary"""
md = f"### {title}\n\n"
md += "Name | Version | Description\n"
md += "-----|---------|------------\n"
for name, url, version, summary in sorted(items, key=lambda p: (p[0].lower(), p[2])):
md += f"[{name}]({url}) | {version} | {summary} \n"
md += "\n"
return md

def generate_package_index_markdown(self, python_executable_directory: str|None = None, winpyver2: str|None = None,
flavor: str|None = None, architecture_bits: int|None = None, release_level: str|None = None) -> str:
"""Generates a Markdown formatted package index page."""
Expand All @@ -97,30 +89,23 @@ def generate_package_index_markdown(self, python_executable_directory: str|None
my_flavor = flavor or os.getenv("WINPYFLAVOR", "")
my_release_level = release_level or os.getenv("WINPYVER", "").replace(my_winpyver2+my_flavor, "")

tools_list = utils.get_installed_tools(utils.get_python_executable(python_executable_directory))
package_list = [(pkg.name, pkg.url, pkg.version, pkg.description) for pkg in self.get_installed_packages()]
wheelhouse_list = []
wheeldir = self.wheelhouse / 'included.wheels'
if wheeldir.is_dir():
wheelhouse_list = [(name, f"https://pypi.org/project/{name}", version, summary)
for name, version, summary in wh.list_packages_with_metadata(str(wheeldir)) ]

return f"""## WinPython {my_winpyver2 + my_flavor}

The following packages are included in WinPython-{my_arch}bit v{my_winpyver2 + my_flavor} {my_release_level}.

<details>

### Tools

Name | Version | Description
-----|---------|------------
{utils.get_installed_tools_markdown(utils.get_python_executable(python_executable_directory))}

### Python packages

Name | Version | Description
-----|---------|------------
{self.get_installed_packages_markdown()}

### WheelHouse packages

Name | Version | Description
-----|---------|------------
{self.get_wheelhouse_packages_markdown()}

{self.render_markdown_for_list("Tools", tools_list)}
{self.render_markdown_for_list("Python packages", package_list)}
{self.render_markdown_for_list("WheelHouse packages", wheelhouse_list)}
</details>
"""

Expand Down
Morty Proxy This is a proxified and sanitized view of the page, visit original site.