ocrd 3.5.1__tar.gz → 3.7.0__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 (160) hide show
  1. {ocrd-3.5.1/src/ocrd.egg-info → ocrd-3.7.0}/PKG-INFO +2 -8
  2. {ocrd-3.5.1 → ocrd-3.7.0}/README.md +0 -6
  3. ocrd-3.7.0/VERSION +1 -0
  4. {ocrd-3.5.1 → ocrd-3.7.0}/requirements.txt +1 -1
  5. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd/cli/__init__.py +8 -6
  6. ocrd-3.7.0/src/ocrd/cli/bashlib.py +42 -0
  7. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd/cli/network.py +0 -2
  8. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd/cli/ocrd_tool.py +26 -4
  9. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd/cli/process.py +1 -0
  10. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd/cli/resmgr.py +0 -1
  11. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd/cli/validate.py +32 -13
  12. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd/cli/workspace.py +125 -52
  13. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd/cli/zip.py +13 -4
  14. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd/decorators/__init__.py +28 -52
  15. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd/decorators/loglevel_option.py +4 -0
  16. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd/decorators/mets_find_options.py +2 -1
  17. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd/decorators/ocrd_cli_options.py +3 -7
  18. ocrd-3.7.0/src/ocrd/decorators/parameter_option.py +24 -0
  19. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd/mets_server.py +11 -15
  20. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd/processor/base.py +88 -71
  21. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd/processor/builtin/dummy_processor.py +7 -4
  22. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd/processor/builtin/filter_processor.py +3 -2
  23. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd/processor/helpers.py +5 -6
  24. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd/processor/ocrd_page_result.py +7 -5
  25. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd/resolver.py +42 -32
  26. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd/task_sequence.py +11 -4
  27. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd/workspace.py +64 -54
  28. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd/workspace_backup.py +3 -0
  29. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd/workspace_bagger.py +15 -8
  30. {ocrd-3.5.1 → ocrd-3.7.0/src/ocrd.egg-info}/PKG-INFO +2 -8
  31. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd.egg-info/SOURCES.txt +0 -6
  32. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd.egg-info/requires.txt +1 -1
  33. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_modelfactory/__init__.py +4 -2
  34. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_models/constants.py +18 -1
  35. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_models/ocrd_exif.py +7 -3
  36. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_models/ocrd_file.py +24 -19
  37. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_models/ocrd_mets.py +90 -67
  38. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_models/ocrd_page.py +17 -13
  39. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_models/ocrd_xml_base.py +1 -0
  40. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_models/report.py +2 -1
  41. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_models/utils.py +4 -3
  42. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_models/xpath_functions.py +3 -1
  43. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_network/__init__.py +1 -2
  44. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_network/cli/__init__.py +0 -2
  45. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_network/cli/client.py +122 -50
  46. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_network/cli/processing_server.py +1 -2
  47. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_network/client.py +2 -2
  48. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_network/client_utils.py +30 -13
  49. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_network/constants.py +1 -6
  50. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_network/database.py +3 -3
  51. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_network/logging_utils.py +2 -7
  52. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_network/models/__init__.py +0 -2
  53. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_network/models/job.py +31 -33
  54. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_network/models/messages.py +3 -2
  55. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_network/models/workspace.py +5 -5
  56. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_network/process_helpers.py +54 -17
  57. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_network/processing_server.py +63 -114
  58. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_network/processing_worker.py +6 -5
  59. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_network/rabbitmq_utils/__init__.py +2 -0
  60. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_network/rabbitmq_utils/helpers.py +24 -7
  61. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_network/runtime_data/__init__.py +1 -2
  62. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_network/runtime_data/deployer.py +12 -85
  63. ocrd-3.7.0/src/ocrd_network/runtime_data/hosts.py +156 -0
  64. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_network/runtime_data/network_agents.py +7 -31
  65. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_network/runtime_data/network_services.py +1 -1
  66. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_network/server_cache.py +1 -1
  67. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_network/server_utils.py +13 -52
  68. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_network/utils.py +1 -0
  69. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_utils/__init__.py +4 -4
  70. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_utils/config.py +86 -76
  71. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_utils/deprecate.py +3 -0
  72. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_utils/image.py +51 -23
  73. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_utils/introspect.py +8 -3
  74. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_utils/logging.py +15 -7
  75. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_utils/os.py +17 -4
  76. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_utils/str.py +32 -16
  77. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_validators/json_validator.py +4 -1
  78. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_validators/ocrd_tool_validator.py +2 -1
  79. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_validators/ocrd_zip_validator.py +5 -4
  80. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_validators/page_validator.py +21 -9
  81. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_validators/parameter_validator.py +3 -2
  82. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_validators/processing_server_config.schema.yml +1 -33
  83. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_validators/resource_list_validator.py +3 -1
  84. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_validators/workspace_validator.py +30 -20
  85. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_validators/xsd_mets_validator.py +2 -1
  86. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_validators/xsd_page_validator.py +2 -1
  87. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_validators/xsd_validator.py +4 -2
  88. ocrd-3.5.1/README_bashlib.md +0 -177
  89. ocrd-3.5.1/VERSION +0 -1
  90. ocrd-3.5.1/src/ocrd/cli/bashlib.py +0 -148
  91. ocrd-3.5.1/src/ocrd/cli/log.py +0 -51
  92. ocrd-3.5.1/src/ocrd/decorators/parameter_option.py +0 -23
  93. ocrd-3.5.1/src/ocrd/lib.bash +0 -317
  94. ocrd-3.5.1/src/ocrd_network/cli/processor_server.py +0 -31
  95. ocrd-3.5.1/src/ocrd_network/models/ocrd_tool.py +0 -12
  96. ocrd-3.5.1/src/ocrd_network/processor_server.py +0 -255
  97. ocrd-3.5.1/src/ocrd_network/runtime_data/hosts.py +0 -225
  98. {ocrd-3.5.1 → ocrd-3.7.0}/LICENSE +0 -0
  99. {ocrd-3.5.1 → ocrd-3.7.0}/MANIFEST.in +0 -0
  100. {ocrd-3.5.1 → ocrd-3.7.0}/README_ocrd.md +0 -0
  101. {ocrd-3.5.1 → ocrd-3.7.0}/README_ocrd_modelfactory.md +0 -0
  102. {ocrd-3.5.1 → ocrd-3.7.0}/README_ocrd_models.md +0 -0
  103. {ocrd-3.5.1 → ocrd-3.7.0}/README_ocrd_network.md +0 -0
  104. {ocrd-3.5.1 → ocrd-3.7.0}/README_ocrd_utils.md +0 -0
  105. {ocrd-3.5.1 → ocrd-3.7.0}/README_ocrd_validators.md +0 -0
  106. {ocrd-3.5.1 → ocrd-3.7.0}/pyproject.toml +0 -0
  107. {ocrd-3.5.1 → ocrd-3.7.0}/setup.cfg +0 -0
  108. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd/__init__.py +0 -0
  109. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd/constants.py +0 -0
  110. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd/ocrd-all-tool.json +0 -0
  111. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd/processor/__init__.py +0 -0
  112. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd/processor/builtin/__init__.py +0 -0
  113. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd/processor/builtin/dummy/__init__.py +0 -0
  114. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd/processor/builtin/dummy/ocrd-tool.json +0 -0
  115. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd/resource_list.yml +0 -0
  116. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd/resource_manager.py +0 -0
  117. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd.egg-info/dependency_links.txt +0 -0
  118. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd.egg-info/entry_points.txt +0 -0
  119. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd.egg-info/top_level.txt +0 -0
  120. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_models/__init__.py +0 -0
  121. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_models/mets-empty.xml +0 -0
  122. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_models/ocrd_agent.py +1 -1
  123. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_models/ocrd_page_generateds.py +0 -0
  124. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_network/cli/processing_worker.py +0 -0
  125. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_network/models/workflow.py +0 -0
  126. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_network/param_validators.py +0 -0
  127. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_network/rabbitmq_utils/connector.py +0 -0
  128. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_network/rabbitmq_utils/constants.py +0 -0
  129. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_network/rabbitmq_utils/consumer.py +0 -0
  130. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_network/rabbitmq_utils/ocrd_messages.py +0 -0
  131. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_network/rabbitmq_utils/publisher.py +0 -0
  132. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_network/runtime_data/config_parser.py +0 -0
  133. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_network/runtime_data/connection_clients.py +0 -0
  134. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_network/tcp_to_uds_mets_proxy.py +0 -0
  135. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_utils/constants.py +0 -0
  136. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_utils/ocrd_logging.conf +0 -0
  137. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_validators/__init__.py +0 -0
  138. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_validators/bagit-profile.yml +0 -0
  139. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_validators/constants.py +0 -0
  140. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_validators/message_processing.schema.yml +0 -0
  141. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_validators/message_result.schema.yml +0 -0
  142. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_validators/mets.xsd +0 -0
  143. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_validators/ocrd_network_message_validator.py +0 -0
  144. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_validators/ocrd_tool.schema.yml +0 -0
  145. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_validators/page.xsd +0 -0
  146. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_validators/processing_server_config_validator.py +0 -0
  147. {ocrd-3.5.1 → ocrd-3.7.0}/src/ocrd_validators/xlink.xsd +0 -0
  148. {ocrd-3.5.1 → ocrd-3.7.0}/tests/test_decorators.py +0 -0
  149. {ocrd-3.5.1 → ocrd-3.7.0}/tests/test_logging.py +0 -0
  150. {ocrd-3.5.1 → ocrd-3.7.0}/tests/test_logging_conf.py +0 -0
  151. {ocrd-3.5.1 → ocrd-3.7.0}/tests/test_mets_server.py +0 -0
  152. {ocrd-3.5.1 → ocrd-3.7.0}/tests/test_model_factory.py +0 -0
  153. {ocrd-3.5.1 → ocrd-3.7.0}/tests/test_resolver.py +0 -0
  154. {ocrd-3.5.1 → ocrd-3.7.0}/tests/test_resolver_oai.py +0 -0
  155. {ocrd-3.5.1 → ocrd-3.7.0}/tests/test_resource_manager.py +0 -0
  156. {ocrd-3.5.1 → ocrd-3.7.0}/tests/test_task_sequence.py +0 -0
  157. {ocrd-3.5.1 → ocrd-3.7.0}/tests/test_utils.py +0 -0
  158. {ocrd-3.5.1 → ocrd-3.7.0}/tests/test_version.py +0 -0
  159. {ocrd-3.5.1 → ocrd-3.7.0}/tests/test_workspace.py +0 -0
  160. {ocrd-3.5.1 → ocrd-3.7.0}/tests/test_workspace_remove.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ocrd
3
- Version: 3.5.1
3
+ Version: 3.7.0
4
4
  Summary: OCR-D framework
5
5
  Author-email: Konstantin Baierer <unixprog@gmail.com>
6
6
  License: Apache License 2.0
@@ -37,7 +37,7 @@ Requires-Dist: opencv-python-headless
37
37
  Requires-Dist: paramiko
38
38
  Requires-Dist: pika>=1.2.0
39
39
  Requires-Dist: Pillow>=7.2.0
40
- Requires-Dist: pydantic==1.*
40
+ Requires-Dist: pydantic>=2.0.0
41
41
  Requires-Dist: python-magic
42
42
  Requires-Dist: python-multipart
43
43
  Requires-Dist: pyyaml
@@ -220,12 +220,6 @@ Also contains the command line tool `ocrd`.
220
220
 
221
221
  See [README for `ocrd`](./README_ocrd.md) for further information.
222
222
 
223
- ## bash library
224
-
225
- Builds a bash script that can be sourced by other bash scripts to create OCRD-compliant CLI.
226
-
227
- See [README for `bashlib`](./README_bashlib.md) for further information.
228
-
229
223
  ## Testing
230
224
 
231
225
  Download assets (`make assets`)
@@ -170,12 +170,6 @@ Also contains the command line tool `ocrd`.
170
170
 
171
171
  See [README for `ocrd`](./README_ocrd.md) for further information.
172
172
 
173
- ## bash library
174
-
175
- Builds a bash script that can be sourced by other bash scripts to create OCRD-compliant CLI.
176
-
177
- See [README for `bashlib`](./README_bashlib.md) for further information.
178
-
179
173
  ## Testing
180
174
 
181
175
  Download assets (`make assets`)
ocrd-3.7.0/VERSION ADDED
@@ -0,0 +1 @@
1
+ 3.7.0
@@ -26,7 +26,7 @@ opencv-python-headless
26
26
  paramiko
27
27
  pika>=1.2.0
28
28
  Pillow >= 7.2.0
29
- pydantic==1.*
29
+ pydantic >= 2.0.0
30
30
  python-magic
31
31
  python-multipart
32
32
  pyyaml
@@ -10,13 +10,14 @@ import click
10
10
 
11
11
  from ocrd_utils import config
12
12
 
13
+
13
14
  # pylint: disable=wrong-import-position
14
15
 
15
16
  def command_with_replaced_help(*replacements):
16
17
 
17
18
  class CommandWithReplacedHelp(click.Command):
18
19
  def get_help(self, ctx):
19
- newhelp : str = super().get_help(ctx)
20
+ newhelp: str = super().get_help(ctx)
20
21
  for replacement in replacements:
21
22
  newhelp = re.sub(*replacement, newhelp)
22
23
  # print(newhelp)
@@ -24,18 +25,18 @@ def command_with_replaced_help(*replacements):
24
25
 
25
26
  return CommandWithReplacedHelp
26
27
 
28
+
27
29
  # pylint: enable=wrong-import-position
28
30
 
29
31
  from ..decorators import ocrd_loglevel
30
32
  from .ocrd_tool import ocrd_tool_cli
31
33
  from .workspace import workspace_cli
32
34
  from .process import process_cli
33
- from .bashlib import bashlib_cli
34
35
  from .validate import validate_cli
35
36
  from .resmgr import resmgr_cli
36
37
  from .zip import zip_cli
37
- from .log import log_cli
38
38
  from .network import network_cli
39
+ from .bashlib import bashlib_cli
39
40
 
40
41
 
41
42
  __all__ = ['cli']
@@ -102,20 +103,21 @@ Variables:
102
103
  {config.describe('OCRD_LOGGING_DEBUG')}
103
104
  """
104
105
 
106
+
105
107
  @click.group(epilog=_epilog)
106
108
  @click.version_option(package_name='ocrd')
107
109
  @ocrd_loglevel
108
- def cli(**kwargs): # pylint: disable=unused-argument
110
+ def cli(**kwargs): # pylint: disable=unused-argument
109
111
  """
110
112
  Entry-point of multi-purpose CLI for OCR-D
111
113
  """
112
114
 
115
+
113
116
  cli.add_command(ocrd_tool_cli)
114
117
  cli.add_command(workspace_cli)
115
118
  cli.add_command(process_cli)
116
- cli.add_command(bashlib_cli)
117
119
  cli.add_command(zip_cli)
118
120
  cli.add_command(validate_cli)
119
- cli.add_command(log_cli)
120
121
  cli.add_command(resmgr_cli)
121
122
  cli.add_command(network_cli)
123
+ cli.add_command(bashlib_cli)
@@ -0,0 +1,42 @@
1
+ """
2
+ OCR-D CLI: bash library
3
+
4
+ .. click:: ocrd.cli.bashlib:bashlib_cli
5
+ :prog: ocrd bashlib
6
+ :nested: full
7
+
8
+ """
9
+
10
+ # WARNING: bashlib processors have been deprecated as of v3 of the OCR-D/core API
11
+ # and will be removed in v3.7.0. We retain the `ocrd bashlib` CLI only
12
+ # to not break the `ocrd bashlib filename` command, which is used in CD
13
+ # scripts to get the `share` directory of the core installation.
14
+
15
+ import click
16
+ from ocrd.constants import BASHLIB_FILENAME
17
+
18
+ # ----------------------------------------------------------------------
19
+ # ocrd bashlib
20
+ # ----------------------------------------------------------------------
21
+
22
+
23
+ @click.group('bashlib')
24
+ def bashlib_cli():
25
+ """
26
+ Work with bash library
27
+ """
28
+
29
+ # ----------------------------------------------------------------------
30
+ # ocrd bashlib filename
31
+ # ----------------------------------------------------------------------
32
+
33
+
34
+ @bashlib_cli.command('filename')
35
+ def bashlib_filename():
36
+ """
37
+ Dump the bash library filename for sourcing by shell scripts
38
+
39
+ For functions exported by bashlib, see `<../../README.md>`_
40
+ """
41
+ print(BASHLIB_FILENAME)
42
+
@@ -12,7 +12,6 @@ from ocrd_network.cli import (
12
12
  client_cli,
13
13
  processing_server_cli,
14
14
  processing_worker_cli,
15
- processor_server_cli,
16
15
  )
17
16
 
18
17
 
@@ -27,4 +26,3 @@ def network_cli():
27
26
  network_cli.add_command(client_cli)
28
27
  network_cli.add_command(processing_server_cli)
29
28
  network_cli.add_command(processing_worker_cli)
30
- network_cli.add_command(processor_server_cli)
@@ -23,6 +23,7 @@ from ocrd_utils import (
23
23
  )
24
24
  from ocrd_validators import ParameterValidator, OcrdToolValidator
25
25
 
26
+
26
27
  class OcrdToolCtx():
27
28
 
28
29
  def __init__(self, filename):
@@ -36,25 +37,31 @@ class OcrdToolCtx():
36
37
 
37
38
  class BashProcessor(Processor):
38
39
  @property
39
- def metadata(inner_self): # pylint: disable=no-self-argument,arguments-renamed
40
+ def metadata(inner_self): # pylint: disable=no-self-argument,arguments-renamed
40
41
  return self.json
42
+
41
43
  @property
42
- def executable(inner_self): # pylint: disable=no-self-argument,arguments-renamed
44
+ def executable(inner_self): # pylint: disable=no-self-argument,arguments-renamed
43
45
  return self.tool_name
46
+
44
47
  @property
45
- def moduledir(inner_self): # pylint: disable=no-self-argument,arguments-renamed
48
+ def moduledir(inner_self): # pylint: disable=no-self-argument,arguments-renamed
46
49
  return os.path.dirname(self.filename)
50
+
47
51
  # set docstrings to empty
48
52
  __doc__ = None
49
53
  # HACK: override the module-level docstring, too
50
54
  getmodule(OcrdToolCtx).__doc__ = None
51
- def process(inner_self): # pylint: disable=no-self-argument,arguments-renamed
55
+
56
+ def process(inner_self): # pylint: disable=no-self-argument,arguments-renamed
52
57
  return super()
53
58
 
54
59
  self.processor = BashProcessor
55
60
 
61
+
56
62
  pass_ocrd_tool = click.make_pass_decorator(OcrdToolCtx)
57
63
 
64
+
58
65
  # ----------------------------------------------------------------------
59
66
  # ocrd ocrd-tool
60
67
  # ----------------------------------------------------------------------
@@ -65,6 +72,7 @@ pass_ocrd_tool = click.make_pass_decorator(OcrdToolCtx)
65
72
  def ocrd_tool_cli(ctx, json_file):
66
73
  ctx.obj = OcrdToolCtx(json_file)
67
74
 
75
+
68
76
  # ----------------------------------------------------------------------
69
77
  # ocrd ocrd-tool version
70
78
  # ----------------------------------------------------------------------
@@ -74,6 +82,7 @@ def ocrd_tool_cli(ctx, json_file):
74
82
  def ocrd_tool_version(ctx):
75
83
  print(ctx.json['version'])
76
84
 
85
+
77
86
  # ----------------------------------------------------------------------
78
87
  # ocrd ocrd-tool validate
79
88
  # ----------------------------------------------------------------------
@@ -86,6 +95,7 @@ def ocrd_tool_validate(ctx):
86
95
  if not report.is_valid:
87
96
  return 128
88
97
 
98
+
89
99
  # ----------------------------------------------------------------------
90
100
  # ocrd ocrd-tool list-tools
91
101
  # ----------------------------------------------------------------------
@@ -96,6 +106,7 @@ def ocrd_tool_list(ctx):
96
106
  for tool in ctx.json['tools']:
97
107
  print(tool)
98
108
 
109
+
99
110
  # ----------------------------------------------------------------------
100
111
  # ocrd ocrd-tool dump-tools
101
112
  # ----------------------------------------------------------------------
@@ -105,6 +116,7 @@ def ocrd_tool_list(ctx):
105
116
  def ocrd_tool_dump(ctx):
106
117
  print(dumps(ctx.json['tools'], indent=True))
107
118
 
119
+
108
120
  @ocrd_tool_cli.command('dump-module-dirs', help="Dump module directory of each tool")
109
121
  @pass_ocrd_tool
110
122
  def ocrd_tool_dump_module_dirs(ctx):
@@ -112,6 +124,7 @@ def ocrd_tool_dump_module_dirs(ctx):
112
124
  for tool_name in ctx.json['tools']},
113
125
  indent=True))
114
126
 
127
+
115
128
  # ----------------------------------------------------------------------
116
129
  # ocrd ocrd-tool tool
117
130
  # ----------------------------------------------------------------------
@@ -124,6 +137,7 @@ def ocrd_tool_tool(ctx, tool_name):
124
137
  raise Exception("No such tool: %s" % tool_name)
125
138
  ctx.tool_name = tool_name
126
139
 
140
+
127
141
  # ----------------------------------------------------------------------
128
142
  # ocrd ocrd-tool tool description
129
143
  # ----------------------------------------------------------------------
@@ -133,29 +147,34 @@ def ocrd_tool_tool(ctx, tool_name):
133
147
  def ocrd_tool_tool_description(ctx):
134
148
  print(ctx.json['tools'][ctx.tool_name]['description'])
135
149
 
150
+
136
151
  @ocrd_tool_tool.command('list-resources', help="List tool's file resources")
137
152
  @pass_ocrd_tool
138
153
  def ocrd_tool_tool_list_resources(ctx):
139
154
  ctx.processor(None).list_resources()
140
155
 
156
+
141
157
  @ocrd_tool_tool.command('resolve-resource', help="Get a tool's file resource full path name")
142
158
  @click.argument('res_name')
143
159
  @pass_ocrd_tool
144
160
  def ocrd_tool_tool_resolve_resource(ctx, res_name):
145
161
  print(ctx.processor(None).resolve_resource(res_name))
146
162
 
163
+
147
164
  @ocrd_tool_tool.command('show-resource', help="Dump a tool's file resource")
148
165
  @click.argument('res_name')
149
166
  @pass_ocrd_tool
150
167
  def ocrd_tool_tool_show_resource(ctx, res_name):
151
168
  ctx.processor(None).show_resource(res_name)
152
169
 
170
+
153
171
  @ocrd_tool_tool.command('help', help="Generate help for processors")
154
172
  @click.argument('subcommand', required=False)
155
173
  @pass_ocrd_tool
156
174
  def ocrd_tool_tool_params_help(ctx, subcommand):
157
175
  ctx.processor(None).show_help(subcommand=subcommand)
158
176
 
177
+
159
178
  # ----------------------------------------------------------------------
160
179
  # ocrd ocrd-tool tool categories
161
180
  # ----------------------------------------------------------------------
@@ -165,6 +184,7 @@ def ocrd_tool_tool_params_help(ctx, subcommand):
165
184
  def ocrd_tool_tool_categories(ctx):
166
185
  print('\n'.join(ctx.json['tools'][ctx.tool_name]['categories']))
167
186
 
187
+
168
188
  # ----------------------------------------------------------------------
169
189
  # ocrd ocrd-tool tool steps
170
190
  # ----------------------------------------------------------------------
@@ -174,6 +194,7 @@ def ocrd_tool_tool_categories(ctx):
174
194
  def ocrd_tool_tool_steps(ctx):
175
195
  print('\n'.join(ctx.json['tools'][ctx.tool_name]['steps']))
176
196
 
197
+
177
198
  # ----------------------------------------------------------------------
178
199
  # ocrd ocrd-tool tool dump
179
200
  # ----------------------------------------------------------------------
@@ -183,6 +204,7 @@ def ocrd_tool_tool_steps(ctx):
183
204
  def ocrd_tool_tool_dump(ctx):
184
205
  print(dumps(ctx.json['tools'][ctx.tool_name], indent=True))
185
206
 
207
+
186
208
  # ----------------------------------------------------------------------
187
209
  # ocrd ocrd-tool tool parse-params
188
210
  # ----------------------------------------------------------------------
@@ -13,6 +13,7 @@ from ocrd.task_sequence import run_tasks
13
13
 
14
14
  from ..decorators import ocrd_loglevel
15
15
 
16
+
16
17
  # ----------------------------------------------------------------------
17
18
  # ocrd process
18
19
  # ----------------------------------------------------------------------
@@ -18,7 +18,6 @@ from ocrd_utils import (
18
18
  getLogger,
19
19
  get_moduledir,
20
20
  get_ocrd_tool_json,
21
- resource_filename,
22
21
  initLogging,
23
22
  RESOURCE_LOCATIONS,
24
23
  )
@@ -17,12 +17,13 @@ from ocrd.task_sequence import ProcessorTask, validate_tasks
17
17
  from ocrd_utils import initLogging, parse_json_string_or_file, DEFAULT_METS_BASENAME
18
18
  from ocrd_validators import (
19
19
  OcrdToolValidator,
20
- OcrdZipValidator,
20
+ # OcrdZipValidator,
21
21
  PageValidator,
22
22
  ParameterValidator,
23
- WorkspaceValidator,
23
+ # WorkspaceValidator,
24
24
  )
25
25
 
26
+
26
27
  def _inform_of_result(report):
27
28
  if not report.is_valid:
28
29
  print(report.to_xml())
@@ -36,6 +37,7 @@ def validate_cli():
36
37
  """
37
38
  initLogging()
38
39
 
40
+
39
41
  @validate_cli.command('tool-json')
40
42
  @click.argument('ocrd_tool', required=False, nargs=1)
41
43
  def validate_ocrd_tool(ocrd_tool):
@@ -48,6 +50,7 @@ def validate_ocrd_tool(ocrd_tool):
48
50
  ocrd_tool = loads(f.read())
49
51
  _inform_of_result(OcrdToolValidator.validate(ocrd_tool))
50
52
 
53
+
51
54
  @validate_cli.command('parameters')
52
55
  @click.argument('ocrd_tool')
53
56
  @click.argument('executable')
@@ -60,24 +63,31 @@ def validate_parameters(ocrd_tool, executable, param_json):
60
63
  ocrd_tool = loads(f.read())
61
64
  _inform_of_result(ParameterValidator(ocrd_tool['tools'][executable]).validate(parse_json_string_or_file(param_json)))
62
65
 
66
+
63
67
  @validate_cli.command('page')
64
68
  @click.argument('page', required=True, nargs=1)
65
- @click.option('--page-textequiv-consistency', help="How strict to check PAGE multi-level textequiv consistency", type=click.Choice(['strict', 'lax', 'fix', 'off']), default='strict')
66
- @click.option('--page-textequiv-strategy', help="Strategy to determine the correct textequiv", type=click.Choice(['first']), default='first')
69
+ @click.option('--page-textequiv-consistency', help="How strict to check PAGE multi-level textequiv consistency",
70
+ type=click.Choice(['strict', 'lax', 'fix', 'off']), default='strict')
71
+ @click.option('--page-textequiv-strategy', help="Strategy to determine the correct textequiv",
72
+ type=click.Choice(['first']), default='first')
67
73
  @click.option('--check-baseline', help="Whether Baseline must be fully within TextLine/Coords", is_flag=True, default=False)
68
- @click.option('--check-coords', help="Whether *Region/TextLine/Word/Glyph must each be fully contained within Border/*Region/TextLine/Word, resp.", is_flag=True, default=False)
74
+ @click.option('--check-coords', help="Whether *Region/TextLine/Word/Glyph must each be fully contained "
75
+ "within Border/*Region/TextLine/Word, resp.", is_flag=True, default=False)
69
76
  def validate_page(page, **kwargs):
70
77
  '''
71
78
  Validate PAGE against OCR-D conventions
72
79
  '''
73
80
  _inform_of_result(PageValidator.validate(filename=page, **kwargs))
74
81
 
82
+
75
83
  # @validate_cli.command('zip')
76
84
  # @click.argument('src', type=click.Path(dir_okay=True, readable=True, resolve_path=True), required=True)
77
85
  # @click.option('-Z', '--skip-unzip', help="Treat SRC as a directory not a ZIP", is_flag=True, default=False)
78
86
  # @click.option('-B', '--skip-bag', help="Whether to skip all checks of manifests and files", is_flag=True, default=False)
79
- # @click.option('-C', '--skip-checksums', help="Whether to omit checksum checks but still check basic BagIt conformance", is_flag=True, default=False)
80
- # @click.option('-D', '--skip-delete', help="Whether to skip deleting the unpacked OCRD-ZIP dir after valdiation", is_flag=True, default=False)
87
+ # @click.option('-C', '--skip-checksums', help="Whether to omit checksum checks but still check basic BagIt conformance",
88
+ # is_flag=True, default=False)
89
+ # @click.option('-D', '--skip-delete', help="Whether to skip deleting the unpacked OCRD-ZIP dir after valdiation",
90
+ # is_flag=True, default=False)
81
91
  # @click.option('-j', '--processes', help="Number of parallel processes", type=int, default=1)
82
92
  # def validate(src, **kwargs):
83
93
  # """
@@ -87,11 +97,16 @@ def validate_page(page, **kwargs):
87
97
  # """
88
98
  # _inform_of_result(OcrdZipValidator(Resolver(), src).validate(**kwargs))
89
99
 
100
+
90
101
  # @validate_cli.command('workspace')
91
102
  # @click.option('-a', '--download', is_flag=True, help="Download all files")
92
- # @click.option('-s', '--skip', help="Tests to skip", default=[], multiple=True, type=click.Choice(['imagefilename', 'dimension', 'mets_unique_identifier', 'mets_file_group_names', 'mets_files', 'pixel_density', 'page', 'url']))
93
- # @click.option('--page-textequiv-consistency', '--page-strictness', help="How strict to check PAGE multi-level textequiv consistency", type=click.Choice(['strict', 'lax', 'fix', 'off']), default='strict')
94
- # @click.option('--page-coordinate-consistency', help="How fierce to check PAGE multi-level coordinate consistency", type=click.Choice(['poly', 'baseline', 'both', 'off']), default='poly')
103
+ # @click.option('-s', '--skip', help="Tests to skip", default=[], multiple=True, type=click.Choice(
104
+ # ['imagefilename', 'dimension', 'mets_unique_identifier', 'mets_file_group_names', 'mets_files',
105
+ # 'pixel_density', 'page', 'url']))
106
+ # @click.option('--page-textequiv-consistency', '--page-strictness', type=click.Choice(['strict', 'lax', 'fix', 'off']),
107
+ # help="How strict to check PAGE multi-level textequiv consistency", default='strict')
108
+ # @click.option('--page-coordinate-consistency', help="How fierce to check PAGE multi-level coordinate consistency",
109
+ # type=click.Choice(['poly', 'baseline', 'both', 'off']), default='poly')
95
110
  # @click.argument('mets_url')
96
111
  # def validate_workspace(mets_url, **kwargs):
97
112
  # '''
@@ -99,11 +114,15 @@ def validate_page(page, **kwargs):
99
114
  # '''
100
115
  # _inform_of_result(WorkspaceValidator.validate(Resolver(), mets_url, **kwargs))
101
116
 
117
+
102
118
  @validate_cli.command('tasks')
103
- @click.option('--workspace', nargs=1, required=False, help='Workspace directory these tasks are to be run. If omitted, only validate syntax')
104
- @click.option('-M', '--mets-basename', nargs=1, default=DEFAULT_METS_BASENAME, help='Basename of the METS file, used in conjunction with --workspace')
119
+ @click.option('--workspace', nargs=1, required=False, help='Workspace directory these tasks are to be run. '
120
+ 'If omitted, only validate syntax')
121
+ @click.option('-M', '--mets-basename', nargs=1, default=DEFAULT_METS_BASENAME,
122
+ help='Basename of the METS file, used in conjunction with --workspace')
105
123
  @click.option('-U', '--mets-server-url', help='TCP host URI or UDS path of METS server')
106
- @click.option('--overwrite', is_flag=True, default=False, help='When checking against a concrete workspace, simulate overwriting output or page range.')
124
+ @click.option('--overwrite', is_flag=True, default=False,
125
+ help='When checking against a concrete workspace, simulate overwriting output or page range.')
107
126
  @click.option('-g', '--page-id', help="ID(s) of the pages to process")
108
127
  @click.argument('tasks', nargs=-1, required=True)
109
128
  def validate_process(tasks, workspace, mets_basename, mets_server_url, overwrite, page_id):