ocrd 3.0.2__tar.gz → 3.0.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. {ocrd-3.0.2/src/ocrd.egg-info → ocrd-3.0.3}/PKG-INFO +1 -1
  2. ocrd-3.0.3/VERSION +1 -0
  3. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd/processor/base.py +9 -3
  4. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd/processor/helpers.py +9 -3
  5. {ocrd-3.0.2 → ocrd-3.0.3/src/ocrd.egg-info}/PKG-INFO +1 -1
  6. ocrd-3.0.2/VERSION +0 -1
  7. {ocrd-3.0.2 → ocrd-3.0.3}/LICENSE +0 -0
  8. {ocrd-3.0.2 → ocrd-3.0.3}/MANIFEST.in +0 -0
  9. {ocrd-3.0.2 → ocrd-3.0.3}/README.md +0 -0
  10. {ocrd-3.0.2 → ocrd-3.0.3}/README_bashlib.md +0 -0
  11. {ocrd-3.0.2 → ocrd-3.0.3}/README_ocrd.md +0 -0
  12. {ocrd-3.0.2 → ocrd-3.0.3}/README_ocrd_modelfactory.md +0 -0
  13. {ocrd-3.0.2 → ocrd-3.0.3}/README_ocrd_models.md +0 -0
  14. {ocrd-3.0.2 → ocrd-3.0.3}/README_ocrd_network.md +0 -0
  15. {ocrd-3.0.2 → ocrd-3.0.3}/README_ocrd_utils.md +0 -0
  16. {ocrd-3.0.2 → ocrd-3.0.3}/README_ocrd_validators.md +0 -0
  17. {ocrd-3.0.2 → ocrd-3.0.3}/pyproject.toml +0 -0
  18. {ocrd-3.0.2 → ocrd-3.0.3}/requirements.txt +0 -0
  19. {ocrd-3.0.2 → ocrd-3.0.3}/setup.cfg +0 -0
  20. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd/__init__.py +0 -0
  21. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd/cli/__init__.py +0 -0
  22. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd/cli/bashlib.py +0 -0
  23. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd/cli/log.py +0 -0
  24. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd/cli/network.py +0 -0
  25. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd/cli/ocrd_tool.py +0 -0
  26. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd/cli/process.py +0 -0
  27. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd/cli/resmgr.py +0 -0
  28. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd/cli/validate.py +0 -0
  29. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd/cli/workspace.py +0 -0
  30. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd/cli/zip.py +0 -0
  31. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd/constants.py +0 -0
  32. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd/decorators/__init__.py +0 -0
  33. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd/decorators/loglevel_option.py +0 -0
  34. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd/decorators/mets_find_options.py +0 -0
  35. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd/decorators/ocrd_cli_options.py +0 -0
  36. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd/decorators/parameter_option.py +0 -0
  37. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd/lib.bash +0 -0
  38. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd/mets_server.py +0 -0
  39. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd/ocrd-all-tool.json +0 -0
  40. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd/processor/__init__.py +0 -0
  41. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd/processor/builtin/__init__.py +0 -0
  42. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd/processor/builtin/dummy/__init__.py +0 -0
  43. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd/processor/builtin/dummy/ocrd-tool.json +0 -0
  44. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd/processor/builtin/dummy_processor.py +0 -0
  45. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd/processor/builtin/filter_processor.py +0 -0
  46. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd/processor/ocrd_page_result.py +0 -0
  47. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd/resolver.py +0 -0
  48. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd/resource_list.yml +0 -0
  49. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd/resource_manager.py +0 -0
  50. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd/task_sequence.py +0 -0
  51. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd/workspace.py +0 -0
  52. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd/workspace_backup.py +0 -0
  53. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd/workspace_bagger.py +0 -0
  54. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd.egg-info/SOURCES.txt +0 -0
  55. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd.egg-info/dependency_links.txt +0 -0
  56. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd.egg-info/entry_points.txt +0 -0
  57. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd.egg-info/requires.txt +0 -0
  58. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd.egg-info/top_level.txt +0 -0
  59. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_modelfactory/__init__.py +0 -0
  60. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_models/__init__.py +0 -0
  61. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_models/constants.py +0 -0
  62. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_models/mets-empty.xml +0 -0
  63. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_models/ocrd_agent.py +0 -0
  64. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_models/ocrd_exif.py +0 -0
  65. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_models/ocrd_file.py +0 -0
  66. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_models/ocrd_mets.py +0 -0
  67. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_models/ocrd_page.py +0 -0
  68. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_models/ocrd_page_generateds.py +0 -0
  69. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_models/ocrd_xml_base.py +0 -0
  70. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_models/report.py +0 -0
  71. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_models/utils.py +0 -0
  72. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_models/xpath_functions.py +0 -0
  73. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_network/__init__.py +0 -0
  74. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_network/cli/__init__.py +0 -0
  75. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_network/cli/client.py +0 -0
  76. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_network/cli/processing_server.py +0 -0
  77. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_network/cli/processing_worker.py +0 -0
  78. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_network/cli/processor_server.py +0 -0
  79. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_network/client.py +0 -0
  80. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_network/client_utils.py +0 -0
  81. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_network/constants.py +0 -0
  82. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_network/database.py +0 -0
  83. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_network/logging_utils.py +0 -0
  84. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_network/models/__init__.py +0 -0
  85. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_network/models/job.py +0 -0
  86. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_network/models/messages.py +0 -0
  87. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_network/models/ocrd_tool.py +0 -0
  88. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_network/models/workflow.py +0 -0
  89. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_network/models/workspace.py +0 -0
  90. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_network/param_validators.py +0 -0
  91. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_network/process_helpers.py +0 -0
  92. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_network/processing_server.py +0 -0
  93. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_network/processing_worker.py +0 -0
  94. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_network/processor_server.py +0 -0
  95. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_network/rabbitmq_utils/__init__.py +0 -0
  96. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_network/rabbitmq_utils/connector.py +0 -0
  97. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_network/rabbitmq_utils/constants.py +0 -0
  98. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_network/rabbitmq_utils/consumer.py +0 -0
  99. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_network/rabbitmq_utils/helpers.py +0 -0
  100. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_network/rabbitmq_utils/ocrd_messages.py +0 -0
  101. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_network/rabbitmq_utils/publisher.py +0 -0
  102. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_network/runtime_data/__init__.py +0 -0
  103. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_network/runtime_data/config_parser.py +0 -0
  104. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_network/runtime_data/connection_clients.py +0 -0
  105. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_network/runtime_data/deployer.py +0 -0
  106. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_network/runtime_data/hosts.py +0 -0
  107. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_network/runtime_data/network_agents.py +0 -0
  108. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_network/runtime_data/network_services.py +0 -0
  109. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_network/server_cache.py +0 -0
  110. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_network/server_utils.py +0 -0
  111. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_network/tcp_to_uds_mets_proxy.py +0 -0
  112. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_network/utils.py +0 -0
  113. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_utils/__init__.py +0 -0
  114. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_utils/config.py +0 -0
  115. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_utils/constants.py +0 -0
  116. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_utils/deprecate.py +0 -0
  117. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_utils/image.py +0 -0
  118. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_utils/introspect.py +0 -0
  119. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_utils/logging.py +0 -0
  120. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_utils/ocrd_logging.conf +0 -0
  121. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_utils/os.py +0 -0
  122. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_utils/str.py +0 -0
  123. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_validators/__init__.py +0 -0
  124. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_validators/bagit-profile.yml +0 -0
  125. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_validators/constants.py +0 -0
  126. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_validators/json_validator.py +0 -0
  127. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_validators/message_processing.schema.yml +0 -0
  128. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_validators/message_result.schema.yml +0 -0
  129. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_validators/mets.xsd +0 -0
  130. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_validators/ocrd_network_message_validator.py +0 -0
  131. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_validators/ocrd_tool.schema.yml +0 -0
  132. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_validators/ocrd_tool_validator.py +0 -0
  133. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_validators/ocrd_zip_validator.py +0 -0
  134. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_validators/page.xsd +0 -0
  135. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_validators/page_validator.py +0 -0
  136. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_validators/parameter_validator.py +0 -0
  137. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_validators/processing_server_config.schema.yml +0 -0
  138. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_validators/processing_server_config_validator.py +0 -0
  139. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_validators/resource_list_validator.py +0 -0
  140. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_validators/workspace_validator.py +0 -0
  141. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_validators/xlink.xsd +0 -0
  142. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_validators/xsd_mets_validator.py +0 -0
  143. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_validators/xsd_page_validator.py +0 -0
  144. {ocrd-3.0.2 → ocrd-3.0.3}/src/ocrd_validators/xsd_validator.py +0 -0
  145. {ocrd-3.0.2 → ocrd-3.0.3}/tests/test_decorators.py +0 -0
  146. {ocrd-3.0.2 → ocrd-3.0.3}/tests/test_logging.py +0 -0
  147. {ocrd-3.0.2 → ocrd-3.0.3}/tests/test_logging_conf.py +0 -0
  148. {ocrd-3.0.2 → ocrd-3.0.3}/tests/test_mets_server.py +0 -0
  149. {ocrd-3.0.2 → ocrd-3.0.3}/tests/test_model_factory.py +0 -0
  150. {ocrd-3.0.2 → ocrd-3.0.3}/tests/test_resolver.py +0 -0
  151. {ocrd-3.0.2 → ocrd-3.0.3}/tests/test_resolver_oai.py +0 -0
  152. {ocrd-3.0.2 → ocrd-3.0.3}/tests/test_resource_manager.py +0 -0
  153. {ocrd-3.0.2 → ocrd-3.0.3}/tests/test_task_sequence.py +0 -0
  154. {ocrd-3.0.2 → ocrd-3.0.3}/tests/test_utils.py +0 -0
  155. {ocrd-3.0.2 → ocrd-3.0.3}/tests/test_version.py +0 -0
  156. {ocrd-3.0.2 → ocrd-3.0.3}/tests/test_workspace.py +0 -0
  157. {ocrd-3.0.2 → ocrd-3.0.3}/tests/test_workspace_remove.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: ocrd
3
- Version: 3.0.2
3
+ Version: 3.0.3
4
4
  Summary: OCR-D framework
5
5
  Author-email: Konstantin Baierer <unixprog@gmail.com>
6
6
  License: Apache License 2.0
ocrd-3.0.3/VERSION ADDED
@@ -0,0 +1 @@
1
+ 3.0.3
@@ -534,15 +534,20 @@ class Processor():
534
534
  # forward messages from log queue (in subprocesses) to all root handlers
535
535
  log_listener = logging.handlers.QueueListener(log_queue, *logging.root.handlers, respect_handler_level=True)
536
536
  log_listener.start()
537
+ tasks = None
537
538
  try:
538
539
  self._base_logger.debug("started executor %s with %d workers", str(executor), max_workers or 1)
539
540
  tasks = self.process_workspace_submit_tasks(executor, max_seconds)
540
541
  stats = self.process_workspace_handle_tasks(tasks)
541
542
  finally:
542
543
  executor.shutdown(kill_workers=True, wait=False)
544
+ self._base_logger.debug("stopped executor %s after %d tasks", str(executor), len(tasks) if tasks else -1)
543
545
  if max_workers > 1:
544
- log_listener.stop()
545
- del log_listener
546
+ # can cause deadlock:
547
+ #log_listener.stop()
548
+ # not much better:
549
+ #log_listener.enqueue_sentinel()
550
+ pass
546
551
 
547
552
  except NotImplementedError:
548
553
  # fall back to deprecated method
@@ -670,11 +675,12 @@ class Processor():
670
675
  nr_succeeded += 1
671
676
  # else skipped - already exists
672
677
  nr_errors = dict(nr_errors)
678
+ nr_all = nr_succeeded + nr_failed
673
679
  if nr_failed > 0:
674
- nr_all = nr_succeeded + nr_failed
675
680
  if config.OCRD_MAX_MISSING_OUTPUTS > 0 and nr_failed / nr_all > config.OCRD_MAX_MISSING_OUTPUTS:
676
681
  raise Exception(f"too many failures with {reason} output ({nr_failed} of {nr_all}, {str(nr_errors)})")
677
682
  self._base_logger.warning("%s %d of %d pages due to %s", reason, nr_failed, nr_all, str(nr_errors))
683
+ self._base_logger.debug("succeeded %d, missed %d of %d pages due to %s", nr_succeeded, nr_failed, nr_all, str(nr_errors))
678
684
  return nr_succeeded, nr_failed, nr_errors, len(tasks)
679
685
 
680
686
  def process_workspace_handle_page_task(self, page_id : str, input_files : List[Optional[OcrdFileType]], task : TFuture) -> Union[bool, Exception]:
@@ -56,13 +56,19 @@ def run_processor(
56
56
  - :py:attr:`output_file_grp`
57
57
  - :py:attr:`parameter` (after applying any :py:attr:`parameter_override` settings)
58
58
 
59
- Warning: Avoid setting the `instance_caching` flag to True. It may have unexpected side effects.
60
- This flag is used for an experimental feature we would like to adopt in future.
61
-
62
59
  Run the processor on the workspace (creating output files in the filesystem).
63
60
 
64
61
  Finally, write back the workspace (updating the METS in the filesystem).
65
62
 
63
+ If :py:attr:`instance_caching` is True, then processor instances (for the same set
64
+ of :py:attr:`parameter` values) will be cached internally. Thus, these objects (and
65
+ all their memory resources, like loaded models) get re-used instead of re-instantiated
66
+ when a match occurs - as long as the program is being run. They only get deleted (and
67
+ their resources freed) when as many as :py:data:`~ocrd_utils.config.OCRD_MAX_PROCESSOR_CACHE`
68
+ instances have already been cached while this particular parameter set was re-used
69
+ least frequently. (See :py:class:`~ocrd_network.ProcessingWorker` and
70
+ :py:class:`~ocrd_network.ProcessorServer` for use-cases.)
71
+
66
72
  Args:
67
73
  processorClass (object): Python class of the module processor.
68
74
  """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: ocrd
3
- Version: 3.0.2
3
+ Version: 3.0.3
4
4
  Summary: OCR-D framework
5
5
  Author-email: Konstantin Baierer <unixprog@gmail.com>
6
6
  License: Apache License 2.0
ocrd-3.0.2/VERSION DELETED
@@ -1 +0,0 @@
1
- 3.0.2
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes