11"""Tool to merge cpython pot files to python-docs-tr po files for a
22given branch.
3+
4+ A CPython clone present in the venv/ directory is required if the --cpython_repo is not specified.
5+
6+ This script is run automatically by the GitHub Actions workflow every first day of the month.
37"""
48
59import re
610import shutil
7- from pathlib import Path
811import argparse
912import subprocess
13+ from pathlib import Path
1014from subprocess import PIPE
1115from tqdm import tqdm
1216
@@ -91,6 +95,23 @@ def update_makefile(cpython_repo: Path) -> None:
9195 run ("git" , "add" , "Makefile" )
9296
9397
98+ def git_add_relevant_files ():
99+ """Add only files with relevant modifications.
100+
101+ This only add files with actual modifications, not just metadata
102+ modifications, to avoid noise in history.
103+ """
104+ modified_files = run ("git" , "ls-files" , "-m" , stdout = PIPE ).stdout .split ("\n " )
105+ modified_po_files = [line for line in modified_files if line .endswith (".po" )]
106+ for file in modified_po_files :
107+ diff = run ("git" , "diff" , "-U0" , file , stdout = PIPE ).stdout
108+ if len (diff .split ("\n " )) > 8 :
109+ run ("git" , "add" , file )
110+ else :
111+ run ("git" , "checkout" , "--" , file )
112+ run ("rm" , "-f" , "whatsnew/changelog.po" ) # We don't translate this file.
113+
114+
94115def main ():
95116 args = parse_args ()
96117 setup_repo (args .cpython_repo , args .branch )
@@ -106,8 +127,9 @@ def main():
106127 remove_old_files (downstream - upstream )
107128 clean_paths ((upstream - downstream ) | (upstream & downstream ))
108129 shutil .rmtree (pot_path )
109- run ("powrap" , "-m " )
130+ run ("powrap" , "*.po" , "*/*.po " )
110131 update_makefile (args .cpython_repo )
132+ git_add_relevant_files ()
111133
112134
113135if __name__ == "__main__" :
0 commit comments