update scripts

This commit is contained in:
Junya Morioka
2025-08-10 17:05:29 +09:00
parent d7847260ec
commit 39ea2fb7c0
2 changed files with 60 additions and 27 deletions
+1
View File
@@ -861,6 +861,7 @@ pip install ./flash_attn-2.6.3+cu124torch2.5-cp312-cp312-linux_x86_64.whl
</details> </details>
## History ## History
### v0.3.14 ### v0.3.14
+59 -27
View File
@@ -1,8 +1,5 @@
#!/usr/bin/env python3
""" """
Generate a one-row-per-package Markdown table from the History section in README.md. python generate_packages_table.py --update-readme
This script uses pandas to simplify data processing and sorting.
""" """
import argparse import argparse
@@ -10,23 +7,17 @@ import itertools
import re import re
import sys import sys
from pathlib import Path from pathlib import Path
from typing import List, Optional
import pandas as pd import pandas as pd
def read_text(file_path: Path) -> str:
with file_path.open("r", encoding="utf-8") as f:
return f.read()
def parse_numeric_version(text: str) -> tuple: def parse_numeric_version(text: str) -> tuple:
"""Extract numeric version tuple for sorting.""" """Extract numeric version tuple for sorting."""
nums = re.findall(r"\d+", text) nums = re.findall(r"\d+", text)
return tuple(int(n) for n in nums) return tuple(int(n) for n in nums)
def extract_packages_from_history(text: str) -> List[dict]: def extract_packages_from_history(text: str) -> list[dict]:
"""Extract package information from History section.""" """Extract package information from History section."""
lines = text.splitlines() lines = text.splitlines()
@@ -319,7 +310,46 @@ def generate_markdown_table(df: pd.DataFrame) -> str:
return "\n".join(lines) return "\n".join(lines)
def main(argv: Optional[List[str]] = None) -> int: def update_readme_packages_section(readme_path: Path, packages_markdown: str) -> None:
"""Update the Packages section in README.md with new content."""
try:
with readme_path.open("r", encoding="utf-8") as f:
content = f.read()
# Find the Packages section
packages_start = content.find("## Packages")
if packages_start == -1:
raise ValueError("Packages section not found in README.md")
# Find the end of Packages section (next ## section or History section)
packages_end = content.find("## History", packages_start)
if packages_end == -1:
# If no History section found, look for any other ## section
remaining_content = content[packages_start + len("## Packages") :]
next_section = remaining_content.find("\n## ")
if next_section != -1:
packages_end = packages_start + len("## Packages") + next_section
else:
packages_end = len(content)
# Replace the Packages section
new_content = (
content[:packages_start]
+ "## Packages\n\n"
+ packages_markdown
+ "\n\n"
+ content[packages_end:]
)
# Write back to file
with readme_path.open("w", encoding="utf-8") as f:
f.write(new_content)
except Exception as e:
raise RuntimeError(f"Failed to update README.md: {e}")
def main() -> None:
parser = argparse.ArgumentParser( parser = argparse.ArgumentParser(
description="Generate a one-row-per-package Markdown table from the History section of a README.md" description="Generate a one-row-per-package Markdown table from the History section of a README.md"
) )
@@ -330,37 +360,39 @@ def main(argv: Optional[List[str]] = None) -> int:
default=Path("README.md"), default=Path("README.md"),
help="Path to README.md (default: README.md)", help="Path to README.md (default: README.md)",
) )
args = parser.parse_args(argv) parser.add_argument(
"--update-readme",
action="store_true",
help="Update the Packages section in README.md instead of printing to stdout",
)
args = parser.parse_args()
try: try:
text = read_text(args.readme) with args.readme.open("r", encoding="utf-8") as f:
text = f.read()
packages = extract_packages_from_history(text) packages = extract_packages_from_history(text)
if not packages: if not packages:
print("No packages found in History section", file=sys.stderr) print("No packages found in History section", file=sys.stderr)
return 1 return
df = pd.DataFrame(packages) df = pd.DataFrame(packages)
df_sorted = sort_packages(df) df_sorted = sort_packages(df)
df_merged = merge_duplicate_rows(df_sorted) df_merged = merge_duplicate_rows(df_sorted)
markdown = generate_markdown_table_by_os(df_merged) markdown = generate_markdown_table_by_os(df_merged)
try: if args.update_readme:
# Update the README.md file
update_readme_packages_section(args.readme, markdown)
print(f"Updated Packages section in {args.readme}")
else:
# Print to stdout (original behavior)
print(markdown) print(markdown)
except BrokenPipeError:
# Gracefully handle pipe interruption (e.g., | head)
try:
sys.stdout.close()
except Exception:
pass
return 0
return 0
except Exception as e: except Exception as e:
print(f"Error: {e}", file=sys.stderr) print(f"Error: {e}", file=sys.stderr)
return 1
if __name__ == "__main__": if __name__ == "__main__":
raise SystemExit(main()) main()