home · contact · privacy
Put mypy into strict mode, adapt code to still pass.
[plomtask] / plomtask / processes.py
index 8a5bf64d640ba4cd5d3d0aad7ea5306102d92670..4867227e5f4e492ebeeac33c484039f36afca4fd 100644 (file)
@@ -3,6 +3,7 @@ from __future__ import annotations
 from sqlite3 import Row
 from datetime import datetime
 from plomtask.db import DatabaseConnection
+from plomtask.misc import HandledException
 
 
 class Process:
@@ -35,15 +36,17 @@ class Process:
         return list(processes.values())
 
     @classmethod
-    def by_id(cls, db_conn: DatabaseConnection,
-              id_: int | None, create: bool = False) -> Process | None:
+    def by_id(cls, db_conn: DatabaseConnection, id_: int | None,
+              create: bool = False) -> Process:
         """Collect all Processes and their connected VersionedAttributes."""
         process = None
         for row in db_conn.exec('SELECT * FROM processes '
                                 'WHERE id = ?', (id_,)):
             process = cls(row[0])
             break
-        if create and not process:
+        if not process:
+            if not create:
+                raise HandledException(f'Process not found of id: {id_}')
             process = Process(id_)
         if process:
             for row in db_conn.exec('SELECT * FROM process_titles '