# -*- coding: utf-8 -*- import email import traceback import amazon import banggood import hm import ikea import indiegogo import ingdiba import kickstarter import lieferservice import mytaxi import namecheap import oebb import thomann import uber import wienerlinien import yipbee order_confirmation_parsers = [ amazon.parse_order_confirmation_mail, banggood.parse_order_confirmation_mail, hm.parse_order_confirmation_mail, ikea.parse_order_confirmation_mail, indiegogo.parse_order_confirmation_mail, kickstarter.parse_order_confirmation_mail, lieferservice.parse_order_confirmation_mail, mytaxi.parse_order_confirmation_mail, namecheap.parse_order_confirmation_mail, oebb.parse_order_confirmation_mail, thomann.parse_order_confirmation_mail, uber.parse_order_confirmation_mail, wienerlinien.parse_order_confirmation_mail, yipbee.parse_order_confirmation_mail, ] def parse_order_confirmation_mail(mail): assert isinstance(mail, email.message.Message) tracebacks = {} for parser in order_confirmation_parsers: try: return parser(mail = mail) except: tracebacks['%s.%s' % (parser.__module__, parser.__name__)] = traceback.format_exc() raise Exception('\n'.join(['%s:\n%s' % (f, t) for (f, t) in tracebacks.items()]))