From 7687cd681838995f2ee6d4ba7f78b2dfaa91e856 Mon Sep 17 00:00:00 2001 From: Konstantin Baierer Date: Thu, 30 Jul 2020 13:46:34 +0200 Subject: [PATCH] ocrd_page: custom GdsCollector --- Makefile | 1 + .../ocrd_models/generatedscollector.py | 28 +++++++++++++++++++ .../ocrd_models/ocrd_page_generateds.py | 4 +-- tests/model/test_ocrd_page.py | 7 +++++ 4 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 ocrd_models/ocrd_models/generatedscollector.py diff --git a/Makefile b/Makefile index 7aae72d23..2fb3dc805 100644 --- a/Makefile +++ b/Makefile @@ -101,6 +101,7 @@ generate-page: repo/assets -e '/def parseString(/,/return rootObj/ d' \ $(GDS_PAGE) cat ocrd_models/ocrd_page_parse.py >> $(GDS_PAGE) + sed -i 's,from generatedscollector import,from .generatedscollector import,' $(GDS_PAGE) # diff --git a/ocrd_models/ocrd_models/generatedscollector.py b/ocrd_models/ocrd_models/generatedscollector.py new file mode 100644 index 000000000..25a94a304 --- /dev/null +++ b/ocrd_models/ocrd_models/generatedscollector.py @@ -0,0 +1,28 @@ +class OcrdGdsCollector(object): + + def __init__(self, messages=None): + print('GdsCollector.__init__', self) + if messages is None: + self.messages = [] + else: + self.messages = messages + + def add_message(self, msg): + self.messages.append(msg) + + def get_messages(self): + return self.messages + + def clear_messages(self): + self.messages = [] + + def print_messages(self): + for msg in self.messages: + print("Warning: {}".format(msg)) + + def write_messages(self, outstream): + for msg in self.messages: + outstream.write("Warning: {}\n".format(msg)) + +class GdsCollector(OcrdGdsCollector): + pass diff --git a/ocrd_models/ocrd_models/ocrd_page_generateds.py b/ocrd_models/ocrd_models/ocrd_page_generateds.py index ce2c011dd..c29374b8d 100644 --- a/ocrd_models/ocrd_models/ocrd_page_generateds.py +++ b/ocrd_models/ocrd_models/ocrd_page_generateds.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # -# Generated Thu Jul 30 12:33:49 2020 by generateDS.py version 2.35.24. +# Generated Thu Jul 30 13:44:35 2020 by generateDS.py version 2.35.24. # Python 3.6.9 (default, Jul 17 2020, 12:50:27) [GCC 8.4.0] # # Command line options: @@ -124,7 +124,7 @@ def parsexmlstring_(instring, parser=None, **kwargs): # clues about the possible content of that class. # try: - from generatedscollector import GdsCollector as GdsCollector_ + from .generatedscollector import GdsCollector as GdsCollector_ except ImportError: class GdsCollector_(object): diff --git a/tests/model/test_ocrd_page.py b/tests/model/test_ocrd_page.py index bad0b4bfb..fd9e85553 100644 --- a/tests/model/test_ocrd_page.py +++ b/tests/model/test_ocrd_page.py @@ -290,5 +290,12 @@ def test_get_AllAlternativeImagePaths(self): # TODO: Test with word/glyph-level AlternativeImages # self.assertEqual(len(pcgts.get_AllAlternativeImagePaths(word=False)), 37) + def test_gdscollector_override(self): + from ocrd_models.generatedscollector import OcrdGdsCollector + with open(assets.path_to('gutachten/data/TEMP1/PAGE_TEMP1.xml'), 'r') as f: + pcgts = parseString(f.read().encode('utf8'), silence=True) + gdc = pcgts.gds_collector_ + self.assertTrue(isinstance(gdc, OcrdGdsCollector)) + if __name__ == '__main__': main(__file__)