From 8a546bb6ef45f124188363227e11e5e9e291a866 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 29 Mar 2022 10:34:21 +0200 Subject: Rename VersionUpgrade49to50 to VersionUpgrade413to50 It's going to upgrade from 4.13 to 5.0. We will not support an upgrade path from the alpha/preview-betas to the stable release. Contributes to issue CURA-8466. --- .../VersionUpgrade413to50/VersionUpgrade413to50.py | 118 +++++++++++++++++++++ .../VersionUpgrade413to50/__init__.py | 61 +++++++++++ .../VersionUpgrade413to50/plugin.json | 8 ++ .../VersionUpgrade49to50/VersionUpgrade49to50.py | 118 --------------------- .../VersionUpgrade49to50/__init__.py | 61 ----------- .../VersionUpgrade49to50/plugin.json | 8 -- 6 files changed, 187 insertions(+), 187 deletions(-) create mode 100644 plugins/VersionUpgrade/VersionUpgrade413to50/VersionUpgrade413to50.py create mode 100644 plugins/VersionUpgrade/VersionUpgrade413to50/__init__.py create mode 100644 plugins/VersionUpgrade/VersionUpgrade413to50/plugin.json delete mode 100644 plugins/VersionUpgrade/VersionUpgrade49to50/VersionUpgrade49to50.py delete mode 100644 plugins/VersionUpgrade/VersionUpgrade49to50/__init__.py delete mode 100644 plugins/VersionUpgrade/VersionUpgrade49to50/plugin.json diff --git a/plugins/VersionUpgrade/VersionUpgrade413to50/VersionUpgrade413to50.py b/plugins/VersionUpgrade/VersionUpgrade413to50/VersionUpgrade413to50.py new file mode 100644 index 0000000000..3278f6813f --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade413to50/VersionUpgrade413to50.py @@ -0,0 +1,118 @@ +# Copyright (c) 2022 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +import configparser +from typing import Tuple, List +import io +from UM.VersionUpgrade import VersionUpgrade + +_removed_settings = { + "travel_compensate_overlapping_walls_enabled", + "travel_compensate_overlapping_walls_0_enabled", + "travel_compensate_overlapping_walls_x_enabled", + "fill_perimeter_gaps", + "wall_min_flow", + "wall_min_flow_retract", + "speed_equalize_flow_enabled", + "speed_equalize_flow_min" +} + + +class VersionUpgrade413to50(VersionUpgrade): + def upgradePreferences(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: + """ + Upgrades preferences to remove from the visibility list the settings that were removed in this version. + It also changes the preferences to have the new version number. + + This removes any settings that were removed in the new Cura version. + :param serialized: The original contents of the preferences file. + :param filename: The file name of the preferences file. + :return: A list of new file names, and a list of the new contents for + those files. + """ + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialized) + + # Update version number. + parser["metadata"]["setting_version"] = "18" + + # Remove deleted settings from the visible settings list. + if "general" in parser and "visible_settings" in parser["general"]: + visible_settings = set(parser["general"]["visible_settings"].split(";")) + for removed in _removed_settings: + if removed in visible_settings: + visible_settings.remove(removed) + + # Replace Outer Before Inner Walls with equivalent. + if "outer_inset_first" in visible_settings: + visible_settings.remove("outer_inset_first") + visible_settings.add("inset_direction") + + parser["general"]["visible_settings"] = ";".join(visible_settings) + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] + + def upgradeInstanceContainer(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: + """ + Upgrades instance containers to remove the settings that were removed in this version. + It also changes the instance containers to have the new version number. + + This removes any settings that were removed in the new Cura version and updates settings that need to be updated + with a new value. + + :param serialized: The original contents of the instance container. + :param filename: The original file name of the instance container. + :return: A list of new file names, and a list of the new contents for + those files. + """ + parser = configparser.ConfigParser(interpolation = None, comment_prefixes = ()) + parser.read_string(serialized) + + # Update version number. + parser["metadata"]["setting_version"] = "18" + + if "values" in parser: + # Remove deleted settings from the instance containers. + for removed in _removed_settings: + if removed in parser["values"]: + del parser["values"][removed] + + # Replace Outer Before Inner Walls with equivalent setting. + if "outer_inset_first" in parser["values"]: + old_value = parser["values"]["outer_inset_first"] + if old_value.startswith("="): # Was already a formula. + old_value = old_value[1:] + parser["values"]["inset_direction"] = f"='outside_in' if ({old_value}) else 'inside_out'" # Makes it work both with plain setting values and formulas. + + # Disable Fuzzy Skin as it doesn't work with with the libArachne walls + if "magic_fuzzy_skin_enabled" in parser["values"]: + parser["values"]["magic_fuzzy_skin_enabled"] = "False" + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] + + def upgradeStack(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: + """ + Upgrades stacks to have the new version number. + + :param serialized: The original contents of the stack. + :param filename: The original file name of the stack. + :return: A list of new file names, and a list of the new contents for + those files. + """ + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialized) + + # Update version number. + if "metadata" not in parser: + parser["metadata"] = {} + + parser["general"]["version"] = "5" + parser["metadata"]["setting_version"] = "18" + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] diff --git a/plugins/VersionUpgrade/VersionUpgrade413to50/__init__.py b/plugins/VersionUpgrade/VersionUpgrade413to50/__init__.py new file mode 100644 index 0000000000..cf58afd26a --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade413to50/__init__.py @@ -0,0 +1,61 @@ +# Copyright (c) 2022 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from typing import Any, Dict, TYPE_CHECKING + +from . import VersionUpgrade413to50 + +if TYPE_CHECKING: + from UM.Application import Application + +upgrade = VersionUpgrade413to50.VersionUpgrade413to50() + +def getMetaData() -> Dict[str, Any]: + return { # Since there is no VersionUpgrade from 48 to 49 yet, upgrade the 48 profiles to 50. + "version_upgrade": { + # From To Upgrade function + ("preferences", 6000016): ("preferences", 6000018, upgrade.upgradePreferences), + ("machine_stack", 5000016): ("machine_stack", 5000018, upgrade.upgradeStack), + ("extruder_train", 5000016): ("extruder_train", 5000018, upgrade.upgradeStack), + ("machine_stack", 4000018): ("machine_stack", 5000018, upgrade.upgradeStack), # We made a mistake in the arachne beta 1 + ("extruder_train", 4000018): ("extruder_train", 5000018, upgrade.upgradeStack), # We made a mistake in the arachne beta 1 + ("definition_changes", 4000016): ("definition_changes", 4000018, upgrade.upgradeInstanceContainer), + ("quality_changes", 4000016): ("quality_changes", 4000018, upgrade.upgradeInstanceContainer), + ("quality", 4000016): ("quality", 4000018, upgrade.upgradeInstanceContainer), + ("user", 4000016): ("user", 4000018, upgrade.upgradeInstanceContainer), + }, + "sources": { + "preferences": { + "get_version": upgrade.getCfgVersion, + "location": {"."} + }, + "machine_stack": { + "get_version": upgrade.getCfgVersion, + "location": {"./machine_instances"} + }, + "extruder_train": { + "get_version": upgrade.getCfgVersion, + "location": {"./extruders"} + }, + "definition_changes": { + "get_version": upgrade.getCfgVersion, + "location": {"./definition_changes"} + }, + "quality_changes": { + "get_version": upgrade.getCfgVersion, + "location": {"./quality_changes"} + }, + "quality": { + "get_version": upgrade.getCfgVersion, + "location": {"./quality"} + }, + "user": { + "get_version": upgrade.getCfgVersion, + "location": {"./user"} + } + } + } + + +def register(app: "Application") -> Dict[str, Any]: + return {"version_upgrade": upgrade} diff --git a/plugins/VersionUpgrade/VersionUpgrade413to50/plugin.json b/plugins/VersionUpgrade/VersionUpgrade413to50/plugin.json new file mode 100644 index 0000000000..df3c53b5df --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade413to50/plugin.json @@ -0,0 +1,8 @@ +{ + "name": "Version Upgrade 4.13 to 5.0", + "author": "Ultimaker B.V.", + "version": "1.0.0", + "description": "Upgrades configurations from Cura 4.13 to Cura 5.0.", + "api": "7.9.0", + "i18n-catalog": "cura" +} diff --git a/plugins/VersionUpgrade/VersionUpgrade49to50/VersionUpgrade49to50.py b/plugins/VersionUpgrade/VersionUpgrade49to50/VersionUpgrade49to50.py deleted file mode 100644 index a3fccb68ea..0000000000 --- a/plugins/VersionUpgrade/VersionUpgrade49to50/VersionUpgrade49to50.py +++ /dev/null @@ -1,118 +0,0 @@ -# Copyright (c) 2021 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - -import configparser -from typing import Tuple, List -import io -from UM.VersionUpgrade import VersionUpgrade - -_removed_settings = { - "travel_compensate_overlapping_walls_enabled", - "travel_compensate_overlapping_walls_0_enabled", - "travel_compensate_overlapping_walls_x_enabled", - "fill_perimeter_gaps", - "wall_min_flow", - "wall_min_flow_retract", - "speed_equalize_flow_enabled", - "speed_equalize_flow_min" -} - - -class VersionUpgrade49to50(VersionUpgrade): - def upgradePreferences(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: - """ - Upgrades preferences to remove from the visibility list the settings that were removed in this version. - It also changes the preferences to have the new version number. - - This removes any settings that were removed in the new Cura version. - :param serialized: The original contents of the preferences file. - :param filename: The file name of the preferences file. - :return: A list of new file names, and a list of the new contents for - those files. - """ - parser = configparser.ConfigParser(interpolation = None) - parser.read_string(serialized) - - # Update version number. - parser["metadata"]["setting_version"] = "18" - - # Remove deleted settings from the visible settings list. - if "general" in parser and "visible_settings" in parser["general"]: - visible_settings = set(parser["general"]["visible_settings"].split(";")) - for removed in _removed_settings: - if removed in visible_settings: - visible_settings.remove(removed) - - # Replace Outer Before Inner Walls with equivalent. - if "outer_inset_first" in visible_settings: - visible_settings.remove("outer_inset_first") - visible_settings.add("inset_direction") - - parser["general"]["visible_settings"] = ";".join(visible_settings) - - result = io.StringIO() - parser.write(result) - return [filename], [result.getvalue()] - - def upgradeInstanceContainer(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: - """ - Upgrades instance containers to remove the settings that were removed in this version. - It also changes the instance containers to have the new version number. - - This removes any settings that were removed in the new Cura version and updates settings that need to be updated - with a new value. - - :param serialized: The original contents of the instance container. - :param filename: The original file name of the instance container. - :return: A list of new file names, and a list of the new contents for - those files. - """ - parser = configparser.ConfigParser(interpolation = None, comment_prefixes = ()) - parser.read_string(serialized) - - # Update version number. - parser["metadata"]["setting_version"] = "18" - - if "values" in parser: - # Remove deleted settings from the instance containers. - for removed in _removed_settings: - if removed in parser["values"]: - del parser["values"][removed] - - # Replace Outer Before Inner Walls with equivalent setting. - if "outer_inset_first" in parser["values"]: - old_value = parser["values"]["outer_inset_first"] - if old_value.startswith("="): # Was already a formula. - old_value = old_value[1:] - parser["values"]["inset_direction"] = f"='outside_in' if ({old_value}) else 'inside_out'" # Makes it work both with plain setting values and formulas. - - # Disable Fuzzy Skin as it doesn't work with with the libArachne walls - if "magic_fuzzy_skin_enabled" in parser["values"]: - parser["values"]["magic_fuzzy_skin_enabled"] = "False" - - result = io.StringIO() - parser.write(result) - return [filename], [result.getvalue()] - - def upgradeStack(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: - """ - Upgrades stacks to have the new version number. - - :param serialized: The original contents of the stack. - :param filename: The original file name of the stack. - :return: A list of new file names, and a list of the new contents for - those files. - """ - parser = configparser.ConfigParser(interpolation = None) - parser.read_string(serialized) - - # Update version number. - if "metadata" not in parser: - parser["metadata"] = {} - - parser["general"]["version"] = "5" - parser["metadata"]["setting_version"] = "18" - - result = io.StringIO() - parser.write(result) - return [filename], [result.getvalue()] diff --git a/plugins/VersionUpgrade/VersionUpgrade49to50/__init__.py b/plugins/VersionUpgrade/VersionUpgrade49to50/__init__.py deleted file mode 100644 index 3bf4bea4e1..0000000000 --- a/plugins/VersionUpgrade/VersionUpgrade49to50/__init__.py +++ /dev/null @@ -1,61 +0,0 @@ -# Copyright (c) 2020 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - -from typing import Any, Dict, TYPE_CHECKING - -from . import VersionUpgrade49to50 - -if TYPE_CHECKING: - from UM.Application import Application - -upgrade = VersionUpgrade49to50.VersionUpgrade49to50() - -def getMetaData() -> Dict[str, Any]: - return { # Since there is no VersionUpgrade from 48 to 49 yet, upgrade the 48 profiles to 50. - "version_upgrade": { - # From To Upgrade function - ("preferences", 6000016): ("preferences", 6000018, upgrade.upgradePreferences), - ("machine_stack", 5000016): ("machine_stack", 5000018, upgrade.upgradeStack), - ("extruder_train", 5000016): ("extruder_train", 5000018, upgrade.upgradeStack), - ("machine_stack", 4000018): ("machine_stack", 5000018, upgrade.upgradeStack), # We made a mistake in the arachne beta 1 - ("extruder_train", 4000018): ("extruder_train", 5000018, upgrade.upgradeStack), # We made a mistake in the arachne beta 1 - ("definition_changes", 4000016): ("definition_changes", 4000018, upgrade.upgradeInstanceContainer), - ("quality_changes", 4000016): ("quality_changes", 4000018, upgrade.upgradeInstanceContainer), - ("quality", 4000016): ("quality", 4000018, upgrade.upgradeInstanceContainer), - ("user", 4000016): ("user", 4000018, upgrade.upgradeInstanceContainer), - }, - "sources": { - "preferences": { - "get_version": upgrade.getCfgVersion, - "location": {"."} - }, - "machine_stack": { - "get_version": upgrade.getCfgVersion, - "location": {"./machine_instances"} - }, - "extruder_train": { - "get_version": upgrade.getCfgVersion, - "location": {"./extruders"} - }, - "definition_changes": { - "get_version": upgrade.getCfgVersion, - "location": {"./definition_changes"} - }, - "quality_changes": { - "get_version": upgrade.getCfgVersion, - "location": {"./quality_changes"} - }, - "quality": { - "get_version": upgrade.getCfgVersion, - "location": {"./quality"} - }, - "user": { - "get_version": upgrade.getCfgVersion, - "location": {"./user"} - } - } - } - - -def register(app: "Application") -> Dict[str, Any]: - return {"version_upgrade": upgrade} diff --git a/plugins/VersionUpgrade/VersionUpgrade49to50/plugin.json b/plugins/VersionUpgrade/VersionUpgrade49to50/plugin.json deleted file mode 100644 index bedc7d46e8..0000000000 --- a/plugins/VersionUpgrade/VersionUpgrade49to50/plugin.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "Version Upgrade 4.9 to 5.0", - "author": "Ultimaker B.V.", - "version": "1.0.0", - "description": "Upgrades configurations from Cura 4.9 to Cura 5.0.", - "api": "7.4.0", - "i18n-catalog": "cura" -} -- cgit v1.2.3