# -*- coding: utf-8 -*- # File generated by PyInstaller GUI Wrapper. DO NOT EDIT MANUALLY. # Contains build-time information scraped from Git (if available) # and a helper function to format version strings. import re # --- Version Data (Generated) --- # This section is automatically generated by the build process. __version__ = "v.0.0.0.21-dirty" GIT_COMMIT_HASH = "0d6abab4569faa6bad14e2a02f653387c5b4b254" GIT_BRANCH = "master" BUILD_TIMESTAMP = "2025-05-27T08:58:14Z" IS_GIT_REPO = True # --- Default Values (for comparison or fallback) --- DEFAULT_VERSION = "0.0.0+unknown" DEFAULT_COMMIT = "Unknown" DEFAULT_BRANCH = "Unknown" # --- Helper Function --- def get_version_string(format_string=None): """ Returns a formatted string based on the build version information. Args: format_string (str, optional): A format string using placeholders. Defaults to "{{version}} ({{branch}}/{{commit_short}})" if None. Placeholders: {{version}}: Full version string (e.g., 'v1.0.0-5-gabcdef-dirty') {{tag}}: Clean tag part if exists (e.g., 'v1.0.0'), else DEFAULT_VERSION. {{commit}}: Full Git commit hash. {{commit_short}}: Short Git commit hash (7 chars). {{branch}}: Git branch name. {{dirty}}: '-dirty' if the repo was dirty, empty otherwise. {{timestamp}}: Full build timestamp (ISO 8601 UTC). {{timestamp_short}}: Build date only (YYYY-MM-DD). {{is_git}}: 'Git' if IS_GIT_REPO is True, 'Unknown' otherwise. Returns: str: The formatted version string, or an error message if formatting fails. """ if format_string is None: format_string = "{version} ({branch}/{commit_short})" # Sensible default replacements = {} try: # Prepare data dictionary for substitution replacements['version'] = __version__ if __version__ else DEFAULT_VERSION replacements['commit'] = GIT_COMMIT_HASH if GIT_COMMIT_HASH else DEFAULT_COMMIT replacements['commit_short'] = GIT_COMMIT_HASH[:7] if GIT_COMMIT_HASH and len(GIT_COMMIT_HASH) >= 7 else DEFAULT_COMMIT replacements['branch'] = GIT_BRANCH if GIT_BRANCH else DEFAULT_BRANCH replacements['timestamp'] = BUILD_TIMESTAMP if BUILD_TIMESTAMP else "Unknown" replacements['timestamp_short'] = BUILD_TIMESTAMP.split('T')[0] if BUILD_TIMESTAMP and 'T' in BUILD_TIMESTAMP else "Unknown" replacements['is_git'] = "Git" if IS_GIT_REPO else "Unknown" replacements['dirty'] = "-dirty" if __version__ and __version__.endswith('-dirty') else "" # Extract clean tag using regex (handles versions like v1.0.0, 1.0.0) tag = DEFAULT_VERSION if __version__ and IS_GIT_REPO: # Match optional 'v' prefix, then major.minor.patch match = re.match(r'^(v?([0-9]+)\.([0-9]+)\.([0-9]+))', __version__) if match: tag = match.group(1) # Get the full tag (e.g., 'v1.0.0') replacements['tag'] = tag # Perform substitution using regex to find placeholders {placeholder} output_string = format_string # Iterate through placeholders and replace them in the format string for placeholder, value in replacements.items(): # Compile regex pattern for {placeholder}, allowing for whitespace inside braces pattern = re.compile(r'{\s*' + re.escape(placeholder) + r'\s*}') # Substitute found patterns with the corresponding string value output_string = pattern.sub(str(value), output_string) # Optional: Check if any placeholders remain unsubstituted (could indicate typo) if re.search(r'{\s*[\w_]+\s*}', output_string): # You might want to log this or handle it, for now, we return the string as is # print(f"Warning: Unsubstituted placeholders remain in version string: {output_string}") pass return output_string except Exception as e: # Return a simple error message in case of unexpected formatting issues # Avoid printing directly from this generated function return f"[Formatting Error: {e}]"