import csv from enum import IntEnum import requests from lib.csv_loader import CSVLoader, CSVRow from lib.csv_loader.csv_loader import BoolValuePair, CSVRowDefaultConfig class ActionEnum(IntEnum): INSERT = 0 UPDATE = 1 DELETE = 2 class AssetRow(CSVRow): asset_id: str asset_action: ActionEnum serial_number: str brand_id: int model_id: int csv_content = [ '"asset_id";"asset_action";"serial_number";"brand_id";"model_id";"fiscal_device";"master_system_id";"uid";"data_type";"audit_id"', '"kdHSqoiZhkeuTVBNxraN";0;619424146021142446798498081758;99;1153541;1;"SSsEStytXSjIsinUzftG";"06ce0fed-d80c-4752-8923-544da7c876b6";"CUMULATIVE";"NONE"', '"jrHoRAenIJMUbCIPBtth";0;719320166058188715248485944107;814397;6;0;"";"";"";""', '"tzfBwDrLbIDhWzlfHjLe";0;915703577452730298126736643045;51500;64746;0;"";"";"";""', '"cAPRArDozeDakrTfnCPm";0;971562679443770830776578263954;6;724678;1;"MrFOJXhbwxrisNBpUzOh";"beb2380f-8852-451e-8365-87e6816292ce";"PERIOD";"ID106"', '"tEmFxUedeCvOuKCpgmGu";0;938691817183552061187410560615;5163;4265946;0;"";"";"";""', '"LWIMpOllWJtrJaooBaMP";0;614842602516041785255220888836;6;401143;1;"lCSFLItlCYbEhPnvIDSe";"eac6420e-7d1d-48e9-a601-13b9d6ca8f90";"CUMULATIVE";"ID102"', '"ocRQOONQyixZasLsHyNO";0;706550829841828070469899744448;954;73;0;"";"";"";""', '"vewYeIVZySKAUUkpieAx";0;363107851149183544404834214880;322377;2192890;1;"UfCZtXAnRIWTYJIahZKf";"87212d41-3793-4a78-9b3c-924ad6210cf5";"CUMULATIVE";"DA101"', '"qzYCDCHvVPmdMThIMjUd";0;268178212822631478031448196246;5;86955;0;"";"";"";""', '"ptMtXpAaKvsHTkijcrzl";0;452950079406792377275633884199;996;954395;0;"";"";"";""', '"BZuEjftneISKQcVDEXeK";0;468342155909862741706527121608;312117372;546;0;"";"";"";"" ', ] def main(): reader = csv.reader(csv_content, delimiter=";") csv_loader = CSVLoader[AssetRow]( reader=reader, output_model_cls=AssetRow, has_header=True, aggregate_errors=True, ) result = csv_loader.read_rows() "Results:" for row in result.rows: print(row) if result.has_errors(): print("Errors:") for error in result.errors: print(f"Line: {error.line_number}: {error.original_error}") if __name__ == "__main__": main()