ocrd 3.0.0a2__py3-none-any.whl → 3.0.0b1__py3-none-any.whl
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.
- ocrd/cli/__init__.py +34 -26
- ocrd/cli/bashlib.py +32 -18
- ocrd/cli/ocrd_tool.py +7 -5
- ocrd/cli/workspace.py +10 -8
- ocrd/decorators/__init__.py +13 -7
- ocrd/lib.bash +2 -0
- ocrd/mets_server.py +2 -3
- ocrd/processor/base.py +163 -63
- ocrd/processor/builtin/dummy_processor.py +4 -11
- ocrd/processor/helpers.py +23 -17
- ocrd/processor/ocrd_page_result.py +3 -3
- ocrd/resolver.py +0 -3
- ocrd/resource_manager.py +9 -5
- ocrd/workspace.py +8 -9
- ocrd/workspace_backup.py +1 -1
- {ocrd-3.0.0a2.dist-info → ocrd-3.0.0b1.dist-info}/METADATA +1 -1
- {ocrd-3.0.0a2.dist-info → ocrd-3.0.0b1.dist-info}/RECORD +47 -46
- ocrd_modelfactory/__init__.py +1 -1
- ocrd_models/constants.py +0 -1
- ocrd_models/ocrd_exif.py +2 -2
- ocrd_models/ocrd_file.py +2 -2
- ocrd_models/ocrd_mets.py +22 -22
- ocrd_models/ocrd_page.py +0 -1
- ocrd_models/ocrd_xml_base.py +2 -2
- ocrd_network/cli/client.py +134 -30
- ocrd_network/client.py +53 -27
- ocrd_network/client_utils.py +101 -0
- ocrd_network/processing_server.py +1 -1
- ocrd_network/runtime_data/deployer.py +12 -3
- ocrd_network/server_utils.py +12 -10
- ocrd_utils/__init__.py +2 -0
- ocrd_utils/config.py +16 -2
- ocrd_utils/image.py +25 -25
- ocrd_utils/logging.py +17 -19
- ocrd_utils/os.py +4 -5
- ocrd_utils/str.py +10 -3
- ocrd_validators/json_validator.py +1 -3
- ocrd_validators/ocrd_tool_validator.py +2 -2
- ocrd_validators/page_validator.py +56 -56
- ocrd_validators/parameter_validator.py +2 -2
- ocrd_validators/resource_list_validator.py +4 -3
- ocrd_validators/workspace_validator.py +21 -21
- ocrd_validators/xsd_validator.py +1 -1
- {ocrd-3.0.0a2.dist-info → ocrd-3.0.0b1.dist-info}/LICENSE +0 -0
- {ocrd-3.0.0a2.dist-info → ocrd-3.0.0b1.dist-info}/WHEEL +0 -0
- {ocrd-3.0.0a2.dist-info → ocrd-3.0.0b1.dist-info}/entry_points.txt +0 -0
- {ocrd-3.0.0a2.dist-info → ocrd-3.0.0b1.dist-info}/top_level.txt +0 -0
|
@@ -1,67 +1,68 @@
|
|
|
1
1
|
ocrd/__init__.py,sha256=ZswMVmlqFhAEIzMR3my6IKPq9XLH21aDPC_m_8Jh4dA,1076
|
|
2
2
|
ocrd/constants.py,sha256=6dn3mG54WqHsKInmLZp4kJjNqqPtBoFoSuLUuRbOps0,740
|
|
3
|
-
ocrd/lib.bash,sha256=
|
|
4
|
-
ocrd/mets_server.py,sha256=
|
|
3
|
+
ocrd/lib.bash,sha256=7amCf_0mwE3tkz-e_HxA30aQnL1x2O4BF_8dE9fbqJg,10692
|
|
4
|
+
ocrd/mets_server.py,sha256=M7hZOvOEbCfx5jCjeZ5Uv4CgviVZjGV15N8SN1ATpNY,20149
|
|
5
5
|
ocrd/ocrd-all-tool.json,sha256=9bX2VYnUwhTAzAvKaoT77BFzbgBGgyIt7qBqARpwWNc,586
|
|
6
|
-
ocrd/resolver.py,sha256=
|
|
6
|
+
ocrd/resolver.py,sha256=Ba9ALQbTXz6_mla4VqN9tAfHoj6aKuNJAU4tIDnjcHE,14952
|
|
7
7
|
ocrd/resource_list.yml,sha256=82-PiqkZnka1kTj3MQqNn4wXWKHHtoFchsQuetWuqFs,2633
|
|
8
|
-
ocrd/resource_manager.py,sha256=
|
|
8
|
+
ocrd/resource_manager.py,sha256=8BMVKJq8J56hugi8vtGn9Ffuk7oRkbs197aG74aKbCY,16733
|
|
9
9
|
ocrd/task_sequence.py,sha256=spiaUQaMM7M8WdBDoQGmLuTPm7tOugYXD6rcJ2UXzxw,6991
|
|
10
|
-
ocrd/workspace.py,sha256=
|
|
11
|
-
ocrd/workspace_backup.py,sha256=
|
|
10
|
+
ocrd/workspace.py,sha256=t5xveWhSLj5cbsuVkOqT6VZEQ9DRCxucT7FUvTNFnDA,65604
|
|
11
|
+
ocrd/workspace_backup.py,sha256=iab_JjZ_mMP-G8NIUk4PZmfpNlQuGRoqc3NbTSSew1w,3621
|
|
12
12
|
ocrd/workspace_bagger.py,sha256=yU8H3xR5WmQKvgQewac71ie-DUWcfLnMS01D55zsEHQ,11971
|
|
13
|
-
ocrd/cli/__init__.py,sha256=
|
|
14
|
-
ocrd/cli/bashlib.py,sha256=
|
|
13
|
+
ocrd/cli/__init__.py,sha256=XyYcbIuajaS2YM6HEWD4dfitdAzn111AWIaFPsTHoKQ,2621
|
|
14
|
+
ocrd/cli/bashlib.py,sha256=XGcO-MmYM3xJBRkSCLEZcGs0hqbw2GR8oyijJPtKnYM,5888
|
|
15
15
|
ocrd/cli/log.py,sha256=6_FrVmTKIIVNUaNLkuOJx8pvPhensHMuayJ0PA7T-XA,1562
|
|
16
16
|
ocrd/cli/network.py,sha256=oWBHFEURxfUdb_t-F4svP_ri7o5mqBoNQnLZLbsZLTA,602
|
|
17
|
-
ocrd/cli/ocrd_tool.py,sha256=
|
|
17
|
+
ocrd/cli/ocrd_tool.py,sha256=Sqh9Q5-H3u5IPPovp9bpL-QaP01zAHKZDSsi5MhvnQ8,7028
|
|
18
18
|
ocrd/cli/process.py,sha256=8KD0i7LT01H9u5CC1vktYMEVpS67da_rp_09_EOECmw,1233
|
|
19
19
|
ocrd/cli/resmgr.py,sha256=bTE-MpF7RRCHhgAbknqZUFHgHScIK6FR3S4h4DEAets,10080
|
|
20
20
|
ocrd/cli/validate.py,sha256=s5GtioCtO0UfRmYi_tdxNkKx0bJIzdAXGMCPA-PTbto,5563
|
|
21
|
-
ocrd/cli/workspace.py,sha256=
|
|
21
|
+
ocrd/cli/workspace.py,sha256=ETx3qjqUIXJp-Addv8eYmI2T_Js4PJR5UuZ4O6H7mis,40640
|
|
22
22
|
ocrd/cli/zip.py,sha256=MMJLw3OXWiJVfVtrdJcBkbB8vA1IzSautluazZRuCQ0,5910
|
|
23
|
-
ocrd/decorators/__init__.py,sha256=
|
|
23
|
+
ocrd/decorators/__init__.py,sha256=IJlA1XcdVBO6Hxm9rNDya7QYcqeWcaXXuLtGjfjcen8,7596
|
|
24
24
|
ocrd/decorators/loglevel_option.py,sha256=tgipROEu3t4hkwWvFssd80k2SbTBwBIC4WNE6Gc-XAg,798
|
|
25
25
|
ocrd/decorators/mets_find_options.py,sha256=d4oATKMP6bFQHNqOK6nLqgUiWF2FYdkPvzkTVRMYpKo,635
|
|
26
26
|
ocrd/decorators/ocrd_cli_options.py,sha256=-bpYOyHod3pMmbooyw_dIOqRnhCoZbdmE8vrnWbQRNA,2621
|
|
27
27
|
ocrd/decorators/parameter_option.py,sha256=n8hYw7XVTd3i3tvpK8F1Jx_CqRp6EGF9qJVH95yj92Q,1076
|
|
28
28
|
ocrd/processor/__init__.py,sha256=m2lYRvJogmt2Xb4UgqjCXWkfOtqpKW3h8OEWDnblwTQ,273
|
|
29
|
-
ocrd/processor/base.py,sha256=
|
|
30
|
-
ocrd/processor/helpers.py,sha256=
|
|
31
|
-
ocrd/processor/ocrd_page_result.py,sha256=
|
|
29
|
+
ocrd/processor/base.py,sha256=EvzR-uN5fDH1jKRWnm4CpCVpqge4Z7aprzW2PeXMqxU,38521
|
|
30
|
+
ocrd/processor/helpers.py,sha256=7TmhKRrgi-T_q8dJX6DIVEVZ3qmNABJEcz3S9RXSUjI,16484
|
|
31
|
+
ocrd/processor/ocrd_page_result.py,sha256=AazEmnWyPEN47TxXVg0WUQpgFNV_mlIiExwwycUj0nQ,490
|
|
32
32
|
ocrd/processor/builtin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
33
|
-
ocrd/processor/builtin/dummy_processor.py,sha256=
|
|
33
|
+
ocrd/processor/builtin/dummy_processor.py,sha256=6ORike_59wb_UUivhA6Iw_Ldg0AaMzX37F7qL9R8S_A,3704
|
|
34
34
|
ocrd/processor/builtin/dummy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
35
35
|
ocrd/processor/builtin/dummy/ocrd-tool.json,sha256=aTA2FZRsRsrkbTctkazFeRu4xsTF6yCdeY07cMzOyt4,677
|
|
36
|
-
ocrd_modelfactory/__init__.py,sha256=
|
|
36
|
+
ocrd_modelfactory/__init__.py,sha256=0baYSJXrOCTCguHkE6hBeqpGNVUe3aZUocv64A-DMDk,4094
|
|
37
37
|
ocrd_models/__init__.py,sha256=A0aj0mOraNb-xfiUueACdoaqISnp0qH-F49nTJg2vCs,380
|
|
38
|
-
ocrd_models/constants.py,sha256=
|
|
38
|
+
ocrd_models/constants.py,sha256=fI6Qz4OPOm6UBLQ_P2dlpjcwB0XFJZ7AgxxKqgc75X0,2724
|
|
39
39
|
ocrd_models/mets-empty.xml,sha256=dFixfbxSXrgjZx9BfdIKWHX-khNmp7dNYaFe2qQSwCY,1203
|
|
40
40
|
ocrd_models/ocrd_agent.py,sha256=E9OtDhz9UfKb6ou2qvsuCL9NlO1V6zMb0s8nVq8dVos,5609
|
|
41
|
-
ocrd_models/ocrd_exif.py,sha256=
|
|
42
|
-
ocrd_models/ocrd_file.py,sha256=
|
|
43
|
-
ocrd_models/ocrd_mets.py,sha256=
|
|
44
|
-
ocrd_models/ocrd_page.py,sha256=
|
|
41
|
+
ocrd_models/ocrd_exif.py,sha256=5BRLjvB6jg36V68i8jvVnT2SSNnpqLbhLsaMuP51Scw,4583
|
|
42
|
+
ocrd_models/ocrd_file.py,sha256=7lyHezuNnl2FEYV1lV35-QTCrgYAL-3wO2ulFUNq2Ak,9717
|
|
43
|
+
ocrd_models/ocrd_mets.py,sha256=h3y_WI5fVLsbBoUIRNH2ebjuO1-_P6T3BMIULX-ZOIs,42514
|
|
44
|
+
ocrd_models/ocrd_page.py,sha256=sVIvvMeBT8eZnOfW0DTjQUNyu62-llz0v_Ga5Xo-tUM,5393
|
|
45
45
|
ocrd_models/ocrd_page_generateds.py,sha256=XpzRaJAvGc_N58Mb2_Sk42S59pDqMRFiplqce1pUubw,772504
|
|
46
|
-
ocrd_models/ocrd_xml_base.py,sha256=
|
|
46
|
+
ocrd_models/ocrd_xml_base.py,sha256=OW57mXLlwm1nH8CNefvXmwLRws9KL9zSrb-3vH--mX8,1641
|
|
47
47
|
ocrd_models/report.py,sha256=luZxvzAAQyGYOlRNSJQUIUIANG81iGmBW5ag-uXxKCA,2026
|
|
48
48
|
ocrd_models/utils.py,sha256=0_WHf5NEn1WC8MKJc6X_RK8gW-70Z09_mslkKOj7uF8,2369
|
|
49
49
|
ocrd_network/__init__.py,sha256=gMejC614J5PPGgXDKBiQS0jt-Jx8qOrLbWH7zt8x8Gs,374
|
|
50
|
-
ocrd_network/client.py,sha256=
|
|
50
|
+
ocrd_network/client.py,sha256=j9PJ9QHI6qJ_qAxVlpTk5mLfq0Xemj_Br-0SX-09U5M,2834
|
|
51
|
+
ocrd_network/client_utils.py,sha256=JDBzDOGY2G_bgS8fQ677CMHG9DWSvIuWTlEFzdsXr_Q,4527
|
|
51
52
|
ocrd_network/constants.py,sha256=IeNtcU6dqonDE3Zw83_61auhS8X2b8wsjAxYg1zvK-M,1902
|
|
52
53
|
ocrd_network/database.py,sha256=fcft7vdRDoR7vmPL1xNYTIeOg5DwRPcggwYDYxLy5ik,10706
|
|
53
54
|
ocrd_network/logging_utils.py,sha256=bO9TQqBXw9CIZEKp8tHXbeE2NuJWMiaQDHzS05b4ajo,2153
|
|
54
55
|
ocrd_network/param_validators.py,sha256=Jl1VwiPPKJ50k-xEHLdvW-1QDOkJHCiMz4k9Ipqm-Uc,1489
|
|
55
56
|
ocrd_network/process_helpers.py,sha256=KpkInXsa5bgrxvTOouyMJ0NgJhaz0J9Gjs5sZHBcH64,2373
|
|
56
|
-
ocrd_network/processing_server.py,sha256=
|
|
57
|
+
ocrd_network/processing_server.py,sha256=8EFQIcjiQ-AEc4goaggxa-hYWhJW9fMzR768ZIX8vZE,41139
|
|
57
58
|
ocrd_network/processing_worker.py,sha256=VV_pC5ljtjPpMY89MElAMZ-YUJdKk7IPugxFfDy8viA,12396
|
|
58
59
|
ocrd_network/processor_server.py,sha256=RVX0MSzzayDdqHg7Kga7L4vOsjmQcoRYObh6Naxz-U4,9858
|
|
59
60
|
ocrd_network/server_cache.py,sha256=GKX91SkVahgAk0nGWT0S-0qWp7a9ubxncjwwLTKs7JY,12829
|
|
60
|
-
ocrd_network/server_utils.py,sha256=
|
|
61
|
+
ocrd_network/server_utils.py,sha256=NBSZvLD7o43fMtSkqR70ougW-IWCW9J71GHqZIBeD0Q,10982
|
|
61
62
|
ocrd_network/tcp_to_uds_mets_proxy.py,sha256=pNEl5jH09M-zuUIx25nog7IZ-fkXabi3724kQ_3iMTs,2894
|
|
62
63
|
ocrd_network/utils.py,sha256=Vm8EiBBSKv5fAlkcb6nB8-duFN633ZIRAcPKfk7iyZY,6366
|
|
63
64
|
ocrd_network/cli/__init__.py,sha256=F7YVqxw-9glz6-ghG0Kp5XXeV1-rL1emVSXLCWxdTF0,306
|
|
64
|
-
ocrd_network/cli/client.py,sha256=
|
|
65
|
+
ocrd_network/cli/client.py,sha256=4bpsDRwm3WVFHA6ITM-VKAFx-JQ6ldbBKFVYleWhiW8,7515
|
|
65
66
|
ocrd_network/cli/processing_server.py,sha256=rAci6RsHlZ0c87GuLdfdCQCiGNcDEu4NEEQiwKJqVUo,796
|
|
66
67
|
ocrd_network/cli/processing_worker.py,sha256=ZuaCkbKV_WKJV7cGOjZ6RLrjjppymnwNCiznFMlclAg,1897
|
|
67
68
|
ocrd_network/cli/processor_server.py,sha256=Vto7UekFo_g83aHqwDmhge9bhPzk0b7O-L46dSfIpJc,1259
|
|
@@ -81,45 +82,45 @@ ocrd_network/rabbitmq_utils/publisher.py,sha256=mw4XQQhRE1xUQVgEUseyG845iIgVO-9G
|
|
|
81
82
|
ocrd_network/runtime_data/__init__.py,sha256=3jYkmT4mxMUcpbDaSw7Ld0KTedGEx_5vUQPDjwUyJZc,367
|
|
82
83
|
ocrd_network/runtime_data/config_parser.py,sha256=Vr0FbsqmsoiuhDgZ7KFdeFZj9JvUulcOS2PCRFQQNHY,2364
|
|
83
84
|
ocrd_network/runtime_data/connection_clients.py,sha256=DZyAvkNyMaIddGJs56s2pMP_fK-XWAtICxk1cjvkWYM,4207
|
|
84
|
-
ocrd_network/runtime_data/deployer.py,sha256=
|
|
85
|
+
ocrd_network/runtime_data/deployer.py,sha256=W7SHn6XBC5fIaTJIMnHOMxEyp7dVqvHY4_cepaloMhQ,8315
|
|
85
86
|
ocrd_network/runtime_data/hosts.py,sha256=ml19ptzH4TFofyJR-Qp_Mn3sZUFbWoNe__rRXZSj_WE,12185
|
|
86
87
|
ocrd_network/runtime_data/network_agents.py,sha256=5p_zKLqECBIHLw-Ya6eKcKSZcUM4ESiipEIphVxHBEA,5192
|
|
87
88
|
ocrd_network/runtime_data/network_services.py,sha256=xrPpFUU_Pa-XzGe2FEt5RmO17xqykIUmTr_9g6S7XSs,7892
|
|
88
|
-
ocrd_utils/__init__.py,sha256=
|
|
89
|
-
ocrd_utils/config.py,sha256=
|
|
89
|
+
ocrd_utils/__init__.py,sha256=U_zAQJwxg_aJ4CR84CKMNAUP6Cob8Er8Ikj42JmnUKo,5977
|
|
90
|
+
ocrd_utils/config.py,sha256=Zs7XXjfWa1oQ1tvnu6DR1WmfafohMPU9KR-Qx3qoC74,9818
|
|
90
91
|
ocrd_utils/constants.py,sha256=ImbG1d8t2MW3uuFi-mN6aY90Zn74liAKZBKlfuKN86w,3278
|
|
91
92
|
ocrd_utils/deprecate.py,sha256=4i50sZsA3Eevqn5D-SL5yGf9KEZfGCV4A5Anzn1GRMs,1026
|
|
92
|
-
ocrd_utils/image.py,sha256=
|
|
93
|
+
ocrd_utils/image.py,sha256=zNNX1cnRy6yvrxx8mnYQiqWraAh5-i4a1AOfCCg4SmI,24781
|
|
93
94
|
ocrd_utils/introspect.py,sha256=gfBlmeEFuRmRUSgdSK0jOxRpYqDRXl2IAE6gv2MZ6as,1977
|
|
94
|
-
ocrd_utils/logging.py,sha256=
|
|
95
|
+
ocrd_utils/logging.py,sha256=Mw49E_JX3lGNi2TEOK3qXInQf5E2zg-Vbse5uFgxO9M,8156
|
|
95
96
|
ocrd_utils/ocrd_logging.conf,sha256=kl9x9JS1d8h8F0QZabvrjZtW1iApIaChvkImYafKO5g,3623
|
|
96
|
-
ocrd_utils/os.py,sha256=
|
|
97
|
-
ocrd_utils/str.py,sha256=
|
|
97
|
+
ocrd_utils/os.py,sha256=acRRdDBI8L6BK0Mf773yKEzwdpZSFRBJEKB2crL4EjU,9865
|
|
98
|
+
ocrd_utils/str.py,sha256=JIhsyWphqJuxJAzhRQJUqlZ44AGOeObEPJMFhfWhfhQ,10084
|
|
98
99
|
ocrd_validators/__init__.py,sha256=ZFc-UqRVBk9o1YesZFmr9lOepttNJ_NKx1Zdb7g_YsU,972
|
|
99
100
|
ocrd_validators/bagit-profile.yml,sha256=sdQJlSi7TOn1E9WYMOZ1shewJ-i_nPaKmsAFkh28TGY,1011
|
|
100
101
|
ocrd_validators/constants.py,sha256=FLP57T3F39weka_XovG40RgVMW1GunnbK04QRQ9tmlE,1802
|
|
101
|
-
ocrd_validators/json_validator.py,sha256=
|
|
102
|
+
ocrd_validators/json_validator.py,sha256=jkVYwBtXwoubcNbLFWy8kC-DRqdf-9ryoqEf5HHi3Ds,2651
|
|
102
103
|
ocrd_validators/message_processing.schema.yml,sha256=HL7o96-7ejslVMXcp16sbo5IjfUcW0wH8rPXHXdTyyA,1947
|
|
103
104
|
ocrd_validators/message_result.schema.yml,sha256=G6vt_JgIU7OGSaHj-2Jna6KWQ3bFWol5tnBArWEiVjM,681
|
|
104
105
|
ocrd_validators/mets.xsd,sha256=0Wrs9bObn0n-yEEIWyguIcUUuuP6KMEjD4I_p1_UlwY,138290
|
|
105
106
|
ocrd_validators/ocrd_network_message_validator.py,sha256=oafNWOjieBmTHFfYeCtyFFpW1gI0lDT6ycRr5Kvmfq0,561
|
|
106
107
|
ocrd_validators/ocrd_tool.schema.yml,sha256=wi9n5Ooi3feic5D_xqygUhhPYEF1TMKg60cY8OmRf8c,9912
|
|
107
|
-
ocrd_validators/ocrd_tool_validator.py,sha256=
|
|
108
|
+
ocrd_validators/ocrd_tool_validator.py,sha256=CvfUHC0vJsPnmFBNf4ndQMXX6pcERCjJMAWk2L-T_ww,747
|
|
108
109
|
ocrd_validators/ocrd_zip_validator.py,sha256=udAImFFliJY3y1FcKwZ52rhpjYB2Iv491hWDxdet8w0,3685
|
|
109
110
|
ocrd_validators/page.xsd,sha256=abQ8C3gRLPMFm8lH62aTCfvTIWI23TpgEDcaW9YCt7I,85770
|
|
110
|
-
ocrd_validators/page_validator.py,sha256=
|
|
111
|
-
ocrd_validators/parameter_validator.py,sha256=
|
|
111
|
+
ocrd_validators/page_validator.py,sha256=0fI278TLTsrw6htcwk7d9WkTFcbHNip87VMS2uw4Bzc,21765
|
|
112
|
+
ocrd_validators/parameter_validator.py,sha256=_5Y3IS24Sf_xHBkB3TE3jB9VTCbbjWO8bSwcQDP0ewI,1365
|
|
112
113
|
ocrd_validators/processing_server_config.schema.yml,sha256=8NQbhSshm1exTvbdYiu694rZZ-Xe70_vQtsJ0nd7ZCM,5432
|
|
113
114
|
ocrd_validators/processing_server_config_validator.py,sha256=lQ2-ZxsvbFki_SvE_N4_1ptBnBHcwOTJ5grtL2G9F8A,810
|
|
114
|
-
ocrd_validators/resource_list_validator.py,sha256=
|
|
115
|
-
ocrd_validators/workspace_validator.py,sha256=
|
|
115
|
+
ocrd_validators/resource_list_validator.py,sha256=cFMj0n_x-tjhuNUpjgEvPP8iPVm7lme9TWAaqATasV0,776
|
|
116
|
+
ocrd_validators/workspace_validator.py,sha256=rEXIwjtNpt8HcTv94fKed3vVlA3U4z7Xmm1ZL1VHC84,17892
|
|
116
117
|
ocrd_validators/xlink.xsd,sha256=8fW7YAMWXN2PbB_MMvj9H5ZeFoEBDzuYBtlGC8_6ijw,3180
|
|
117
118
|
ocrd_validators/xsd_mets_validator.py,sha256=4GWfLyqkmca0x7osDuXuExYuM0HWVrKoqn0S35sFhHU,467
|
|
118
119
|
ocrd_validators/xsd_page_validator.py,sha256=BNz_9u-Ek4UCeyZu3KxSQoolfW9lvuaSR9nIu1XXxeE,467
|
|
119
|
-
ocrd_validators/xsd_validator.py,sha256=
|
|
120
|
-
ocrd-3.0.
|
|
121
|
-
ocrd-3.0.
|
|
122
|
-
ocrd-3.0.
|
|
123
|
-
ocrd-3.0.
|
|
124
|
-
ocrd-3.0.
|
|
125
|
-
ocrd-3.0.
|
|
120
|
+
ocrd_validators/xsd_validator.py,sha256=6HrVAf6SzCvfUIuQdIzz9bOq4V-zhyii9yrUPoK2Uvo,2094
|
|
121
|
+
ocrd-3.0.0b1.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
122
|
+
ocrd-3.0.0b1.dist-info/METADATA,sha256=NKl_vrDFcwK3ayhp9_fe_2gAPESgGghDz3QQcdJRSRw,8785
|
|
123
|
+
ocrd-3.0.0b1.dist-info/WHEEL,sha256=Mdi9PDNwEZptOjTlUcAth7XJDFtKrHYaQMPulZeBCiQ,91
|
|
124
|
+
ocrd-3.0.0b1.dist-info/entry_points.txt,sha256=tV_gAdO8cbnOjS0GmKfJKbN60xBAV2DQRX6hEjleSjE,94
|
|
125
|
+
ocrd-3.0.0b1.dist-info/top_level.txt,sha256=pUgiN42t4KXC5rvpi6V8atza31XP4SCznXpXlVlvomM,75
|
|
126
|
+
ocrd-3.0.0b1.dist-info/RECORD,,
|
ocrd_modelfactory/__init__.py
CHANGED
|
@@ -72,7 +72,7 @@ def page_from_image(input_file : Union[OcrdFile, ClientSideOcrdFile], **kwargs)
|
|
|
72
72
|
),
|
|
73
73
|
pcGtsId=input_file.ID
|
|
74
74
|
)
|
|
75
|
-
mapping =
|
|
75
|
+
mapping = {}
|
|
76
76
|
etree : ET._Element = pcgts.to_etree(mapping_=mapping)
|
|
77
77
|
revmap = dict(((node, element) for element, node in mapping.items()))
|
|
78
78
|
return OcrdPage(pcgts, etree, mapping, revmap)
|
ocrd_models/constants.py
CHANGED
ocrd_models/ocrd_exif.py
CHANGED
|
@@ -102,7 +102,7 @@ class OcrdExif():
|
|
|
102
102
|
Serialize all properties as XML string.
|
|
103
103
|
"""
|
|
104
104
|
ret = '<exif>'
|
|
105
|
-
for k in self.__dict__:
|
|
106
|
-
ret += '
|
|
105
|
+
for k, v in self.__dict__.items():
|
|
106
|
+
ret += f'<{k}>{v}</{k}>'
|
|
107
107
|
ret += '</exif>'
|
|
108
108
|
return ret
|
ocrd_models/ocrd_file.py
CHANGED
|
@@ -230,12 +230,12 @@ class ClientSideOcrdFile:
|
|
|
230
230
|
|
|
231
231
|
def __init__(
|
|
232
232
|
self,
|
|
233
|
-
el,
|
|
233
|
+
el, # pylint: disable=unused-argument
|
|
234
234
|
mimetype: str = '',
|
|
235
235
|
pageId: str = '',
|
|
236
236
|
loctype: str ='OTHER',
|
|
237
237
|
local_filename: Optional[str] = None,
|
|
238
|
-
mets : Any = None,
|
|
238
|
+
mets : Any = None, # pylint: disable=unused-argument
|
|
239
239
|
url: str = '',
|
|
240
240
|
ID: str = '',
|
|
241
241
|
fileGrp: str = ''
|
ocrd_models/ocrd_mets.py
CHANGED
|
@@ -75,7 +75,7 @@ class OcrdMets(OcrdXmlDocument):
|
|
|
75
75
|
def __init__(self, **kwargs) -> None:
|
|
76
76
|
"""
|
|
77
77
|
"""
|
|
78
|
-
super(
|
|
78
|
+
super().__init__(**kwargs)
|
|
79
79
|
|
|
80
80
|
# XXX If the environment variable OCRD_METS_CACHING is set to "true",
|
|
81
81
|
# then enable caching, if "false", disable caching, overriding the
|
|
@@ -198,7 +198,7 @@ class OcrdMets(OcrdXmlDocument):
|
|
|
198
198
|
"""
|
|
199
199
|
return [OcrdAgent(el_agent) for el_agent in self._tree.getroot().findall('mets:metsHdr/mets:agent', NS)]
|
|
200
200
|
|
|
201
|
-
def add_agent(self,
|
|
201
|
+
def add_agent(self, **kwargs) -> OcrdAgent:
|
|
202
202
|
"""
|
|
203
203
|
Add an :py:class:`ocrd_models.ocrd_agent.OcrdAgent` to the list of agents in the ``metsHdr``.
|
|
204
204
|
"""
|
|
@@ -213,7 +213,7 @@ class OcrdMets(OcrdXmlDocument):
|
|
|
213
213
|
el_agent_last.addnext(el_agent)
|
|
214
214
|
except StopIteration:
|
|
215
215
|
el_metsHdr.insert(0, el_agent)
|
|
216
|
-
return OcrdAgent(el_agent,
|
|
216
|
+
return OcrdAgent(el_agent, **kwargs)
|
|
217
217
|
|
|
218
218
|
@property
|
|
219
219
|
def file_groups(self) -> List[str]:
|
|
@@ -488,11 +488,12 @@ class OcrdMets(OcrdXmlDocument):
|
|
|
488
488
|
f"A file with ID=={ID} already exists {mets_file} but unrelated - cannot mitigate")
|
|
489
489
|
|
|
490
490
|
# To get rid of Python's FutureWarning - checking if v is not None
|
|
491
|
-
kwargs = {k: v for k, v in locals().items()
|
|
492
|
-
k in ['url', 'ID', 'mimetype', 'pageId', 'local_filename'] and v is not None}
|
|
491
|
+
kwargs = {k: v for k, v in locals().items()
|
|
492
|
+
if k in ['url', 'ID', 'mimetype', 'pageId', 'local_filename'] and v is not None}
|
|
493
493
|
# This separation is needed to reuse the same el_mets_file element in the caching if block
|
|
494
494
|
el_mets_file = ET.SubElement(el_fileGrp, TAG_METS_FILE)
|
|
495
495
|
# The caching of the physical page is done in the OcrdFile constructor
|
|
496
|
+
# (which calls us back with set_physical_page_for_file)
|
|
496
497
|
mets_file = OcrdFile(el_mets_file, mets=self, **kwargs)
|
|
497
498
|
|
|
498
499
|
if self._cache_flag:
|
|
@@ -542,9 +543,9 @@ class OcrdMets(OcrdXmlDocument):
|
|
|
542
543
|
# Delete the physical page ref
|
|
543
544
|
fptrs = []
|
|
544
545
|
if self._cache_flag:
|
|
545
|
-
for
|
|
546
|
-
if ID in
|
|
547
|
-
fptrs.append(
|
|
546
|
+
for pageId, fptrdict in self._fptr_cache.items():
|
|
547
|
+
if ID in fptrdict:
|
|
548
|
+
fptrs.append(fptrdict[ID])
|
|
548
549
|
else:
|
|
549
550
|
fptrs = self._tree.getroot().findall('.//mets:fptr[@FILEID="%s"]' % ID, namespaces=NS)
|
|
550
551
|
|
|
@@ -700,8 +701,8 @@ class OcrdMets(OcrdXmlDocument):
|
|
|
700
701
|
assert for_fileIds # at this point we know for_fileIds is set, assert to convince pyright
|
|
701
702
|
ret = [None] * len(for_fileIds)
|
|
702
703
|
if self._cache_flag:
|
|
703
|
-
for pageId in self._fptr_cache.
|
|
704
|
-
for fptr in
|
|
704
|
+
for pageId, fptrdict in self._fptr_cache.items():
|
|
705
|
+
for fptr in fptrdict:
|
|
705
706
|
if fptr in for_fileIds:
|
|
706
707
|
index = for_fileIds.index(fptr)
|
|
707
708
|
if return_divs:
|
|
@@ -737,10 +738,10 @@ class OcrdMets(OcrdXmlDocument):
|
|
|
737
738
|
# delete any existing page mapping for this file.ID
|
|
738
739
|
fptrs = []
|
|
739
740
|
if self._cache_flag:
|
|
740
|
-
for
|
|
741
|
-
if ocrd_file.ID in
|
|
742
|
-
if
|
|
743
|
-
fptrs.append(
|
|
741
|
+
for page, fptrdict in self._fptr_cache.items():
|
|
742
|
+
if ocrd_file.ID in fptrdict:
|
|
743
|
+
if fptrdict[ocrd_file.ID] is not None:
|
|
744
|
+
fptrs.append(fptrdict[ocrd_file.ID])
|
|
744
745
|
else:
|
|
745
746
|
fptrs = self._tree.getroot().findall(
|
|
746
747
|
'mets:structMap[@TYPE="PHYSICAL"]/mets:div[@TYPE="physSequence"]/mets:div[@TYPE="page"]/mets:fptr[@FILEID="%s"]' %
|
|
@@ -791,7 +792,7 @@ class OcrdMets(OcrdXmlDocument):
|
|
|
791
792
|
self._fptr_cache[pageId].update({ocrd_file.ID: el_fptr})
|
|
792
793
|
|
|
793
794
|
def update_physical_page_attributes(self, page_id : str, **kwargs) -> None:
|
|
794
|
-
invalid_keys = list(k for k in kwargs
|
|
795
|
+
invalid_keys = list(k for k in kwargs if k not in METS_PAGE_DIV_ATTRIBUTE.names())
|
|
795
796
|
if invalid_keys:
|
|
796
797
|
raise ValueError(f"Invalid attribute {invalid_keys}. Allowed values: {METS_PAGE_DIV_ATTRIBUTE.names()}")
|
|
797
798
|
|
|
@@ -812,8 +813,8 @@ class OcrdMets(OcrdXmlDocument):
|
|
|
812
813
|
corresponding to the ``mets:file`` :py:attr:`ocrd_file`.
|
|
813
814
|
"""
|
|
814
815
|
if self._cache_flag:
|
|
815
|
-
for pageId in self._fptr_cache.
|
|
816
|
-
if ocrd_file.ID in
|
|
816
|
+
for pageId, fptrdict in self._fptr_cache.items():
|
|
817
|
+
if ocrd_file.ID in fptrdict:
|
|
817
818
|
return pageId
|
|
818
819
|
else:
|
|
819
820
|
ret = self._tree.getroot().find(
|
|
@@ -828,7 +829,7 @@ class OcrdMets(OcrdXmlDocument):
|
|
|
828
829
|
"""
|
|
829
830
|
mets_div = None
|
|
830
831
|
if self._cache_flag:
|
|
831
|
-
if ID in self._page_cache[METS_PAGE_DIV_ATTRIBUTE.ID]
|
|
832
|
+
if ID in self._page_cache[METS_PAGE_DIV_ATTRIBUTE.ID]:
|
|
832
833
|
mets_div = [self._page_cache[METS_PAGE_DIV_ATTRIBUTE.ID][ID]]
|
|
833
834
|
else:
|
|
834
835
|
mets_div = self._tree.getroot().xpath(
|
|
@@ -857,9 +858,9 @@ class OcrdMets(OcrdXmlDocument):
|
|
|
857
858
|
# If that's the case then we do not need to iterate 2 loops, just one.
|
|
858
859
|
mets_fptrs = []
|
|
859
860
|
if self._cache_flag:
|
|
860
|
-
for
|
|
861
|
-
if fileId in
|
|
862
|
-
mets_fptrs.append(
|
|
861
|
+
for pageId, fptrdict in self._fptr_cache.items():
|
|
862
|
+
if fileId in fptrdict:
|
|
863
|
+
mets_fptrs.append(fptrdict[fileId])
|
|
863
864
|
else:
|
|
864
865
|
mets_fptrs = self._tree.getroot().xpath(
|
|
865
866
|
'mets:structMap[@TYPE="PHYSICAL"]/mets:div[@TYPE="physSequence"]/mets:div[@TYPE="page"]/mets:fptr[@FILEID="%s"]' % fileId,
|
|
@@ -919,4 +920,3 @@ class OcrdMets(OcrdXmlDocument):
|
|
|
919
920
|
# FIXME: merge structMap logical and structLink as well
|
|
920
921
|
if after_add_cb:
|
|
921
922
|
after_add_cb(f_dest)
|
|
922
|
-
|
ocrd_models/ocrd_page.py
CHANGED
ocrd_models/ocrd_xml_base.py
CHANGED
|
@@ -8,8 +8,8 @@ from .constants import NAMESPACES
|
|
|
8
8
|
from .utils import xmllint_format
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
for curie in NAMESPACES:
|
|
12
|
-
ET.register_namespace(curie,
|
|
11
|
+
for curie, url in NAMESPACES.items():
|
|
12
|
+
ET.register_namespace(curie, url)
|
|
13
13
|
|
|
14
14
|
class OcrdXmlDocument():
|
|
15
15
|
"""
|
ocrd_network/cli/client.py
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import click
|
|
2
|
-
from
|
|
3
|
-
|
|
4
|
-
from ocrd.decorators import parameter_option
|
|
5
|
-
from ocrd_network import Client
|
|
2
|
+
from json import dumps
|
|
3
|
+
from typing import List, Optional, Tuple
|
|
4
|
+
from ocrd.decorators.parameter_option import parameter_option, parameter_override_option
|
|
6
5
|
from ocrd_utils import DEFAULT_METS_BASENAME
|
|
6
|
+
from ocrd_utils.introspect import set_json_key_value_overrides
|
|
7
|
+
from ocrd_utils.str import parse_json_string_or_file
|
|
8
|
+
from ..client import Client
|
|
7
9
|
|
|
8
10
|
|
|
9
11
|
@click.group('client')
|
|
@@ -23,6 +25,34 @@ def discovery_cli():
|
|
|
23
25
|
pass
|
|
24
26
|
|
|
25
27
|
|
|
28
|
+
@discovery_cli.command('processors')
|
|
29
|
+
@click.option('--address',
|
|
30
|
+
help='The address of the Processing Server. If not provided, '
|
|
31
|
+
'the "OCRD_NETWORK_SERVER_ADDR_PROCESSING" env variable is used by default')
|
|
32
|
+
def check_deployed_processors(address: Optional[str]):
|
|
33
|
+
"""
|
|
34
|
+
Get a list of deployed processing workers/processor servers.
|
|
35
|
+
Each processor is shown only once regardless of the amount of deployed instances.
|
|
36
|
+
"""
|
|
37
|
+
client = Client(server_addr_processing=address)
|
|
38
|
+
processors_list = client.check_deployed_processors()
|
|
39
|
+
print(dumps(processors_list, indent=4))
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
@discovery_cli.command('processor')
|
|
43
|
+
@click.option('--address',
|
|
44
|
+
help='The address of the Processing Server. If not provided, '
|
|
45
|
+
'the "OCRD_NETWORK_SERVER_ADDR_PROCESSING" env variable is used by default')
|
|
46
|
+
@click.argument('processor_name', required=True, type=click.STRING)
|
|
47
|
+
def check_processor_ocrd_tool(address: Optional[str], processor_name: str):
|
|
48
|
+
"""
|
|
49
|
+
Get the json tool of a deployed processor specified with `processor_name`
|
|
50
|
+
"""
|
|
51
|
+
client = Client(server_addr_processing=address)
|
|
52
|
+
ocrd_tool = client.check_deployed_processor_ocrd_tool(processor_name=processor_name)
|
|
53
|
+
print(dumps(ocrd_tool, indent=4))
|
|
54
|
+
|
|
55
|
+
|
|
26
56
|
@client_cli.group('processing')
|
|
27
57
|
def processing_cli():
|
|
28
58
|
"""
|
|
@@ -31,56 +61,92 @@ def processing_cli():
|
|
|
31
61
|
pass
|
|
32
62
|
|
|
33
63
|
|
|
34
|
-
@processing_cli.command('
|
|
64
|
+
@processing_cli.command('check-log')
|
|
65
|
+
@click.option('--address',
|
|
66
|
+
help='The address of the Processing Server. If not provided, '
|
|
67
|
+
'the "OCRD_NETWORK_SERVER_ADDR_PROCESSING" env variable is used by default')
|
|
68
|
+
@click.option('-j', '--processing-job-id', required=True)
|
|
69
|
+
def check_processing_job_status(address: Optional[str], processing_job_id: str):
|
|
70
|
+
"""
|
|
71
|
+
Check the log of a previously submitted processing job.
|
|
72
|
+
"""
|
|
73
|
+
client = Client(server_addr_processing=address)
|
|
74
|
+
response = client.check_job_log(job_id=processing_job_id)
|
|
75
|
+
print(response._content.decode(encoding='utf-8'))
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
@processing_cli.command('check-status')
|
|
79
|
+
@click.option('--address',
|
|
80
|
+
help='The address of the Processing Server. If not provided, '
|
|
81
|
+
'the "OCRD_NETWORK_SERVER_ADDR_PROCESSING" env variable is used by default')
|
|
82
|
+
@click.option('-j', '--processing-job-id', required=True)
|
|
83
|
+
def check_processing_job_status(address: Optional[str], processing_job_id: str):
|
|
84
|
+
"""
|
|
85
|
+
Check the status of a previously submitted processing job.
|
|
86
|
+
"""
|
|
87
|
+
client = Client(server_addr_processing=address)
|
|
88
|
+
job_status = client.check_job_status(processing_job_id)
|
|
89
|
+
assert job_status
|
|
90
|
+
print(f"Processing job status: {job_status}")
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
@processing_cli.command('run')
|
|
35
94
|
@click.argument('processor_name', required=True, type=click.STRING)
|
|
36
|
-
@click.option('--address'
|
|
95
|
+
@click.option('--address',
|
|
96
|
+
help='The address of the Processing Server. If not provided, '
|
|
97
|
+
'the "OCRD_NETWORK_SERVER_ADDR_PROCESSING" env variable is used by default')
|
|
37
98
|
@click.option('-m', '--mets', required=True, default=DEFAULT_METS_BASENAME)
|
|
38
99
|
@click.option('-I', '--input-file-grp', default='OCR-D-INPUT')
|
|
39
100
|
@click.option('-O', '--output-file-grp', default='OCR-D-OUTPUT')
|
|
40
101
|
@click.option('-g', '--page-id')
|
|
41
102
|
@parameter_option
|
|
103
|
+
@parameter_override_option
|
|
42
104
|
@click.option('--result-queue-name')
|
|
43
105
|
@click.option('--callback-url')
|
|
44
106
|
@click.option('--agent-type', default='worker')
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
107
|
+
@click.option('-b', '--block', default=False,
|
|
108
|
+
help='If set, the client will block till job timeout, fail or success.')
|
|
109
|
+
def send_processing_job_request(
|
|
110
|
+
address: Optional[str],
|
|
111
|
+
processor_name: str,
|
|
112
|
+
mets: str,
|
|
113
|
+
input_file_grp: str,
|
|
114
|
+
output_file_grp: Optional[str],
|
|
115
|
+
page_id: Optional[str],
|
|
116
|
+
parameter: List[str],
|
|
117
|
+
parameter_override: List[Tuple[str, str]],
|
|
118
|
+
result_queue_name: Optional[str],
|
|
119
|
+
callback_url: Optional[str],
|
|
120
|
+
# TODO: This is temporally available to toggle
|
|
121
|
+
# between the ProcessingWorker/ProcessorServer
|
|
122
|
+
agent_type: Optional[str],
|
|
123
|
+
block: Optional[bool]
|
|
58
124
|
):
|
|
125
|
+
"""
|
|
126
|
+
Submit a processing job to the processing server.
|
|
127
|
+
"""
|
|
59
128
|
req_params = {
|
|
60
129
|
"path_to_mets": mets,
|
|
61
130
|
"description": "OCR-D Network client request",
|
|
62
131
|
"input_file_grps": input_file_grp.split(','),
|
|
63
|
-
"
|
|
64
|
-
"agent_type": agent_type,
|
|
132
|
+
"agent_type": agent_type
|
|
65
133
|
}
|
|
66
134
|
if output_file_grp:
|
|
67
135
|
req_params["output_file_grps"] = output_file_grp.split(',')
|
|
68
136
|
if page_id:
|
|
69
137
|
req_params["page_id"] = page_id
|
|
138
|
+
req_params["parameters"] = set_json_key_value_overrides(parse_json_string_or_file(*parameter), *parameter_override)
|
|
70
139
|
if result_queue_name:
|
|
71
140
|
req_params["result_queue_name"] = result_queue_name
|
|
72
141
|
if callback_url:
|
|
73
142
|
req_params["callback_url"] = callback_url
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
response = client.send_processing_request(
|
|
79
|
-
processor_name=processor_name,
|
|
80
|
-
req_params=req_params
|
|
81
|
-
)
|
|
82
|
-
processing_job_id = response.get('job_id', None)
|
|
143
|
+
client = Client(server_addr_processing=address)
|
|
144
|
+
processing_job_id = client.send_processing_job_request(
|
|
145
|
+
processor_name=processor_name, req_params=req_params)
|
|
146
|
+
assert processing_job_id
|
|
83
147
|
print(f"Processing job id: {processing_job_id}")
|
|
148
|
+
if block:
|
|
149
|
+
client.poll_job_status(job_id=processing_job_id)
|
|
84
150
|
|
|
85
151
|
|
|
86
152
|
@client_cli.group('workflow')
|
|
@@ -91,6 +157,44 @@ def workflow_cli():
|
|
|
91
157
|
pass
|
|
92
158
|
|
|
93
159
|
|
|
160
|
+
@workflow_cli.command('check-status')
|
|
161
|
+
@click.option('--address', help='The address of the Processing Server. If not provided, '
|
|
162
|
+
'the "OCRD_NETWORK_SERVER_ADDR_PROCESSING" env variable is used by default')
|
|
163
|
+
@click.option('-j', '--workflow-job-id', required=True)
|
|
164
|
+
def check_workflow_job_status(address: Optional[str], workflow_job_id: str):
|
|
165
|
+
"""
|
|
166
|
+
Check the status of a previously submitted workflow job.
|
|
167
|
+
"""
|
|
168
|
+
client = Client(server_addr_processing=address)
|
|
169
|
+
job_status = client.check_workflow_status(workflow_job_id)
|
|
170
|
+
assert job_status
|
|
171
|
+
print(f"Workflow job status: {job_status}")
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
@workflow_cli.command('run')
|
|
175
|
+
@click.option('--address', help='The address of the Processing Server. If not provided, '
|
|
176
|
+
'the "OCRD_NETWORK_SERVER_ADDR_PROCESSING" env variable is used by default')
|
|
177
|
+
@click.option('-m', '--path-to-mets', required=True)
|
|
178
|
+
@click.option('-w', '--path-to-workflow', required=True)
|
|
179
|
+
@click.option('-b', '--block', default=False,
|
|
180
|
+
help='If set, the client will block till job timeout, fail or success.')
|
|
181
|
+
def send_workflow_job_request(
|
|
182
|
+
address: Optional[str],
|
|
183
|
+
path_to_mets: str,
|
|
184
|
+
path_to_workflow: str,
|
|
185
|
+
block: Optional[bool]
|
|
186
|
+
):
|
|
187
|
+
"""
|
|
188
|
+
Submit a workflow job to the processing server.
|
|
189
|
+
"""
|
|
190
|
+
client = Client(server_addr_processing=address)
|
|
191
|
+
workflow_job_id = client.send_workflow_job_request(path_to_wf=path_to_workflow, path_to_mets=path_to_mets)
|
|
192
|
+
assert workflow_job_id
|
|
193
|
+
print(f"Workflow job id: {workflow_job_id}")
|
|
194
|
+
if block:
|
|
195
|
+
client.poll_workflow_status(job_id=workflow_job_id)
|
|
196
|
+
|
|
197
|
+
|
|
94
198
|
@client_cli.group('workspace')
|
|
95
199
|
def workspace_cli():
|
|
96
200
|
"""
|