Skip to content

Commit 3efc57e

Browse files
authored
Merge pull request #369 from nix-community/return-fix
BuildRequestModel and BuildModel are no longer dicts
2 parents 387f1ba + 04d115e commit 3efc57e

File tree

4 files changed

+29
-23
lines changed

4 files changed

+29
-23
lines changed

buildbot_nix/buildbot_nix/__init__.py

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,6 @@
2121
from buildbot.locks import MasterLock
2222
from buildbot.plugins import schedulers, steps, util, worker
2323
from buildbot.process import buildstep, logobserver, remotecommand
24-
25-
# from buildbot.db.buildrequests import BuildRequestModel
26-
# from buildbot.db.builds import BuildModel
2724
from buildbot.process.project import Project
2825
from buildbot.process.properties import Properties
2926
from buildbot.process.results import ALL_RESULTS, SUCCESS, statusToString, worst_status
@@ -37,6 +34,8 @@
3734
from buildbot_nix.pull_based.backend import PullBasedBacked
3835

3936
if TYPE_CHECKING:
37+
from buildbot.db.buildrequests import BuildRequestModel
38+
from buildbot.db.builds import BuildModel
4039
from buildbot.process.log import StreamLog
4140
from buildbot.www.auth import AuthBase
4241

@@ -185,7 +184,7 @@ def __init__(
185184
self.cached_failure_scheduler = cached_failure_scheduler
186185
self.dependency_failed_scheduler = dependency_failed_scheduler
187186
self.failed_builds_db = failed_builds_db
188-
self._result_list: list[int] = []
187+
self._result_list: list[int | None] = []
189188
self.ended = False
190189
self.running = False
191190
self.wait_for_finish_deferred: defer.Deferred[tuple[list[int], int]] | None = (
@@ -339,24 +338,24 @@ async def schedule(
339338
return brids, results_deferred
340339

341340
async def _add_results(self, brid: Any) -> None:
342-
async def _is_buildrequest_complete(brid: Any) -> Generator[Any, Any, bool]:
343-
buildrequest: Any = await self.master.db.buildrequests.getBuildRequest(
344-
brid
345-
) # TODO: once we bump to 4.1.x use BuildRequestModel | None
341+
async def _is_buildrequest_complete(brid: Any) -> bool:
342+
buildrequest: (
343+
BuildRequestModel | None
344+
) = await self.master.db.buildrequests.getBuildRequest(brid)
346345
if buildrequest is None:
347346
message = "Failed to get build request by its ID"
348347
raise BuildbotNixError(message)
349-
return buildrequest["complete"]
348+
return buildrequest.complete
350349

351350
event = ("buildrequests", str(brid), "complete")
352351
await self.master.mq.waitUntilEvent(
353352
event, lambda: _is_buildrequest_complete(brid)
354353
)
355-
builds: Any = await self.master.db.builds.getBuilds(
354+
builds: list[BuildModel] = await self.master.db.builds.getBuilds(
356355
buildrequestid=brid
357-
) # TODO: once we bump to 4.1.x use list[BuildModel]
356+
)
358357
for build in builds:
359-
self._result_list.append(build["results"])
358+
self._result_list.append(build.results)
360359
self.updateSummary()
361360

362361
def prepare_sourcestamp_list_for_trigger(

buildbot_nix/buildbot_nix/nix_status_generator.py

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from collections.abc import Iterable
33
from datetime import UTC, datetime
44
from enum import Enum
5-
from typing import Any, ClassVar
5+
from typing import TYPE_CHECKING, Any, ClassVar
66

77
from buildbot.interfaces import IReportGenerator
88
from buildbot.master import BuildMaster
@@ -18,6 +18,9 @@
1818
from twisted.logger import Logger
1919
from zope.interface import implementer # type: ignore[import]
2020

21+
if TYPE_CHECKING:
22+
from buildbot.db.buildrequests import BuildRequestModel
23+
2124
log = Logger()
2225

2326

@@ -117,24 +120,26 @@ def __init__(
117120
# TODO: copy pasted from buildbot, make it static upstream and reuse
118121
@staticmethod
119122
async def partial_build_dict(
120-
master: BuildMaster, buildrequest: dict[str, Any]
123+
master: BuildMaster, brdict: dict[str, Any]
121124
) -> dict[str, Any]:
122-
brdict: Any = await master.db.buildrequests.getBuildRequest(
123-
buildrequest["buildrequestid"]
124-
)
125+
buildrequest_model: (
126+
BuildRequestModel | None
127+
) = await master.db.buildrequests.getBuildRequest(brdict["buildrequestid"])
128+
assert buildrequest_model is not None
129+
125130
bdict = {}
126131

127132
props = Properties()
128-
buildrequest = await BuildRequest.fromBrdict(master, brdict)
129-
builder = await master.botmaster.getBuilderById(brdict["builderid"])
133+
buildrequest = await BuildRequest.fromBrdict(master, buildrequest_model)
134+
builder = await master.botmaster.getBuilderById(buildrequest_model.builderid)
130135

131136
await Build.setup_properties_known_before_build_starts(
132137
props, [buildrequest], builder
133138
)
134139
Build.setupBuildProperties(props, [buildrequest])
135140

136141
bdict["properties"] = props.asDict()
137-
await utils.get_details_for_buildrequest(master, brdict, bdict)
142+
await utils.get_details_for_buildrequest(master, buildrequest, bdict)
138143
return bdict
139144

140145
# TODO: copy pasted from buildbot, somehow reuse

flake.lock

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

flake.nix

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,8 @@
100100
pkgs.ruff
101101
];
102102
};
103+
# useful for checking what buildbot version is used.
104+
buildbot = pkgs.buildbot;
103105
buildbot-nix = pkgs.python3.pkgs.callPackage ./nix/buildbot-nix.nix { };
104106
}
105107
// lib.optionalAttrs pkgs.stdenv.isLinux {

0 commit comments

Comments
 (0)