Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[CURA-12097] Upgrader for 5.8 -> 5.9 version. #19703

Merged
merged 1 commit into from
Oct 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
2 changes: 1 addition & 1 deletion cura/CuraApplication.py
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ class CuraApplication(QtApplication):
# SettingVersion represents the set of settings available in the machine/extruder definitions.
# You need to make sure that this version number needs to be increased if there is any non-backwards-compatible
# changes of the settings.
SettingVersion = 23
SettingVersion = 24

Created = False

Expand Down
103 changes: 103 additions & 0 deletions plugins/VersionUpgrade/VersionUpgrade58to59/VersionUpgrade58to59.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
# Copyright (c) 2024 UltiMaker
# Cura is released under the terms of the LGPLv3 or higher.

import configparser
from typing import Dict, List, Tuple
import io
from UM.VersionUpgrade import VersionUpgrade

# Just to be sure, since in my testing there were both 0.1.0 and 0.2.0 settings about.
_PLUGIN_NAME = "_plugin__curaenginegradualflow"
_FROM_PLUGINS_SETTINGS = {
"gradual_flow_enabled",
"max_flow_acceleration",
"layer_0_max_flow_acceleration",
"gradual_flow_discretisation_step_size",
"reset_flow_duration",
} # type: Set[str]

_NEW_SETTING_VERSION = "24"


class VersionUpgrade58to59(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"] = _NEW_SETTING_VERSION

# Fix renamed settings for visibility
if "visible_settings" in parser["general"]:
all_setting_keys = parser["general"]["visible_settings"].strip().split(";")
if all_setting_keys:
for idx, key in enumerate(all_setting_keys):
if key.startswith(_PLUGIN_NAME):
all_setting_keys[idx] = key.split("__")[-1]
parser["general"]["visible_settings"] = ";".join(all_setting_keys)

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"] = _NEW_SETTING_VERSION

# Rename settings.
if "values" in parser:
for key, value in parser["values"].items():
if key.startswith(_PLUGIN_NAME):
parser["values"][key.split("__")[-1]] = parser["values"][key]
del parser["values"][key]

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["metadata"]["setting_version"] = _NEW_SETTING_VERSION

result = io.StringIO()
parser.write(result)
return [filename], [result.getvalue()]
61 changes: 61 additions & 0 deletions plugins/VersionUpgrade/VersionUpgrade58to59/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# Copyright (c) 2024 UltiMaker
# Cura is released under the terms of the LGPLv3 or higher.

from typing import Any, Dict, TYPE_CHECKING

from . import VersionUpgrade58to59

if TYPE_CHECKING:
from UM.Application import Application

upgrade = VersionUpgrade58to59.VersionUpgrade58to59()


def getMetaData() -> Dict[str, Any]:
return {
"version_upgrade": {
# From To Upgrade function
("preferences", 7000023): ("preferences", 7000024, upgrade.upgradePreferences),
("machine_stack", 6000023): ("machine_stack", 6000024, upgrade.upgradeStack),
("extruder_train", 6000023): ("extruder_train", 6000024, upgrade.upgradeStack),
("definition_changes", 4000023): ("definition_changes", 4000024, upgrade.upgradeInstanceContainer),
("quality_changes", 4000023): ("quality_changes", 4000024, upgrade.upgradeInstanceContainer),
("quality", 4000023): ("quality", 4000024, upgrade.upgradeInstanceContainer),
("user", 4000023): ("user", 4000024, upgrade.upgradeInstanceContainer),
("intent", 4000023): ("intent", 4000024, 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}
8 changes: 8 additions & 0 deletions plugins/VersionUpgrade/VersionUpgrade58to59/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"name": "Version Upgrade 5.8 to 5.9",
"author": "UltiMaker",
"version": "1.0.0",
"description": "Upgrades configurations from Cura 5.8 to Cura 5.9.",
"api": 8,
"i18n-catalog": "cura"
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ version = 4
intent_category = engineering
material = generic_abs
quality_type = D010
setting_version = 23
setting_version = 24
type = intent
variant = DBE 0.40mm

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ version = 4
intent_category = engineering
material = generic_abs
quality_type = D015
setting_version = 23
setting_version = 24
type = intent
variant = DBE 0.40mm

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ version = 4
intent_category = engineering
material = generic_abs
quality_type = D020
setting_version = 23
setting_version = 24
type = intent
variant = DBE 0.40mm

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ version = 4
intent_category = quick
material = generic_abs
quality_type = D020
setting_version = 23
setting_version = 24
type = intent
variant = DBE 0.40mm

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ version = 4
intent_category = quick
material = generic_abs
quality_type = D030
setting_version = 23
setting_version = 24
type = intent
variant = DBE 0.40mm

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ version = 4
intent_category = engineering
material = generic_abs
quality_type = D010
setting_version = 23
setting_version = 24
type = intent
variant = FBE 0.40mm

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ version = 4
intent_category = engineering
material = generic_abs
quality_type = D015
setting_version = 23
setting_version = 24
type = intent
variant = FBE 0.40mm

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ version = 4
intent_category = engineering
material = generic_abs
quality_type = D020
setting_version = 23
setting_version = 24
type = intent
variant = FBE 0.40mm

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ version = 4
intent_category = quick
material = generic_abs
quality_type = D020
setting_version = 23
setting_version = 24
type = intent
variant = FBE 0.40mm

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ version = 4
intent_category = quick
material = generic_abs
quality_type = D030
setting_version = 23
setting_version = 24
type = intent
variant = FBE 0.40mm

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ version = 4
intent_category = engineering
material = generic_petg
quality_type = D010
setting_version = 23
setting_version = 24
type = intent
variant = DBE 0.40mm

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ version = 4
intent_category = engineering
material = generic_petg
quality_type = D015
setting_version = 23
setting_version = 24
type = intent
variant = DBE 0.40mm

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ version = 4
intent_category = engineering
material = generic_petg
quality_type = D020
setting_version = 23
setting_version = 24
type = intent
variant = DBE 0.40mm

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ version = 4
intent_category = quick
material = generic_petg
quality_type = D020
setting_version = 23
setting_version = 24
type = intent
variant = DBE 0.40mm

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ version = 4
intent_category = quick
material = generic_petg
quality_type = D020
setting_version = 23
setting_version = 24
type = intent
variant = DBE 0.40mm

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ version = 4
intent_category = quick
material = generic_petg
quality_type = D030
setting_version = 23
setting_version = 24
type = intent
variant = DBE 0.40mm

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ version = 4
intent_category = engineering
material = generic_petg
quality_type = D010
setting_version = 23
setting_version = 24
type = intent
variant = FBE 0.40mm

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ version = 4
intent_category = engineering
material = generic_petg
quality_type = D015
setting_version = 23
setting_version = 24
type = intent
variant = FBE 0.40mm

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ version = 4
intent_category = engineering
material = generic_petg
quality_type = D020
setting_version = 23
setting_version = 24
type = intent
variant = FBE 0.40mm

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ version = 4
intent_category = quick
material = generic_petg
quality_type = D015
setting_version = 23
setting_version = 24
type = intent
variant = FBE 0.40mm

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ version = 4
intent_category = quick
material = generic_petg
quality_type = D020
setting_version = 23
setting_version = 24
type = intent
variant = FBE 0.40mm

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ version = 4
intent_category = quick
material = generic_petg
quality_type = D030
setting_version = 23
setting_version = 24
type = intent
variant = FBE 0.40mm

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ version = 4
intent_category = engineering
material = generic_pla
quality_type = D010
setting_version = 23
setting_version = 24
type = intent
variant = DBE 0.40mm

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ version = 4
intent_category = engineering
material = generic_pla
quality_type = D015
setting_version = 23
setting_version = 24
type = intent
variant = DBE 0.40mm

Expand Down
Loading
Loading