Skip to content

Commit 4475212

Browse files
jenkins-botGerrit Code Review
authored andcommitted
Merge "Fix a bunch of strict mypy errors"
2 parents db77cd9 + 4e356cf commit 4475212

16 files changed

+93
-87
lines changed

majavahbot/api/mediawiki.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import re
2-
from typing import Dict
2+
from typing import Any
33

44
import dateparser
55
import pywikibot
@@ -10,18 +10,18 @@
1010

1111

1212
class MediawikiApi:
13-
def __init__(self, site, family):
13+
def __init__(self, site: str, family: str) -> None:
1414
self.site = pywikibot.Site(site, family)
1515

16-
def __repr__(self):
16+
def __repr__(self) -> str:
1717
self.site.login()
1818
return "MediawikiApi{wiki=%s,user=%s,has_bot_flag=%s}" % (
1919
self.site.hostname(),
2020
self.site.username(),
2121
"bot" in self.site.userinfo["rights"],
2222
)
2323

24-
def test(self):
24+
def test(self) -> bool:
2525
return pywikibot.User(self.site, self.site.username()).exists()
2626

2727
def get_site(self) -> pywikibot.Site:
@@ -30,7 +30,7 @@ def get_site(self) -> pywikibot.Site:
3030
def get_page(self, page_name: str) -> pywikibot.Page:
3131
return pywikibot.Page(self.site, page_name)
3232

33-
def get_user(self, user_name) -> pywikibot.User:
33+
def get_user(self, user_name: str) -> pywikibot.User:
3434
return pywikibot.User(self.site, user_name)
3535

3636
def get_page_change_stream(
@@ -44,7 +44,7 @@ def get_page_change_stream(
4444

4545
return stream
4646

47-
def get_last_filter_hits(self, user: str):
47+
def get_last_filter_hits(self, user: str) -> list[dict[str, Any]]:
4848
"""Retrieves latest Special:AbuseLog entries for specified user."""
4949
self.site.login()
5050
request = api.Request(
@@ -58,7 +58,7 @@ def get_last_filter_hits(self, user: str):
5858
)
5959
response = request.submit()["query"]["abuselog"]
6060
if len(response) == 0:
61-
return None
61+
return []
6262

6363
last_hit = response[0]
6464

@@ -94,7 +94,7 @@ def get_last_reply(self, section: str):
9494
dates = sorted([date for date in maybe_dates if date is not None])
9595
return dates[-1] if len(dates) > 0 else None
9696

97-
def get_wikidata_id(self, page: pywikibot.Page):
97+
def get_wikidata_id(self, page: pywikibot.Page) -> str | None:
9898
if not page.exists():
9999
return None
100100

@@ -113,10 +113,10 @@ def compare_page_titles(self, first: str, second: str) -> bool:
113113
return first.lower().replace("_", " ") == second.lower().replace("_", " ")
114114

115115

116-
mediawiki_apis: Dict[str, Dict[str, MediawikiApi]] = {}
116+
mediawiki_apis: dict[str, dict[str, MediawikiApi]] = {}
117117

118118

119-
def get_mediawiki_api(site="en", family="wikipedia") -> MediawikiApi:
119+
def get_mediawiki_api(site: str, family: str) -> MediawikiApi:
120120
if family not in mediawiki_apis:
121121
mediawiki_apis[family] = {}
122122
if site not in mediawiki_apis[family]:

majavahbot/api/utils.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,20 +34,20 @@ def get_revision() -> str:
3434

3535

3636
class Delay:
37-
def __init__(self, seconds):
37+
def __init__(self, seconds: float) -> None:
3838
self.seconds = seconds
3939
self.started = time.time()
4040

41-
def get_remaining(self):
41+
def get_remaining(self) -> float:
4242
return self.seconds - (time.time() - self.started)
4343

44-
def wait(self):
44+
def wait(self) -> None:
4545
delay = self.get_remaining()
4646
if delay > 0:
4747
time.sleep(delay)
4848

4949

50-
def create_delay(seconds) -> Delay:
50+
def create_delay(seconds: float) -> Delay:
5151
return Delay(seconds)
5252

5353

majavahbot/api/utils_test.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from majavahbot.api.utils import remove_comments
22

33

4-
def test_remove_comments():
4+
def test_remove_comments() -> None:
55
assert (
66
remove_comments(
77
"""// foo: bar

majavahbot/cli.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,11 @@ def cli_whoami():
2222
def cli_task_list():
2323
for task in task_registry.get_tasks():
2424
LOGGER.info(
25-
"Task %s (%s) on wiki %s.%s", task.id, task.name, task.site, task.family
25+
"Task %s (%s) on wiki %s.%s",
26+
task.task_id,
27+
task.name,
28+
task.site,
29+
task.family,
2630
)
2731

2832

@@ -44,15 +48,15 @@ def cli_task(task_id: str, run: bool, manual: bool, config: bool, param=""):
4448
task.param = param
4549

4650
if config:
47-
LOGGER.info("Task configuration for task %s", task.id)
51+
LOGGER.info("Task configuration for task %s", task.task_id)
4852
LOGGER.info(json.dumps(task.get_task_configuration()))
4953
exit(0)
5054

5155
if run:
52-
LOGGER.info("Starting task %s", task.id)
56+
LOGGER.info("Starting task %s", task.task_id)
5357
task.run()
5458
elif manual:
55-
LOGGER.info("Manually running task %s", task.id)
59+
LOGGER.info("Manually running task %s", task.task_id)
5660
task.do_manual_run()
5761
else:
5862
LOGGER.error("Unknown action")

majavahbot/tasks/task.py

Lines changed: 30 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22
import os
33
from datetime import datetime
44
from importlib import import_module
5-
from typing import Optional
5+
from typing import Any
66

77
from majavahbot.api import MediawikiApi, get_mediawiki_api
88
from majavahbot.api.utils import remove_comments
99

1010

1111
class 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

96100
class 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"

majavahbot/tasks/task_1_effp.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ class EffpTask(Task):
2424
e) Archive
2525
"""
2626

27-
def __init__(self, number, name, site, family):
28-
super().__init__(number, name, site, family)
27+
def __init__(self, task_id: str, name: str, site: str, family: str) -> None:
28+
super().__init__(task_id, name, site, family)
2929
self.is_continuous = True
3030
self.supports_manual_run = True
3131
self.stream = None
@@ -439,4 +439,4 @@ def should_archive(self, text: str, api: MediawikiApi) -> bool:
439439
return last_reply_seconds > seconds_to_wait
440440

441441

442-
task_registry.add_task(EffpTask(1, "EFFP helper", "en", "wikipedia"))
442+
task_registry.add_task(EffpTask("1", "EFFP helper", "en", "wikipedia"))

majavahbot/tasks/task_2_fiwiki_requested_articles.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@
2323

2424

2525
class FiwikiRequestedArticlesTask(Task):
26-
def __init__(self, number, name, site, family):
27-
super().__init__(number, name, site, family)
26+
def __init__(self, task_id: str, name: str, site: str, family: str) -> None:
27+
super().__init__(task_id, name, site, family)
2828
self.register_task_configuration(
2929
"Käyttäjä:MajavahBot/Asetukset/Artikkelitoiveiden siivoaja"
3030
)
@@ -157,5 +157,5 @@ def run(self):
157157

158158

159159
task_registry.add_task(
160-
FiwikiRequestedArticlesTask(2, "Requested articles clerk", "fi", "wikipedia")
160+
FiwikiRequestedArticlesTask("2", "Requested articles clerk", "fi", "wikipedia")
161161
)

majavahbot/tasks/task_3_bot_status.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -188,9 +188,6 @@ def format_operators(self):
188188

189189

190190
class BotStatusTask(Task):
191-
def __init__(self, number, name, site, family):
192-
super().__init__(number, name, site, family)
193-
194191
def get_bot_data(self, username):
195192
# get all data needed with one big query
196193
data = QueryGenerator(
@@ -350,4 +347,4 @@ def run(self):
350347
page.save("Bot updating status report", botflag=self.should_use_bot_flag())
351348

352349

353-
task_registry.add_task(BotStatusTask(3, "Bot status report", "en", "wikipedia"))
350+
task_registry.add_task(BotStatusTask("3", "Bot status report", "en", "wikipedia"))

majavahbot/tasks/task_4_archiver.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@
4141

4242

4343
class AchieverBot(Task):
44-
def __init__(self, number, name, site, family):
45-
super().__init__(number, name, site, family)
44+
def __init__(self, task_id: str, name: str, site: str, family: str) -> None:
45+
super().__init__(task_id, name, site, family)
4646
self.supports_manual_run = True
4747
self.register_task_configuration("User:MajavahBot/Options")
4848

@@ -100,4 +100,4 @@ def run(self):
100100
)
101101

102102

103-
task_registry.add_task(AchieverBot(4, "Archive utility", "sq", "wikipedia"))
103+
task_registry.add_task(AchieverBot("4", "Archive utility", "sq", "wikipedia"))

0 commit comments

Comments
 (0)