diff --git a/cura/API/Backups.py b/cura/API/Backups.py new file mode 100644 index 0000000000..ba416bd870 --- /dev/null +++ b/cura/API/Backups.py @@ -0,0 +1,32 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from cura.Backups.BackupsManager import BackupsManager + + +class Backups: + """ + The backups API provides a version-proof bridge between Cura's BackupManager and plugins that hook into it. + + Usage: + from cura.API import CuraAPI + api = CuraAPI() + api.backups.createBackup() + api.backups.restoreBackup(my_zip_file, {"cura_release": "3.1"}) + """ + + manager = BackupsManager() # Re-used instance of the backups manager. + + def createBackup(self) -> (bytes, dict): + """ + Create a new backup using the BackupsManager. + :return: Tuple containing a ZIP file with the backup data and a dict with meta data about the backup. + """ + return self.manager.createBackup() + + def restoreBackup(self, zip_file: bytes, meta_data: dict) -> None: + """ + Restore a backup using the BackupManager. + :param zip_file: A ZIP file containing the actual backup data. + :param meta_data: Some meta data needed for restoring a backup, like the Cura version number. + """ + return self.manager.restoreBackup(zip_file, meta_data) diff --git a/cura/API/__init__.py b/cura/API/__init__.py new file mode 100644 index 0000000000..7dd5d8f79e --- /dev/null +++ b/cura/API/__init__.py @@ -0,0 +1,19 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from UM.PluginRegistry import PluginRegistry +from cura.API.Backups import Backups + + +class CuraAPI: + """ + The official Cura API that plugins can use to interact with Cura. + Python does not technically prevent talking to other classes as well, + but this API provides a version-safe interface with proper deprecation warnings etc. + Usage of any other methods than the ones provided in this API can cause plugins to be unstable. + """ + + # For now we use the same API version to be consistent. + VERSION = PluginRegistry.APIVersion + + # Backups API. + backups = Backups()