Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Ultimaker/Cura.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cura/Arranging/Arrange.py5
-rw-r--r--cura/AutoSave.py14
-rwxr-xr-xcura/CuraApplication.py10
-rw-r--r--cura/CuraPackageManager.py10
-rw-r--r--cura/Layer.py4
-rw-r--r--cura/LayerDataDecorator.py2
-rw-r--r--cura/LayerPolygon.py18
-rw-r--r--cura/Machines/ContainerNode.py2
-rw-r--r--cura/Machines/ContainerTree.py6
-rw-r--r--cura/Machines/MachineErrorChecker.py15
-rw-r--r--cura/Machines/MaterialNode.py1
-rw-r--r--cura/OAuth2/Models.py7
-rw-r--r--cura/Operations/PlatformPhysicsOperation.py13
-rw-r--r--cura/Operations/SetBuildPlateNumberOperation.py6
-rw-r--r--cura/Operations/SetParentOperation.py13
-rw-r--r--cura/PrinterOutput/Models/PrintJobOutputModel.py2
-rw-r--r--cura/Scene/BlockSlicingDecorator.py2
-rw-r--r--cura/UI/MachineActionManager.py2
18 files changed, 73 insertions, 59 deletions
diff --git a/cura/Arranging/Arrange.py b/cura/Arranging/Arrange.py
index caa7aae910..8f7ba5ccfe 100644
--- a/cura/Arranging/Arrange.py
+++ b/cura/Arranging/Arrange.py
@@ -1,6 +1,6 @@
# Copyright (c) 2018 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher.
-from typing import List
+from typing import List, Optional
from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator
from UM.Logger import Logger
@@ -8,6 +8,7 @@ from UM.Math.Polygon import Polygon
from UM.Math.Vector import Vector
from UM.Scene.SceneNode import SceneNode
from cura.Arranging.ShapeArray import ShapeArray
+from cura.BuildVolume import BuildVolume
from cura.Scene import ZOffsetDecorator
from collections import namedtuple
@@ -27,7 +28,7 @@ LocationSuggestion = namedtuple("LocationSuggestion", ["x", "y", "penalty_points
#
# Note: Make sure the scale is the same between ShapeArray objects and the Arrange instance.
class Arrange:
- build_volume = None
+ build_volume = None # type: Optional[BuildVolume]
def __init__(self, x, y, offset_x, offset_y, scale= 0.5):
self._scale = scale # convert input coordinates to arrange coordinates
diff --git a/cura/AutoSave.py b/cura/AutoSave.py
index 3b42fdafdf..2c1dbe4a84 100644
--- a/cura/AutoSave.py
+++ b/cura/AutoSave.py
@@ -2,12 +2,16 @@
# Cura is released under the terms of the LGPLv3 or higher.
from PyQt5.QtCore import QTimer
+from typing import Any, TYPE_CHECKING
from UM.Logger import Logger
+if TYPE_CHECKING:
+ from cura.CuraApplication import CuraApplication
+
class AutoSave:
- def __init__(self, application):
+ def __init__(self, application: "CuraApplication") -> None:
self._application = application
self._application.getPreferences().preferenceChanged.connect(self._triggerTimer)
@@ -22,14 +26,14 @@ class AutoSave:
self._enabled = True
self._saving = False
- def initialize(self):
+ def initialize(self) -> None:
# only initialise if the application is created and has started
self._change_timer.timeout.connect(self._onTimeout)
self._application.globalContainerStackChanged.connect(self._onGlobalStackChanged)
self._onGlobalStackChanged()
self._triggerTimer()
- def _triggerTimer(self, *args):
+ def _triggerTimer(self, *args: Any) -> None:
if not self._saving:
self._change_timer.start()
@@ -40,7 +44,7 @@ class AutoSave:
else:
self._change_timer.stop()
- def _onGlobalStackChanged(self):
+ def _onGlobalStackChanged(self) -> None:
if self._global_stack:
self._global_stack.propertyChanged.disconnect(self._triggerTimer)
self._global_stack.containersChanged.disconnect(self._triggerTimer)
@@ -51,7 +55,7 @@ class AutoSave:
self._global_stack.propertyChanged.connect(self._triggerTimer)
self._global_stack.containersChanged.connect(self._triggerTimer)
- def _onTimeout(self):
+ def _onTimeout(self) -> None:
self._saving = True # To prevent the save process from triggering another autosave.
Logger.log("d", "Autosaving preferences, instances and profiles")
diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py
index 8dd49c74f1..c1c2448a4d 100755
--- a/cura/CuraApplication.py
+++ b/cura/CuraApplication.py
@@ -4,7 +4,7 @@
import os
import sys
import time
-from typing import cast, TYPE_CHECKING, Optional, Callable, List
+from typing import cast, TYPE_CHECKING, Optional, Callable, List, Any
import numpy
@@ -193,7 +193,7 @@ class CuraApplication(QtApplication):
self._cura_package_manager = None
- self._machine_action_manager = None
+ self._machine_action_manager = None # type: Optional[MachineActionManager.MachineActionManager]
self.empty_container = None # type: EmptyInstanceContainer
self.empty_definition_changes_container = None # type: EmptyInstanceContainer
@@ -699,7 +699,7 @@ class CuraApplication(QtApplication):
self._message_box_callback_arguments = []
# Cura has multiple locations where instance containers need to be saved, so we need to handle this differently.
- def saveSettings(self):
+ def saveSettings(self) -> None:
if not self.started:
# Do not do saving during application start or when data should not be saved on quit.
return
@@ -989,8 +989,8 @@ class CuraApplication(QtApplication):
## Get the machine action manager
# We ignore any *args given to this, as we also register the machine manager as qml singleton.
# It wants to give this function an engine and script engine, but we don't care about that.
- def getMachineActionManager(self, *args):
- return self._machine_action_manager
+ def getMachineActionManager(self, *args: Any) -> MachineActionManager.MachineActionManager:
+ return cast(MachineActionManager.MachineActionManager, self._machine_action_manager)
@pyqtSlot(result = QObject)
def getMaterialManagementModel(self) -> MaterialManagementModel:
diff --git a/cura/CuraPackageManager.py b/cura/CuraPackageManager.py
index 6422469bdf..99f2072644 100644
--- a/cura/CuraPackageManager.py
+++ b/cura/CuraPackageManager.py
@@ -1,7 +1,7 @@
# Copyright (c) 2018 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher.
-from typing import List, Tuple
+from typing import List, Tuple, TYPE_CHECKING, Optional
from cura.CuraApplication import CuraApplication #To find some resource types.
from cura.Settings.GlobalStack import GlobalStack
@@ -9,12 +9,16 @@ from cura.Settings.GlobalStack import GlobalStack
from UM.PackageManager import PackageManager #The class we're extending.
from UM.Resources import Resources #To find storage paths for some resource types.
+if TYPE_CHECKING:
+ from UM.Qt.QtApplication import QtApplication
+ from PyQt5.QtCore import QObject
+
class CuraPackageManager(PackageManager):
- def __init__(self, application, parent = None):
+ def __init__(self, application: "QtApplication", parent: Optional["QObject"] = None):
super().__init__(application, parent)
- def initialize(self):
+ def initialize(self) -> None:
self._installation_dirs_dict["materials"] = Resources.getStoragePath(CuraApplication.ResourceTypes.MaterialInstanceContainer)
self._installation_dirs_dict["qualities"] = Resources.getStoragePath(CuraApplication.ResourceTypes.QualityInstanceContainer)
diff --git a/cura/Layer.py b/cura/Layer.py
index 73fda64a45..933d4436c9 100644
--- a/cura/Layer.py
+++ b/cura/Layer.py
@@ -33,10 +33,10 @@ class Layer:
def elementCount(self):
return self._element_count
- def setHeight(self, height):
+ def setHeight(self, height: float) -> None:
self._height = height
- def setThickness(self, thickness):
+ def setThickness(self, thickness: float) -> None:
self._thickness = thickness
def lineMeshVertexCount(self) -> int:
diff --git a/cura/LayerDataDecorator.py b/cura/LayerDataDecorator.py
index ef82d8f5cc..36466cac72 100644
--- a/cura/LayerDataDecorator.py
+++ b/cura/LayerDataDecorator.py
@@ -9,7 +9,7 @@ from cura.LayerData import LayerData
## Simple decorator to indicate a scene node holds layer data.
class LayerDataDecorator(SceneNodeDecorator):
- def __init__(self):
+ def __init__(self) -> None:
super().__init__()
self._layer_data = None # type: Optional[LayerData]
diff --git a/cura/LayerPolygon.py b/cura/LayerPolygon.py
index 0d6489aaa2..ca752e35ee 100644
--- a/cura/LayerPolygon.py
+++ b/cura/LayerPolygon.py
@@ -149,17 +149,17 @@ class LayerPolygon:
def getColors(self):
return self._colors
- def mapLineTypeToColor(self, line_types):
+ def mapLineTypeToColor(self, line_types: numpy.ndarray) -> numpy.ndarray:
return self._color_map[line_types]
- def isInfillOrSkinType(self, line_types):
+ def isInfillOrSkinType(self, line_types: numpy.ndarray) -> numpy.ndarray:
return self._isInfillOrSkinTypeMap[line_types]
- def lineMeshVertexCount(self):
- return (self._vertex_end - self._vertex_begin)
+ def lineMeshVertexCount(self) -> int:
+ return self._vertex_end - self._vertex_begin
- def lineMeshElementCount(self):
- return (self._index_end - self._index_begin)
+ def lineMeshElementCount(self) -> int:
+ return self._index_end - self._index_begin
@property
def extruder(self):
@@ -202,7 +202,7 @@ class LayerPolygon:
return self._jump_count
# Calculate normals for the entire polygon using numpy.
- def getNormals(self):
+ def getNormals(self) -> numpy.ndarray:
normals = numpy.copy(self._data)
normals[:, 1] = 0.0 # We are only interested in 2D normals
@@ -226,11 +226,11 @@ class LayerPolygon:
return normals
- __color_map = None # type: numpy.ndarray[Any]
+ __color_map = None # type: numpy.ndarray
## Gets the instance of the VersionUpgradeManager, or creates one.
@classmethod
- def getColorMap(cls):
+ def getColorMap(cls) -> numpy.ndarray:
if cls.__color_map is None:
theme = QtApplication.getInstance().getTheme()
cls.__color_map = numpy.array([
diff --git a/cura/Machines/ContainerNode.py b/cura/Machines/ContainerNode.py
index a8bbf0a537..8a9ddcc39b 100644
--- a/cura/Machines/ContainerNode.py
+++ b/cura/Machines/ContainerNode.py
@@ -26,7 +26,7 @@ class ContainerNode:
## Gets the metadata of the container that this node represents.
# Getting the metadata from the container directly is about 10x as fast.
# \return The metadata of the container in this node.
- def getMetadata(self):
+ def getMetadata(self) -> Dict[str, Any]:
return ContainerRegistry.getInstance().findContainersMetadata(id = self.container_id)[0]
## Get an entry from the metadata of the container that this node contains.
diff --git a/cura/Machines/ContainerTree.py b/cura/Machines/ContainerTree.py
index c2bfabea2c..a7bb0610bd 100644
--- a/cura/Machines/ContainerTree.py
+++ b/cura/Machines/ContainerTree.py
@@ -30,7 +30,7 @@ if TYPE_CHECKING:
# nodes that have children) but that child node may be a node representing the
# empty instance container.
class ContainerTree:
- __instance = None
+ __instance = None # type: Optional["ContainerTree"]
@classmethod
def getInstance(cls):
@@ -75,7 +75,7 @@ class ContainerTree:
return self.machines[global_stack.definition.getId()].getQualityChangesGroups(variant_names, material_bases, extruder_enabled)
## Ran after completely starting up the application.
- def _onStartupFinished(self):
+ def _onStartupFinished(self) -> None:
currently_added = ContainerRegistry.getInstance().findContainerStacks() # Find all currently added global stacks.
JobQueue.getInstance().add(self._MachineNodeLoadJob(self, currently_added))
@@ -137,7 +137,7 @@ class ContainerTree:
# \param container_stacks All of the stacks to pre-load the container
# trees for. This needs to be provided from here because the stacks
# need to be constructed on the main thread because they are QObject.
- def __init__(self, tree_root: "ContainerTree", container_stacks: List["ContainerStack"]):
+ def __init__(self, tree_root: "ContainerTree", container_stacks: List["ContainerStack"]) -> None:
self.tree_root = tree_root
self.container_stacks = container_stacks
super().__init__()
diff --git a/cura/Machines/MachineErrorChecker.py b/cura/Machines/MachineErrorChecker.py
index 4c6ed891b1..9460578f45 100644
--- a/cura/Machines/MachineErrorChecker.py
+++ b/cura/Machines/MachineErrorChecker.py
@@ -6,6 +6,7 @@ import time
from collections import deque
from PyQt5.QtCore import QObject, QTimer, pyqtSignal, pyqtProperty
+from typing import Optional, Any, Set
from UM.Application import Application
from UM.Logger import Logger
@@ -24,16 +25,16 @@ from UM.Settings.Validator import ValidatorState
#
class MachineErrorChecker(QObject):
- def __init__(self, parent = None):
+ def __init__(self, parent: Optional[QObject] = None) -> None:
super().__init__(parent)
self._global_stack = None
self._has_errors = True # Result of the error check, indicating whether there are errors in the stack
- self._error_keys = set() # A set of settings keys that have errors
- self._error_keys_in_progress = set() # The variable that stores the results of the currently in progress check
+ self._error_keys = set() # type: Set[str] # A set of settings keys that have errors
+ self._error_keys_in_progress = set() # type: Set[str] # The variable that stores the results of the currently in progress check
- self._stacks_and_keys_to_check = None # a FIFO queue of tuples (stack, key) to check for errors
+ self._stacks_and_keys_to_check = None # type: Optional[deque] # a FIFO queue of tuples (stack, key) to check for errors
self._need_to_check = False # Whether we need to schedule a new check or not. This flag is set when a new
# error check needs to take place while there is already one running at the moment.
@@ -42,7 +43,7 @@ class MachineErrorChecker(QObject):
self._application = Application.getInstance()
self._machine_manager = self._application.getMachineManager()
- self._start_time = 0 # measure checking time
+ self._start_time = 0. # measure checking time
# This timer delays the starting of error check so we can react less frequently if the user is frequently
# changing settings.
@@ -94,13 +95,13 @@ class MachineErrorChecker(QObject):
# Start the error check for property changed
# this is seperate from the startErrorCheck because it ignores a number property types
- def startErrorCheckPropertyChanged(self, key, property_name):
+ def startErrorCheckPropertyChanged(self, key: str, property_name: str) -> None:
if property_name != "value":
return
self.startErrorCheck()
# Starts the error check timer to schedule a new error check.
- def startErrorCheck(self, *args) -> None:
+ def startErrorCheck(self, *args: Any) -> None:
if not self._check_in_progress:
self._need_to_check = True
self.needToWaitForResultChanged.emit()
diff --git a/cura/Machines/MaterialNode.py b/cura/Machines/MaterialNode.py
index 5bcaf12bfb..dcd4adcfdb 100644
--- a/cura/Machines/MaterialNode.py
+++ b/cura/Machines/MaterialNode.py
@@ -14,6 +14,7 @@ if TYPE_CHECKING:
from typing import Dict
from cura.Machines.VariantNode import VariantNode
+
## Represents a material in the container tree.
#
# Its subcontainers are quality profiles.
diff --git a/cura/OAuth2/Models.py b/cura/OAuth2/Models.py
index 468351c62b..dd935fef6e 100644
--- a/cura/OAuth2/Models.py
+++ b/cura/OAuth2/Models.py
@@ -1,10 +1,10 @@
# Copyright (c) 2019 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher.
-from typing import Optional
+from typing import Optional, Dict, Any
class BaseModel:
- def __init__(self, **kwargs):
+ def __init__(self, **kwargs: Any) -> None:
self.__dict__.update(kwargs)
@@ -53,9 +53,10 @@ class ResponseData(BaseModel):
redirect_uri = None # type: Optional[str]
content_type = "text/html" # type: str
+
## Possible HTTP responses.
HTTP_STATUS = {
"OK": ResponseStatus(code = 200, message = "OK"),
"NOT_FOUND": ResponseStatus(code = 404, message = "NOT FOUND"),
"REDIRECT": ResponseStatus(code = 302, message = "REDIRECT")
-}
+} # type: Dict[str, ResponseStatus]
diff --git a/cura/Operations/PlatformPhysicsOperation.py b/cura/Operations/PlatformPhysicsOperation.py
index 9571679c3c..5aaa2ad94f 100644
--- a/cura/Operations/PlatformPhysicsOperation.py
+++ b/cura/Operations/PlatformPhysicsOperation.py
@@ -1,26 +1,27 @@
# Copyright (c) 2015 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher.
-
+from UM.Math.Vector import Vector
from UM.Operations.Operation import Operation
from UM.Operations.GroupedOperation import GroupedOperation
from UM.Scene.SceneNode import SceneNode
+
## A specialised operation designed specifically to modify the previous operation.
class PlatformPhysicsOperation(Operation):
- def __init__(self, node, translation):
+ def __init__(self, node: SceneNode, translation: Vector):
super().__init__()
self._node = node
self._old_transformation = node.getLocalTransformation()
self._translation = translation
self._always_merge = True
- def undo(self):
+ def undo(self) -> None:
self._node.setTransformation(self._old_transformation)
- def redo(self):
+ def redo(self) -> None:
self._node.translate(self._translation, SceneNode.TransformSpace.World)
- def mergeWith(self, other):
+ def mergeWith(self, other: Operation) -> GroupedOperation:
group = GroupedOperation()
group.addOperation(other)
@@ -28,5 +29,5 @@ class PlatformPhysicsOperation(Operation):
return group
- def __repr__(self):
+ def __repr__(self) -> str:
return "PlatformPhysicsOp.(trans.={0})".format(self._translation)
diff --git a/cura/Operations/SetBuildPlateNumberOperation.py b/cura/Operations/SetBuildPlateNumberOperation.py
index 96230639f9..fd48cf47d9 100644
--- a/cura/Operations/SetBuildPlateNumberOperation.py
+++ b/cura/Operations/SetBuildPlateNumberOperation.py
@@ -6,9 +6,9 @@ from UM.Operations.Operation import Operation
from cura.Settings.SettingOverrideDecorator import SettingOverrideDecorator
+
## Simple operation to set the buildplate number of a scenenode.
class SetBuildPlateNumberOperation(Operation):
-
def __init__(self, node: SceneNode, build_plate_nr: int) -> None:
super().__init__()
self._node = node
@@ -16,11 +16,11 @@ class SetBuildPlateNumberOperation(Operation):
self._previous_build_plate_nr = None
self._decorator_added = False
- def undo(self):
+ def undo(self) -> None:
if self._previous_build_plate_nr:
self._node.callDecoration("setBuildPlateNumber", self._previous_build_plate_nr)
- def redo(self):
+ def redo(self) -> None:
stack = self._node.callDecoration("getStack") #Don't try to get the active extruder since it may be None anyway.
if not stack:
self._node.addDecorator(SettingOverrideDecorator())
diff --git a/cura/Operations/SetParentOperation.py b/cura/Operations/SetParentOperation.py
index 612c02f18d..7efe2618fd 100644
--- a/cura/Operations/SetParentOperation.py
+++ b/cura/Operations/SetParentOperation.py
@@ -1,36 +1,37 @@
# Copyright (c) 2016 Ultimaker B.V.
# Uranium is released under the terms of the LGPLv3 or higher.
+from typing import Optional
from UM.Scene.SceneNode import SceneNode
from UM.Operations import Operation
from UM.Math.Vector import Vector
-## An operation that parents a scene node to another scene node.
+## An operation that parents a scene node to another scene node.
class SetParentOperation(Operation.Operation):
## Initialises this SetParentOperation.
#
# \param node The node which will be reparented.
# \param parent_node The node which will be the parent.
- def __init__(self, node, parent_node):
+ def __init__(self, node: SceneNode, parent_node: Optional[SceneNode]):
super().__init__()
self._node = node
self._parent = parent_node
self._old_parent = node.getParent() # To restore the previous parent in case of an undo.
## Undoes the set-parent operation, restoring the old parent.
- def undo(self):
+ def undo(self) -> None:
self._set_parent(self._old_parent)
## Re-applies the set-parent operation.
- def redo(self):
+ def redo(self) -> None:
self._set_parent(self._parent)
## Sets the parent of the node while applying transformations to the world-transform of the node stays the same.
#
# \param new_parent The new parent. Note: this argument can be None, which would hide the node from the scene.
- def _set_parent(self, new_parent):
+ def _set_parent(self, new_parent: Optional[SceneNode]) -> None:
if new_parent:
current_parent = self._node.getParent()
if current_parent:
@@ -59,5 +60,5 @@ class SetParentOperation(Operation.Operation):
## Returns a programmer-readable representation of this operation.
#
# \return A programmer-readable representation of this operation.
- def __repr__(self):
+ def __repr__(self) -> str:
return "SetParentOperation(node = {0}, parent_node={1})".format(self._node, self._parent)
diff --git a/cura/PrinterOutput/Models/PrintJobOutputModel.py b/cura/PrinterOutput/Models/PrintJobOutputModel.py
index b4296a5494..256999b96f 100644
--- a/cura/PrinterOutput/Models/PrintJobOutputModel.py
+++ b/cura/PrinterOutput/Models/PrintJobOutputModel.py
@@ -161,7 +161,7 @@ class PrintJobOutputModel(QObject):
self._time_elapsed = new_time_elapsed
self.timeElapsedChanged.emit()
- def updateState(self, new_state):
+ def updateState(self, new_state: str) -> None:
if self._state != new_state:
self._state = new_state
self.stateChanged.emit()
diff --git a/cura/Scene/BlockSlicingDecorator.py b/cura/Scene/BlockSlicingDecorator.py
index 0536e1635f..d9c9e0ac5e 100644
--- a/cura/Scene/BlockSlicingDecorator.py
+++ b/cura/Scene/BlockSlicingDecorator.py
@@ -9,4 +9,4 @@ class BlockSlicingDecorator(SceneNodeDecorator):
super().__init__()
def isBlockSlicing(self) -> bool:
- return True
+ return True \ No newline at end of file
diff --git a/cura/UI/MachineActionManager.py b/cura/UI/MachineActionManager.py
index aa90e909e2..6efd3217a1 100644
--- a/cura/UI/MachineActionManager.py
+++ b/cura/UI/MachineActionManager.py
@@ -43,7 +43,7 @@ class MachineActionManager(QObject):
# Dict of all actions that need to be done when first added by definition ID
self._first_start_actions = {} # type: Dict[str, List[MachineAction]]
- def initialize(self):
+ def initialize(self) -> None:
# Add machine_action as plugin type
PluginRegistry.addType("machine_action", self.addMachineAction)