11import os
2+ from typing import List
23from tqdm import tqdm
34from .parser_factory import ParserFactory
4- from .utils import DataLoader
5+ from .utils import DataLoader , DumpFile
56
67
78class RawParsingPipeline :
@@ -23,7 +24,7 @@ def process(self, limit=None):
2324 self .file_type .lower () + "_" + self .store_name .lower () + ".csv" ,
2425 )
2526
26- files_to_process = DataLoader (
27+ files_to_process : List [ DumpFile ] = DataLoader (
2728 self .folder ,
2829 store_names = [self .store_name ],
2930 files_types = [self .file_type ],
@@ -34,18 +35,38 @@ def process(self, limit=None):
3435 total = len (files_to_process ),
3536 desc = f"Processing { self .file_type } @{ self .store_name } " ,
3637 ):
37- parser = parser_class ()
38- df = parser .read (file )
3938
40- if not os .path .exists (create_csv ):
41- df .to_csv (create_csv , index = False , mode = "w" , header = True )
42- else :
43- df .to_csv (create_csv , index = False , mode = "a" , header = False )
44-
45- del df
39+ execution_log = []
40+ try :
41+ parser = parser_class ()
42+ df = parser .read (file )
43+
44+ if not os .path .exists (create_csv ):
45+ df .to_csv (create_csv , index = False , mode = "w" , header = True )
46+ else :
47+ df .to_csv (create_csv , index = False , mode = "a" , header = False )
48+
49+ del df
50+
51+ execution_log .append (
52+ {
53+ "status" : True ,
54+ ** file .to_log_dict (),
55+ }
56+ )
57+
58+ except Exception as error : # pylint: disable=broad-exception-caught
59+ execution_log .append (
60+ {
61+ "status" : False ,
62+ "error" : error ,
63+ ** file .to_log_dict (),
64+ }
65+ )
4666
4767 return {
4868 "status" : True ,
69+ "execution_log" : execution_log ,
4970 "file_was_created" : len (files_to_process ) > 0 ,
5071 "file_created_path" : create_csv ,
5172 "files_to_process" : [dumpfile .file_name for dumpfile in files_to_process ],
0 commit comments