# Copyright (c) 2025 Riverbank Computing Limited # # This file is part of PyQt6. # # This file may be used under the terms of the GNU General Public License # version 3.0 as published by the Free Software Foundation and appearing in # the file LICENSE included in the packaging of this file. Please review the # following information to ensure the GNU General Public License version 3.0 # requirements will be met: http://www.gnu.org/copyleft/gpl.html. # # If you do not wish to use this file under the terms of the GPL version 3.0 # then you may purchase a commercial license. For more information contact # info@riverbankcomputing.com. # # This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE # WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. import sys from .lupdate import lupdate def main(): """ Update a .ts file from a .py file. """ import argparse from PyQt6.QtCore import PYQT_VERSION_STR from .user import UserException # The program name. PROGRAM_NAME = 'pylupdate6' # Parse the command line. parser = argparse.ArgumentParser(prog=PROGRAM_NAME, description="Python Language Update Tool") parser.add_argument('-V', '--version', action='version', version=PYQT_VERSION_STR) parser.add_argument('--exclude', action='append', metavar="PATTERN", help="exclude matching files when reading a directory") parser.add_argument('--no-obsolete', '-no-obsolete', action='store_true', help="remove any obsolete translated messages") parser.add_argument('--no-summary', action='store_true', help="suppress the summary") parser.add_argument('--ts', '-ts', action='append', metavar="FILE", required=True, help="a .ts file to update or create") parser.add_argument('--verbose', action='store_true', help="show progress messages") parser.add_argument('file', nargs='+', help="the .py or .ui file, or directory to be read") args = parser.parse_args() # Update the translation files. try: lupdate(args.file, args.ts, args.no_obsolete, args.no_summary, args.verbose, args.exclude) except UserException as e: print("{0}: {1}".format(PROGRAM_NAME, e), file=sys.stderr) return 1 except: if args.verbose: import traceback traceback.print_exception(*sys.exc_info()) else: print("""An unexpected error occurred. Check that you are using the latest version of {name} and send an error report to the PyQt mailing list and include the following information: - the version of {name} ({version}) - the .py or .ui file that caused the error (as an attachment) - the verbose output of {name} (use the --verbose flag when calling {name})""".format(name=PROGRAM_NAME, version=PYQT_VERSION_STR), file=sys.stderr) return 2 return 0 if __name__ == '__main__': sys.exit(main())