oarepo-runtime 1.8.0__tar.gz → 1.9.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. {oarepo_runtime-1.8.0/oarepo_runtime.egg-info → oarepo_runtime-1.9.1}/PKG-INFO +1 -1
  2. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/datastreams/types.py +11 -7
  3. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/records/systemfields/__init__.py +2 -0
  4. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/records/systemfields/icu.py +114 -33
  5. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/records/systemfields/mapping.py +2 -4
  6. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1/oarepo_runtime.egg-info}/PKG-INFO +1 -1
  7. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/setup.cfg +1 -1
  8. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/LICENSE +0 -0
  9. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/MANIFEST.in +0 -0
  10. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/README.md +0 -0
  11. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/__init__.py +0 -0
  12. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/cli/__init__.py +0 -0
  13. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/cli/assets.py +0 -0
  14. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/cli/base.py +0 -0
  15. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/cli/cf.py +0 -0
  16. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/cli/check.py +0 -0
  17. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/cli/configuration.py +0 -0
  18. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/cli/fixtures.py +0 -0
  19. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/cli/index.py +0 -0
  20. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/cli/permissions/__init__.py +0 -0
  21. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/cli/permissions/base.py +0 -0
  22. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/cli/permissions/evaluate.py +0 -0
  23. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/cli/permissions/list.py +0 -0
  24. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/cli/permissions/search.py +0 -0
  25. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/cli/validate.py +0 -0
  26. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/config.py +0 -0
  27. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/datastreams/__init__.py +0 -0
  28. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/datastreams/asynchronous.py +0 -0
  29. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/datastreams/catalogue.py +0 -0
  30. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/datastreams/datastreams.py +0 -0
  31. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/datastreams/errors.py +0 -0
  32. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/datastreams/ext.py +0 -0
  33. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/datastreams/fixtures.py +0 -0
  34. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/datastreams/json.py +0 -0
  35. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/datastreams/readers/__init__.py +0 -0
  36. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/datastreams/readers/attachments.py +0 -0
  37. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/datastreams/readers/excel.py +0 -0
  38. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/datastreams/readers/json.py +0 -0
  39. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/datastreams/readers/service.py +0 -0
  40. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/datastreams/readers/yaml.py +0 -0
  41. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/datastreams/semi_asynchronous.py +0 -0
  42. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/datastreams/synchronous.py +0 -0
  43. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/datastreams/transformers.py +0 -0
  44. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/datastreams/utils.py +0 -0
  45. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/datastreams/writers/__init__.py +0 -0
  46. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/datastreams/writers/attachments_file.py +0 -0
  47. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/datastreams/writers/attachments_service.py +0 -0
  48. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/datastreams/writers/publish.py +0 -0
  49. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/datastreams/writers/service.py +0 -0
  50. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/datastreams/writers/utils.py +0 -0
  51. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/datastreams/writers/validation_errors.py +0 -0
  52. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/datastreams/writers/yaml.py +0 -0
  53. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/ext.py +0 -0
  54. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/ext_config.py +0 -0
  55. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/i18n/__init__.py +0 -0
  56. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/info/__init__.py +0 -0
  57. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/info/check.py +0 -0
  58. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/info/permissions/__init__.py +0 -0
  59. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/info/permissions/debug.py +0 -0
  60. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/info/views.py +0 -0
  61. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/profile.py +0 -0
  62. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/proxies.py +0 -0
  63. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/records/__init__.py +0 -0
  64. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/records/drafts.py +0 -0
  65. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/records/dumpers/__init__.py +0 -0
  66. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/records/dumpers/edtf_interval.py +0 -0
  67. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/records/dumpers/multilingual_dumper.py +0 -0
  68. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/records/entity_resolvers/__init__.py +0 -0
  69. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/records/entity_resolvers/proxies.py +0 -0
  70. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/records/mappings/__init__.py +0 -0
  71. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/records/mappings/rdm_parent_mapping.json +0 -0
  72. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/records/owners/__init__.py +0 -0
  73. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/records/owners/registry.py +0 -0
  74. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/records/pid_providers.py +0 -0
  75. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/records/relations/__init__.py +0 -0
  76. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/records/relations/base.py +0 -0
  77. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/records/relations/internal.py +0 -0
  78. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/records/relations/lookup.py +0 -0
  79. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/records/relations/pid_relation.py +0 -0
  80. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/records/systemfields/featured_file.py +0 -0
  81. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/records/systemfields/has_draftcheck.py +0 -0
  82. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/records/systemfields/owner.py +0 -0
  83. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/records/systemfields/record_status.py +0 -0
  84. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/records/systemfields/selectors.py +0 -0
  85. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/records/systemfields/synthetic.py +0 -0
  86. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/resources/__init__.py +0 -0
  87. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/resources/config.py +0 -0
  88. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/resources/file_resource.py +0 -0
  89. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/resources/json_serializer.py +0 -0
  90. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/resources/localized_ui_json_serializer.py +0 -0
  91. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/resources/resource.py +0 -0
  92. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/resources/responses.py +0 -0
  93. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/__init__.py +0 -0
  94. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/components.py +0 -0
  95. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/config/__init__.py +0 -0
  96. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/config/draft_link.py +0 -0
  97. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/config/link_conditions.py +0 -0
  98. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/config/permissions_presets.py +0 -0
  99. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/config/service.py +0 -0
  100. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/custom_fields/__init__.py +0 -0
  101. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/custom_fields/mappings.py +0 -0
  102. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/entity/__init__.py +0 -0
  103. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/entity/config.py +0 -0
  104. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/entity/schema.py +0 -0
  105. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/entity/service.py +0 -0
  106. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/expansions/__init__.py +0 -0
  107. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/expansions/expandable_fields.py +0 -0
  108. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/expansions/service.py +0 -0
  109. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/facets/__init__.py +0 -0
  110. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/facets/base.py +0 -0
  111. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/facets/date.py +0 -0
  112. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/facets/enum.py +0 -0
  113. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/facets/facet_groups_names.py +0 -0
  114. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/facets/max_facet.py +0 -0
  115. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/facets/multilingual_facet.py +0 -0
  116. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/facets/nested_facet.py +0 -0
  117. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/facets/params.py +0 -0
  118. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/facets/year_histogram.py +0 -0
  119. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/files/__init__.py +0 -0
  120. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/files/components.py +0 -0
  121. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/files/service.py +0 -0
  122. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/generators.py +0 -0
  123. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/permissions/__init__.py +0 -0
  124. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/permissions/generators.py +0 -0
  125. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/records/__init__.py +0 -0
  126. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/records/links.py +0 -0
  127. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/relations/__init__.py +0 -0
  128. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/relations/components.py +0 -0
  129. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/relations/errors.py +0 -0
  130. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/relations/mapping.py +0 -0
  131. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/results.py +0 -0
  132. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/schema/__init__.py +0 -0
  133. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/schema/cf.py +0 -0
  134. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/schema/i18n.py +0 -0
  135. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/schema/i18n_ui.py +0 -0
  136. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/schema/i18n_validation.py +0 -0
  137. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/schema/marshmallow.py +0 -0
  138. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/schema/marshmallow_to_json_schema.py +0 -0
  139. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/schema/oneofschema.py +0 -0
  140. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/schema/polymorphic.py +0 -0
  141. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/schema/rdm.py +0 -0
  142. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/schema/rdm_ui.py +0 -0
  143. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/schema/ui.py +0 -0
  144. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/schema/validation.py +0 -0
  145. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/search.py +0 -0
  146. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/services/service.py +0 -0
  147. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/tasks.py +0 -0
  148. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/translations/cs/LC_MESSAGES/messages.mo +0 -0
  149. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/translations/cs/LC_MESSAGES/messages.po +0 -0
  150. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/translations/default_translations.py +0 -0
  151. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/translations/en/LC_MESSAGES/messages.mo +0 -0
  152. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/translations/en/LC_MESSAGES/messages.po +0 -0
  153. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/translations/messages.pot +0 -0
  154. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/uow.py +0 -0
  155. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/utils/__init__.py +0 -0
  156. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/utils/functools.py +0 -0
  157. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/utils/index.py +0 -0
  158. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime/utils/path.py +0 -0
  159. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime.egg-info/SOURCES.txt +0 -0
  160. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime.egg-info/dependency_links.txt +0 -0
  161. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime.egg-info/entry_points.txt +0 -0
  162. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime.egg-info/requires.txt +0 -0
  163. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/oarepo_runtime.egg-info/top_level.txt +0 -0
  164. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/pyproject.toml +0 -0
  165. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/setup.py +0 -0
  166. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/tests/marshmallow_to_json/__init__.py +0 -0
  167. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/tests/marshmallow_to_json/test_datacite_ui_schema.py +0 -0
  168. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/tests/marshmallow_to_json/test_simple_schema.py +0 -0
  169. {oarepo_runtime-1.8.0 → oarepo_runtime-1.9.1}/tests/pkg_data/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: oarepo-runtime
3
- Version: 1.8.0
3
+ Version: 1.9.1
4
4
  Summary: A set of runtime extensions of Invenio repository
5
5
  Description-Content-Type: text/markdown
6
6
  License-File: LICENSE
@@ -155,11 +155,11 @@ class StreamEntry:
155
155
  def __str__(self):
156
156
  ret = [
157
157
  f"Entry #{self.seq}: id {self.id or 'not yet set'}, filtered: {self.filtered}, deleted: {self.deleted}",
158
- f"Content:",
158
+ "Content:",
159
159
  textwrap.indent(
160
160
  json.dumps(self.entry, ensure_ascii=False, indent=4), " "
161
161
  ),
162
- f"Context:",
162
+ "Context:",
163
163
  textwrap.indent(
164
164
  json.dumps(self.context, ensure_ascii=False, indent=4), " "
165
165
  ),
@@ -236,16 +236,20 @@ class DataStreamCallback:
236
236
  self.log_error_entry = log_error_entry
237
237
 
238
238
  def batch_started(self, batch):
239
- log.info("Batch started: %s", batch)
239
+ log.info("Batch started: %s", batch.seq)
240
+ if log.isEnabledFor(logging.DEBUG):
241
+ log.debug("Content: %s", batch)
240
242
 
241
- def batch_finished(self, batch):
242
- log.info("Batch finished: %s", batch)
243
+ def batch_finished(self, batch: StreamBatch):
244
+ log.info("Batch finished: %s", batch.seq)
245
+ if log.isEnabledFor(logging.DEBUG):
246
+ log.debug("Content: %s", batch)
243
247
  for err in batch.errors:
244
- log.error("Failed batch: %s: %s", err, batch)
248
+ log.error("Failed batch: %s: %s", err, batch.seq)
245
249
  if self.log_error_entry:
246
250
  for entry in batch.entries:
247
251
  if entry.errors:
248
- log.error("Failed entry: %s", entry)
252
+ log.error("Failed entry: %s in batch %s", entry, batch.seq)
249
253
 
250
254
  def reader_error(self, reader, exception):
251
255
  log.error("Reader error: %s: %s", reader, exception)
@@ -4,6 +4,7 @@ from .icu import (
4
4
  ICUSearchField,
5
5
  ICUSortField,
6
6
  ICUSuggestField,
7
+ TermIndexField,
7
8
  )
8
9
  from .mapping import MappingSystemFieldMixin, SystemFieldDumperExt
9
10
  from .selectors import (
@@ -29,4 +30,5 @@ __all__ = (
29
30
  "FirstItemSelector",
30
31
  "FilteredSelector",
31
32
  "MultiSelector",
33
+ "TermIndexField",
32
34
  )
@@ -1,3 +1,4 @@
1
+ from abc import abstractmethod, abstractproperty
1
2
  from functools import cached_property
2
3
  from typing import Dict
3
4
 
@@ -8,17 +9,16 @@ from oarepo_runtime.records.relations.lookup import lookup_key
8
9
  from oarepo_runtime.records.systemfields.mapping import MappingSystemFieldMixin
9
10
 
10
11
 
11
- class ICUField(MappingSystemFieldMixin, SystemField):
12
+ class ICUBase(MappingSystemFieldMixin, SystemField):
12
13
  """
13
- A system field that acts as an opensearch "proxy" to another field.
14
- It creates a top-level mapping field with the same name and copies
15
- content of {another field}.language into {mapping field}.language.
16
-
17
- The language accessor can be modified by overriding get_values method.
14
+ Base class for ICU system fields.
15
+ It provides the basic functionality for ICU fields, such as
16
+ getting the attribute name and handling the key.
18
17
  """
19
18
 
20
- def __init__(self, *, source_field, key=None):
21
- super().__init__(key)
19
+ def __init__(self, source_field=None, key=None):
20
+ super().__init__(key=key)
21
+ self._attr_name = key or self.__class__.__name__.lower()
22
22
  self.source_field = source_field
23
23
 
24
24
  @cached_property
@@ -51,19 +51,57 @@ class ICUField(MappingSystemFieldMixin, SystemField):
51
51
  ret.append(l.value["value"])
52
52
  return ret
53
53
 
54
+ @abstractproperty
55
+ def mapping(self):
56
+ """
57
+ The mapping for the field. It should return a dictionary with the
58
+ mapping for the field, based on the current configuration of the application.
59
+ """
60
+ raise NotImplementedError("Subclasses must implement the mapping property.")
61
+
62
+ @abstractmethod
54
63
  def search_dump(self, data, record):
55
- ret = {}
56
- for lang in self.languages:
57
- ret[lang] = self.get_values(data, lang)
58
- data[self.attr_name] = ret
64
+ """
65
+ Dump custom field. This method should be implemented by subclasses
66
+ to provide the functionality for dumping the field data into the
67
+ OpenSearch data structure.
68
+ """
69
+ raise NotImplementedError("Subclasses must implement the search_dump method.")
59
70
 
60
71
  def search_load(self, data, record_cls):
72
+ """
73
+ Just remove the field from the data on load.
74
+ """
61
75
  data.pop(self.attr_name, None)
62
76
 
63
77
  def __get__(self, instance, owner):
64
78
  return self
65
79
 
66
80
 
81
+ class ICUField(ICUBase):
82
+ """
83
+ A system field that acts as an opensearch "proxy" to another field.
84
+ It creates a top-level mapping field with the same name and copies
85
+ content of {another field}.language into {mapping field}.language.
86
+
87
+ The language accessor can be modified by overriding get_values method.
88
+ """
89
+
90
+ def __init__(self, *, source_field, key=None):
91
+ super().__init__(source_field=source_field, key=key)
92
+
93
+ def search_dump(self, data, record):
94
+ ret = {}
95
+ for lang in self.languages:
96
+ r = self.get_values(data, lang)
97
+ if r:
98
+ # if the language is not empty, add it to the result
99
+ # otherwise do not add it at all to safe transport
100
+ ret[lang] = r
101
+ if ret:
102
+ data[self.attr_name] = ret
103
+
104
+
67
105
  class ICUSortField(ICUField):
68
106
  """
69
107
  A field that adds icu sorting field
@@ -190,11 +228,15 @@ class ICUSearchAnalyzerMixin:
190
228
 
191
229
  class ICUSearchField(ICUSearchAnalyzerMixin, ICUField):
192
230
  """
193
- A field that adds stemming-aware search field
231
+ A field that adds stemming-aware search field for multilingual data (
232
+ e.g. data that contains {"cs": "...", "en": "..."}
233
+ or [{"lang": "cs", "value": "..."}, ...]
234
+ )
194
235
  """
195
236
 
196
- def __init__(self, source_field, key=None):
237
+ def __init__(self, source_field, key=None, boost=1):
197
238
  super().__init__(source_field=source_field, key=key)
239
+ self.boost = boost
198
240
 
199
241
  @property
200
242
  def mapping(self):
@@ -207,22 +249,22 @@ class ICUSearchField(ICUSearchAnalyzerMixin, ICUField):
207
249
  "search",
208
250
  {
209
251
  "type": "text",
210
- "boost": 1,
252
+ "boost": 1 * self.boost,
211
253
  "fields": {
212
254
  "stemmed": {
213
255
  "type": "text",
214
256
  "analyzer": f"stemming_analyzer_{lang}",
215
- "boost": 0.5,
257
+ "boost": 0.5 * self.boost,
216
258
  },
217
259
  "lowercase": {
218
260
  "type": "text",
219
- "boost": 0.8,
261
+ "boost": 0.8 * self.boost,
220
262
  "analyzer": "lowercase_analyzer",
221
263
  },
222
264
  "ascii_folded": {
223
265
  "type": "text",
224
266
  "analyzer": "ascii_folding_analyzer",
225
- "boost": 0.3,
267
+ "boost": 0.3 * self.boost,
226
268
  },
227
269
  },
228
270
  },
@@ -236,7 +278,25 @@ class ICUSearchField(ICUSearchAnalyzerMixin, ICUField):
236
278
  return super().get_values(data, language=language)
237
279
 
238
280
 
239
- class FulltextIndexField(ICUSearchAnalyzerMixin, ICUField):
281
+ class SingleLanguageSearchField(ICUSearchAnalyzerMixin, ICUBase):
282
+ """
283
+ A base class for single-language search fields - that is, data contain a text
284
+ value in a pre-defined, single language.
285
+ """
286
+
287
+ def __init__(self, *, source_field, key=None, language=None, boost=1):
288
+ super().__init__(source_field=source_field, key=key)
289
+ self.language = language
290
+ self.boost = boost
291
+
292
+ def search_dump(self, data, record):
293
+ """Dump custom field."""
294
+ ret = self.get_values(data, language=self.language)
295
+ if ret:
296
+ data[self.attr_name] = ret
297
+
298
+
299
+ class FulltextIndexField(SingleLanguageSearchField):
240
300
  """
241
301
  A system field that makes the field searchable in OpenSearch,
242
302
  regardless if it is indexed/analyzed, embedded in Nested or not.
@@ -250,10 +310,6 @@ class FulltextIndexField(ICUSearchAnalyzerMixin, ICUField):
250
310
  It defaults to the BABEL_DEFAULT_LOCALE if not provided.
251
311
  """
252
312
 
253
- def __init__(self, *, source_field, key=None, language=None):
254
- super().__init__(source_field=source_field, key=key)
255
- self.language = language
256
-
257
313
  @property
258
314
  def mapping(self):
259
315
  language = self.language or current_app.config.get("BABEL_DEFAULT_LOCALE", "en")
@@ -263,28 +319,53 @@ class FulltextIndexField(ICUSearchAnalyzerMixin, ICUField):
263
319
  if not mapping_settings:
264
320
  mapping_settings = {
265
321
  "type": "text",
266
- "boost": 1,
322
+ "boost": 1 * self.boost,
267
323
  "fields": {
268
324
  "stemmed": {
269
325
  "type": "text",
270
326
  "analyzer": f"stemming_analyzer_{language}",
271
- "boost": 0.5,
327
+ "boost": 0.5 * self.boost,
328
+ },
329
+ "lowercase": {
330
+ "type": "text",
331
+ "boost": 0.8 * self.boost,
332
+ "analyzer": "lowercase_analyzer",
272
333
  },
273
334
  "ascii_folded": {
274
335
  "type": "text",
275
336
  "analyzer": "ascii_folding_analyzer",
276
- "boost": 0.3,
337
+ "boost": 0.3 * self.boost,
277
338
  },
278
339
  },
279
340
  }
280
341
 
281
342
  return {self.attr_name: mapping_settings}
282
343
 
283
- def search_dump(self, data, record):
284
- """Dump custom field."""
285
- data[self.attr_name] = self.get_values(data, language=self.language)
286
-
287
- @classmethod
288
- def search_load(cls, data, record_cls):
344
+ def search_load(self, data, record_cls):
289
345
  """Load custom field."""
290
- data.pop(cls.attr_name, None)
346
+ data.pop(self.attr_name, None)
347
+
348
+
349
+ class TermIndexField(SingleLanguageSearchField):
350
+ """
351
+ A system field that makes the field searchable in OpenSearch,
352
+ regardless if it is indexed/analyzed, embedded in Nested or not.
353
+
354
+ It creates a top-level mapping field and copies
355
+ content of {source_field} into it. It also provides the correct mapping
356
+ for the field based on the current configuration of the application.
357
+
358
+ Unlike the ICU, this field is a single-language and the language should
359
+ be provided when initializing the field.
360
+ It defaults to the BABEL_DEFAULT_LOCALE if not provided.
361
+ """
362
+
363
+ @property
364
+ def mapping(self):
365
+ mapping_settings = {
366
+ "type": "keyword",
367
+ "boost": 1 * self.boost,
368
+ "ignore_above": 256,
369
+ }
370
+
371
+ return {self.attr_name: mapping_settings}
@@ -16,12 +16,10 @@ class MappingSystemFieldMixin:
16
16
  def dynamic_templates(self):
17
17
  return []
18
18
 
19
- @classmethod
20
- def search_dump(cls, data, record):
19
+ def search_dump(self, data, record):
21
20
  """Dump custom field."""
22
21
 
23
- @classmethod
24
- def search_load(cls, data, record_cls):
22
+ def search_load(self, data, record_cls):
25
23
  """Load custom field."""
26
24
 
27
25
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: oarepo-runtime
3
- Version: 1.8.0
3
+ Version: 1.9.1
4
4
  Summary: A set of runtime extensions of Invenio repository
5
5
  Description-Content-Type: text/markdown
6
6
  License-File: LICENSE
@@ -1,6 +1,6 @@
1
1
  [metadata]
2
2
  name = oarepo-runtime
3
- version = 1.8.0
3
+ version = 1.9.1
4
4
  description = A set of runtime extensions of Invenio repository
5
5
  authors = Alzbeta Pokorna
6
6
  readme = README.md
File without changes
File without changes
File without changes