Loading muffin/payment_order/PaymentOrderCollection.py 0 → 100644 +21 −0 Original line number Diff line number Diff line from dataclasses import dataclass from pathlib import Path from collections.abc import Iterable, Iterator from ..utils import group_by from .PaymentOrder import PaymentOrder from .PaymentOrderLoader import load_pdf @dataclass(frozen=True, eq=False) class PaymentOrderCollection(Iterable[PaymentOrder]): base_dir: Path def __iter__(self) -> Iterator[PaymentOrder]: return (load_pdf(pdf) for pdf in self.base_dir.rglob("*.pdf")) @property def by_budgetary_item_id(self): return group_by(self, lambda payment_order: payment_order.budgetary_item_id) muffin/utils.py 0 → 100644 +5 −0 Original line number Diff line number Diff line import itertools def group_by(iterable, key): return itertools.groupby(sorted(iterable, key=key), key) Loading
muffin/payment_order/PaymentOrderCollection.py 0 → 100644 +21 −0 Original line number Diff line number Diff line from dataclasses import dataclass from pathlib import Path from collections.abc import Iterable, Iterator from ..utils import group_by from .PaymentOrder import PaymentOrder from .PaymentOrderLoader import load_pdf @dataclass(frozen=True, eq=False) class PaymentOrderCollection(Iterable[PaymentOrder]): base_dir: Path def __iter__(self) -> Iterator[PaymentOrder]: return (load_pdf(pdf) for pdf in self.base_dir.rglob("*.pdf")) @property def by_budgetary_item_id(self): return group_by(self, lambda payment_order: payment_order.budgetary_item_id)
muffin/utils.py 0 → 100644 +5 −0 Original line number Diff line number Diff line import itertools def group_by(iterable, key): return itertools.groupby(sorted(iterable, key=key), key)