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 | |
- 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
runlives 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 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 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
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. |