1this derivation will be built:2 /nix/store/bga80m5v77a7w0v582f90fxn3567vjsf-treefmt-check.drv3building '/nix/store/bga80m5v77a7w0v582f90fxn3567vjsf-treefmt-check.drv' on 'ssh-ng://customer@mac02.m.ntd.one'4building '/nix/store/bga80m5v77a7w0v582f90fxn3567vjsf-treefmt-check.drv'5treefmt-check> treefmt v2.5.0traversed 163 files6treefmt-check> emitted 93 files for processing7treefmt-check> formatted 93 files (2 changed) in 1.826s8treefmt-check> M packages/harvest-invoicer/src/harvest_invoicer/app.py9treefmt-check> M packages/harvest-invoicer/tests/test_app.py10treefmt-check> diff --git a/packages/harvest-invoicer/src/harvest_invoicer/app.py b/packages/harvest-invoicer/src/harvest_invoicer/app.py11treefmt-check> index 0b06a85..93a52fe 10064412treefmt-check> --- a/packages/harvest-invoicer/src/harvest_invoicer/app.py13treefmt-check> +++ b/packages/harvest-invoicer/src/harvest_invoicer/app.py14treefmt-check> @@ -215,9 +215,7 @@ def create_app(15treefmt-check> """Rebuild the invoice lines from the stored import + selection."""16treefmt-check> raw: list[InvoiceLine] = app.state["import_raw"] # type: ignore[attr-defined]17treefmt-check> selected: set[str] = app.state["selected_people"] # type: ignore[attr-defined]18treefmt-check> - lines = [19treefmt-check> - copy.deepcopy(ln) for ln in raw if not ln.user or ln.user in selected20treefmt-check> - ]21treefmt-check> + lines = [copy.deepcopy(ln) for ln in raw if not ln.user or ln.user in selected]22treefmt-check> if app.state["import_merge"]: # type: ignore[attr-defined]23treefmt-check> lines = merge_duplicate_lines(lines)24treefmt-check> cur_client: dict[str, str] = app.state["client"] # type: ignore[attr-defined]25treefmt-check> @@ -238,9 +236,7 @@ def create_app(26treefmt-check> "selected": selected,27treefmt-check> "you": str(issuer.get("harvest_user") or "").strip(),28treefmt-check> "total_hours": round(sum(hours.values()), 2),29treefmt-check> - "selected_hours": round(30treefmt-check> - sum(h for n, h in roster if n in selected), 231treefmt-check> - ),32treefmt-check> + "selected_hours": round(sum(h for n, h in roster if n in selected), 2),33treefmt-check> }34treefmt-check> 35treefmt-check> def _import_note_oob() -> str:36treefmt-check> diff --git a/packages/harvest-invoicer/tests/test_app.py b/packages/harvest-invoicer/tests/test_app.py37treefmt-check> index 1a6f50b..970837b 10064438treefmt-check> --- a/packages/harvest-invoicer/tests/test_app.py39treefmt-check> +++ b/packages/harvest-invoicer/tests/test_app.py40treefmt-check> @@ -1006,7 +1006,7 @@ class TestStyleCss:41treefmt-check> class TestImportRoster:42treefmt-check> """Person chips: choose whose hours the invoice includes."""43treefmt-check> 44treefmt-check> - def _team_fetch(self, ps: date, pe: date) -> list[InvoiceLine]: # noqa: ARG00245treefmt-check> + def _team_fetch(self, ps: date, pe: date) -> list[InvoiceLine]:46treefmt-check> return [47treefmt-check> InvoiceLine(concept="Dev", unit_price=100.0, quantity=10.0, user="Alice"),48treefmt-check> InvoiceLine(concept="Ops", unit_price=90.0, quantity=5.0, user="Bob"),49treefmt-check> @@ -1046,7 +1046,7 @@ class TestImportRoster:50treefmt-check> assert resp.data.count(b'class="chip on') == 251treefmt-check> 52treefmt-check> def test_single_person_import_has_no_chips(self, tmp_path: Path) -> None:53treefmt-check> - def solo(ps: date, pe: date) -> list[InvoiceLine]: # noqa: ARG00154treefmt-check> + def solo(ps: date, pe: date) -> list[InvoiceLine]:55treefmt-check> return [56treefmt-check> InvoiceLine(concept="Dev", unit_price=100.0, quantity=8.0, user="Al")57treefmt-check> ]58error: build of '/nix/store/bga80m5v77a7w0v582f90fxn3567vjsf-treefmt-check.drv' on 'ssh-ng://customer@mac02.m.ntd.one' failed: Cannot build '/nix/store/bga80m5v77a7w0v582f90fxn3567vjsf-treefmt-check.drv'.59 Reason: builder failed with exit code 1.60 Output paths:61 /nix/store/yr1p82vaq2sgpp3jb18h0p0px13g6dlv-treefmt-check62 Last 25 log lines:63 > }64 > 65 > def _import_note_oob() -> str:66 > diff --git a/packages/harvest-invoicer/tests/test_app.py b/packages/harvest-invoicer/tests/test_app.py67 > index 1a6f50b..970837b 10064468 > --- a/packages/harvest-invoicer/tests/test_app.py69 > +++ b/packages/harvest-invoicer/tests/test_app.py70 > @@ -1006,7 +1006,7 @@ class TestStyleCss:71 > class TestImportRoster:72 > """Person chips: choose whose hours the invoice includes."""73 > 74 > - def _team_fetch(self, ps: date, pe: date) -> list[InvoiceLine]: # noqa: ARG00275 > + def _team_fetch(self, ps: date, pe: date) -> list[InvoiceLine]:76 > return [77 > InvoiceLine(concept="Dev", unit_price=100.0, quantity=10.0, user="Alice"),78 > InvoiceLine(concept="Ops", unit_price=90.0, quantity=5.0, user="Bob"),79 > @@ -1046,7 +1046,7 @@ class TestImportRoster:80 > assert resp.data.count(b'class="chip on') == 281 > 82 > def test_single_person_import_has_no_chips(self, tmp_path: Path) -> None:83 > - def solo(ps: date, pe: date) -> list[InvoiceLine]: # noqa: ARG00184 > + def solo(ps: date, pe: date) -> list[InvoiceLine]:85 > return [86 > InvoiceLine(concept="Dev", unit_price=100.0, quantity=8.0, user="Al")87 > ]88 For full logs, run:89 nix log /nix/store/bga80m5v77a7w0v582f90fxn3567vjsf-treefmt-check.drv90error: Cannot build '/nix/store/bga80m5v77a7w0v582f90fxn3567vjsf-treefmt-check.drv'.91 Reason: builder failed with exit code 1.92 Output paths:93 /nix/store/yr1p82vaq2sgpp3jb18h0p0px13g6dlv-treefmt-check