Skip to content

Commit bbea6b7

Browse files
authored
Merge pull request #15 from codereverser/fix/missing-pankyc
support for parsing folios without PAN KYC status
2 parents 8dae4ec + 92bec1d commit bbea6b7

File tree

5 files changed

+12
-6
lines changed

5 files changed

+12
-6
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Changelog
22

3+
## 0.3.8 - 2020-12-29
4+
5+
- Support for parsing folios without PAN/KYC details
6+
37
## 0.3.7 - 2020-12-24
48

59
- Support for parsing dividend transactions

casparser/VERSION.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.3.7
1+
0.3.8

casparser/process.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ def process_cas_text(text):
4242
description_tail = ""
4343
if amc_match := re.search(r"^(.+?)\s+(MF|Mutual\s+Fund)$", line, re.I | re.DOTALL):
4444
current_amc = amc_match.group(0)
45-
elif m := re.search(FOLIO_RE, line, re.I):
45+
elif m := re.search(FOLIO_RE, line, re.I | re.DOTALL):
4646
folio = m.group(1).strip()
4747
if current_folio is None or current_folio != folio:
4848
if curr_scheme_data and current_folio is not None:
@@ -54,7 +54,7 @@ def process_cas_text(text):
5454
"amc": current_amc,
5555
"PAN": (m.group(2) or "").strip(),
5656
"KYC": m.group(3).strip(),
57-
"PANKYC": m.group(4).strip(),
57+
"PANKYC": None if m.group(4) is None else m.group(4).strip(),
5858
"schemes": [],
5959
}
6060
elif m := re.search(SCHEME_RE, line, re.DOTALL | re.MULTILINE | re.I):

casparser/regex.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
HEADER_RE = r"(?P<from>\d{2}-[a-zA-Z]{3}-\d{4})\s+to\s+(?P<to>\d{2}-[a-zA-Z]{3}-\d{4})"
22

33
FOLIO_RE = (
4-
r"Folio\s+No\s*:\s+(.+?)\s+(?:PAN\s*:\s+([A-Z]{5}\d{4}[A-Z])\s+)?"
5-
r"KYC\s*:\s*(.+?)\s+PAN\s*:\s*(.+?)$"
4+
r"Folio\s+No\s*:\s+([\d/\s]+)\s+.*?(?:PAN\s*:\s+([A-Z]{5}\d{4}[A-Z])\s+)?.*?"
5+
r"KYC\s*:\s*(OK|NOT\s+OK)\s*.*?(?:PAN\s*:\s*(OK|NOT\s+OK))?$"
66
)
77

88
SCHEME_RE = r"([\s\w]+)-\s*\d*\s*(.+?)\s*(?:\(Advisor\s*:\s*(.+?)\))*\s+Registrar\s*:\s*(.*)\s*$"
@@ -12,7 +12,8 @@
1212
NAV_RE = r"NAV\s+on\s+(\d{2}-[A-Za-z]{3}-\d{4})\s*:\s*INR\s*([\d,.]+)"
1313

1414
TRANSACTION_RE = (
15-
r"(\d{2}-[A-Za-z]{3}-\d{4})\t\t([^\t]+?)\t\t([(\d,.]+)\)*(?:\t\t([(\d,.]+)\)*\t\t([(\d,.]+)\)*\t\t([(\d,.]+)\)*)*"
15+
r"(\d{2}-[A-Za-z]{3}-\d{4})\t\t([^\t]+?)\t\t([(\d,.]+)\)*(?:\t\t([(\d,.]+)\)*\t\t"
16+
r"([(\d,.]+)\)*\t\t([(\d,.]+)\)*)*"
1617
)
1718
DIVIDEND_RE = r"dividend.+?(reinvest)*.+?@\s+Rs\.\s*([\d\.]+)\s+per\s+unit"
1819

tests/test_mupdf.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ def test_cli(self, tmpdir):
1818
result = runner.invoke(cli, [self.cams_file_name, "-p", self.cams_password])
1919
assert result.exit_code == 0
2020
assert "Statement Period:" in result.output
21+
assert re.search(r"Error\s+:\s+0\s+schemes", result.output) is not None
2122

2223
fpath = tmpdir.join("output.json")
2324
result = runner.invoke(

0 commit comments

Comments
 (0)