============================= test session starts ============================== platform linux -- Python 3.10.1, pytest-6.2.5, py-1.11.0, pluggy-0.13.1 rootdir: /build/python-sepaxml/src/python-sepaxml-2.4.1 collected 19 items tests/debit/test_00800102.py E [ 5%] tests/debit/test_00800202.py E [ 10%] tests/debit/test_00800302.py EFF [ 26%] tests/debit/test_00800302_b2b.py E [ 31%] tests/debit/test_config.py F. [ 42%] tests/debit/test_endtoendid.py E [ 47%] tests/debit/test_escaped.py E [ 52%] tests/debit/test_no_bic.py E [ 57%] tests/debit/test_no_bic_00800302.py E [ 63%] tests/debit/test_non_batch.py E [ 68%] tests/transfer/test_00100103.py E [ 73%] tests/transfer/test_config.py F. [ 84%] tests/transfer/test_endtoendid.py E [ 89%] tests/transfer/test_no_bic.py E [ 94%] tests/transfer/test_non_batch.py E [100%] ==================================== ERRORS ==================================== ______________________ ERROR at setup of test_two_debits _______________________ @pytest.fixture def sdd(): > return SepaDD({ "name": "TestCreditor", "IBAN": "NL50BANK1234567890", "BIC": "BANKNL2A", "batch": True, "creditor_id": "DE26ZZZ00000000000", "currency": "EUR" }, schema="pain.008.001.02") tests/debit/test_00800102.py:11: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ sepaxml/debit.py:17: in __init__ super().__init__(config, schema, clean) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = config = {'BIC': 'BANKNL2A', 'IBAN': 'NL50BANK1234567890', 'batch': True, 'creditor_id': 'DE26ZZZ00000000000', ...} schema = 'pain.008.001.02', clean = True def __init__(self, config, schema, clean=True): """ Constructor. Checks the config, prepares the document and builds the header. @param param: The config dict. @raise exception: When the config file is invalid. """ self._config = None # Will contain the config file. self._xml = None # Will contain the final XML file. self._batches = OrderedDict() # Will contain the SEPA batches. self._batch_totals = OrderedDict() # Will contain the total amount to debit per batch for checksum total. self.schema = schema self.msg_id = make_msg_id() self.clean = clean config_result = self.check_config(config) if config_result: self._config = config if self.clean: > from text_unidecode import unidecode E ModuleNotFoundError: No module named 'text_unidecode' sepaxml/shared.py:29: ModuleNotFoundError ______________________ ERROR at setup of test_two_debits _______________________ @pytest.fixture def sdd(): > return SepaDD({ "name": "TestCreditor", "IBAN": "NL50BANK1234567890", "BIC": "BANKNL2A", "batch": True, "creditor_id": "DE26ZZZ00000000000", "currency": "EUR" }, schema="pain.008.002.02") tests/debit/test_00800202.py:11: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ sepaxml/debit.py:17: in __init__ super().__init__(config, schema, clean) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = config = {'BIC': 'BANKNL2A', 'IBAN': 'NL50BANK1234567890', 'batch': True, 'creditor_id': 'DE26ZZZ00000000000', ...} schema = 'pain.008.002.02', clean = True def __init__(self, config, schema, clean=True): """ Constructor. Checks the config, prepares the document and builds the header. @param param: The config dict. @raise exception: When the config file is invalid. """ self._config = None # Will contain the config file. self._xml = None # Will contain the final XML file. self._batches = OrderedDict() # Will contain the SEPA batches. self._batch_totals = OrderedDict() # Will contain the total amount to debit per batch for checksum total. self.schema = schema self.msg_id = make_msg_id() self.clean = clean config_result = self.check_config(config) if config_result: self._config = config if self.clean: > from text_unidecode import unidecode E ModuleNotFoundError: No module named 'text_unidecode' sepaxml/shared.py:29: ModuleNotFoundError ______________________ ERROR at setup of test_two_debits _______________________ @pytest.fixture def sdd(): > return SepaDD({ "name": "TestCreditor", "IBAN": "NL50BANK1234567890", "BIC": "BANKNL2A", "batch": True, "creditor_id": "DE26ZZZ00000000000", "currency": "EUR" }, schema="pain.008.003.02") tests/debit/test_00800302.py:12: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ sepaxml/debit.py:17: in __init__ super().__init__(config, schema, clean) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = config = {'BIC': 'BANKNL2A', 'IBAN': 'NL50BANK1234567890', 'batch': True, 'creditor_id': 'DE26ZZZ00000000000', ...} schema = 'pain.008.003.02', clean = True def __init__(self, config, schema, clean=True): """ Constructor. Checks the config, prepares the document and builds the header. @param param: The config dict. @raise exception: When the config file is invalid. """ self._config = None # Will contain the config file. self._xml = None # Will contain the final XML file. self._batches = OrderedDict() # Will contain the SEPA batches. self._batch_totals = OrderedDict() # Will contain the total amount to debit per batch for checksum total. self.schema = schema self.msg_id = make_msg_id() self.clean = clean config_result = self.check_config(config) if config_result: self._config = config if self.clean: > from text_unidecode import unidecode E ModuleNotFoundError: No module named 'text_unidecode' sepaxml/shared.py:29: ModuleNotFoundError ______________________ ERROR at setup of test_two_debits _______________________ @pytest.fixture def sdd(): > return SepaDD({ "name": "TestCreditor", "IBAN": "NL50BANK1234567890", "BIC": "BANKNL2A", "batch": True, "creditor_id": "DE26ZZZ00000000000", "currency": "EUR", "instrument": "B2B" }, schema="pain.008.003.02") tests/debit/test_00800302_b2b.py:11: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ sepaxml/debit.py:17: in __init__ super().__init__(config, schema, clean) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = config = {'BIC': 'BANKNL2A', 'IBAN': 'NL50BANK1234567890', 'batch': True, 'creditor_id': 'DE26ZZZ00000000000', ...} schema = 'pain.008.003.02', clean = True def __init__(self, config, schema, clean=True): """ Constructor. Checks the config, prepares the document and builds the header. @param param: The config dict. @raise exception: When the config file is invalid. """ self._config = None # Will contain the config file. self._xml = None # Will contain the final XML file. self._batches = OrderedDict() # Will contain the SEPA batches. self._batch_totals = OrderedDict() # Will contain the total amount to debit per batch for checksum total. self.schema = schema self.msg_id = make_msg_id() self.clean = clean config_result = self.check_config(config) if config_result: self._config = config if self.clean: > from text_unidecode import unidecode E ModuleNotFoundError: No module named 'text_unidecode' sepaxml/shared.py:29: ModuleNotFoundError ______________________ ERROR at setup of test_two_debits _______________________ @pytest.fixture def sdd(): > return SepaDD({ "name": "Miller & Son Ltd", "IBAN": "NL50BANK1234567890", "BIC": "BANKNL2A", "batch": True, "creditor_id": "DE26ZZZ00000000000", "currency": "EUR" }, schema="pain.008.003.02") tests/debit/test_endtoendid.py:13: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ sepaxml/debit.py:17: in __init__ super().__init__(config, schema, clean) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = config = {'BIC': 'BANKNL2A', 'IBAN': 'NL50BANK1234567890', 'batch': True, 'creditor_id': 'DE26ZZZ00000000000', ...} schema = 'pain.008.003.02', clean = True def __init__(self, config, schema, clean=True): """ Constructor. Checks the config, prepares the document and builds the header. @param param: The config dict. @raise exception: When the config file is invalid. """ self._config = None # Will contain the config file. self._xml = None # Will contain the final XML file. self._batches = OrderedDict() # Will contain the SEPA batches. self._batch_totals = OrderedDict() # Will contain the total amount to debit per batch for checksum total. self.schema = schema self.msg_id = make_msg_id() self.clean = clean config_result = self.check_config(config) if config_result: self._config = config if self.clean: > from text_unidecode import unidecode E ModuleNotFoundError: No module named 'text_unidecode' sepaxml/shared.py:29: ModuleNotFoundError ______________________ ERROR at setup of test_two_debits _______________________ @pytest.fixture def sdd(): > return SepaDD({ "name": "Müller & Sohn Ltd", "IBAN": "NL50BANK1234567890", "BIC": "BANKNL2A", "batch": True, "creditor_id": "DE26ZZZ00000000000", "currency": "EUR" }, schema="pain.008.003.02") tests/debit/test_escaped.py:11: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ sepaxml/debit.py:17: in __init__ super().__init__(config, schema, clean) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = config = {'BIC': 'BANKNL2A', 'IBAN': 'NL50BANK1234567890', 'batch': True, 'creditor_id': 'DE26ZZZ00000000000', ...} schema = 'pain.008.003.02', clean = True def __init__(self, config, schema, clean=True): """ Constructor. Checks the config, prepares the document and builds the header. @param param: The config dict. @raise exception: When the config file is invalid. """ self._config = None # Will contain the config file. self._xml = None # Will contain the final XML file. self._batches = OrderedDict() # Will contain the SEPA batches. self._batch_totals = OrderedDict() # Will contain the total amount to debit per batch for checksum total. self.schema = schema self.msg_id = make_msg_id() self.clean = clean config_result = self.check_config(config) if config_result: self._config = config if self.clean: > from text_unidecode import unidecode E ModuleNotFoundError: No module named 'text_unidecode' sepaxml/shared.py:29: ModuleNotFoundError ______________________ ERROR at setup of test_two_debits _______________________ @pytest.fixture def sdd(): > return SepaDD({ "name": "TestCreditor", "IBAN": "NL50BANK1234567890", "BIC": "BANKNL2A", "batch": True, "creditor_id": "DE26ZZZ00000000000", "currency": "EUR" }, schema="pain.008.001.02") tests/debit/test_no_bic.py:12: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ sepaxml/debit.py:17: in __init__ super().__init__(config, schema, clean) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = config = {'BIC': 'BANKNL2A', 'IBAN': 'NL50BANK1234567890', 'batch': True, 'creditor_id': 'DE26ZZZ00000000000', ...} schema = 'pain.008.001.02', clean = True def __init__(self, config, schema, clean=True): """ Constructor. Checks the config, prepares the document and builds the header. @param param: The config dict. @raise exception: When the config file is invalid. """ self._config = None # Will contain the config file. self._xml = None # Will contain the final XML file. self._batches = OrderedDict() # Will contain the SEPA batches. self._batch_totals = OrderedDict() # Will contain the total amount to debit per batch for checksum total. self.schema = schema self.msg_id = make_msg_id() self.clean = clean config_result = self.check_config(config) if config_result: self._config = config if self.clean: > from text_unidecode import unidecode E ModuleNotFoundError: No module named 'text_unidecode' sepaxml/shared.py:29: ModuleNotFoundError ______________________ ERROR at setup of test_two_debits _______________________ @pytest.fixture def sdd(): > return SepaDD({ "name": "TestCreditor", "IBAN": "NL50BANK1234567890", # "BIC": "BANKNL2A", "batch": True, "creditor_id": "DE26ZZZ00000000000", "currency": "EUR" }, schema="pain.008.003.02") tests/debit/test_no_bic_00800302.py:12: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ sepaxml/debit.py:17: in __init__ super().__init__(config, schema, clean) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = config = {'IBAN': 'NL50BANK1234567890', 'batch': True, 'creditor_id': 'DE26ZZZ00000000000', 'currency': 'EUR', ...} schema = 'pain.008.003.02', clean = True def __init__(self, config, schema, clean=True): """ Constructor. Checks the config, prepares the document and builds the header. @param param: The config dict. @raise exception: When the config file is invalid. """ self._config = None # Will contain the config file. self._xml = None # Will contain the final XML file. self._batches = OrderedDict() # Will contain the SEPA batches. self._batch_totals = OrderedDict() # Will contain the total amount to debit per batch for checksum total. self.schema = schema self.msg_id = make_msg_id() self.clean = clean config_result = self.check_config(config) if config_result: self._config = config if self.clean: > from text_unidecode import unidecode E ModuleNotFoundError: No module named 'text_unidecode' sepaxml/shared.py:29: ModuleNotFoundError ______________________ ERROR at setup of test_two_debits _______________________ @pytest.fixture def sdd(): > return SepaDD({ "name": "TestCreditor", "IBAN": "NL50BANK1234567890", "BIC": "BANKNL2A", "batch": False, "creditor_id": "DE26ZZZ00000000000", "currency": "EUR" }, schema="pain.008.003.02") tests/debit/test_non_batch.py:11: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ sepaxml/debit.py:17: in __init__ super().__init__(config, schema, clean) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = config = {'BIC': 'BANKNL2A', 'IBAN': 'NL50BANK1234567890', 'batch': False, 'creditor_id': 'DE26ZZZ00000000000', ...} schema = 'pain.008.003.02', clean = True def __init__(self, config, schema, clean=True): """ Constructor. Checks the config, prepares the document and builds the header. @param param: The config dict. @raise exception: When the config file is invalid. """ self._config = None # Will contain the config file. self._xml = None # Will contain the final XML file. self._batches = OrderedDict() # Will contain the SEPA batches. self._batch_totals = OrderedDict() # Will contain the total amount to debit per batch for checksum total. self.schema = schema self.msg_id = make_msg_id() self.clean = clean config_result = self.check_config(config) if config_result: self._config = config if self.clean: > from text_unidecode import unidecode E ModuleNotFoundError: No module named 'text_unidecode' sepaxml/shared.py:29: ModuleNotFoundError ______________________ ERROR at setup of test_two_debits _______________________ @pytest.fixture def strf(): > return SepaTransfer({ "name": "TestCreditor", "IBAN": "NL50BANK1234567890", "BIC": "BANKNL2A", "batch": True, "currency": "EUR" }, schema="pain.001.001.03") tests/transfer/test_00100103.py:11: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ sepaxml/transfer.py:15: in __init__ super().__init__(config, schema, clean) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = config = {'BIC': 'BANKNL2A', 'IBAN': 'NL50BANK1234567890', 'batch': True, 'currency': 'EUR', ...} schema = 'pain.001.001.03', clean = True def __init__(self, config, schema, clean=True): """ Constructor. Checks the config, prepares the document and builds the header. @param param: The config dict. @raise exception: When the config file is invalid. """ self._config = None # Will contain the config file. self._xml = None # Will contain the final XML file. self._batches = OrderedDict() # Will contain the SEPA batches. self._batch_totals = OrderedDict() # Will contain the total amount to debit per batch for checksum total. self.schema = schema self.msg_id = make_msg_id() self.clean = clean config_result = self.check_config(config) if config_result: self._config = config if self.clean: > from text_unidecode import unidecode E ModuleNotFoundError: No module named 'text_unidecode' sepaxml/shared.py:29: ModuleNotFoundError ______________________ ERROR at setup of test_two_debits _______________________ @pytest.fixture def strf(): > return SepaTransfer({ "name": "Miller & Son Ltd", "IBAN": "NL50BANK1234567890", "BIC": "BANKNL2A", "batch": True, "currency": "EUR" }) tests/transfer/test_endtoendid.py:13: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ sepaxml/transfer.py:15: in __init__ super().__init__(config, schema, clean) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = config = {'BIC': 'BANKNL2A', 'IBAN': 'NL50BANK1234567890', 'batch': True, 'currency': 'EUR', ...} schema = 'pain.001.001.03', clean = True def __init__(self, config, schema, clean=True): """ Constructor. Checks the config, prepares the document and builds the header. @param param: The config dict. @raise exception: When the config file is invalid. """ self._config = None # Will contain the config file. self._xml = None # Will contain the final XML file. self._batches = OrderedDict() # Will contain the SEPA batches. self._batch_totals = OrderedDict() # Will contain the total amount to debit per batch for checksum total. self.schema = schema self.msg_id = make_msg_id() self.clean = clean config_result = self.check_config(config) if config_result: self._config = config if self.clean: > from text_unidecode import unidecode E ModuleNotFoundError: No module named 'text_unidecode' sepaxml/shared.py:29: ModuleNotFoundError _____________________ ERROR at setup of test_two_transfers _____________________ @pytest.fixture def strf(): > return SepaTransfer({ "name": "TestCreditor", "IBAN": "NL50BANK1234567890", "batch": True, "currency": "EUR" }, schema="pain.001.001.03") tests/transfer/test_no_bic.py:11: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ sepaxml/transfer.py:15: in __init__ super().__init__(config, schema, clean) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = config = {'IBAN': 'NL50BANK1234567890', 'batch': True, 'currency': 'EUR', 'name': 'TestCreditor'} schema = 'pain.001.001.03', clean = True def __init__(self, config, schema, clean=True): """ Constructor. Checks the config, prepares the document and builds the header. @param param: The config dict. @raise exception: When the config file is invalid. """ self._config = None # Will contain the config file. self._xml = None # Will contain the final XML file. self._batches = OrderedDict() # Will contain the SEPA batches. self._batch_totals = OrderedDict() # Will contain the total amount to debit per batch for checksum total. self.schema = schema self.msg_id = make_msg_id() self.clean = clean config_result = self.check_config(config) if config_result: self._config = config if self.clean: > from text_unidecode import unidecode E ModuleNotFoundError: No module named 'text_unidecode' sepaxml/shared.py:29: ModuleNotFoundError ______________________ ERROR at setup of test_two_debits _______________________ @pytest.fixture def strf(): > return SepaTransfer({ "name": "TestCreditor", "IBAN": "NL50BANK1234567890", "BIC": "BANKNL2A", "batch": False, "currency": "EUR" }) tests/transfer/test_non_batch.py:11: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ sepaxml/transfer.py:15: in __init__ super().__init__(config, schema, clean) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = config = {'BIC': 'BANKNL2A', 'IBAN': 'NL50BANK1234567890', 'batch': False, 'currency': 'EUR', ...} schema = 'pain.001.001.03', clean = True def __init__(self, config, schema, clean=True): """ Constructor. Checks the config, prepares the document and builds the header. @param param: The config dict. @raise exception: When the config file is invalid. """ self._config = None # Will contain the config file. self._xml = None # Will contain the final XML file. self._batches = OrderedDict() # Will contain the SEPA batches. self._batch_totals = OrderedDict() # Will contain the total amount to debit per batch for checksum total. self.schema = schema self.msg_id = make_msg_id() self.clean = clean config_result = self.check_config(config) if config_result: self._config = config if self.clean: > from text_unidecode import unidecode E ModuleNotFoundError: No module named 'text_unidecode' sepaxml/shared.py:29: ModuleNotFoundError =================================== FAILURES =================================== ______________________________ test_name_too_long ______________________________ def test_name_too_long(): > sdd = SepaDD({ "name": "TestCreditor", "BIC": "BANKNL2A", "IBAN": "NL50BANK1234567890", "batch": True, "creditor_id": "000000", "currency": "EUR" }, schema="pain.008.003.02") tests/debit/test_00800302.py:220: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ sepaxml/debit.py:17: in __init__ super().__init__(config, schema, clean) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = config = {'BIC': 'BANKNL2A', 'IBAN': 'NL50BANK1234567890', 'batch': True, 'creditor_id': '000000', ...} schema = 'pain.008.003.02', clean = True def __init__(self, config, schema, clean=True): """ Constructor. Checks the config, prepares the document and builds the header. @param param: The config dict. @raise exception: When the config file is invalid. """ self._config = None # Will contain the config file. self._xml = None # Will contain the final XML file. self._batches = OrderedDict() # Will contain the SEPA batches. self._batch_totals = OrderedDict() # Will contain the total amount to debit per batch for checksum total. self.schema = schema self.msg_id = make_msg_id() self.clean = clean config_result = self.check_config(config) if config_result: self._config = config if self.clean: > from text_unidecode import unidecode E ModuleNotFoundError: No module named 'text_unidecode' sepaxml/shared.py:29: ModuleNotFoundError _____________________________ test_invalid_mandate _____________________________ def test_invalid_mandate(): > sdd = SepaDD({ "name": "TestCreditor", "BIC": "BANKNL2A", "IBAN": "NL50BANK1234567890", "batch": True, "creditor_id": "000000", "currency": "EUR" }, schema="pain.008.003.02") tests/debit/test_00800302.py:246: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ sepaxml/debit.py:17: in __init__ super().__init__(config, schema, clean) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = config = {'BIC': 'BANKNL2A', 'IBAN': 'NL50BANK1234567890', 'batch': True, 'creditor_id': '000000', ...} schema = 'pain.008.003.02', clean = True def __init__(self, config, schema, clean=True): """ Constructor. Checks the config, prepares the document and builds the header. @param param: The config dict. @raise exception: When the config file is invalid. """ self._config = None # Will contain the config file. self._xml = None # Will contain the final XML file. self._batches = OrderedDict() # Will contain the SEPA batches. self._batch_totals = OrderedDict() # Will contain the total amount to debit per batch for checksum total. self.schema = schema self.msg_id = make_msg_id() self.clean = clean config_result = self.check_config(config) if config_result: self._config = config if self.clean: > from text_unidecode import unidecode E ModuleNotFoundError: No module named 'text_unidecode' sepaxml/shared.py:29: ModuleNotFoundError ______________________________ test_valid_config _______________________________ def test_valid_config(): > return SepaDD({ "name": "TestCreditor", "IBAN": "NL50BANK1234567890", "BIC": "BANKNL2A", "batch": True, "creditor_id": "000000", "currency": "EUR" }) tests/debit/test_config.py:7: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ sepaxml/debit.py:17: in __init__ super().__init__(config, schema, clean) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = config = {'BIC': 'BANKNL2A', 'IBAN': 'NL50BANK1234567890', 'batch': True, 'creditor_id': '000000', ...} schema = 'pain.008.001.02', clean = True def __init__(self, config, schema, clean=True): """ Constructor. Checks the config, prepares the document and builds the header. @param param: The config dict. @raise exception: When the config file is invalid. """ self._config = None # Will contain the config file. self._xml = None # Will contain the final XML file. self._batches = OrderedDict() # Will contain the SEPA batches. self._batch_totals = OrderedDict() # Will contain the total amount to debit per batch for checksum total. self.schema = schema self.msg_id = make_msg_id() self.clean = clean config_result = self.check_config(config) if config_result: self._config = config if self.clean: > from text_unidecode import unidecode E ModuleNotFoundError: No module named 'text_unidecode' sepaxml/shared.py:29: ModuleNotFoundError ______________________________ test_valid_config _______________________________ def test_valid_config(): > return SepaTransfer({ "name": "TestCreditor", "IBAN": "NL50BANK1234567890", "BIC": "BANKNL2A", "batch": True, "currency": "EUR" }) tests/transfer/test_config.py:7: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ sepaxml/transfer.py:15: in __init__ super().__init__(config, schema, clean) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = config = {'BIC': 'BANKNL2A', 'IBAN': 'NL50BANK1234567890', 'batch': True, 'currency': 'EUR', ...} schema = 'pain.001.001.03', clean = True def __init__(self, config, schema, clean=True): """ Constructor. Checks the config, prepares the document and builds the header. @param param: The config dict. @raise exception: When the config file is invalid. """ self._config = None # Will contain the config file. self._xml = None # Will contain the final XML file. self._batches = OrderedDict() # Will contain the SEPA batches. self._batch_totals = OrderedDict() # Will contain the total amount to debit per batch for checksum total. self.schema = schema self.msg_id = make_msg_id() self.clean = clean config_result = self.check_config(config) if config_result: self._config = config if self.clean: > from text_unidecode import unidecode E ModuleNotFoundError: No module named 'text_unidecode' sepaxml/shared.py:29: ModuleNotFoundError =========================== short test summary info ============================ FAILED tests/debit/test_00800302.py::test_name_too_long - ModuleNotFoundError... FAILED tests/debit/test_00800302.py::test_invalid_mandate - ModuleNotFoundErr... FAILED tests/debit/test_config.py::test_valid_config - ModuleNotFoundError: N... FAILED tests/transfer/test_config.py::test_valid_config - ModuleNotFoundError... ERROR tests/debit/test_00800102.py::test_two_debits - ModuleNotFoundError: No... ERROR tests/debit/test_00800202.py::test_two_debits - ModuleNotFoundError: No... ERROR tests/debit/test_00800302.py::test_two_debits - ModuleNotFoundError: No... ERROR tests/debit/test_00800302_b2b.py::test_two_debits - ModuleNotFoundError... ERROR tests/debit/test_endtoendid.py::test_two_debits - ModuleNotFoundError: ... ERROR tests/debit/test_escaped.py::test_two_debits - ModuleNotFoundError: No ... ERROR tests/debit/test_no_bic.py::test_two_debits - ModuleNotFoundError: No m... ERROR tests/debit/test_no_bic_00800302.py::test_two_debits - ModuleNotFoundEr... ERROR tests/debit/test_non_batch.py::test_two_debits - ModuleNotFoundError: N... ERROR tests/transfer/test_00100103.py::test_two_debits - ModuleNotFoundError:... ERROR tests/transfer/test_endtoendid.py::test_two_debits - ModuleNotFoundErro... ERROR tests/transfer/test_no_bic.py::test_two_transfers - ModuleNotFoundError... ERROR tests/transfer/test_non_batch.py::test_two_debits - ModuleNotFoundError... ==================== 4 failed, 2 passed, 13 errors in 2.91s ==================== ==> ERROR: A failure occurred in check().  Aborting...