from __future__ import annotations import re from .base import amount, norm def find(pattern,text,group=1,flags=re.I|re.M): m=re.search(pattern,text,flags) return norm(m.group(group)) if m else '' def date_iso(s): import pandas as pd x=pd.to_datetime(s,errors='coerce',dayfirst=True) return '' if pd.isna(x) else x.strftime('%Y-%m-%d') def split_pages(text): return text.split('\f') def infer_mode(n): u=(n or '').upper() for k,v in [('UPI','UPI'),('NEFT','NEFT'),('IMPS','IMPS'),('RTGS','RTGS'),('CASH DEPOSIT','Cash Deposit'),('CASH WITHDRAWAL','Cash Withdrawal'),('ATM','ATM'),('CHEQUE','Cheque'),('CHQ','Cheque'),('POS','POS'),('EDC','Card Settlement'),('ACH','ACH')]: if k in u:return v return 'Other'