def test_de_dates(self): text = """Ausfertigungsdatum: 23.05.1975 Vollzitat: "Gesetz über vermögenswirksame Leistungen für Beamte, Richter, Berufssoldaten und Soldaten auf Zeit in der Fassung der Bekanntmachung vom 16. Mai 2002 (BGBl. I S. 1778), das zuletzt durch Artikel 39 des Gesetzes vom 29. März 2017 (BGBl. I S. 626) geändert worden ist" Stand: Neugefasst durch Bek. v. 16.5.2002 I 1778; zuletzt geändert durch Art. 39 G v. 29.3.2017 I 626""" extracted_dates = list(get_date_annotations(text=text, locale='de')) extracted_dates.sort(key=lambda a: a.coords[0]) for d in extracted_dates: d.text = text[d.coords[0]:d.coords[1]].strip() expected_values = [ (20, 30, datetime.datetime(1975, 5, 23), '23.05.1975'), (212, 224, datetime.datetime(2002, 5, 16), '16. Mai 2002'), (306, 319, datetime.datetime(2017, 3, 29), '29. März 2017'), (413, 422, datetime.datetime(2002, 5, 16), '16.5.2002'), (483, 492, datetime.datetime(2017, 3, 29), '29.3.2017') ] self.assertEqual(len(expected_values), len(extracted_dates)) for i in range(len(expected_values)): act = extracted_dates[i] exp = expected_values[i] self.assertEqual((exp[0], exp[1]), act.coords) self.assertEqual(exp[2], act.date)
def test_negative(self): text = '''Leasing ohne Anzahlung: Monatliche Rate 300€, Laufzeit 36 Monaten, Gesamtkosten 10.800€ Leasing mit 2.500€ Anzahlung: Monatliche Rate 230,55€, Laufzeit 36 Monate, Gesamtkosten 10.800€ Durch eine Sonderzahlung wird die monatliche Belastung gesenkt, das Risiko für den Leasinggeber sinkt.''' dates = list(get_date_annotations(text)) for d in dates: d.text = text[d.coords[0]:d.coords[1]] self.assertEqual(0, len(dates))
def get_dates_ordered(text: str) -> List[DateAnnotation]: dates = list(get_date_annotations(text)) dates.sort(key=lambda d: d.coords[0]) return dates
def test_date_reverse_order(self): text = 'Commencement Date: 09/12/2022.' dates = list(get_date_annotations(text)) self.assertEqual(1, len(dates)) self.assertEqual(12, dates[0].date.month)