11from decimal import Decimal
2- import json
32import os
43import re
54import shutil
1514from .__version__ import __version__
1615
1716from . import read_cas_pdf
18- from .encoder import CASDataEncoder
1917from .exceptions import ParserException
20- from .parsers .utils import isclose
18+ from .parsers .utils import is_close , cas2json , cas2csv
2119
2220CONTEXT_SETTINGS = dict (help_option_names = ["-h" , "--help" ])
2321
@@ -94,7 +92,7 @@ def print_summary(data, tablefmt="fancy_grid", output_filename=None, include_zer
9492
9593 # Check is calculated close (i.e. open + units from all transactions) is same as
9694 # reported close and also the scheme valuation = nav * calculated close.
97- if calc_close != scheme ["close" ] or not isclose (
95+ if calc_close != scheme ["close" ] or not is_close (
9896 valuation ["nav" ] * calc_close , valuation ["value" ], tol = 2
9997 ):
10098 err += 1
@@ -201,7 +199,7 @@ def cli(output, summary, password, include_all, force_pdfminer, filename):
201199 if output is not None :
202200 output_ext = os .path .splitext (output )[- 1 ].lower ()
203201
204- if not (summary or output_ext == ". json" ):
202+ if not (summary or output_ext in ( ".csv" , ". json") ):
205203 summary = "fancy_grid"
206204
207205 try :
@@ -214,11 +212,12 @@ def cli(output, summary, password, include_all, force_pdfminer, filename):
214212 data ,
215213 tablefmt = summary ,
216214 include_zero_folios = include_all ,
217- output_filename = None if output_ext == ". json" else output ,
215+ output_filename = None if output_ext in ( ".csv" , ". json") else output ,
218216 )
219- if output_ext == ".json" :
217+ if output_ext in (".csv" , ".json" ):
218+ conv_fn = cas2json if output_ext == ".json" else cas2csv
220219 with open (output , "w" ) as fp :
221- json . dump ( data , fp , cls = CASDataEncoder , indent = 2 )
220+ fp . write ( conv_fn ( data ) )
222221 click .echo ("File saved : " + click .style (output , bold = True ))
223222
224223
0 commit comments