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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. {oarepo_runtime-1.7.1/oarepo_runtime.egg-info → oarepo_runtime-1.8.0}/PKG-INFO +1 -1
  2. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/records/systemfields/__init__.py +16 -2
  3. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/records/systemfields/icu.py +93 -17
  4. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/custom_fields/mappings.py +9 -30
  5. oarepo_runtime-1.8.0/oarepo_runtime/utils/index.py +11 -0
  6. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0/oarepo_runtime.egg-info}/PKG-INFO +1 -1
  7. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime.egg-info/SOURCES.txt +1 -0
  8. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/setup.cfg +1 -1
  9. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/LICENSE +0 -0
  10. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/MANIFEST.in +0 -0
  11. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/README.md +0 -0
  12. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/__init__.py +0 -0
  13. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/cli/__init__.py +0 -0
  14. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/cli/assets.py +0 -0
  15. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/cli/base.py +0 -0
  16. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/cli/cf.py +0 -0
  17. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/cli/check.py +0 -0
  18. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/cli/configuration.py +0 -0
  19. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/cli/fixtures.py +0 -0
  20. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/cli/index.py +0 -0
  21. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/cli/permissions/__init__.py +0 -0
  22. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/cli/permissions/base.py +0 -0
  23. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/cli/permissions/evaluate.py +0 -0
  24. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/cli/permissions/list.py +0 -0
  25. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/cli/permissions/search.py +0 -0
  26. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/cli/validate.py +0 -0
  27. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/config.py +0 -0
  28. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/datastreams/__init__.py +0 -0
  29. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/datastreams/asynchronous.py +0 -0
  30. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/datastreams/catalogue.py +0 -0
  31. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/datastreams/datastreams.py +0 -0
  32. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/datastreams/errors.py +0 -0
  33. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/datastreams/ext.py +0 -0
  34. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/datastreams/fixtures.py +0 -0
  35. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/datastreams/json.py +0 -0
  36. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/datastreams/readers/__init__.py +0 -0
  37. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/datastreams/readers/attachments.py +0 -0
  38. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/datastreams/readers/excel.py +0 -0
  39. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/datastreams/readers/json.py +0 -0
  40. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/datastreams/readers/service.py +0 -0
  41. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/datastreams/readers/yaml.py +0 -0
  42. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/datastreams/semi_asynchronous.py +0 -0
  43. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/datastreams/synchronous.py +0 -0
  44. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/datastreams/transformers.py +0 -0
  45. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/datastreams/types.py +0 -0
  46. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/datastreams/utils.py +0 -0
  47. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/datastreams/writers/__init__.py +0 -0
  48. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/datastreams/writers/attachments_file.py +0 -0
  49. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/datastreams/writers/attachments_service.py +0 -0
  50. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/datastreams/writers/publish.py +0 -0
  51. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/datastreams/writers/service.py +0 -0
  52. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/datastreams/writers/utils.py +0 -0
  53. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/datastreams/writers/validation_errors.py +0 -0
  54. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/datastreams/writers/yaml.py +0 -0
  55. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/ext.py +0 -0
  56. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/ext_config.py +0 -0
  57. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/i18n/__init__.py +0 -0
  58. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/info/__init__.py +0 -0
  59. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/info/check.py +0 -0
  60. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/info/permissions/__init__.py +0 -0
  61. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/info/permissions/debug.py +0 -0
  62. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/info/views.py +0 -0
  63. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/profile.py +0 -0
  64. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/proxies.py +0 -0
  65. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/records/__init__.py +0 -0
  66. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/records/drafts.py +0 -0
  67. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/records/dumpers/__init__.py +0 -0
  68. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/records/dumpers/edtf_interval.py +0 -0
  69. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/records/dumpers/multilingual_dumper.py +0 -0
  70. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/records/entity_resolvers/__init__.py +0 -0
  71. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/records/entity_resolvers/proxies.py +0 -0
  72. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/records/mappings/__init__.py +0 -0
  73. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/records/mappings/rdm_parent_mapping.json +0 -0
  74. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/records/owners/__init__.py +0 -0
  75. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/records/owners/registry.py +0 -0
  76. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/records/pid_providers.py +0 -0
  77. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/records/relations/__init__.py +0 -0
  78. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/records/relations/base.py +0 -0
  79. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/records/relations/internal.py +0 -0
  80. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/records/relations/lookup.py +0 -0
  81. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/records/relations/pid_relation.py +0 -0
  82. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/records/systemfields/featured_file.py +0 -0
  83. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/records/systemfields/has_draftcheck.py +0 -0
  84. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/records/systemfields/mapping.py +0 -0
  85. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/records/systemfields/owner.py +0 -0
  86. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/records/systemfields/record_status.py +0 -0
  87. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/records/systemfields/selectors.py +0 -0
  88. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/records/systemfields/synthetic.py +0 -0
  89. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/resources/__init__.py +0 -0
  90. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/resources/config.py +0 -0
  91. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/resources/file_resource.py +0 -0
  92. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/resources/json_serializer.py +0 -0
  93. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/resources/localized_ui_json_serializer.py +0 -0
  94. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/resources/resource.py +0 -0
  95. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/resources/responses.py +0 -0
  96. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/__init__.py +0 -0
  97. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/components.py +0 -0
  98. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/config/__init__.py +0 -0
  99. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/config/draft_link.py +0 -0
  100. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/config/link_conditions.py +0 -0
  101. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/config/permissions_presets.py +0 -0
  102. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/config/service.py +0 -0
  103. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/custom_fields/__init__.py +0 -0
  104. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/entity/__init__.py +0 -0
  105. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/entity/config.py +0 -0
  106. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/entity/schema.py +0 -0
  107. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/entity/service.py +0 -0
  108. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/expansions/__init__.py +0 -0
  109. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/expansions/expandable_fields.py +0 -0
  110. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/expansions/service.py +0 -0
  111. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/facets/__init__.py +0 -0
  112. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/facets/base.py +0 -0
  113. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/facets/date.py +0 -0
  114. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/facets/enum.py +0 -0
  115. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/facets/facet_groups_names.py +0 -0
  116. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/facets/max_facet.py +0 -0
  117. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/facets/multilingual_facet.py +0 -0
  118. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/facets/nested_facet.py +0 -0
  119. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/facets/params.py +0 -0
  120. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/facets/year_histogram.py +0 -0
  121. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/files/__init__.py +0 -0
  122. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/files/components.py +0 -0
  123. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/files/service.py +0 -0
  124. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/generators.py +0 -0
  125. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/permissions/__init__.py +0 -0
  126. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/permissions/generators.py +0 -0
  127. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/records/__init__.py +0 -0
  128. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/records/links.py +0 -0
  129. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/relations/__init__.py +0 -0
  130. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/relations/components.py +0 -0
  131. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/relations/errors.py +0 -0
  132. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/relations/mapping.py +0 -0
  133. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/results.py +0 -0
  134. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/schema/__init__.py +0 -0
  135. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/schema/cf.py +0 -0
  136. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/schema/i18n.py +0 -0
  137. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/schema/i18n_ui.py +0 -0
  138. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/schema/i18n_validation.py +0 -0
  139. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/schema/marshmallow.py +0 -0
  140. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/schema/marshmallow_to_json_schema.py +0 -0
  141. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/schema/oneofschema.py +0 -0
  142. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/schema/polymorphic.py +0 -0
  143. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/schema/rdm.py +0 -0
  144. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/schema/rdm_ui.py +0 -0
  145. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/schema/ui.py +0 -0
  146. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/schema/validation.py +0 -0
  147. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/search.py +0 -0
  148. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/services/service.py +0 -0
  149. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/tasks.py +0 -0
  150. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/translations/cs/LC_MESSAGES/messages.mo +0 -0
  151. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/translations/cs/LC_MESSAGES/messages.po +0 -0
  152. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/translations/default_translations.py +0 -0
  153. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/translations/en/LC_MESSAGES/messages.mo +0 -0
  154. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/translations/en/LC_MESSAGES/messages.po +0 -0
  155. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/translations/messages.pot +0 -0
  156. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/uow.py +0 -0
  157. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/utils/__init__.py +0 -0
  158. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/utils/functools.py +0 -0
  159. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime/utils/path.py +0 -0
  160. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime.egg-info/dependency_links.txt +0 -0
  161. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime.egg-info/entry_points.txt +0 -0
  162. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime.egg-info/requires.txt +0 -0
  163. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/oarepo_runtime.egg-info/top_level.txt +0 -0
  164. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/pyproject.toml +0 -0
  165. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/setup.py +0 -0
  166. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/tests/marshmallow_to_json/__init__.py +0 -0
  167. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/tests/marshmallow_to_json/test_datacite_ui_schema.py +0 -0
  168. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/tests/marshmallow_to_json/test_simple_schema.py +0 -0
  169. {oarepo_runtime-1.7.1 → oarepo_runtime-1.8.0}/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.7.1
3
+ Version: 1.8.0
4
4
  Summary: A set of runtime extensions of Invenio repository
5
5
  Description-Content-Type: text/markdown
6
6
  License-File: LICENSE
@@ -1,12 +1,26 @@
1
- from .icu import ICUField, ICUSortField, ICUSuggestField
1
+ from .icu import (
2
+ FulltextIndexField,
3
+ ICUField,
4
+ ICUSearchField,
5
+ ICUSortField,
6
+ ICUSuggestField,
7
+ )
2
8
  from .mapping import MappingSystemFieldMixin, SystemFieldDumperExt
3
- from .selectors import FirstItemSelector, PathSelector, Selector, FilteredSelector, MultiSelector
9
+ from .selectors import (
10
+ FilteredSelector,
11
+ FirstItemSelector,
12
+ MultiSelector,
13
+ PathSelector,
14
+ Selector,
15
+ )
4
16
  from .synthetic import SyntheticSystemField
5
17
 
6
18
  __all__ = (
7
19
  "ICUField",
8
20
  "ICUSuggestField",
9
21
  "ICUSortField",
22
+ "ICUSearchField",
23
+ "FulltextIndexField",
10
24
  "MappingSystemFieldMixin",
11
25
  "SystemFieldDumperExt",
12
26
  "SyntheticSystemField",
@@ -37,11 +37,18 @@ class ICUField(MappingSystemFieldMixin, SystemField):
37
37
  ret = []
38
38
  for l in lookup_key(data, f"{self.source_field}"):
39
39
  if isinstance(l.value, str):
40
+ # take single value as being always the the language provided
40
41
  ret.append(l.value)
41
42
  elif isinstance(l.value, dict):
43
+ # expected to be {"cs": "", "en": ""}
42
44
  val = l.value.get(language)
43
45
  if val:
44
46
  ret.append(val)
47
+ elif "lang" in l.value:
48
+ # for [{"lang": "", "value": ""}, ...] we get each item separately
49
+ # that's why we do not iterate over l.value
50
+ if l.value["lang"] == language:
51
+ ret.append(l.value["value"])
45
52
  return ret
46
53
 
47
54
  def search_dump(self, data, record):
@@ -132,23 +139,24 @@ class ICUSuggestField(ICUField):
132
139
  }
133
140
 
134
141
 
135
- class ICUSearchField(ICUField):
136
- """
137
- A field that adds stemming-aware search field
138
- """
142
+ class ICUSearchAnalyzerMixin:
139
143
 
140
144
  default_stemming_analyzers = {
141
145
  "stemming_analyzer_cs": {
142
146
  "tokenizer": "standard",
143
- "filter": ["stemming_filter_cs"],
147
+ "filter": ["stemming_filter_cs", "lowercase"],
144
148
  },
145
149
  "stemming_analyzer_en": {
146
150
  "tokenizer": "standard",
147
- "filter": ["stemming_filter_en"],
151
+ "filter": ["stemming_filter_en", "lowercase"],
148
152
  },
149
153
  "ascii_folding_analyzer": {
150
154
  "tokenizer": "standard",
151
- "filter": ["ascii_folding_filter"],
155
+ "filter": ["ascii_folding_filter", "lowercase"],
156
+ },
157
+ "lowercase_analyzer": {
158
+ "tokenizer": "standard",
159
+ "filter": ["lowercase"],
152
160
  },
153
161
  }
154
162
 
@@ -166,6 +174,25 @@ class ICUSearchField(ICUField):
166
174
  "ascii_folding_filter": {"type": "asciifolding", "preserve_original": True},
167
175
  }
168
176
 
177
+ @property
178
+ def mapping_settings(self):
179
+ return {
180
+ "analysis": {
181
+ "analyzer": current_app.config.get(
182
+ "OAREPO_ICU_SEARCH_ANALYZERS", self.default_stemming_analyzers
183
+ ),
184
+ "filter": current_app.config.get(
185
+ "OAREPO_ICU_SEARCH_FILTERS", self.default_stemming_filters
186
+ ),
187
+ }
188
+ }
189
+
190
+
191
+ class ICUSearchField(ICUSearchAnalyzerMixin, ICUField):
192
+ """
193
+ A field that adds stemming-aware search field
194
+ """
195
+
169
196
  def __init__(self, source_field, key=None):
170
197
  super().__init__(source_field=source_field, key=key)
171
198
 
@@ -187,6 +214,11 @@ class ICUSearchField(ICUField):
187
214
  "analyzer": f"stemming_analyzer_{lang}",
188
215
  "boost": 0.5,
189
216
  },
217
+ "lowercase": {
218
+ "type": "text",
219
+ "boost": 0.8,
220
+ "analyzer": "lowercase_analyzer",
221
+ },
190
222
  "ascii_folded": {
191
223
  "type": "text",
192
224
  "analyzer": "ascii_folding_analyzer",
@@ -200,15 +232,59 @@ class ICUSearchField(ICUField):
200
232
  },
201
233
  }
202
234
 
235
+ def get_values(self, data, language):
236
+ return super().get_values(data, language=language)
237
+
238
+
239
+ class FulltextIndexField(ICUSearchAnalyzerMixin, ICUField):
240
+ """
241
+ A system field that makes the field searchable in OpenSearch,
242
+ regardless if it is indexed/analyzed, embedded in Nested or not.
243
+
244
+ It creates a top-level mapping field and copies
245
+ content of {source_field} into it. It also provides the correct mapping
246
+ for the field based on the current configuration of the application.
247
+
248
+ Unlike the ICU, this field is a single-language and the language should
249
+ be provided when initializing the field.
250
+ It defaults to the BABEL_DEFAULT_LOCALE if not provided.
251
+ """
252
+
253
+ def __init__(self, *, source_field, key=None, language=None):
254
+ super().__init__(source_field=source_field, key=key)
255
+ self.language = language
256
+
203
257
  @property
204
- def mapping_settings(self):
205
- return {
206
- "analysis": {
207
- "analyzer": current_app.config.get(
208
- "OAREPO_ICU_SEARCH_ANALYZERS", self.default_stemming_analyzers
209
- ),
210
- "filter": current_app.config.get(
211
- "OAREPO_ICU_SEARCH_FILTERS", self.default_stemming_filters
212
- ),
258
+ def mapping(self):
259
+ language = self.language or current_app.config.get("BABEL_DEFAULT_LOCALE", "en")
260
+ mapping_settings = self.languages.get(language, None)
261
+ if mapping_settings:
262
+ mapping_settings = mapping_settings.get("search")
263
+ if not mapping_settings:
264
+ mapping_settings = {
265
+ "type": "text",
266
+ "boost": 1,
267
+ "fields": {
268
+ "stemmed": {
269
+ "type": "text",
270
+ "analyzer": f"stemming_analyzer_{language}",
271
+ "boost": 0.5,
272
+ },
273
+ "ascii_folded": {
274
+ "type": "text",
275
+ "analyzer": "ascii_folding_analyzer",
276
+ "boost": 0.3,
277
+ },
278
+ },
213
279
  }
214
- }
280
+
281
+ return {self.attr_name: mapping_settings}
282
+
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):
289
+ """Load custom field."""
290
+ data.pop(cls.attr_name, None)
@@ -9,17 +9,16 @@ from invenio_records_resources.services.custom_fields.mappings import (
9
9
  )
10
10
  from invenio_records_resources.services.records.config import RecordServiceConfig
11
11
  from invenio_records_resources.services.records.service import RecordService
12
- from invenio_search import current_search_client
13
- from invenio_search.engine import dsl, search
14
- from invenio_search.utils import build_alias_name
15
-
12
+ from invenio_search.engine import search
16
13
  from deepmerge import always_merger
17
14
  from oarepo_runtime.records.systemfields.mapping import MappingSystemFieldMixin
18
15
  import json
19
- import os
20
16
 
21
17
  from pathlib import Path
22
18
 
19
+ from oarepo_runtime.utils.index import prefixed_index
20
+
21
+
23
22
  class Mapping(InvenioMapping):
24
23
  @classmethod
25
24
  def properties_for_fields(
@@ -95,21 +94,11 @@ def prepare_cf_index(record_class, config, path=[]):
95
94
 
96
95
  # upload mapping
97
96
  try:
98
- record_index = dsl.Index(
99
- build_alias_name(
100
- config.record_cls.index._name,
101
- ),
102
- using=current_search_client,
103
- )
97
+ record_index = prefixed_index(config.record_cls.index)
104
98
  update_index(record_index, settings, mapping)
105
99
 
106
100
  if hasattr(config, "draft_cls"):
107
- draft_index = dsl.Index(
108
- build_alias_name(
109
- config.draft_cls.index._name,
110
- ),
111
- using=current_search_client,
112
- )
101
+ draft_index = prefixed_index(config.draft_cls.index)
113
102
  update_index(draft_index, settings, mapping, dynamic_templates)
114
103
 
115
104
  except search.RequestError as e:
@@ -166,22 +155,12 @@ def prepare_parent_mapping(parent_class, config):
166
155
  })
167
156
  # upload mapping
168
157
  try:
169
- record_index = dsl.Index(
170
- build_alias_name(
171
- config.record_cls.index._name,
172
- ),
173
- using=current_search_client,
174
- )
158
+ record_index = prefixed_index(config.record_cls.index)
175
159
  update_index(record_index, {}, parent_mapping_merged)
176
160
 
177
161
  if hasattr(config, "draft_cls"):
178
- draft_index = dsl.Index(
179
- build_alias_name(
180
- config.draft_cls.index._name,
181
- ),
182
- using=current_search_client,
183
- )
184
- update_index(record_index, {}, parent_mapping_merged)
162
+ draft_index = prefixed_index(config.draft_cls.index) # draft index isn't used; this was a bug a suppose
163
+ update_index(draft_index, {}, parent_mapping_merged)
185
164
 
186
165
  except search.RequestError as e:
187
166
  click.secho("An error occurred while creating parent mapping.", fg="red")
@@ -0,0 +1,11 @@
1
+ from invenio_search import current_search_client
2
+ from invenio_search.utils import build_alias_name
3
+ from invenio_search.engine import dsl
4
+
5
+ def prefixed_index(index):
6
+ return dsl.Index(
7
+ build_alias_name(
8
+ index._name,
9
+ ),
10
+ using = current_search_client
11
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: oarepo-runtime
3
- Version: 1.7.1
3
+ Version: 1.8.0
4
4
  Summary: A set of runtime extensions of Invenio repository
5
5
  Description-Content-Type: text/markdown
6
6
  License-File: LICENSE
@@ -160,6 +160,7 @@ oarepo_runtime/translations/en/LC_MESSAGES/messages.mo
160
160
  oarepo_runtime/translations/en/LC_MESSAGES/messages.po
161
161
  oarepo_runtime/utils/__init__.py
162
162
  oarepo_runtime/utils/functools.py
163
+ oarepo_runtime/utils/index.py
163
164
  oarepo_runtime/utils/path.py
164
165
  tests/marshmallow_to_json/__init__.py
165
166
  tests/marshmallow_to_json/test_datacite_ui_schema.py
@@ -1,6 +1,6 @@
1
1
  [metadata]
2
2
  name = oarepo-runtime
3
- version = 1.7.1
3
+ version = 1.8.0
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