import datetime from abc import ABC, abstractmethod from dataclasses import dataclass from typing import List @dataclass class Item: product_number: str quantity: str description: str class InvoiceCreator(ABC): @abstractmethod def create_invoice( self, customer_number: str, purchase_order_date: datetime.date, delivery_date: datetime.date, reference_purchase_order: str, unic_id: str, items: List[Item], ): pass