Browse Source

Fix typing

Jaime van Kessel 6 years ago
parent
commit
d8c430abf6

+ 8 - 6
cura/CuraActions.py

@@ -3,7 +3,7 @@
 
 from PyQt5.QtCore import QObject, QUrl
 from PyQt5.QtGui import QDesktopServices
-from typing import List, TYPE_CHECKING
+from typing import List, TYPE_CHECKING, cast
 
 from UM.Event import CallFunctionEvent
 from UM.FlameProfiler import pyqtSlot
@@ -61,8 +61,10 @@ class CuraActions(QObject):
         operation = GroupedOperation()
         for node in Selection.getAllSelectedObjects():
             current_node = node
-            while current_node.getParent() and current_node.getParent().callDecoration("isGroup"):
-                current_node = current_node.getParent()
+            parent_node = current_node.getParent()
+            while parent_node and parent_node.callDecoration("isGroup"):
+                current_node = parent_node
+                parent_node = current_node.getParent()
 
             #   This was formerly done with SetTransformOperation but because of
             #   unpredictable matrix deconstruction it was possible that mirrors
@@ -150,13 +152,13 @@ class CuraActions(QObject):
 
         root = cura.CuraApplication.CuraApplication.getInstance().getController().getScene().getRoot()
 
-        nodes_to_change = []
+        nodes_to_change = []  # type: List[SceneNode]
         for node in Selection.getAllSelectedObjects():
             parent_node = node  # Find the parent node to change instead
             while parent_node.getParent() != root:
-                parent_node = parent_node.getParent()
+                parent_node = cast(SceneNode, parent_node.getParent())
 
-            for single_node in BreadthFirstIterator(parent_node): #type: ignore #Ignore type error because iter() should get called automatically by Python syntax.
+            for single_node in BreadthFirstIterator(parent_node):  # type: ignore #Ignore type error because iter() should get called automatically by Python syntax.
                 nodes_to_change.append(single_node)
 
         if not nodes_to_change:

+ 3 - 4
cura/PrintInformation.py

@@ -14,8 +14,7 @@ from UM.Logger import Logger
 from UM.Qt.Duration import Duration
 from UM.Scene.SceneNode import SceneNode
 from UM.i18n import i18nCatalog
-from UM.MimeTypeDatabase import MimeTypeDatabase
-
+from UM.MimeTypeDatabase import MimeTypeDatabase, MimeTypeNotFoundError
 
 from typing import TYPE_CHECKING
 
@@ -361,7 +360,7 @@ class PrintInformation(QObject):
             try:
                 mime_type = MimeTypeDatabase.getMimeTypeForFile(name)
                 data = mime_type.stripExtension(name)
-            except:
+            except MimeTypeNotFoundError:
                 Logger.log("w", "Unsupported Mime Type Database file extension %s", name)
 
             if data is not None and check_name is not None:
@@ -416,7 +415,7 @@ class PrintInformation(QObject):
         return ''.join(char for char in unicodedata.normalize('NFD', to_strip) if unicodedata.category(char) != 'Mn')
 
     @pyqtSlot(result = "QVariantMap")
-    def getFeaturePrintTimes(self):
+    def getFeaturePrintTimes(self) -> Dict[str, Duration]:
         result = {}
         if self._active_build_plate not in self._print_times_per_feature:
             self._initPrintTimesPerFeature(self._active_build_plate)

+ 2 - 2
plugins/PostProcessingPlugin/PostProcessingPlugin.py

@@ -55,14 +55,14 @@ class PostProcessingPlugin(QObject, Extension):
     def selectedScriptDefinitionId(self) -> Optional[str]:
         try:
             return self._script_list[self._selected_script_index].getDefinitionId()
-        except:
+        except IndexError:
             return ""
 
     @pyqtProperty(str, notify=selectedIndexChanged)
     def selectedScriptStackId(self) -> Optional[str]:
         try:
             return self._script_list[self._selected_script_index].getStackId()
-        except:
+        except IndexError:
             return ""
 
     ##  Execute all post-processing scripts on the gcode.

+ 6 - 5
plugins/USBPrinting/AutoDetectBaudJob.py

@@ -3,6 +3,7 @@
 
 from UM.Job import Job
 from UM.Logger import Logger
+from plugins.USBPrinting.avr_isp import ispBase
 
 from .avr_isp.stk500v2 import Stk500v2
 
@@ -14,12 +15,12 @@ from serial import Serial, SerialException
 #   It tries a pre-set list of baud rates. All these baud rates are validated by requesting the temperature a few times
 #   and checking if the results make sense. If getResult() is not None, it was able to find a correct baud rate.
 class AutoDetectBaudJob(Job):
-    def __init__(self, serial_port):
+    def __init__(self, serial_port: int) -> None:
         super().__init__()
         self._serial_port = serial_port
         self._all_baud_rates = [115200, 250000, 230400, 57600, 38400, 19200, 9600]
 
-    def run(self):
+    def run(self) -> None:
         Logger.log("d", "Auto detect baud rate started.")
         wait_response_timeouts = [3, 15, 30]
         wait_bootloader_times = [1.5, 5, 15]
@@ -32,7 +33,7 @@ class AutoDetectBaudJob(Job):
         try:
             programmer.connect(self._serial_port)
             serial = programmer.leaveISP()
-        except:
+        except ispBase.IspError:
             programmer.close()
 
         for retry in range(tries):
@@ -58,7 +59,7 @@ class AutoDetectBaudJob(Job):
                     # We already have a serial connection, just change the baud rate.
                     try:
                         serial.baudrate = baud_rate
-                    except:
+                    except ValueError:
                         continue
                 sleep(wait_bootloader)  # Ensure that we are not talking to the boot loader. 1.5 seconds seems to be the magic number
                 successful_responses = 0
@@ -81,5 +82,5 @@ class AutoDetectBaudJob(Job):
                             return
 
                     serial.write(b"M105\n")
-            sleep(15) # Give the printer some time to init and try again.
+            sleep(15)  # Give the printer some time to init and try again.
         self.setResult(None)  # Unable to detect the correct baudrate.