# -*- coding: utf-8 -*- import email import traceback import amazon import amazon_cn 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, amazon_cn.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()]))