def _loadChangeLogText(self) -> str: # Load change log texts and organize them with a dict file_path = Resources.getPath(Resources.Texts, "change_log.txt") change_logs_dict = {} # type: Dict[Version, Dict[str, List[str]]] with open(file_path, "r", encoding="utf-8") as f: open_version = None # type: Optional[Version] open_header = "" # Initialise to an empty header in case there is no "*" in the first line of the changelog for line in f: line = line.replace("\n", "") if "[" in line and "]" in line: line = line.replace("[", "") line = line.replace("]", "") open_version = Version(line) if open_version > Version( [14, 99, 99] ): # Bit of a hack: We released the 15.x.x versions before 2.x open_version = Version([ 0, open_version.getMinor(), open_version.getRevision(), open_version.getPostfixVersion() ]) open_header = "" change_logs_dict[open_version] = collections.OrderedDict() elif line.startswith("*"): open_header = line.replace("*", "") change_logs_dict[cast(Version, open_version)][open_header] = [] elif line != "": if open_header not in change_logs_dict[cast( Version, open_version)]: change_logs_dict[cast(Version, open_version)][open_header] = [] change_logs_dict[cast( Version, open_version)][open_header].append(line) # Format changelog text content = "" for version in sorted(change_logs_dict.keys(), reverse=True): text_version = version if version < Version([ 1, 0, 0 ]): # Bit of a hack: We released the 15.x.x versions before 2.x text_version = Version([ 15, version.getMinor(), version.getRevision(), version.getPostfixVersion() ]) content += "<h1>" + str(text_version) + "</h1><br>" content += "" for change in change_logs_dict[version]: if str(change) != "": content += "<b>" + str(change) + "</b><br>" for line in change_logs_dict[version][change]: content += str(line) + "<br>" content += "<br>" return content
def test_versionPostfix(): version = Version("1.2.3-alpha.4") assert version.getPostfixType() == "alpha" assert version.getPostfixVersion() == 4 assert version.hasPostFix() assert not Version("").hasPostFix() assert version <= Version("1.2.3-alpha.5") assert version < Version("1.2.3-alpha.5")
def _loadChangeLogText(self) -> str: # Load change log texts and organize them with a dict file_path = Resources.getPath(Resources.Texts, "change_log.txt") change_logs_dict = {} # type: Dict[Version, Dict[str, List[str]]] with open(file_path, "r", encoding = "utf-8") as f: open_version = None # type: Optional[Version] open_header = "" # Initialise to an empty header in case there is no "*" in the first line of the changelog for line in f: line = line.replace("\n", "") if "[" in line and "]" in line: line = line.replace("[", "") line = line.replace("]", "") open_version = Version(line) if open_version > Version([14, 99, 99]): # Bit of a hack: We released the 15.x.x versions before 2.x open_version = Version([0, open_version.getMinor(), open_version.getRevision(), open_version.getPostfixVersion()]) open_header = "" change_logs_dict[open_version] = collections.OrderedDict() elif line.startswith("*"): open_header = line.replace("*", "") change_logs_dict[cast(Version, open_version)][open_header] = [] elif line != "": if open_header not in change_logs_dict[cast(Version, open_version)]: change_logs_dict[cast(Version, open_version)][open_header] = [] change_logs_dict[cast(Version, open_version)][open_header].append(line) # Format changelog text content = "" for version in sorted(change_logs_dict.keys(), reverse = True): text_version = version if version < Version([1, 0, 0]): # Bit of a hack: We released the 15.x.x versions before 2.x text_version = Version([15, version.getMinor(), version.getRevision(), version.getPostfixVersion()]) content += "<h1>" + str(text_version) + "</h1><br>" content += "" for change in change_logs_dict[version]: if str(change) != "": content += "<b>" + str(change) + "</b><br>" for line in change_logs_dict[version][change]: content += str(line) + "<br>" content += "<br>" return content
def _loadChangeLogText(self) -> str: # Load change log texts and organize them with a dict try: file_path = Resources.getPath(Resources.Texts, "change_log.txt") except FileNotFoundError as e: # I have no idea how / when this happens, but we're getting crash reports about it. return catalog.i18nc("@text:window", "The release notes could not be opened.") + "<br>" + str(e) change_logs_dict = {} # type: Dict[Version, Dict[str, List[str]]] try: with open(file_path, "r", encoding = "utf-8") as f: open_version = None # type: Optional[Version] open_header = "" # Initialise to an empty header in case there is no "*" in the first line of the changelog for line in f: line = line.replace("\n", "") if "[" in line and "]" in line: line = line.replace("[", "") line = line.replace("]", "") open_version = Version(line) if open_version < Version([0, 0, 1]): # Something went wrong with parsing, assume non-numerical alternate version that should be on top. open_version = Version([99, 99, 99]) if Version([14, 99, 99]) < open_version < Version([16, 0, 0]): # Bit of a hack: We released the 15.x.x versions before 2.x open_version = Version([0, open_version.getMinor(), open_version.getRevision(), open_version.getPostfixVersion()]) open_header = "" change_logs_dict[open_version] = collections.OrderedDict() elif line.startswith("*"): open_header = line.replace("*", "") change_logs_dict[cast(Version, open_version)][open_header] = [] elif line != "": if open_header not in change_logs_dict[cast(Version, open_version)]: change_logs_dict[cast(Version, open_version)][open_header] = [] change_logs_dict[cast(Version, open_version)][open_header].append(line) except EnvironmentError as e: return catalog.i18nc("@text:window", "The release notes could not be opened.") + "<br>" + str(e) # Format changelog text content = "" for version in sorted(change_logs_dict.keys(), reverse = True): text_version = version if version < Version([1, 0, 0]): # Bit of a hack: We released the 15.x.x versions before 2.x text_version = Version([15, version.getMinor(), version.getRevision(), version.getPostfixVersion()]) if version > Version([99, 0, 0]): # Leave it out altogether if it was originally a non-numbered version. text_version = "" content += ("<h1>" + str(text_version) + "</h1><br>") if text_version else "" content += "" for change in change_logs_dict[version]: if str(change) != "": content += "<b>" + str(change) + "</b><br>" for line in change_logs_dict[version][change]: content += str(line) + "<br>" content += "<br>" return content