From b33c83af0a0f657ae0e48a7b945011d4c35dc4c6 2018-06-20 19:59:56 From: Brett Smith Date: 2018-06-20 19:59:56 Subject: [PATCH] importers: Catch and handle CSV parse errors in can_import. import2ledger bailed on one of these exceptions when trying to import a recent XLS file that had a null byte on a line. --- diff --git a/import2ledger/importers/_csv.py b/import2ledger/importers/_csv.py index 25c4480584ad7595505f332297bb74d27df33b18..325dcf5e0d97a42a4f1633463d61982c16cc94fd 100644 --- a/import2ledger/importers/_csv.py +++ b/import2ledger/importers/_csv.py @@ -63,8 +63,12 @@ class CSVImporterBase: @classmethod def can_import(cls, input_file): - _, fields = cls._read_header(input_file) - return cls._NEEDED_KEYS.issubset(fields or ()) + try: + _, fields = cls._read_header(input_file) + except csv.Error: + return False + else: + return cls._NEEDED_KEYS.issubset(fields or ()) def __init__(self, input_file): self.entry_seed, fields = self._read_header(input_file) diff --git a/setup.py b/setup.py index 728143e0027525f596ca89c2305e633419d5c010..b11cee9998be5006872942d80ca9e147ce28371c 100755 --- a/setup.py +++ b/setup.py @@ -30,7 +30,7 @@ REQUIREMENTS['tests_require'] = [ setup( name='import2ledger', description="Import different sources of financial data to Ledger", - version='0.3', + version='0.4', author='Brett Smith', author_email='brettcsmith@brettcsmith.org', license='GNU AGPLv3+',