Merge ~cjwatson/launchpad:mypy-buildmaster into launchpad:master

Proposed by Colin Watson
Status: Merged
Merged at revision: ff1890738758fb7f42be971b418e38769d336384
Proposed branch: ~cjwatson/launchpad:mypy-buildmaster
Merge into: launchpad:master
Diff against target: 159 lines (+33/-8)
6 files modified
lib/lp/buildmaster/downloader.py (+2/-1)
lib/lp/buildmaster/tests/mock_workers.py (+1/-1)
lib/lp/buildmaster/tests/test_buildfarmjob.py (+9/-4)
lib/lp/buildmaster/tests/test_manager.py (+2/-1)
pyproject.toml (+16/-0)
tox.ini (+3/-1)
Reviewer Review Type Date Requested Status
Launchpad code reviewers Pending
Review via email: mp+435088@code.launchpad.net

Commit message

mypy: Run for lp.buildmaster

Description of the change

Also fix `tox -e mypy` to work with tox 4.

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/lib/lp/buildmaster/downloader.py b/lib/lp/buildmaster/downloader.py
2index 527842d..4c9fa13 100644
3--- a/lib/lp/buildmaster/downloader.py
4+++ b/lib/lp/buildmaster/downloader.py
5@@ -15,6 +15,7 @@ __all__ = [
6
7 import os.path
8 import tempfile
9+from typing import List, Tuple
10
11 from ampoule.child import AMPChild
12 from requests import RequestException, Session
13@@ -30,7 +31,7 @@ class DownloadCommand(amp.Command):
14 (b"path_to_write", amp.Unicode()),
15 (b"timeout", amp.Integer()),
16 ]
17- response = []
18+ response = [] # type: List[Tuple[bytes, amp.Argument]]
19 errors = {
20 RequestException: b"REQUEST_ERROR",
21 StreamingError: b"STREAMING_ERROR",
22diff --git a/lib/lp/buildmaster/tests/mock_workers.py b/lib/lp/buildmaster/tests/mock_workers.py
23index 55ac82d..1840d4b 100644
24--- a/lib/lp/buildmaster/tests/mock_workers.py
25+++ b/lib/lp/buildmaster/tests/mock_workers.py
26@@ -27,7 +27,7 @@ from textwrap import dedent
27 try:
28 from importlib import resources
29 except ImportError:
30- import importlib_resources as resources
31+ import importlib_resources as resources # type: ignore
32
33 import fixtures
34 from testtools.content import attach_file
35diff --git a/lib/lp/buildmaster/tests/test_buildfarmjob.py b/lib/lp/buildmaster/tests/test_buildfarmjob.py
36index 68f9335..994e3a9 100644
37--- a/lib/lp/buildmaster/tests/test_buildfarmjob.py
38+++ b/lib/lp/buildmaster/tests/test_buildfarmjob.py
39@@ -4,6 +4,7 @@
40 """Tests for `IBuildFarmJob`."""
41
42 from datetime import datetime, timedelta
43+from typing import Type
44
45 import pytz
46 from storm.store import Store
47@@ -23,16 +24,20 @@ from lp.buildmaster.interfaces.buildfarmjob import (
48 from lp.buildmaster.model.buildfarmjob import BuildFarmJob
49 from lp.services.database.sqlbase import flush_database_updates
50 from lp.testing import TestCaseWithFactory, admin_logged_in, login
51-from lp.testing.layers import DatabaseFunctionalLayer, LaunchpadFunctionalLayer
52+from lp.testing.layers import (
53+ BaseLayer,
54+ DatabaseFunctionalLayer,
55+ LaunchpadFunctionalLayer,
56+)
57
58
59 class TestBuildFarmJobBase:
60
61- layer = DatabaseFunctionalLayer
62+ layer = DatabaseFunctionalLayer # type: Type[BaseLayer]
63
64- def setUp(self):
65+ def setUp(self, *args, **kwargs):
66 """Create a build farm job with which to test."""
67- super().setUp()
68+ super().setUp(*args, **kwargs)
69 self.build_farm_job = self.makeBuildFarmJob()
70
71 def makeBuildFarmJob(
72diff --git a/lib/lp/buildmaster/tests/test_manager.py b/lib/lp/buildmaster/tests/test_manager.py
73index 7c98f0d..0b93e76 100644
74--- a/lib/lp/buildmaster/tests/test_manager.py
75+++ b/lib/lp/buildmaster/tests/test_manager.py
76@@ -7,6 +7,7 @@ import os
77 import signal
78 import time
79 import xmlrpc.client
80+from typing import Dict
81 from unittest import mock
82
83 import transaction
84@@ -1013,7 +1014,7 @@ class TestPrefetchedBuilderFactory(TestCaseWithFactory):
85 class FakeBuilddManager:
86 """A minimal fake version of `BuilddManager`."""
87
88- pending_logtails = {}
89+ pending_logtails = {} # type: Dict[int, str]
90
91 def addLogTail(self, build_queue_id, logtail):
92 self.pending_logtails[build_queue_id] = logtail
93diff --git a/pyproject.toml b/pyproject.toml
94index e553c39..83925c3 100644
95--- a/pyproject.toml
96+++ b/pyproject.toml
97@@ -10,6 +10,10 @@ exclude = [
98 ]
99
100 [[tool.mypy.overrides]]
101+module = "ampoule.*"
102+ignore_missing_imports = true
103+
104+[[tool.mypy.overrides]]
105 module = "apt_inst"
106 ignore_missing_imports = true
107
108@@ -62,6 +66,10 @@ module = "lazr.*"
109 ignore_missing_imports = true
110
111 [[tool.mypy.overrides]]
112+module = "lpbuildd.*"
113+ignore_missing_imports = true
114+
115+[[tool.mypy.overrides]]
116 module = "packaging"
117 ignore_missing_imports = true
118
119@@ -74,6 +82,10 @@ module = "pystache"
120 ignore_missing_imports = true
121
122 [[tool.mypy.overrides]]
123+module = "requests_toolbelt.*"
124+ignore_missing_imports = true
125+
126+[[tool.mypy.overrides]]
127 module = "responses"
128 ignore_missing_imports = true
129
130@@ -106,6 +118,10 @@ module = "twisted.*"
131 ignore_missing_imports = true
132
133 [[tool.mypy.overrides]]
134+module = "txfixtures.*"
135+ignore_missing_imports = true
136+
137+[[tool.mypy.overrides]]
138 module = "zope.*"
139 ignore_missing_imports = true
140
141diff --git a/tox.ini b/tox.ini
142index 30758fb..9d78638 100644
143--- a/tox.ini
144+++ b/tox.ini
145@@ -21,11 +21,13 @@ skip_install = true
146 deps =
147 mypy
148 -r requirements/types.txt
149+allowlist_externals =
150+ {toxinidir}/scripts/update-version-info.sh
151 commands_pre =
152 {toxinidir}/scripts/update-version-info.sh
153 commands =
154 mypy --follow-imports=silent \
155- {posargs:lib/lp/answers lib/lp/app lib/lp/archivepublisher lib/lp/archiveuploader}
156+ {posargs:lib/lp/answers lib/lp/app lib/lp/archivepublisher lib/lp/archiveuploader lib/lp/buildmaster}
157
158 [testenv:docs]
159 basepython = python3

Subscribers

People subscribed via source and target branches

to status/vote changes: