Exemple #1
0
    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
Exemple #2
0
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")
Exemple #3
0
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")
Exemple #4
0
    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
Exemple #5
0
    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