1this derivation will be built:2 /nix/store/w1fr90laj0f6my93vx4rxr27gj58xgy6-treefmt-check.drv3building '/nix/store/w1fr90laj0f6my93vx4rxr27gj58xgy6-treefmt-check.drv'4treefmt-check> treefmt v2.5.0traversed 163 files5treefmt-check> emitted 93 files for processing6treefmt-check> formatted 93 files (2 changed) in 2.457s7treefmt-check> M packages/harvest-invoicer/src/harvest_invoicer/app.py8treefmt-check> M packages/harvest-invoicer/tests/test_app.py9treefmt-check> diff --git a/packages/harvest-invoicer/src/harvest_invoicer/app.py b/packages/harvest-invoicer/src/harvest_invoicer/app.py10treefmt-check> index 0b06a85..93a52fe 10064411treefmt-check> --- a/packages/harvest-invoicer/src/harvest_invoicer/app.py12treefmt-check> +++ b/packages/harvest-invoicer/src/harvest_invoicer/app.py13treefmt-check> @@ -215,9 +215,7 @@ def create_app(14treefmt-check> """Rebuild the invoice lines from the stored import + selection."""15treefmt-check> raw: list[InvoiceLine] = app.state["import_raw"] # type: ignore[attr-defined]16treefmt-check> selected: set[str] = app.state["selected_people"] # type: ignore[attr-defined]17treefmt-check> - lines = [18treefmt-check> - copy.deepcopy(ln) for ln in raw if not ln.user or ln.user in selected19treefmt-check> - ]20treefmt-check> + lines = [copy.deepcopy(ln) for ln in raw if not ln.user or ln.user in selected]21treefmt-check> if app.state["import_merge"]: # type: ignore[attr-defined]22treefmt-check> lines = merge_duplicate_lines(lines)23treefmt-check> cur_client: dict[str, str] = app.state["client"] # type: ignore[attr-defined]24treefmt-check> @@ -238,9 +236,7 @@ def create_app(25treefmt-check> "selected": selected,26treefmt-check> "you": str(issuer.get("harvest_user") or "").strip(),27treefmt-check> "total_hours": round(sum(hours.values()), 2),28treefmt-check> - "selected_hours": round(29treefmt-check> - sum(h for n, h in roster if n in selected), 230treefmt-check> - ),31treefmt-check> + "selected_hours": round(sum(h for n, h in roster if n in selected), 2),32treefmt-check> }33treefmt-check> 34treefmt-check> def _import_note_oob() -> str:35treefmt-check> diff --git a/packages/harvest-invoicer/tests/test_app.py b/packages/harvest-invoicer/tests/test_app.py36treefmt-check> index 1a6f50b..970837b 10064437treefmt-check> --- a/packages/harvest-invoicer/tests/test_app.py38treefmt-check> +++ b/packages/harvest-invoicer/tests/test_app.py39treefmt-check> @@ -1006,7 +1006,7 @@ class TestStyleCss:40treefmt-check> class TestImportRoster:41treefmt-check> """Person chips: choose whose hours the invoice includes."""42treefmt-check> 43treefmt-check> - def _team_fetch(self, ps: date, pe: date) -> list[InvoiceLine]: # noqa: ARG00244treefmt-check> + def _team_fetch(self, ps: date, pe: date) -> list[InvoiceLine]:45treefmt-check> return [46treefmt-check> InvoiceLine(concept="Dev", unit_price=100.0, quantity=10.0, user="Alice"),47treefmt-check> InvoiceLine(concept="Ops", unit_price=90.0, quantity=5.0, user="Bob"),48treefmt-check> @@ -1046,7 +1046,7 @@ class TestImportRoster:49treefmt-check> assert resp.data.count(b'class="chip on') == 250treefmt-check> 51treefmt-check> def test_single_person_import_has_no_chips(self, tmp_path: Path) -> None:52treefmt-check> - def solo(ps: date, pe: date) -> list[InvoiceLine]: # noqa: ARG00153treefmt-check> + def solo(ps: date, pe: date) -> list[InvoiceLine]:54treefmt-check> return [55treefmt-check> InvoiceLine(concept="Dev", unit_price=100.0, quantity=8.0, user="Al")56treefmt-check> ]57error: Cannot build '/nix/store/w1fr90laj0f6my93vx4rxr27gj58xgy6-treefmt-check.drv'.58 Reason: builder failed with exit code 1.59 Output paths:60 /nix/store/c94qbgkc8hx3biz8x5a75zszmwsh7zdj-treefmt-check61 Last 25 log lines:62 > }63 > 64 > def _import_note_oob() -> str:65 > diff --git a/packages/harvest-invoicer/tests/test_app.py b/packages/harvest-invoicer/tests/test_app.py66 > index 1a6f50b..970837b 10064467 > --- a/packages/harvest-invoicer/tests/test_app.py68 > +++ b/packages/harvest-invoicer/tests/test_app.py69 > @@ -1006,7 +1006,7 @@ class TestStyleCss:70 > class TestImportRoster:71 > """Person chips: choose whose hours the invoice includes."""72 > 73 > - def _team_fetch(self, ps: date, pe: date) -> list[InvoiceLine]: # noqa: ARG00274 > + def _team_fetch(self, ps: date, pe: date) -> list[InvoiceLine]:75 > return [76 > InvoiceLine(concept="Dev", unit_price=100.0, quantity=10.0, user="Alice"),77 > InvoiceLine(concept="Ops", unit_price=90.0, quantity=5.0, user="Bob"),78 > @@ -1046,7 +1046,7 @@ class TestImportRoster:79 > assert resp.data.count(b'class="chip on') == 280 > 81 > def test_single_person_import_has_no_chips(self, tmp_path: Path) -> None:82 > - def solo(ps: date, pe: date) -> list[InvoiceLine]: # noqa: ARG00183 > + def solo(ps: date, pe: date) -> list[InvoiceLine]:84 > return [85 > InvoiceLine(concept="Dev", unit_price=100.0, quantity=8.0, user="Al")86 > ]87 For full logs, run:88 nix log /nix/store/w1fr90laj0f6my93vx4rxr27gj58xgy6-treefmt-check.drv