best-doctor / import_me

Python library to simplify importing data from xls/xlsx
MIT License
11 stars 12 forks source link

Разделить Parser и ParserResult #33

Open sergey-jerzy opened 4 years ago

sergey-jerzy commented 4 years ago

Сейчас парсер инстанцируется с файлом для импорта, а потом начинает содержать в себе ошибки и данные. Это, может быть, вдохновлено Serializer'ами из DRF, но в целом не сильно удобно и смешивает сущности.

>>> parser = XLSXParser(file_path=xlsx_filepath)
>>> parser()
>>> print(parser.has_errors)  # False
>>> pprint(parser.cleaned_data)

Почему бы не передавать файл для импорта в метод parse(), отдавая некий ParseResult?

>>> parser = XLSXParser()
>>> result = parser.parse(file_path=xlsx_filepath)
>>> print(result.has_errors)  # False
>>> pprint(result.cleaned_data)

Это позволит отделить настройки парсера от результата, собрать в парсере только методы для импорта файлов, файлов по шаблону и т.п.

PashaWNN commented 5 days ago

Отчасти сделано в https://github.com/best-doctor/import_me/pull/52 (внутри функции используется старый парсер с ошибками внутри, но DTO-обёртка возвращает ParsingResult)