]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-138286: Run ``ruff`` on ``Tools/i18n`` (#138287)
authorStan Ulbrych <89152624+StanFromIreland@users.noreply.github.com>
Sun, 31 Aug 2025 20:29:02 +0000 (21:29 +0100)
committerGitHub <noreply@github.com>
Sun, 31 Aug 2025 20:29:02 +0000 (20:29 +0000)
Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
Co-authored-by: Tomas R. <tomas.roun8@gmail.com>
.pre-commit-config.yaml
Tools/i18n/.ruff.toml [new file with mode: 0644]
Tools/i18n/makelocalealias.py
Tools/i18n/msgfmt.py
Tools/i18n/pygettext.py

index d101f5c37e60b1a1ce9e40a03267633caacdd746..61db8c456c2e648e260961d92169637ef6e891f3 100644 (file)
@@ -14,6 +14,10 @@ repos:
         name: Run Ruff (lint) on Tools/build/
         args: [--exit-non-zero-on-fix, --config=Tools/build/.ruff.toml]
         files: ^Tools/build/
+      - id: ruff
+        name: Run Ruff (lint) on Tools/i18n/
+        args: [--exit-non-zero-on-fix, --config=Tools/i18n/.ruff.toml]
+        files: ^Tools/i18n/
       - id: ruff
         name: Run Ruff (lint) on Argument Clinic
         args: [--exit-non-zero-on-fix, --config=Tools/clinic/.ruff.toml]
diff --git a/Tools/i18n/.ruff.toml b/Tools/i18n/.ruff.toml
new file mode 100644 (file)
index 0000000..a8f4f2f
--- /dev/null
@@ -0,0 +1,10 @@
+extend = "../../.ruff.toml"  # Inherit the project-wide settings
+
+target-version = "py313"
+
+[lint]
+select = [
+    "F",     # pyflakes
+    "I",     # isort
+    "UP",    # pyupgrade
+]
index 7f001abc09745dc8d2c6d975d8a4de2af16d2b4e..f825862ffdf350a59cb72113816b0c9092f790a4 100755 (executable)
@@ -8,6 +8,7 @@
 """
 import locale
 import sys
+
 _locale = locale
 
 # Location of the X11 alias file.
@@ -100,16 +101,15 @@ def parse_glibc_supported(filename):
 def pprint(data):
     items = sorted(data.items())
     for k, v in items:
-        print('    %-40s%a,' % ('%a:' % k, v))
+        print(f"    {k!a:<40}{v!a},")
 
 def print_differences(data, olddata):
     items = sorted(olddata.items())
     for k, v in items:
         if k not in data:
-            print('#    removed %a' % k)
+            print(f'#    removed {k!a}')
         elif olddata[k] != data[k]:
-            print('#    updated %a -> %a to %a' % \
-                  (k, olddata[k], data[k]))
+            print(f'#    updated {k!a} -> {olddata[k]!a} to {data[k]!a}')
         # Additions are not mentioned
 
 def optimize(data):
@@ -132,7 +132,7 @@ def check(data):
     errors = 0
     for k, v in data.items():
         if locale.normalize(k) != v:
-            print('ERROR: %a -> %a != %a' % (k, locale.normalize(k), v),
+            print(f'ERROR: {k!a} -> {locale.normalize(k)!a} != {v!a}',
                   file=sys.stderr)
             errors += 1
     return errors
@@ -142,10 +142,10 @@ if __name__ == '__main__':
     parser = argparse.ArgumentParser()
     parser.add_argument('--locale-alias', default=LOCALE_ALIAS,
                         help='location of the X11 alias file '
-                             '(default: %a)' % LOCALE_ALIAS)
+                             f'(default: {LOCALE_ALIAS})')
     parser.add_argument('--glibc-supported', default=SUPPORTED,
                         help='location of the glibc SUPPORTED locales file '
-                             '(default: %a)' % SUPPORTED)
+                             f'(default: {SUPPORTED})')
     args = parser.parse_args()
 
     data = locale.locale_alias.copy()
index 65254a7c37545643cbb40dca6c3e2df7f58b9fc5..3351511bbc8f2b778196d29ee77e1c180708ef16 100755 (executable)
@@ -24,14 +24,14 @@ Options:
         Display version information and exit.
 """
 
-import os
-import sys
+import array
 import ast
+import codecs
 import getopt
+import os
 import struct
-import array
+import sys
 from email.parser import HeaderParser
-import codecs
 
 __version__ = "1.2"
 
@@ -113,7 +113,7 @@ def make(filename, outfile):
     try:
         with open(infile, 'rb') as f:
             lines = f.readlines()
-    except IOError as msg:
+    except OSError as msg:
         print(msg, file=sys.stderr)
         sys.exit(1)
 
@@ -126,6 +126,7 @@ def make(filename, outfile):
         sys.exit(1)
 
     section = msgctxt = None
+    msgid = msgstr = b''
     fuzzy = 0
 
     # Start off assuming Latin-1, so everything decodes without failure,
@@ -177,7 +178,7 @@ def make(filename, outfile):
         # This is a message with plural forms
         elif l.startswith('msgid_plural'):
             if section != ID:
-                print('msgid_plural not preceded by msgid on %s:%d' % (infile, lno),
+                print(f'msgid_plural not preceded by msgid on {infile}:{lno}',
                       file=sys.stderr)
                 sys.exit(1)
             l = l[12:]
@@ -188,7 +189,7 @@ def make(filename, outfile):
             section = STR
             if l.startswith('msgstr['):
                 if not is_plural:
-                    print('plural without msgid_plural on %s:%d' % (infile, lno),
+                    print(f'plural without msgid_plural on {infile}:{lno}',
                           file=sys.stderr)
                     sys.exit(1)
                 l = l.split(']', 1)[1]
@@ -196,7 +197,7 @@ def make(filename, outfile):
                     msgstr += b'\0' # Separator of the various plural forms
             else:
                 if is_plural:
-                    print('indexed msgstr required for plural on  %s:%d' % (infile, lno),
+                    print(f'indexed msgstr required for plural on {infile}:{lno}',
                           file=sys.stderr)
                     sys.exit(1)
                 l = l[6:]
@@ -212,8 +213,7 @@ def make(filename, outfile):
         elif section == STR:
             msgstr += l.encode(encoding)
         else:
-            print('Syntax error on %s:%d' % (infile, lno), \
-                  'before:', file=sys.stderr)
+            print(f'Syntax error on {infile}:{lno} before:', file=sys.stderr)
             print(l, file=sys.stderr)
             sys.exit(1)
     # Add last entry
@@ -226,7 +226,7 @@ def make(filename, outfile):
     try:
         with open(outfile,"wb") as f:
             f.write(output)
-    except IOError as msg:
+    except OSError as msg:
         print(msg, file=sys.stderr)
 
 
index f46b05067d7fde84a6dee4e76898307ebe7ccb29..ddf4474d2bce55f7edd0ddd5db132ddea86ba88c 100755 (executable)
@@ -193,7 +193,7 @@ def make_escapes(pass_nonascii):
         escape = escape_ascii
     else:
         escape = escape_nonascii
-    escapes = [r"\%03o" % i for i in range(256)]
+    escapes = [fr"\{i:03o}" for i in range(256)]
     for i in range(32, 127):
         escapes[i] = chr(i)
     escapes[ord('\\')] = r'\\'
@@ -796,7 +796,7 @@ def main():
         try:
             with open(options.excludefilename) as fp:
                 options.toexclude = fp.readlines()
-        except IOError:
+        except OSError:
             print(f"Can't read --exclude-file: {options.excludefilename}",
                   file=sys.stderr)
             sys.exit(1)