Skip to content

Abc

pipelines.extraction.email.abc

Summary

Abstract contracts for the email (message) extraction graph (no implementation).


Email is NOT the OCR text chain. A message is self-contained — one HTML email maps to one transaction, so the chain is deliberately slim:

1
ingest → message_reader → message_parser → raw_expense
  • MessageReaderPort : content (Content/list/bytes) → list of flattened message texts (BeautifulSoup flatten of each email).
  • MessageParserPort : message text → one txn dict (bank-specific regexes: Axis charged-to / debited-credited, Icici credited / refund / reversal).
  • EmailExtractionPipeline : graph root (shared staged run lives in the concrete impl).

No bucket finding, splitting, or ambiguity resolution happens here.

Classes

EmailExtractionPipeline

Bases: ABC

Root — wires ingest → message_reader → message_parser → raw_expense.

Attributes:

Name Type Description
source ExtractionSource

The extraction source descriptor.

pipeline str

Pipeline tag; defaults to "heuristic".

ingest IngestPort

Ingest stage.

message_reader MessageReaderPort

Message-reading stage.

message_parser MessageParserPort

Message-parsing stage.

raw_expense RawExpensePort

Terminal raw-expense stage.

Functions
run abstractmethod
run(source) -> List[Any]

Run the email extraction chain.

Parameters:

Name Type Description Default
source

Raw extraction source.

required

Returns:

Type Description
List[Any]

List[Any]: Raw expense records.

MessageParserPort

Bases: ABC

message text → one txn dict (date/particulars/amount/balance/direction).

Functions
parse abstractmethod
parse(message: str) -> Dict[str, Any]

Parse one message into a txn dict.

Parameters:

Name Type Description Default
message str

Flattened message text.

required

Returns:

Type Description
Dict[str, Any]

Dict[str, Any]: Txn dict with date/particulars/amount/balance/

Dict[str, Any]

direction keys.

MessageReaderPort

Bases: ABC

content → list of flattened message texts.

Functions
extract abstractmethod
extract(content) -> List[str]

Flatten content into message texts.

Parameters:

Name Type Description Default
content

Content (list, bytes, dict, or a single source).

required

Returns:

Type Description
List[str]

List[str]: Flattened message texts.