22import os
33from datetime import datetime
44from importlib import import_module
5- from typing import Optional
5+ from typing import Any
66
77from majavahbot .api import MediawikiApi , get_mediawiki_api
88from majavahbot .api .utils import remove_comments
99
1010
1111class Task :
12- def __init__ (self , id , name , site , family ) :
13- self .id = str ( id )
12+ def __init__ (self , task_id : str , name : str , site : str , family : str ) -> None :
13+ self .task_id = task_id
1414 self .name = name
1515 self .site = site
1616 self .family = family
@@ -21,35 +21,37 @@ def __init__(self, id, name, site, family):
2121 self .supports_manual_run = False
2222 self .is_manual_run = False
2323
24- self .task_configuration = {}
25- self .base_task_configuration = {}
26- self .task_configuration_page = None
27- self .task_configuration_last_loaded = None
24+ self .task_configuration : dict [ str , Any ] = {}
25+ self .base_task_configuration : dict [ str , Any ] = {}
26+ self .task_configuration_page : str | None = None
27+ self .task_configuration_last_loaded : datetime | None = None
2828
29- def __repr__ (self ):
30- return "Task(id =" + self .id + ",name=" + self .name + ")"
29+ def __repr__ (self ) -> str :
30+ return "Task(task_id =" + self .task_id + ",name=" + self .name + ")"
3131
32- def run (self ):
32+ def run (self ) -> None :
3333 raise Exception ("Not implemented yet" )
3434
35- def do_manual_run (self ):
35+ def do_manual_run (self ) -> None :
3636 self .is_manual_run = True
3737
3838 if self .supports_manual_run :
3939 self .run ()
4040 return
4141 raise Exception ("This task does not support manual runs" )
4242
43- def should_use_bot_flag (self ):
43+ def should_use_bot_flag (self ) -> bool :
4444 return True
4545
4646 def get_mediawiki_api (self ) -> MediawikiApi :
4747 return get_mediawiki_api (self .site , self .family )
4848
49- def task_configuration_reloaded (self , old , new ):
49+ def task_configuration_reloaded (
50+ self , old : dict [str , Any ], new : dict [str , Any ]
51+ ) -> None :
5052 pass
5153
52- def _load_task_configuration (self , contents : str ):
54+ def _load_task_configuration (self , contents : str ) -> None :
5355 config_text = remove_comments (contents )
5456
5557 if len (config_text ) == 0 :
@@ -63,10 +65,12 @@ def _load_task_configuration(self, contents: str):
6365 self .task_configuration_reloaded (self .task_configuration , config )
6466 self .task_configuration_last_loaded = datetime .now ()
6567
66- def register_task_configuration (self , config_page_name : str ):
68+ def register_task_configuration (self , config_page_name : str ) -> None :
6769 self .task_configuration_page = config_page_name
6870
69- def get_task_configuration (self , key : str = "" ):
71+ def get_task_configuration (self , key : str = "" ) -> Any :
72+ if not self .task_configuration_page :
73+ raise RuntimeError ("No task configuration registered" )
7074 if (
7175 self .task_configuration_last_loaded is None
7276 or (datetime .now () - self .task_configuration_last_loaded ).total_seconds ()
@@ -82,36 +86,36 @@ def get_task_configuration(self, key: str = ""):
8286 # TODO: support for nested keys
8387 return self .task_configuration [key ]
8488
85- def merge_task_configuration (self , ** fill ) :
89+ def merge_task_configuration (self , ** fill : Any ) -> None :
8690 self .base_task_configuration = fill
8791 self ._merge_task_configuration ()
8892
89- def _merge_task_configuration (self ):
93+ def _merge_task_configuration (self ) -> None :
9094 for key in self .base_task_configuration :
9195 value = self .base_task_configuration [key ]
9296 if key not in self .task_configuration :
9397 self .task_configuration [key ] = value
9498
9599
96100class TaskRegistry :
97- def __init__ (self ):
98- self .tasks = []
101+ def __init__ (self ) -> None :
102+ self .tasks : list [ Task ] = []
99103
100- def add_task (self , task : Task ):
104+ def add_task (self , task : Task ) -> None :
101105 self .tasks .append (task )
102106
103- def get_tasks (self ):
107+ def get_tasks (self ) -> list [ Task ] :
104108 tasks = list (self .tasks )
105- tasks .sort (key = (lambda task : task .id ))
109+ tasks .sort (key = (lambda task : task .task_id ))
106110 return tasks
107111
108- def get_task_by_id (self , id : str ) -> Optional [ Task ] :
112+ def get_task_by_id (self , task_id : str ) -> Task | None :
109113 for task in self .get_tasks ():
110- if task .id == id :
114+ if task .task_id == task_id :
111115 return task
112116 return None
113117
114- def add_all_tasks (self ):
118+ def add_all_tasks (self ) -> None :
115119 for module in os .listdir (os .path .dirname (__file__ )):
116120 if (
117121 module == "__init__.py"
0 commit comments