--- a/src/eric7/Globals/__init__.py Sun Jun 02 09:51:47 2024 +0200 +++ b/src/eric7/Globals/__init__.py Wed Jul 03 09:20:41 2024 +0200 @@ -13,10 +13,19 @@ import os -import semver +from PyQt6.QtCore import QProcess, qVersion -from PyQt6.QtCore import QByteArray, QCoreApplication, QProcess, qVersion - +from eric7.EricUtilities import ( # noqa + dataString, + strGroup, + strToQByteArray, + toBool, + toByteArray, + toDict, + toList, + versionIsValid, + versionToTuple, +) from eric7.SystemUtilities import PythonUtilities try: @@ -94,219 +103,6 @@ ############################################################################### -## functions for version handling -############################################################################### - - -def versionIsValid(version): - """ - Function to check, if the given version string is valid. - - @param version version string - @type str - @return flag indicating validity - @rtype bool - """ - try: - return semver.VersionInfo.is_valid(version) - except AttributeError: - return semver.VersionInfo.isvalid(version) - - -def versionToTuple(version): - """ - Module function to convert a version string into a tuple. - - Note: A version string consists of non-negative decimals separated by "." - optionally followed by a suffix. Suffix is everything after the last - decimal. - - @param version version string - @type str - @return version named tuple containing the version parts - @rtype semver.VersionInfo - """ - while version and not version[0].isdecimal(): - # sanitize version string (get rid of leading non-decimal characters) - version = version[1:] - - while len(version.split(".")) < 3: - # ensure the version string contains at least three parts - version += ".0" - - if versionIsValid(version): - return semver.VersionInfo.parse(version) - else: - return semver.VersionInfo(0, 0, 0) - - -############################################################################### -## functions for extended string handling -############################################################################### - - -def strGroup(txt, sep, groupLen=4): - """ - Module function to group a string into sub-strings separated by a - separator. - - @param txt text to be grouped - @type str - @param sep separator string - @type str - @param groupLen length of each group - @type int - @return result string - @rtype str - """ - groups = [] - - while len(txt) // groupLen != 0: - groups.insert(0, txt[-groupLen:]) - txt = txt[:-groupLen] - if len(txt) > 0: - groups.insert(0, txt) - return sep.join(groups) - - -def strToQByteArray(txt): - """ - Module function to convert a Python string into a QByteArray. - - @param txt Python string to be converted - @type str, bytes, bytearray - @return converted QByteArray - @rtype QByteArray - """ - if isinstance(txt, str): - txt = txt.encode("utf-8") - - return QByteArray(txt) - - -def dataString(size, loc=None): - """ - Module function to generate a formatted size string. - - @param size size to be formatted - @type int - @param loc locale to be used for localized size strings (defaults to None) - @type QLocale (optional) - @return formatted data string - @rtype str - """ - if loc is None: - if size < 1024: - return QCoreApplication.translate("Globals", "{0:4.2f} Bytes").format(size) - elif size < 1024 * 1024: - size /= 1024 - return QCoreApplication.translate("Globals", "{0:4.2f} KiB").format(size) - elif size < 1024 * 1024 * 1024: - size /= 1024 * 1024 - return QCoreApplication.translate("Globals", "{0:4.2f} MiB").format(size) - elif size < 1024 * 1024 * 1024 * 1024: - size /= 1024 * 1024 * 1024 - return QCoreApplication.translate("Globals", "{0:4.2f} GiB").format(size) - else: - size /= 1024 * 1024 * 1024 * 1024 - return QCoreApplication.translate("Globals", "{0:4.2f} TiB").format(size) - else: - if size < 1024: - return QCoreApplication.translate("Globals", "{0} Bytes").format( - loc.toString(size, "f", 2) - ) - elif size < 1024 * 1024: - size /= 1024 - return QCoreApplication.translate("Globals", "{0} KiB").format( - loc.toString(size, "f", 2) - ) - elif size < 1024 * 1024 * 1024: - size /= 1024 * 1024 - return QCoreApplication.translate("Globals", "{0} MiB").format( - loc.toString(size, "f", 2) - ) - elif size < 1024 * 1024 * 1024 * 1024: - size /= 1024 * 1024 * 1024 - return QCoreApplication.translate("Globals", "{0} GiB").format( - loc.toString(size, "f", 2) - ) - else: - size /= 1024 * 1024 * 1024 * 1024 - return QCoreApplication.translate("Globals", "{0} TiB").format( - loc.toString(size, "f", 2) - ) - - -############################################################################### -## functions for converting QSetting return types to valid types -############################################################################### - - -def toBool(value): - """ - Module function to convert a value to bool. - - @param value value to be converted - @type str - @return converted data - @rtype bool - """ - if value in ["True", "true", "1", "Yes", "yes"]: - return True - elif value in ["False", "false", "0", "No", "no"]: - return False - else: - return bool(value) - - -def toList(value): - """ - Module function to convert a value to a list. - - @param value value to be converted - @type None, list or Any - @return converted data - @rtype list - """ - if value is None: - return [] - elif not isinstance(value, list): - return [value] - else: - return value - - -def toByteArray(value): - """ - Module function to convert a value to a byte array. - - @param value value to be converted - @type QByteArray or None - @return converted data - @rtype QByteArray - """ - if value is None: - return QByteArray() - else: - return value - - -def toDict(value): - """ - Module function to convert a value to a dictionary. - - @param value value to be converted - @type dict or None - @return converted data - @rtype dict - """ - if value is None: - return {} - else: - return value - - -############################################################################### ## functions for web browser variant detection ###############################################################################