dsp-tools 18.0.0__tar.gz → 18.0.0.post3__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.

Potentially problematic release.


This version of dsp-tools might be problematic. Click here for more details.

Files changed (274) hide show
  1. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/PKG-INFO +1 -1
  2. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/pyproject.toml +1 -1
  3. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/cli/call_action_with_network.py +8 -9
  4. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/cli/create_parsers.py +3 -3
  5. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/cli/utils.py +2 -2
  6. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/clients/list_client_live.py +29 -20
  7. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/clients/ontology_create_client_live.py +19 -38
  8. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/clients/ontology_get_client_live.py +8 -7
  9. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/clients/project_client_live.py +9 -3
  10. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/create/create_on_server/lists.py +15 -2
  11. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/ingest_xmlupload/create_resources/upload_xml.py +4 -4
  12. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/validate_data/prepare_data/prepare_data.py +3 -3
  13. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/validate_data/shacl_cli_validator.py +3 -1
  14. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/validate_data/validate_data.py +3 -3
  15. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/validate_data/validation/get_validation_report.py +1 -1
  16. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/validate_data/validation/validate_ontology.py +1 -1
  17. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/models/input_problems.py +1 -1
  18. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/upload_config.py +1 -1
  19. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/xmlupload.py +2 -2
  20. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/error/custom_warnings.py +7 -0
  21. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/error/exceptions.py +17 -2
  22. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/utils/fuseki_bloating.py +4 -2
  23. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/utils/request_utils.py +31 -0
  24. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/xmllib/models/res.py +2 -0
  25. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/docs/index.md +0 -0
  26. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/__init__.py +0 -0
  27. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/cli/__init__.py +0 -0
  28. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/cli/args.py +0 -0
  29. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/cli/call_action.py +0 -0
  30. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/cli/call_action_files_only.py +0 -0
  31. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/cli/entry_point.py +0 -0
  32. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/clients/__init__.py +0 -0
  33. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/clients/authentication_client.py +0 -0
  34. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/clients/authentication_client_live.py +0 -0
  35. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/clients/connection.py +0 -0
  36. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/clients/connection_live.py +0 -0
  37. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/clients/fuseki_metrics.py +0 -0
  38. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/clients/legal_info_client.py +0 -0
  39. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/clients/legal_info_client_live.py +0 -0
  40. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/clients/list_client.py +0 -0
  41. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/clients/metadata_client.py +0 -0
  42. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/clients/metadata_client_live.py +0 -0
  43. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/clients/ontology_clients.py +0 -0
  44. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/clients/project_client.py +0 -0
  45. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/__init__.py +0 -0
  46. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/create/__init__.py +0 -0
  47. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/create/communicate_problems.py +0 -0
  48. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/create/constants.py +0 -0
  49. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/create/create_on_server/__init__.py +0 -0
  50. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/create/create_on_server/cardinalities.py +0 -0
  51. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/create/create_on_server/mappers.py +0 -0
  52. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/create/lists_only.py +0 -0
  53. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/create/models/__init__.py +0 -0
  54. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/create/models/input_problems.py +0 -0
  55. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/create/models/parsed_ontology.py +0 -0
  56. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/create/models/parsed_project.py +0 -0
  57. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/create/models/rdf_ontology.py +0 -0
  58. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/create/models/server_project_info.py +0 -0
  59. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/create/parsing/__init__.py +0 -0
  60. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/create/parsing/parse_lists.py +0 -0
  61. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/create/parsing/parse_ontology.py +0 -0
  62. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/create/parsing/parse_project.py +0 -0
  63. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/create/parsing/parsing_utils.py +0 -0
  64. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/create/serialisation/__init__.py +0 -0
  65. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/create/serialisation/ontology.py +0 -0
  66. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/excel2json/CLAUDE.md +0 -0
  67. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/excel2json/__init__.py +0 -0
  68. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/excel2json/json_header.py +0 -0
  69. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/excel2json/lists/__init__.py +0 -0
  70. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/excel2json/lists/compliance_checks.py +0 -0
  71. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/excel2json/lists/make_lists.py +0 -0
  72. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/excel2json/lists/models/__init__.py +0 -0
  73. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/excel2json/lists/models/deserialise.py +0 -0
  74. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/excel2json/lists/models/input_error.py +0 -0
  75. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/excel2json/lists/models/serialise.py +0 -0
  76. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/excel2json/lists/utils.py +0 -0
  77. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/excel2json/models/__init__.py +0 -0
  78. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/excel2json/models/input_error.py +0 -0
  79. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/excel2json/models/json_header.py +0 -0
  80. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/excel2json/models/list_node_name.py +0 -0
  81. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/excel2json/models/ontology.py +0 -0
  82. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/excel2json/old_lists.py +0 -0
  83. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/excel2json/project.py +0 -0
  84. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/excel2json/properties.py +0 -0
  85. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/excel2json/resources.py +0 -0
  86. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/excel2json/utils.py +0 -0
  87. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/excel2xml/__init__.py +0 -0
  88. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/excel2xml/excel2xml_cli.py +0 -0
  89. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/excel2xml/excel2xml_lib.py +0 -0
  90. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/excel2xml/propertyelement.py +0 -0
  91. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/id2iri.py +0 -0
  92. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/ingest_xmlupload/__init__.py +0 -0
  93. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/ingest_xmlupload/bulk_ingest_client.py +0 -0
  94. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/ingest_xmlupload/create_resources/__init__.py +0 -0
  95. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/ingest_xmlupload/create_resources/apply_ingest_id.py +0 -0
  96. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/ingest_xmlupload/create_resources/user_information.py +0 -0
  97. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/ingest_xmlupload/ingest_files/__init__.py +0 -0
  98. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/ingest_xmlupload/ingest_files/ingest_files.py +0 -0
  99. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/ingest_xmlupload/upload_files/__init__.py +0 -0
  100. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/ingest_xmlupload/upload_files/filechecker.py +0 -0
  101. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/ingest_xmlupload/upload_files/input_error.py +0 -0
  102. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/ingest_xmlupload/upload_files/upload_failures.py +0 -0
  103. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/ingest_xmlupload/upload_files/upload_files.py +0 -0
  104. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/project/__init__.py +0 -0
  105. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/project/create/__init__.py +0 -0
  106. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/project/create/parse_project.py +0 -0
  107. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/project/create/project_create_all.py +0 -0
  108. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/project/create/project_create_default_permissions.py +0 -0
  109. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/project/create/project_create_ontologies.py +0 -0
  110. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/project/create/project_validate.py +0 -0
  111. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/project/get/__init__.py +0 -0
  112. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/project/get/get.py +0 -0
  113. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/project/get/get_permissions.py +0 -0
  114. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/project/get/get_permissions_legacy.py +0 -0
  115. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/project/legacy_models/__init__.py +0 -0
  116. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/project/legacy_models/context.py +0 -0
  117. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/project/legacy_models/group.py +0 -0
  118. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/project/legacy_models/helpers.py +0 -0
  119. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/project/legacy_models/listnode.py +0 -0
  120. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/project/legacy_models/model.py +0 -0
  121. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/project/legacy_models/ontology.py +0 -0
  122. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/project/legacy_models/project.py +0 -0
  123. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/project/legacy_models/propertyclass.py +0 -0
  124. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/project/legacy_models/resourceclass.py +0 -0
  125. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/project/legacy_models/user.py +0 -0
  126. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/project/models/__init__.py +0 -0
  127. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/project/models/permissions_client.py +0 -0
  128. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/project/models/permissions_models.py +0 -0
  129. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/project/models/project_definition.py +0 -0
  130. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/resume_xmlupload/__init__.py +0 -0
  131. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/resume_xmlupload/resume_xmlupload.py +0 -0
  132. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/start_stack.py +0 -0
  133. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/validate_data/CLAUDE.md +0 -0
  134. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/validate_data/__init__.py +0 -0
  135. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/validate_data/constants.py +0 -0
  136. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/validate_data/mappers.py +0 -0
  137. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/validate_data/models/__init__.py +0 -0
  138. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/validate_data/models/api_responses.py +0 -0
  139. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/validate_data/models/input_problems.py +0 -0
  140. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/validate_data/models/rdf_like_data.py +0 -0
  141. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/validate_data/models/validation.py +0 -0
  142. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/validate_data/prepare_data/__init__.py +0 -0
  143. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/validate_data/prepare_data/get_rdf_like_data.py +0 -0
  144. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/validate_data/prepare_data/make_data_graph.py +0 -0
  145. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/validate_data/process_validation_report/__init__.py +0 -0
  146. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/validate_data/process_validation_report/get_user_validation_message.py +0 -0
  147. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/validate_data/process_validation_report/query_validation_result.py +0 -0
  148. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/validate_data/process_validation_report/reformat_validation_results.py +0 -0
  149. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/validate_data/sparql/__init__.py +0 -0
  150. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/validate_data/sparql/cardinality_shacl.py +0 -0
  151. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/validate_data/sparql/construct_shacl.py +0 -0
  152. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/validate_data/sparql/legal_info_shacl.py +0 -0
  153. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/validate_data/sparql/value_shacl.py +0 -0
  154. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/validate_data/utils.py +0 -0
  155. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/validate_data/validation/__init__.py +0 -0
  156. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/validate_data/validation/check_duplicate_files.py +0 -0
  157. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/validate_data/validation/check_for_unknown_classes.py +0 -0
  158. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/CLAUDE.md +0 -0
  159. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/__init__.py +0 -0
  160. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/iri_resolver.py +0 -0
  161. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/make_rdf_graph/__init__.py +0 -0
  162. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/make_rdf_graph/constants.py +0 -0
  163. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/make_rdf_graph/jsonld_utils.py +0 -0
  164. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/make_rdf_graph/make_file_value.py +0 -0
  165. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/make_rdf_graph/make_resource_and_values.py +0 -0
  166. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/make_rdf_graph/make_values.py +0 -0
  167. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/models/__init__.py +0 -0
  168. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/models/bitstream_info.py +0 -0
  169. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/models/formatted_text_value.py +0 -0
  170. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/models/ingest.py +0 -0
  171. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/models/lookup_models.py +0 -0
  172. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/models/permission.py +0 -0
  173. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/models/permissions_parsed.py +0 -0
  174. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/models/processed/__init__.py +0 -0
  175. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/models/processed/file_values.py +0 -0
  176. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/models/processed/res.py +0 -0
  177. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/models/processed/values.py +0 -0
  178. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/models/rdf_models.py +0 -0
  179. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/models/upload_clients.py +0 -0
  180. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/models/upload_state.py +0 -0
  181. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/prepare_xml_input/__init__.py +0 -0
  182. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/prepare_xml_input/ark2iri.py +0 -0
  183. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/prepare_xml_input/get_processed_resources.py +0 -0
  184. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/prepare_xml_input/iiif_uri_validator.py +0 -0
  185. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/prepare_xml_input/list_client.py +0 -0
  186. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/prepare_xml_input/prepare_xml_input.py +0 -0
  187. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/prepare_xml_input/read_validate_xml_file.py +0 -0
  188. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/prepare_xml_input/transform_input_values.py +0 -0
  189. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/project_client.py +0 -0
  190. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/resource_create_client.py +0 -0
  191. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/richtext_id2iri.py +0 -0
  192. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/stash/__init__.py +0 -0
  193. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/stash/analyse_circular_reference_graph.py +0 -0
  194. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/stash/create_info_for_graph.py +0 -0
  195. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/stash/graph_models.py +0 -0
  196. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/stash/stash_circular_references.py +0 -0
  197. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/stash/stash_models.py +0 -0
  198. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/stash/upload_stashed_resptr_props.py +0 -0
  199. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/stash/upload_stashed_xml_texts.py +0 -0
  200. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/commands/xmlupload/write_diagnostic_info.py +0 -0
  201. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/config/__init__.py +0 -0
  202. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/config/logger_config.py +0 -0
  203. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/config/warnings_config.py +0 -0
  204. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/error/__init__.py +0 -0
  205. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/error/problems.py +0 -0
  206. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/error/xmllib_errors.py +0 -0
  207. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/error/xmllib_warnings.py +0 -0
  208. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/error/xmllib_warnings_util.py +0 -0
  209. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/error/xsd_validation_error_msg.py +0 -0
  210. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/legacy_models/__init__.py +0 -0
  211. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/legacy_models/datetimestamp.py +0 -0
  212. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/legacy_models/langstring.py +0 -0
  213. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/legacy_models/projectContext.py +0 -0
  214. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/py.typed +0 -0
  215. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/resources/schema/data.xsd +0 -0
  216. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/resources/schema/lists-only.json +0 -0
  217. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/resources/schema/project.json +0 -0
  218. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/resources/schema/properties-only.json +0 -0
  219. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/resources/schema/resources-only.json +0 -0
  220. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/resources/start-stack/docker-compose.override-host.j2 +0 -0
  221. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/resources/start-stack/docker-compose.override.yml +0 -0
  222. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/resources/start-stack/docker-compose.yml +0 -0
  223. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/resources/start-stack/dsp-app-config.json +0 -0
  224. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/resources/start-stack/dsp-app-config.override-host.j2 +0 -0
  225. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/resources/validate_data/api-shapes-resource-cardinalities.ttl +0 -0
  226. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/resources/validate_data/api-shapes.ttl +0 -0
  227. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/resources/validate_data/shacl-cli-image.yml +0 -0
  228. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/resources/validate_data/validate-ontology.ttl +0 -0
  229. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/utils/__init__.py +0 -0
  230. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/utils/ansi_colors.py +0 -0
  231. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/utils/data_formats/__init__.py +0 -0
  232. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/utils/data_formats/date_util.py +0 -0
  233. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/utils/data_formats/iri_util.py +0 -0
  234. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/utils/data_formats/shared.py +0 -0
  235. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/utils/data_formats/uri_util.py +0 -0
  236. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/utils/json_parsing.py +0 -0
  237. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/utils/rdflib_constants.py +0 -0
  238. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/utils/rdflib_utils.py +0 -0
  239. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/utils/replace_id_with_iri.py +0 -0
  240. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/utils/xml_parsing/__init__.py +0 -0
  241. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/utils/xml_parsing/get_lookups.py +0 -0
  242. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/utils/xml_parsing/get_parsed_resources.py +0 -0
  243. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/utils/xml_parsing/models/__init__.py +0 -0
  244. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/utils/xml_parsing/models/parsed_resource.py +0 -0
  245. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/utils/xml_parsing/parse_clean_validate_xml.py +0 -0
  246. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/xmllib/CLAUDE.md +0 -0
  247. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/xmllib/__init__.py +0 -0
  248. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/xmllib/general_functions.py +0 -0
  249. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/xmllib/internal/__init__.py +0 -0
  250. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/xmllib/internal/checkers.py +0 -0
  251. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/xmllib/internal/circumvent_circular_imports.py +0 -0
  252. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/xmllib/internal/constants.py +0 -0
  253. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/xmllib/internal/input_converters.py +0 -0
  254. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/xmllib/internal/serialise_file_value.py +0 -0
  255. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/xmllib/internal/serialise_resource.py +0 -0
  256. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/xmllib/internal/serialise_values.py +0 -0
  257. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/xmllib/internal/type_aliases.py +0 -0
  258. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/xmllib/models/__init__.py +0 -0
  259. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/xmllib/models/config_options.py +0 -0
  260. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/xmllib/models/date_formats.py +0 -0
  261. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/xmllib/models/dsp_base_resources.py +0 -0
  262. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/xmllib/models/internal/__init__.py +0 -0
  263. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/xmllib/models/internal/file_values.py +0 -0
  264. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/xmllib/models/internal/geometry.py +0 -0
  265. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/xmllib/models/internal/migration_metadata.py +0 -0
  266. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/xmllib/models/internal/serialise_permissions.py +0 -0
  267. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/xmllib/models/internal/values.py +0 -0
  268. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/xmllib/models/licenses/__init__.py +0 -0
  269. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/xmllib/models/licenses/other.py +0 -0
  270. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/xmllib/models/licenses/recommended.py +0 -0
  271. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/xmllib/models/permissions.py +0 -0
  272. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/xmllib/models/root.py +0 -0
  273. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/xmllib/value_checkers.py +0 -0
  274. {dsp_tools-18.0.0 → dsp_tools-18.0.0.post3}/src/dsp_tools/xmllib/value_converters.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: dsp-tools
3
- Version: 18.0.0
3
+ Version: 18.0.0.post3
4
4
  Summary: DSP-TOOLS is a Python package with a command line interface that helps you interact with a DaSCH service platform (DSP) server.
5
5
  Author: DaSCH - Swiss National Data and Service Center for the Humanities
6
6
  Author-email: DaSCH - Swiss National Data and Service Center for the Humanities <info@dasch.swiss>
@@ -2,7 +2,7 @@
2
2
 
3
3
  [project]
4
4
  name = "dsp-tools"
5
- version = "18.0.0"
5
+ version = "18.0.0.post3"
6
6
  description = "DSP-TOOLS is a Python package with a command line interface that helps you interact with a DaSCH service platform (DSP) server."
7
7
  authors = [
8
8
  { name = "DaSCH - Swiss National Data and Service Center for the Humanities", email = "info@dasch.swiss" },
@@ -6,7 +6,6 @@ from dsp_tools.cli.args import PathDependencies
6
6
  from dsp_tools.cli.args import ValidationSeverity
7
7
  from dsp_tools.cli.utils import check_docker_health
8
8
  from dsp_tools.cli.utils import check_input_dependencies
9
- from dsp_tools.cli.utils import check_network_health
10
9
  from dsp_tools.cli.utils import get_creds
11
10
  from dsp_tools.commands.create.lists_only import create_lists_only
12
11
  from dsp_tools.commands.excel2json.old_lists import validate_lists_section_with_schema
@@ -62,14 +61,14 @@ def call_upload_files(args: argparse.Namespace) -> bool:
62
61
 
63
62
 
64
63
  def call_ingest_files(args: argparse.Namespace) -> bool:
65
- check_network_health(NetworkRequirements(api_url=args.server))
64
+ check_input_dependencies(network_dependencies=NetworkRequirements(api_url=args.server))
66
65
  return ingest_files(creds=get_creds(args), shortcode=args.shortcode)
67
66
 
68
67
 
69
68
  def call_ingest_xmlupload(args: argparse.Namespace) -> bool:
70
69
  xml_path = Path(args.xml_file)
71
70
  required_files = [xml_path]
72
- id2iri_file = args.id2iri_replacement_with_file
71
+ id2iri_file = args.id2iri_file
73
72
  if id2iri_file:
74
73
  required_files.append(Path(id2iri_file))
75
74
  network_requirements = NetworkRequirements(args.server, always_requires_docker=True)
@@ -83,7 +82,7 @@ def call_ingest_xmlupload(args: argparse.Namespace) -> bool:
83
82
  interrupt_after=interrupt_after,
84
83
  skip_validation=args.skip_validation,
85
84
  skip_ontology_validation=args.skip_ontology_validation,
86
- id2iri_replacement_file=id2iri_file,
85
+ id2iri_file=id2iri_file,
87
86
  do_not_request_resource_metadata_from_db=args.do_not_request_resource_metadata_from_db,
88
87
  )
89
88
 
@@ -91,7 +90,7 @@ def call_ingest_xmlupload(args: argparse.Namespace) -> bool:
91
90
  def call_xmlupload(args: argparse.Namespace) -> bool:
92
91
  xml_path = Path(args.xmlfile)
93
92
  required_files = [xml_path]
94
- id2iri_file = args.id2iri_replacement_with_file
93
+ id2iri_file = args.id2iri_file
95
94
  if id2iri_file:
96
95
  required_files.append(Path(id2iri_file))
97
96
  network_requirements = NetworkRequirements(args.server, always_requires_docker=True)
@@ -128,7 +127,7 @@ def call_xmlupload(args: argparse.Namespace) -> bool:
128
127
  validation_severity=severity,
129
128
  skip_ontology_validation=args.skip_ontology_validation,
130
129
  do_not_request_resource_metadata_from_db=args.do_not_request_resource_metadata_from_db,
131
- id2iri_replacement_file=id2iri_file,
130
+ id2iri_file=id2iri_file,
132
131
  ),
133
132
  )
134
133
 
@@ -136,7 +135,7 @@ def call_xmlupload(args: argparse.Namespace) -> bool:
136
135
  def call_validate_data(args: argparse.Namespace) -> bool:
137
136
  xml_path = Path(args.xmlfile)
138
137
  required_files = [xml_path]
139
- id2iri_file = args.id2iri_replacement_with_file
138
+ id2iri_file = args.id2iri_file
140
139
  if id2iri_file:
141
140
  required_files.append(Path(id2iri_file))
142
141
  network_requirements = NetworkRequirements(args.server, always_requires_docker=True)
@@ -149,14 +148,14 @@ def call_validate_data(args: argparse.Namespace) -> bool:
149
148
  save_graphs=args.save_graphs,
150
149
  ignore_duplicate_files_warning=args.ignore_duplicate_files_warning,
151
150
  skip_ontology_validation=args.skip_ontology_validation,
152
- id2iri_replacement_file=id2iri_file,
151
+ id2iri_file=id2iri_file,
153
152
  do_not_request_resource_metadata_from_db=args.do_not_request_resource_metadata_from_db,
154
153
  )
155
154
 
156
155
 
157
156
  def call_resume_xmlupload(args: argparse.Namespace) -> bool:
158
157
  # this does not need docker if not on localhost, as does not need to validate
159
- check_network_health(NetworkRequirements(args.server))
158
+ check_input_dependencies(network_dependencies=NetworkRequirements(args.server))
160
159
  return resume_xmlupload(
161
160
  creds=get_creds(args),
162
161
  skip_first_resource=args.skip_first_resource,
@@ -246,7 +246,7 @@ def _add_ingest_xmlupload(
246
246
  ),
247
247
  )
248
248
  subparser.add_argument(
249
- "--id2iri-replacement-with-file",
249
+ "--id2iri-file",
250
250
  help=(
251
251
  "replaces internal IDs of an XML file (links and stand-off links inside richtext) "
252
252
  "by IRIs provided in this mapping file"
@@ -318,7 +318,7 @@ def _add_xmlupload(
318
318
  ),
319
319
  )
320
320
  subparser.add_argument(
321
- "--id2iri-replacement-with-file",
321
+ "--id2iri-file",
322
322
  help=(
323
323
  "replaces internal IDs of an XML file (links and stand-off links inside richtext) "
324
324
  "by IRIs provided in this mapping file"
@@ -354,7 +354,7 @@ def _add_validate_data(
354
354
  "-s", "--server", default=default_dsp_api_url, help="URL of the DSP server where DSP-TOOLS sends the data to"
355
355
  )
356
356
  subparser.add_argument(
357
- "--id2iri-replacement-with-file",
357
+ "--id2iri-file",
358
358
  help=(
359
359
  "replaces internal IDs of an XML file (links and stand-off links inside richtext) "
360
360
  "by IRIs provided in this mapping file"
@@ -31,7 +31,7 @@ def check_input_dependencies(
31
31
  if paths:
32
32
  check_path_dependencies(paths)
33
33
  if network_dependencies:
34
- check_network_health(network_dependencies)
34
+ _check_network_health(network_dependencies)
35
35
 
36
36
 
37
37
  def check_path_dependencies(paths: PathDependencies) -> None:
@@ -51,7 +51,7 @@ def _check_directory_exists(dir_path: Path) -> None:
51
51
  raise UserDirectoryNotFoundError(dir_path)
52
52
 
53
53
 
54
- def check_network_health(network_requirements: NetworkRequirements) -> None:
54
+ def _check_network_health(network_requirements: NetworkRequirements) -> None:
55
55
  if network_requirements.api_url == LOCALHOST_API or network_requirements.always_requires_docker:
56
56
  check_docker_health()
57
57
  _check_api_health(network_requirements.api_url)
@@ -5,7 +5,6 @@ from typing import cast
5
5
  from urllib.parse import quote_plus
6
6
 
7
7
  import requests
8
- from loguru import logger
9
8
  from requests import RequestException
10
9
  from requests import Response
11
10
 
@@ -15,8 +14,10 @@ from dsp_tools.clients.list_client import ListGetClient
15
14
  from dsp_tools.clients.list_client import OneList
16
15
  from dsp_tools.clients.list_client import OneNode
17
16
  from dsp_tools.error.exceptions import BadCredentialsError
18
- from dsp_tools.error.exceptions import InternalError
17
+ from dsp_tools.error.exceptions import FatalNonOkApiResponseCode
19
18
  from dsp_tools.utils.request_utils import RequestParameters
19
+ from dsp_tools.utils.request_utils import log_and_raise_request_exception
20
+ from dsp_tools.utils.request_utils import log_and_warn_unexpected_non_ok_response
20
21
  from dsp_tools.utils.request_utils import log_request
21
22
  from dsp_tools.utils.request_utils import log_response
22
23
 
@@ -46,12 +47,16 @@ class ListGetClientLive(ListGetClient):
46
47
  url = f"{self.api_url}/admin/lists?projectShortcode={self.shortcode}"
47
48
  timeout = 10
48
49
  log_request(RequestParameters("GET", url, timeout))
49
- response = requests.get(url=url, timeout=timeout)
50
+ try:
51
+ response = requests.get(url=url, timeout=timeout)
52
+ except RequestException as err:
53
+ log_and_raise_request_exception(err)
54
+
50
55
  log_response(response)
51
- if not response.ok:
52
- raise InternalError(f"Failed Request: {response.status_code} {response.text}")
53
- json_response = cast(dict[str, Any], response.json())
54
- return json_response
56
+ if response.ok:
57
+ json_response = cast(dict[str, Any], response.json())
58
+ return json_response
59
+ raise FatalNonOkApiResponseCode(url, response.status_code, response.text)
55
60
 
56
61
  def _extract_list_iris(self, response_json: dict[str, Any]) -> list[str]:
57
62
  return [x["id"] for x in response_json["lists"]]
@@ -61,12 +66,16 @@ class ListGetClientLive(ListGetClient):
61
66
  url = f"{self.api_url}/admin/lists/{encoded_list_iri}"
62
67
  timeout = 30
63
68
  log_request(RequestParameters("GET", url, timeout))
64
- response = requests.get(url=url, timeout=timeout)
69
+ try:
70
+ response = requests.get(url=url, timeout=timeout)
71
+ except RequestException as err:
72
+ log_and_raise_request_exception(err)
73
+
65
74
  log_response(response, include_response_content=False)
66
- if not response.ok:
67
- raise InternalError(f"Failed Request: {response.status_code} {response.text}")
68
- response_json = cast(dict[str, Any], response.json())
69
- return response_json
75
+ if response.ok:
76
+ response_json = cast(dict[str, Any], response.json())
77
+ return response_json
78
+ raise FatalNonOkApiResponseCode(url, response.status_code, response.text)
70
79
 
71
80
  def _reformat_one_list(self, response_json: dict[str, Any]) -> OneList:
72
81
  list_name = response_json["list"]["listinfo"]["name"]
@@ -94,12 +103,12 @@ class ListCreateClientLive(ListCreateClient):
94
103
 
95
104
  def create_new_list(self, list_info: dict[str, Any]) -> str | None:
96
105
  url = f"{self.api_url}/admin/lists"
106
+ headers = self._get_request_header()
97
107
  try:
98
- headers = self._get_request_header()
99
108
  response = _post_and_log_request(url, list_info, headers)
100
109
  except RequestException as err:
101
- logger.exception(err)
102
- return None
110
+ log_and_raise_request_exception(err)
111
+
103
112
  if response.ok:
104
113
  result = response.json()
105
114
  list_iri = cast(str, result["list"]["listinfo"]["id"])
@@ -109,18 +118,18 @@ class ListCreateClientLive(ListCreateClient):
109
118
  "Only a project or system administrator can create lists. "
110
119
  "Your permissions are insufficient for this action."
111
120
  )
112
- logger.exception(f"Failed to create list: '{list_info['name']}'")
121
+ log_and_warn_unexpected_non_ok_response(response.status_code, response.text)
113
122
  return None
114
123
 
115
124
  def add_list_node(self, node_info: dict[str, Any], parent_iri: str) -> str | None:
116
125
  encoded_parent_iri = quote_plus(parent_iri)
117
126
  url = f"{self.api_url}/admin/lists/{encoded_parent_iri}"
127
+ headers = self._get_request_header()
118
128
  try:
119
- headers = self._get_request_header()
120
129
  response = _post_and_log_request(url, node_info, headers)
121
130
  except RequestException as err:
122
- logger.error(err)
123
- return None
131
+ log_and_raise_request_exception(err)
132
+
124
133
  if response.ok:
125
134
  result = response.json()
126
135
  node_iri = cast(str, result["nodeinfo"]["id"])
@@ -130,7 +139,7 @@ class ListCreateClientLive(ListCreateClient):
130
139
  "Only a project or system administrator can add nodes to lists. "
131
140
  "Your permissions are insufficient for this action."
132
141
  )
133
- logger.error(f"Failed to add node: '{node_info['name']}'")
142
+ log_and_warn_unexpected_non_ok_response(response.status_code, response.text)
134
143
  return None
135
144
 
136
145
  def _get_request_header(self) -> dict[str, str]:
@@ -1,22 +1,24 @@
1
1
  from dataclasses import dataclass
2
2
  from http import HTTPStatus
3
3
  from typing import Any
4
+ from typing import cast
4
5
 
5
6
  import requests
6
7
  from loguru import logger
7
8
  from rdflib import Graph
8
9
  from rdflib import Literal
9
10
  from rdflib import URIRef
10
- from requests import ReadTimeout
11
+ from requests import RequestException
11
12
  from requests import Response
12
13
 
13
14
  from dsp_tools.clients.authentication_client import AuthenticationClient
14
15
  from dsp_tools.clients.ontology_clients import OntologyCreateClient
15
16
  from dsp_tools.error.exceptions import BadCredentialsError
16
- from dsp_tools.error.exceptions import UnexpectedApiResponseError
17
+ from dsp_tools.error.exceptions import FatalNonOkApiResponseCode
17
18
  from dsp_tools.utils.rdflib_constants import KNORA_API
18
19
  from dsp_tools.utils.request_utils import RequestParameters
19
- from dsp_tools.utils.request_utils import log_and_raise_timeouts
20
+ from dsp_tools.utils.request_utils import log_and_raise_request_exception
21
+ from dsp_tools.utils.request_utils import log_and_warn_unexpected_non_ok_response
20
22
  from dsp_tools.utils.request_utils import log_request
21
23
  from dsp_tools.utils.request_utils import log_response
22
24
 
@@ -38,23 +40,12 @@ class OntologyCreateClientLive(OntologyCreateClient):
38
40
  logger.debug("GET ontology metadata")
39
41
  try:
40
42
  response = self._get_and_log_request(url, header)
41
- except (TimeoutError, ReadTimeout) as err:
42
- log_and_raise_timeouts(err)
43
+ except RequestException as err:
44
+ log_and_raise_request_exception(err)
45
+
43
46
  if response.ok:
44
- date = _parse_last_modification_date(response.text, URIRef(onto_iri))
45
- if not date:
46
- raise UnexpectedApiResponseError(
47
- f"Could not find the last modification date of the ontology '{onto_iri}' "
48
- f"in the response: {response.text}"
49
- )
50
- return date
51
- if response.status_code == HTTPStatus.FORBIDDEN:
52
- raise BadCredentialsError("You do not have sufficient credentials to retrieve ontology metadata.")
53
- else:
54
- raise UnexpectedApiResponseError(
55
- f"An unexpected response with the status code {response.status_code} was received from the API. "
56
- f"Please consult 'warnings.log' for details."
57
- )
47
+ return _parse_last_modification_date(response.text, URIRef(onto_iri))
48
+ raise FatalNonOkApiResponseCode(url, response.status_code, response.text)
58
49
 
59
50
  def post_resource_cardinalities(self, cardinality_graph: dict[str, Any]) -> Literal | None:
60
51
  url = f"{self.server}/v2/ontologies/cardinalities"
@@ -62,26 +53,18 @@ class OntologyCreateClientLive(OntologyCreateClient):
62
53
  logger.debug("POST resource cardinalities to ontology")
63
54
  try:
64
55
  response = self._post_and_log_request(url, cardinality_graph)
65
- except (TimeoutError, ReadTimeout) as err:
66
- log_and_raise_timeouts(err)
56
+ except RequestException as err:
57
+ log_and_raise_request_exception(err)
58
+
67
59
  if response.ok:
68
- date = _parse_last_modification_date(response.text)
69
- if not date:
70
- raise UnexpectedApiResponseError(
71
- f"Could not find the last modification date in the response: {response.text}"
72
- )
73
- return date
60
+ return _parse_last_modification_date(response.text)
74
61
  if response.status_code == HTTPStatus.FORBIDDEN:
75
62
  raise BadCredentialsError(
76
63
  "Only a project or system administrator can add cardinalities to resource classes. "
77
64
  "Your permissions are insufficient for this action."
78
65
  )
79
- else:
80
- logger.error(
81
- f"During cardinality creation an unexpected response with the status code {response.status_code} "
82
- f"was received from the API."
83
- )
84
- return None
66
+ log_and_warn_unexpected_non_ok_response(response.status_code, response.text)
67
+ return None
85
68
 
86
69
  def _post_and_log_request(
87
70
  self,
@@ -130,10 +113,8 @@ class OntologyCreateClientLive(OntologyCreateClient):
130
113
  return data_dict, generic_headers
131
114
 
132
115
 
133
- def _parse_last_modification_date(response_text: str, onto_iri: URIRef | None = None) -> Literal | None:
116
+ def _parse_last_modification_date(response_text: str, onto_iri: URIRef | None = None) -> Literal:
134
117
  g = Graph()
135
118
  g.parse(data=response_text, format="json-ld")
136
- result = next(g.objects(subject=onto_iri, predicate=KNORA_API.lastModificationDate), None)
137
- if isinstance(result, Literal):
138
- return result
139
- return None
119
+ date = next(g.objects(subject=onto_iri, predicate=KNORA_API.lastModificationDate))
120
+ return cast(Literal, date)
@@ -5,6 +5,7 @@ from typing import cast
5
5
  import requests
6
6
 
7
7
  from dsp_tools.clients.ontology_clients import OntologyGetClient
8
+ from dsp_tools.error.exceptions import FatalNonOkApiResponseCode
8
9
  from dsp_tools.error.exceptions import InternalError
9
10
  from dsp_tools.utils.request_utils import RequestParameters
10
11
  from dsp_tools.utils.request_utils import log_request
@@ -23,9 +24,9 @@ class OntologyGetClientLive(OntologyGetClient):
23
24
  log_request(RequestParameters("GET", url, timeout=timeout, headers=headers))
24
25
  response = requests.get(url=url, headers=headers, timeout=timeout)
25
26
  log_response(response, include_response_content=False)
26
- if not response.ok:
27
- raise InternalError(f"Failed Request: {response.status_code} {response.text}")
28
- return response.text
27
+ if response.ok:
28
+ return response.text
29
+ raise FatalNonOkApiResponseCode(url, response.status_code, response.text)
29
30
 
30
31
  def get_ontologies(self) -> tuple[list[str], list[str]]:
31
32
  """
@@ -49,7 +50,7 @@ class OntologyGetClientLive(OntologyGetClient):
49
50
  raise InternalError(f"Failed Request: {response.status_code} {response.text}")
50
51
  response_json = cast(dict[str, Any], response.json())
51
52
  if not (ontos := response_json.get("project", {}).get("ontologies")):
52
- raise InternalError(f"The response from the API does not contain any ontologies.\nResponse:{response.text}")
53
+ raise FatalNonOkApiResponseCode(url, response.status_code, response.text)
53
54
  output = cast(list[str], ontos)
54
55
  return output
55
56
 
@@ -60,6 +61,6 @@ class OntologyGetClientLive(OntologyGetClient):
60
61
  log_request(RequestParameters("GET", url, timeout=timeout, headers=headers))
61
62
  response = requests.get(url=url, headers=headers, timeout=timeout)
62
63
  log_response(response, include_response_content=False)
63
- if not response.ok:
64
- raise InternalError(f"Failed Request: {response.status_code} {response.text}")
65
- return response.text
64
+ if response.ok:
65
+ return response.text
66
+ raise FatalNonOkApiResponseCode(url, response.status_code, response.text)
@@ -3,10 +3,12 @@ from http import HTTPStatus
3
3
  from typing import cast
4
4
 
5
5
  import requests
6
+ from requests import RequestException
6
7
 
7
8
  from dsp_tools.clients.project_client import ProjectInfoClient
8
- from dsp_tools.error.exceptions import UnexpectedApiResponseError
9
+ from dsp_tools.error.exceptions import FatalNonOkApiResponseCode
9
10
  from dsp_tools.utils.request_utils import RequestParameters
11
+ from dsp_tools.utils.request_utils import log_and_raise_request_exception
10
12
  from dsp_tools.utils.request_utils import log_request
11
13
  from dsp_tools.utils.request_utils import log_response
12
14
 
@@ -20,11 +22,15 @@ class ProjectInfoClientLive(ProjectInfoClient):
20
22
  timeout = 30
21
23
  params = RequestParameters("GET", url, timeout)
22
24
  log_request(params)
23
- response = requests.get(url, timeout=timeout)
25
+ try:
26
+ response = requests.get(url, timeout=timeout)
27
+ except RequestException as err:
28
+ log_and_raise_request_exception(err)
29
+
24
30
  log_response(response)
25
31
  if response.ok:
26
32
  result = response.json()
27
33
  return cast(str, result["project"]["id"])
28
34
  if response.status_code == HTTPStatus.NOT_FOUND:
29
35
  return None
30
- raise UnexpectedApiResponseError(f"Encountered unexpected API response with the code {response.status_code}")
36
+ raise FatalNonOkApiResponseCode(url, response.status_code, response.text)
@@ -1,3 +1,4 @@
1
+ import warnings
1
2
  from typing import Any
2
3
 
3
4
  from loguru import logger
@@ -17,6 +18,8 @@ from dsp_tools.commands.create.models.parsed_project import ParsedList
17
18
  from dsp_tools.commands.create.models.parsed_project import ParsedListNode
18
19
  from dsp_tools.commands.create.models.parsed_project import ParsedNodeInfo
19
20
  from dsp_tools.commands.create.models.server_project_info import ListNameToIriLookup
21
+ from dsp_tools.error.custom_warnings import DspToolsUnexpectedStatusCodeWarning
22
+ from dsp_tools.error.exceptions import FatalNonOkApiResponseCode
20
23
  from dsp_tools.utils.ansi_colors import BOLD
21
24
  from dsp_tools.utils.ansi_colors import BOLD_CYAN
22
25
  from dsp_tools.utils.ansi_colors import RESET_TO_DEFAULT
@@ -64,8 +67,18 @@ def _print_existing_list_info(existing_lists: list[UserInformation]) -> None:
64
67
 
65
68
  def get_existing_lists_on_server(shortcode: str, auth: AuthenticationClient) -> ListNameToIriLookup:
66
69
  client = ListGetClientLive(auth.server, shortcode)
67
- name2iri_dict = client.get_all_list_iris_and_names()
68
- return ListNameToIriLookup(name2iri_dict)
70
+ try:
71
+ name2iri_dict = client.get_all_list_iris_and_names()
72
+ return ListNameToIriLookup(name2iri_dict)
73
+ except FatalNonOkApiResponseCode as e:
74
+ logger.exception(e)
75
+ warnings.warn(
76
+ DspToolsUnexpectedStatusCodeWarning(
77
+ "Could not retrieve existing lists on server. "
78
+ "We will not be able to create any properties that require a list that is not defined in the JSON."
79
+ )
80
+ )
81
+ return ListNameToIriLookup({})
69
82
 
70
83
 
71
84
  def _filter_out_existing_lists(
@@ -42,7 +42,7 @@ def ingest_xmlupload(
42
42
  interrupt_after: int | None = None,
43
43
  skip_validation: bool = False,
44
44
  skip_ontology_validation: bool = False,
45
- id2iri_replacement_file: str | None = None,
45
+ id2iri_file: str | None = None,
46
46
  do_not_request_resource_metadata_from_db: bool = False,
47
47
  ) -> bool:
48
48
  """
@@ -59,7 +59,7 @@ def ingest_xmlupload(
59
59
  interrupt_after: if set, the upload will be interrupted after this number of resources
60
60
  skip_validation: skip the SHACL validation
61
61
  skip_ontology_validation: skip the ontology validation
62
- id2iri_replacement_file: to replace internal IDs of an XML file by IRIs provided in this mapping file
62
+ id2iri_file: to replace internal IDs of an XML file by IRIs provided in this mapping file
63
63
  do_not_request_resource_metadata_from_db: if true do not request metadata information from the api
64
64
  for existing resources
65
65
 
@@ -86,8 +86,8 @@ def ingest_xmlupload(
86
86
  clients = _get_live_clients(con, config, auth)
87
87
 
88
88
  parsed_resources, lookups = get_parsed_resources_and_mappers(root, clients)
89
- if id2iri_replacement_file:
90
- parsed_resources = use_id2iri_mapping_to_replace_ids(parsed_resources, Path(id2iri_replacement_file))
89
+ if id2iri_file:
90
+ parsed_resources = use_id2iri_mapping_to_replace_ids(parsed_resources, Path(id2iri_file))
91
91
 
92
92
  validation_should_be_skipped = skip_validation
93
93
  is_on_prod_like_server = is_prod_like_server(creds.server)
@@ -30,15 +30,15 @@ from dsp_tools.utils.xml_parsing.parse_clean_validate_xml import parse_and_clean
30
30
 
31
31
 
32
32
  def get_info_and_parsed_resources_from_file(
33
- file: Path, api_url: str, id2iri_replacement_file: str | None
33
+ file: Path, api_url: str, id2iri_file: str | None
34
34
  ) -> tuple[list[ParsedResource], str, dict[str, list[str]], list[str]]:
35
35
  root = parse_and_clean_xml_file(file)
36
36
  shortcode = root.attrib["shortcode"]
37
37
  authorship_lookup = get_authorship_lookup(root)
38
38
  permission_ids = [perm.attrib["id"] for perm in root.findall("permissions")]
39
39
  parsed_resources = get_parsed_resources(root, api_url)
40
- if id2iri_replacement_file:
41
- parsed_resources = use_id2iri_mapping_to_replace_ids(parsed_resources, Path(id2iri_replacement_file))
40
+ if id2iri_file:
41
+ parsed_resources = use_id2iri_mapping_to_replace_ids(parsed_resources, Path(id2iri_file))
42
42
  return parsed_resources, shortcode, authorship_lookup, permission_ids
43
43
 
44
44
 
@@ -9,6 +9,7 @@ from rdflib import Graph
9
9
 
10
10
  from dsp_tools.commands.validate_data.models.api_responses import SHACLValidationReport
11
11
  from dsp_tools.commands.validate_data.models.validation import ValidationFilePaths
12
+ from dsp_tools.config.logger_config import LOGGER_SAVEPATH
12
13
  from dsp_tools.error.exceptions import InternalError
13
14
  from dsp_tools.error.exceptions import ShaclValidationCliError
14
15
 
@@ -21,7 +22,8 @@ class ShaclCliValidator:
21
22
  logger.error(e)
22
23
  msg = (
23
24
  "Data validation requires Docker. Is your Docker Desktop Application open? "
24
- "If it is, please contact the DSP-TOOLS development team with your log file."
25
+ "If it is, please contact the DSP-TOOLS development team (at info@dasch.swiss) "
26
+ f"with the log file at {LOGGER_SAVEPATH}."
25
27
  )
26
28
  logger.error(msg)
27
29
  raise ShaclValidationCliError(msg) from None
@@ -51,7 +51,7 @@ def validate_data(
51
51
  ignore_duplicate_files_warning: bool,
52
52
  save_graphs: bool,
53
53
  skip_ontology_validation: bool,
54
- id2iri_replacement_file: str | None,
54
+ id2iri_file: str | None,
55
55
  do_not_request_resource_metadata_from_db: bool,
56
56
  ) -> bool:
57
57
  """
@@ -63,7 +63,7 @@ def validate_data(
63
63
  ignore_duplicate_files_warning: ignore the shape that checks for duplicate files
64
64
  save_graphs: if this flag is set, all the graphs will be saved in a folder
65
65
  skip_ontology_validation: skip the ontology validation
66
- id2iri_replacement_file: to replace internal IDs of an XML file by IRIs provided in this mapping file
66
+ id2iri_file: to replace internal IDs of an XML file by IRIs provided in this mapping file
67
67
  do_not_request_resource_metadata_from_db: true if no metadata for existing resources should be requested
68
68
 
69
69
  Returns:
@@ -88,7 +88,7 @@ def validate_data(
88
88
  parsed_resources, shortcode, authorship_lookup, permission_ids = get_info_and_parsed_resources_from_file(
89
89
  file=filepath,
90
90
  api_url=auth.server,
91
- id2iri_replacement_file=id2iri_replacement_file,
91
+ id2iri_file=id2iri_file,
92
92
  )
93
93
  return validate_parsed_resources(
94
94
  parsed_resources=parsed_resources,
@@ -32,7 +32,7 @@ def get_validation_report(
32
32
  dir_to_save_graphs = tmp_path.parent / "validation-graphs"
33
33
  msg = (
34
34
  f"An error occurred during the data validation. "
35
- f"Please contact the dsp-tools development team "
35
+ f"Please contact the dsp-tools development team (at info@dasch.swiss) "
36
36
  f"with your log files and the files in the directory: {dir_to_save_graphs}"
37
37
  )
38
38
  raise ShaclValidationError(msg) from None
@@ -52,7 +52,7 @@ def validate_ontology(
52
52
  save_graph_dir = tmp_path.parent / "validation-graphs"
53
53
  msg = (
54
54
  f"An error occurred during the ontology validation. "
55
- f"Please contact the dsp-tools development team "
55
+ f"Please contact the dsp-tools development team (at info@dasch.swiss) "
56
56
  f"with your log files and the files in the directory: {save_graph_dir}"
57
57
  )
58
58
  raise ShaclValidationError(msg) from None
@@ -54,5 +54,5 @@ class IIIFUriProblem:
54
54
  def _good_status_code_bad_regex_msg(self) -> list[str]:
55
55
  return [
56
56
  "Although the IIIF-server responded as expected, this URI did not pass validation.",
57
- "Please contact the dsp-tools development team with this information.",
57
+ "Please contact the dsp-tools development team (at info@dasch.swiss) with this information.",
58
58
  ]
@@ -55,7 +55,7 @@ class UploadConfig:
55
55
  skip_ontology_validation: bool = False
56
56
  ignore_duplicate_files_warning: bool = False
57
57
  validation_severity: ValidationSeverity = field(default_factory=lambda: ValidationSeverity.INFO)
58
- id2iri_replacement_file: str | None = None
58
+ id2iri_file: str | None = None
59
59
  do_not_request_resource_metadata_from_db: bool = False
60
60
 
61
61
  def with_server_info(
@@ -94,8 +94,8 @@ def xmlupload(
94
94
  clients = _get_live_clients(con, auth, creds, shortcode, imgdir)
95
95
 
96
96
  parsed_resources, lookups = get_parsed_resources_and_mappers(root, clients)
97
- if config.id2iri_replacement_file:
98
- parsed_resources = use_id2iri_mapping_to_replace_ids(parsed_resources, Path(config.id2iri_replacement_file))
97
+ if config.id2iri_file:
98
+ parsed_resources = use_id2iri_mapping_to_replace_ids(parsed_resources, Path(config.id2iri_file))
99
99
 
100
100
  is_on_prod_like_server = is_prod_like_server(creds.server)
101
101
 
@@ -30,3 +30,10 @@ class DspToolsFutureWarning(DspToolsWarning, FutureWarning):
30
30
  def showwarning(cls, message: str) -> None:
31
31
  """Print the warning, without context"""
32
32
  print(BOLD_RED + f"DEPRECATION WARNING: {message}" + RESET_TO_DEFAULT)
33
+
34
+
35
+ class DspToolsUnexpectedStatusCodeWarning(DspToolsWarning):
36
+ @classmethod
37
+ def showwarning(cls, message: str) -> None:
38
+ """Print the warning, without context"""
39
+ print(BOLD_RED + f"ERROR: {message}" + RESET_TO_DEFAULT)