invenio-vocabularies 4.1.1__tar.gz → 4.2.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.

Potentially problematic release.


This version of invenio-vocabularies might be problematic. Click here for more details.

Files changed (403) hide show
  1. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/CHANGES.rst +8 -0
  2. {invenio-vocabularies-4.1.1/invenio_vocabularies.egg-info → invenio-vocabularies-4.2.0}/PKG-INFO +9 -1
  3. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/__init__.py +1 -1
  4. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/administration/views/vocabularies.py +1 -0
  5. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/cli.py +5 -3
  6. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/config.py +2 -1
  7. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/affiliations/api.py +1 -2
  8. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/affiliations/datastreams.py +33 -8
  9. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/affiliations/services.py +1 -2
  10. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/awards/awards.py +2 -1
  11. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/awards/datastreams.py +1 -0
  12. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/awards/services.py +1 -2
  13. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/common/ror/datastreams.py +39 -5
  14. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/funders/datastreams.py +38 -11
  15. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/funders/funders.py +2 -1
  16. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/datastreams/readers.py +32 -13
  17. invenio-vocabularies-4.2.0/invenio_vocabularies/datastreams/tasks.py +25 -0
  18. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/datastreams/writers.py +19 -0
  19. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/factories.py +1 -0
  20. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/records/models.py +2 -4
  21. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/records/pidprovider.py +1 -2
  22. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/resources/__init__.py +1 -0
  23. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/resources/schema.py +2 -1
  24. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/services/custom_fields/subject.py +2 -1
  25. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/services/custom_fields/vocabulary.py +1 -1
  26. invenio-vocabularies-4.2.0/invenio_vocabularies/services/tasks.py +28 -0
  27. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0/invenio_vocabularies.egg-info}/PKG-INFO +9 -1
  28. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies.egg-info/SOURCES.txt +2 -0
  29. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/contrib/common/ror/test_ror_datastreams.py +118 -3
  30. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/datastreams/conftest.py +12 -4
  31. invenio-vocabularies-4.2.0/tests/datastreams/test_datastreams_tasks.py +29 -0
  32. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/datastreams/test_readers.py +145 -1
  33. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/datastreams/test_writers.py +36 -2
  34. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/records/test_models.py +0 -1
  35. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/test_factory.py +4 -1
  36. invenio-vocabularies-4.1.1/invenio_vocabularies/services/tasks.py +0 -58
  37. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/.dockerignore +0 -0
  38. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/.editorconfig +0 -0
  39. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/.git-blame-ignore-revs +0 -0
  40. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/.github/workflows/i18n-pull.yml +0 -0
  41. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/.github/workflows/i18n-push.yml +0 -0
  42. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/.github/workflows/pypi-publish.yml +0 -0
  43. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/.github/workflows/tests.yml +0 -0
  44. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/.tx/config +0 -0
  45. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/AUTHORS.rst +0 -0
  46. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/CONTRIBUTING.rst +0 -0
  47. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/INSTALL.rst +0 -0
  48. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/LICENSE +0 -0
  49. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/MANIFEST.in +0 -0
  50. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/README.rst +0 -0
  51. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/babel.ini +0 -0
  52. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/docs/Makefile +0 -0
  53. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/docs/api.rst +0 -0
  54. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/docs/authors.rst +0 -0
  55. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/docs/changes.rst +0 -0
  56. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/docs/conf.py +0 -0
  57. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/docs/configuration.rst +0 -0
  58. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/docs/contributing.rst +0 -0
  59. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/docs/index.rst +0 -0
  60. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/docs/installation.rst +0 -0
  61. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/docs/license.rst +0 -0
  62. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/docs/make.bat +0 -0
  63. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/docs/requirements.txt +0 -0
  64. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/docs/usage.rst +0 -0
  65. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/gen-migration.sh +0 -0
  66. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/administration/__init__.py +0 -0
  67. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/administration/views/__init__.py +0 -0
  68. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/alembic/17c703ce1eb7_create_names_table.py +0 -0
  69. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/alembic/4a9a4fd235f8_create_vocabulary_schemes.py +0 -0
  70. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/alembic/4f365fced43f_create_vocabularies_tables.py +0 -0
  71. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/alembic/55a700f897b6_add_names_and_afiliations_pid_column.py +0 -0
  72. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/alembic/6312f33645c1_create_affiliations_table.py +0 -0
  73. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/alembic/676dd587542d_create_funders_vocabulary_table.py +0 -0
  74. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/alembic/8ff82dfb0be8_create_vocabularies_branch.py +0 -0
  75. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/alembic/__init__.py +0 -0
  76. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/alembic/e1146238edd3_create_awards_table.py +0 -0
  77. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/.eslintrc.yml +0 -0
  78. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/.prettierrc +0 -0
  79. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/index.js +0 -0
  80. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/package.json +0 -0
  81. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/contrib/forms/Funding/AwardResults.js +0 -0
  82. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/contrib/forms/Funding/CustomAwardForm.js +0 -0
  83. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/contrib/forms/Funding/FunderDropdown.js +0 -0
  84. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/contrib/forms/Funding/FundingField.js +0 -0
  85. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/contrib/forms/Funding/FundingField.test.js +0 -0
  86. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/contrib/forms/Funding/FundingFieldItem.js +0 -0
  87. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/contrib/forms/Funding/FundingModal.js +0 -0
  88. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/contrib/forms/Funding/NoAwardResults.js +0 -0
  89. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/contrib/forms/Funding/index.js +0 -0
  90. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/contrib/forms/index.js +0 -0
  91. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/contrib/index.js +0 -0
  92. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/index.js +0 -0
  93. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/i18next-scanner.config.js +0 -0
  94. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/i18next.js +0 -0
  95. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/index.js +0 -0
  96. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/package.json +0 -0
  97. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/scripts/compileCatalog.js +0 -0
  98. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/scripts/initCatalog.js +0 -0
  99. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/__init__.py +0 -0
  100. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/affiliations/__init__.py +0 -0
  101. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/affiliations/affiliations.py +0 -0
  102. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/affiliations/config.py +0 -0
  103. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/affiliations/facets.py +0 -0
  104. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/affiliations/jsonschemas/__init__.py +0 -0
  105. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/affiliations/jsonschemas/affiliations/affiliation-v1.0.0.json +0 -0
  106. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/affiliations/mappings/__init__.py +0 -0
  107. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/affiliations/mappings/os-v1/__init__.py +0 -0
  108. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/affiliations/mappings/os-v1/affiliations/affiliation-v1.0.0.json +0 -0
  109. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/affiliations/mappings/os-v2/__init__.py +0 -0
  110. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/affiliations/mappings/os-v2/affiliations/affiliation-v1.0.0.json +0 -0
  111. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/affiliations/mappings/v7/__init__.py +0 -0
  112. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/affiliations/mappings/v7/affiliations/affiliation-v1.0.0.json +0 -0
  113. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/affiliations/models.py +0 -0
  114. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/affiliations/resources.py +0 -0
  115. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/affiliations/schema.py +0 -0
  116. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/awards/__init__.py +0 -0
  117. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/awards/api.py +0 -0
  118. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/awards/config.py +0 -0
  119. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/awards/jsonschemas/__init__.py +0 -0
  120. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/awards/jsonschemas/awards/award-v1.0.0.json +0 -0
  121. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/awards/mappings/__init__.py +0 -0
  122. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/awards/mappings/os-v1/__init__.py +0 -0
  123. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/awards/mappings/os-v1/awards/award-v1.0.0.json +0 -0
  124. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/awards/mappings/os-v2/__init__.py +0 -0
  125. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/awards/mappings/os-v2/awards/award-v1.0.0.json +0 -0
  126. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/awards/mappings/v7/__init__.py +0 -0
  127. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/awards/mappings/v7/awards/award-v1.0.0.json +0 -0
  128. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/awards/models.py +0 -0
  129. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/awards/resources.py +0 -0
  130. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/awards/schema.py +0 -0
  131. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/awards/serializer.py +0 -0
  132. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/common/__init__.py +0 -0
  133. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/common/ror/__init__.py +0 -0
  134. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/funders/__init__.py +0 -0
  135. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/funders/api.py +0 -0
  136. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/funders/config.py +0 -0
  137. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/funders/facets.py +0 -0
  138. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/funders/jsonschemas/__init__.py +0 -0
  139. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/funders/jsonschemas/funders/funder-v1.0.0.json +0 -0
  140. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/funders/mappings/__init__.py +0 -0
  141. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/funders/mappings/os-v1/__init__.py +0 -0
  142. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/funders/mappings/os-v1/funders/funder-v1.0.0.json +0 -0
  143. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/funders/mappings/os-v2/__init__.py +0 -0
  144. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/funders/mappings/os-v2/funders/funder-v1.0.0.json +0 -0
  145. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/funders/mappings/v7/__init__.py +0 -0
  146. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/funders/mappings/v7/funders/funder-v1.0.0.json +0 -0
  147. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/funders/models.py +0 -0
  148. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/funders/resources.py +0 -0
  149. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/funders/schema.py +0 -0
  150. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/funders/serializer.py +0 -0
  151. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/funders/services.py +0 -0
  152. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/names/__init__.py +0 -0
  153. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/names/api.py +0 -0
  154. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/names/config.py +0 -0
  155. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/names/datastreams.py +0 -0
  156. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/names/jsonschemas/__init__.py +0 -0
  157. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/names/jsonschemas/names/name-v1.0.0.json +0 -0
  158. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/names/mappings/__init__.py +0 -0
  159. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/names/mappings/os-v1/__init__.py +0 -0
  160. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/names/mappings/os-v1/names/name-v1.0.0.json +0 -0
  161. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/names/mappings/os-v2/__init__.py +0 -0
  162. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/names/mappings/os-v2/names/name-v1.0.0.json +0 -0
  163. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/names/mappings/v7/__init__.py +0 -0
  164. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/names/mappings/v7/names/name-v1.0.0.json +0 -0
  165. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/names/models.py +0 -0
  166. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/names/names.py +0 -0
  167. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/names/resources.py +0 -0
  168. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/names/schema.py +0 -0
  169. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/names/services.py +0 -0
  170. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/subjects/__init__.py +0 -0
  171. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/subjects/api.py +0 -0
  172. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/subjects/config.py +0 -0
  173. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/subjects/facets.py +0 -0
  174. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/subjects/jsonschemas/__init__.py +0 -0
  175. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/subjects/jsonschemas/subjects/subject-v1.0.0.json +0 -0
  176. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/subjects/mappings/__init__.py +0 -0
  177. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/subjects/mappings/os-v1/__init__.py +0 -0
  178. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/subjects/mappings/os-v1/subjects/subject-v1.0.0.json +0 -0
  179. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/subjects/mappings/os-v2/__init__.py +0 -0
  180. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/subjects/mappings/os-v2/subjects/subject-v1.0.0.json +0 -0
  181. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/subjects/mappings/v7/__init__.py +0 -0
  182. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/subjects/mappings/v7/subjects/subject-v1.0.0.json +0 -0
  183. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/subjects/models.py +0 -0
  184. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/subjects/resources.py +0 -0
  185. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/subjects/schema.py +0 -0
  186. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/subjects/services.py +0 -0
  187. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/contrib/subjects/subjects.py +0 -0
  188. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/datastreams/__init__.py +0 -0
  189. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/datastreams/datastreams.py +0 -0
  190. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/datastreams/errors.py +0 -0
  191. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/datastreams/factories.py +0 -0
  192. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/datastreams/transformers.py +0 -0
  193. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/datastreams/xml.py +0 -0
  194. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/ext.py +0 -0
  195. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/fixtures.py +0 -0
  196. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/proxies.py +0 -0
  197. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/records/__init__.py +0 -0
  198. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/records/api.py +0 -0
  199. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/records/jsonschemas/__init__.py +0 -0
  200. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/records/jsonschemas/vocabularies/definitions-v1.0.0.json +0 -0
  201. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/records/jsonschemas/vocabularies/vocabulary-v1.0.0.json +0 -0
  202. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/records/mappings/__init__.py +0 -0
  203. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/records/mappings/os-v1/__init__.py +0 -0
  204. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/records/mappings/os-v1/vocabularies/vocabulary-v1.0.0.json +0 -0
  205. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/records/mappings/os-v2/__init__.py +0 -0
  206. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/records/mappings/os-v2/vocabularies/vocabulary-v1.0.0.json +0 -0
  207. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/records/mappings/v7/__init__.py +0 -0
  208. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/records/mappings/v7/vocabularies/vocabulary-v1.0.0.json +0 -0
  209. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/records/systemfields/__init__.py +0 -0
  210. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/records/systemfields/pid.py +0 -0
  211. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/records/systemfields/relations.py +0 -0
  212. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/resources/config.py +0 -0
  213. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/resources/resource.py +0 -0
  214. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/resources/serializer.py +0 -0
  215. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/services/__init__.py +0 -0
  216. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/services/components.py +0 -0
  217. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/services/config.py +0 -0
  218. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/services/custom_fields/__init__.py +0 -0
  219. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/services/facets.py +0 -0
  220. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/services/permissions.py +0 -0
  221. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/services/querystr.py +0 -0
  222. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/services/results.py +0 -0
  223. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/services/schema.py +0 -0
  224. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/services/service.py +0 -0
  225. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/templates/semantic-ui/invenio_vocabularies/subjects.html +0 -0
  226. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/templates/semantic-ui/invenio_vocabularies/vocabularies-list.html +0 -0
  227. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/templates/semantic-ui/invenio_vocabularies/vocabulary-details.html +0 -0
  228. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/af/LC_MESSAGES/messages.mo +0 -0
  229. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/af/LC_MESSAGES/messages.po +0 -0
  230. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/ar/LC_MESSAGES/messages.mo +0 -0
  231. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/ar/LC_MESSAGES/messages.po +0 -0
  232. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/bg/LC_MESSAGES/messages.mo +0 -0
  233. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/bg/LC_MESSAGES/messages.po +0 -0
  234. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/ca/LC_MESSAGES/messages.mo +0 -0
  235. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/ca/LC_MESSAGES/messages.po +0 -0
  236. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/cs/LC_MESSAGES/messages.mo +0 -0
  237. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/cs/LC_MESSAGES/messages.po +0 -0
  238. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/da/LC_MESSAGES/messages.mo +0 -0
  239. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/da/LC_MESSAGES/messages.po +0 -0
  240. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/de/LC_MESSAGES/messages.mo +0 -0
  241. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/de/LC_MESSAGES/messages.po +0 -0
  242. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/de_AT/LC_MESSAGES/messages.mo +0 -0
  243. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/de_AT/LC_MESSAGES/messages.po +0 -0
  244. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/de_DE/LC_MESSAGES/messages.mo +0 -0
  245. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/de_DE/LC_MESSAGES/messages.po +0 -0
  246. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/el/LC_MESSAGES/messages.mo +0 -0
  247. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/el/LC_MESSAGES/messages.po +0 -0
  248. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/en/LC_MESSAGES/messages.mo +0 -0
  249. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/en/LC_MESSAGES/messages.po +0 -0
  250. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/en_AT/LC_MESSAGES/messages.mo +0 -0
  251. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/en_AT/LC_MESSAGES/messages.po +0 -0
  252. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/en_HU/LC_MESSAGES/messages.mo +0 -0
  253. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/en_HU/LC_MESSAGES/messages.po +0 -0
  254. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/es/LC_MESSAGES/messages.mo +0 -0
  255. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/es/LC_MESSAGES/messages.po +0 -0
  256. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/es_CU/LC_MESSAGES/messages.mo +0 -0
  257. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/es_CU/LC_MESSAGES/messages.po +0 -0
  258. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/es_MX/LC_MESSAGES/messages.mo +0 -0
  259. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/es_MX/LC_MESSAGES/messages.po +0 -0
  260. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/et/LC_MESSAGES/messages.mo +0 -0
  261. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/et/LC_MESSAGES/messages.po +0 -0
  262. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/et_EE/LC_MESSAGES/messages.mo +0 -0
  263. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/et_EE/LC_MESSAGES/messages.po +0 -0
  264. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/fa/LC_MESSAGES/messages.mo +0 -0
  265. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/fa/LC_MESSAGES/messages.po +0 -0
  266. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/fa_IR/LC_MESSAGES/messages.mo +0 -0
  267. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/fa_IR/LC_MESSAGES/messages.po +0 -0
  268. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/fr/LC_MESSAGES/messages.mo +0 -0
  269. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/fr/LC_MESSAGES/messages.po +0 -0
  270. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/fr_CI/LC_MESSAGES/messages.mo +0 -0
  271. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/fr_CI/LC_MESSAGES/messages.po +0 -0
  272. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/fr_FR/LC_MESSAGES/messages.mo +0 -0
  273. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/fr_FR/LC_MESSAGES/messages.po +0 -0
  274. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/gl/LC_MESSAGES/messages.mo +0 -0
  275. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/gl/LC_MESSAGES/messages.po +0 -0
  276. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/hi_IN/LC_MESSAGES/messages.mo +0 -0
  277. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/hi_IN/LC_MESSAGES/messages.po +0 -0
  278. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/hr/LC_MESSAGES/messages.mo +0 -0
  279. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/hr/LC_MESSAGES/messages.po +0 -0
  280. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/hu/LC_MESSAGES/messages.mo +0 -0
  281. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/hu/LC_MESSAGES/messages.po +0 -0
  282. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/hu_HU/LC_MESSAGES/messages.mo +0 -0
  283. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/hu_HU/LC_MESSAGES/messages.po +0 -0
  284. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/it/LC_MESSAGES/messages.mo +0 -0
  285. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/it/LC_MESSAGES/messages.po +0 -0
  286. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/ja/LC_MESSAGES/messages.mo +0 -0
  287. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/ja/LC_MESSAGES/messages.po +0 -0
  288. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/ka/LC_MESSAGES/messages.mo +0 -0
  289. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/ka/LC_MESSAGES/messages.po +0 -0
  290. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/lt/LC_MESSAGES/messages.mo +0 -0
  291. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/lt/LC_MESSAGES/messages.po +0 -0
  292. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/messages.pot +0 -0
  293. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/ne/LC_MESSAGES/messages.mo +0 -0
  294. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/ne/LC_MESSAGES/messages.po +0 -0
  295. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/no/LC_MESSAGES/messages.mo +0 -0
  296. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/no/LC_MESSAGES/messages.po +0 -0
  297. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/pl/LC_MESSAGES/messages.mo +0 -0
  298. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/pl/LC_MESSAGES/messages.po +0 -0
  299. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/pt/LC_MESSAGES/messages.mo +0 -0
  300. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/pt/LC_MESSAGES/messages.po +0 -0
  301. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/ro/LC_MESSAGES/messages.mo +0 -0
  302. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/ro/LC_MESSAGES/messages.po +0 -0
  303. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/ru/LC_MESSAGES/messages.mo +0 -0
  304. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/ru/LC_MESSAGES/messages.po +0 -0
  305. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/rw/LC_MESSAGES/messages.mo +0 -0
  306. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/rw/LC_MESSAGES/messages.po +0 -0
  307. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/sk/LC_MESSAGES/messages.mo +0 -0
  308. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/sk/LC_MESSAGES/messages.po +0 -0
  309. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/sv/LC_MESSAGES/messages.mo +0 -0
  310. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/sv/LC_MESSAGES/messages.po +0 -0
  311. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/sv_SE/LC_MESSAGES/messages.mo +0 -0
  312. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/sv_SE/LC_MESSAGES/messages.po +0 -0
  313. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/tr/LC_MESSAGES/messages.mo +0 -0
  314. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/tr/LC_MESSAGES/messages.po +0 -0
  315. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/uk/LC_MESSAGES/messages.mo +0 -0
  316. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/uk/LC_MESSAGES/messages.po +0 -0
  317. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/uk_UA/LC_MESSAGES/messages.mo +0 -0
  318. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/uk_UA/LC_MESSAGES/messages.po +0 -0
  319. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/zh_CN/LC_MESSAGES/messages.mo +0 -0
  320. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/zh_CN/LC_MESSAGES/messages.po +0 -0
  321. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/zh_TW/LC_MESSAGES/messages.mo +0 -0
  322. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/translations/zh_TW/LC_MESSAGES/messages.po +0 -0
  323. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/views.py +0 -0
  324. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies/webpack.py +0 -0
  325. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies.egg-info/dependency_links.txt +0 -0
  326. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies.egg-info/entry_points.txt +0 -0
  327. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies.egg-info/not-zip-safe +0 -0
  328. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies.egg-info/requires.txt +0 -0
  329. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/invenio_vocabularies.egg-info/top_level.txt +0 -0
  330. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/pyproject.toml +0 -0
  331. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/requirements-feature.txt +0 -0
  332. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/run-js-linter.sh +0 -0
  333. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/run-tests.sh +0 -0
  334. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/setup.cfg +0 -0
  335. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/setup.py +0 -0
  336. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/conftest.py +0 -0
  337. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/contrib/affiliations/conftest.py +0 -0
  338. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/contrib/affiliations/test_affiliations_api.py +0 -0
  339. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/contrib/affiliations/test_affiliations_datastreams.py +0 -0
  340. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/contrib/affiliations/test_affiliations_jsonschema.py +0 -0
  341. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/contrib/affiliations/test_affiliations_resource.py +0 -0
  342. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/contrib/affiliations/test_affiliations_schema.py +0 -0
  343. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/contrib/affiliations/test_affiliations_service.py +0 -0
  344. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/contrib/awards/conftest.py +0 -0
  345. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/contrib/awards/test_awards_api.py +0 -0
  346. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/contrib/awards/test_awards_datastreams.py +0 -0
  347. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/contrib/awards/test_awards_jsonschema.py +0 -0
  348. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/contrib/awards/test_awards_resource.py +0 -0
  349. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/contrib/awards/test_awards_schema.py +0 -0
  350. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/contrib/awards/test_awards_service.py +0 -0
  351. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/contrib/funders/conftest.py +0 -0
  352. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/contrib/funders/test_funders_api.py +0 -0
  353. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/contrib/funders/test_funders_datastreams.py +0 -0
  354. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/contrib/funders/test_funders_jsonschema.py +0 -0
  355. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/contrib/funders/test_funders_resource.py +0 -0
  356. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/contrib/funders/test_funders_schema.py +0 -0
  357. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/contrib/funders/test_funders_service.py +0 -0
  358. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/contrib/names/conftest.py +0 -0
  359. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/contrib/names/test_names_api.py +0 -0
  360. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/contrib/names/test_names_datastreams.py +0 -0
  361. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/contrib/names/test_names_jsonschema.py +0 -0
  362. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/contrib/names/test_names_resource.py +0 -0
  363. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/contrib/names/test_names_schema.py +0 -0
  364. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/contrib/names/test_names_service.py +0 -0
  365. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/contrib/subjects/conftest.py +0 -0
  366. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/contrib/subjects/test_subjects_api.py +0 -0
  367. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/contrib/subjects/test_subjects_facets.py +0 -0
  368. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/contrib/subjects/test_subjects_jsonschema.py +0 -0
  369. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/contrib/subjects/test_subjects_resource.py +0 -0
  370. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/contrib/subjects/test_subjects_schema.py +0 -0
  371. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/contrib/subjects/test_subjects_service.py +0 -0
  372. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/custom_fields/test_custom_fields.py +0 -0
  373. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/datastreams/test_datastreams.py +0 -0
  374. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/datastreams/test_fixtures.py +0 -0
  375. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/datastreams/test_transformers.py +0 -0
  376. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/datastreams/vocabularies.yaml +0 -0
  377. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/mock_module/__init__.py +0 -0
  378. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/mock_module/api.py +0 -0
  379. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/mock_module/jsonschemas/__init__.py +0 -0
  380. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/mock_module/jsonschemas/records/record-v1.0.0.json +0 -0
  381. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/mock_module/mappings/__init__.py +0 -0
  382. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/mock_module/mappings/v6/__init__.py +0 -0
  383. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/mock_module/mappings/v6/records/record-v1.0.0.json +0 -0
  384. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/mock_module/mappings/v7/__init__.py +0 -0
  385. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/mock_module/mappings/v7/records/record-v1.0.0.json +0 -0
  386. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/mock_module/models.py +0 -0
  387. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/records/conftest.py +0 -0
  388. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/records/test_api.py +0 -0
  389. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/records/test_jsonschema.py +0 -0
  390. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/records/test_relationship.py +0 -0
  391. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/resources/conftest.py +0 -0
  392. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/resources/test_resources_get.py +0 -0
  393. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/resources/test_resources_l10n.py +0 -0
  394. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/resources/test_resources_search.py +0 -0
  395. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/resources/test_tasks_resources.py +0 -0
  396. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/services/conftest.py +0 -0
  397. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/services/test_labels.py +0 -0
  398. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/services/test_permissions.py +0 -0
  399. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/services/test_schema.py +0 -0
  400. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/services/test_service.py +0 -0
  401. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/test_alembic.py +0 -0
  402. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/test_cli.py +0 -0
  403. {invenio-vocabularies-4.1.1 → invenio-vocabularies-4.2.0}/tests/test_invenio_vocabularies.py +0 -0
@@ -8,6 +8,14 @@
8
8
  Changes
9
9
  =======
10
10
 
11
+ Version v4.2.0 (released 2024-07-24)
12
+
13
+ - ror: check last update; use ld+json for metadata (#367)
14
+ - tasks: remove import funders task
15
+ - funders: add and export custom transformer
16
+ - affiliations: add and export custom transformer
17
+ - datastreams: implement asynchronous writer
18
+
11
19
  Version v4.1.1 (released 2024-07-15)
12
20
 
13
21
  - installation: use invenio-oaipmh-scythe from PyPI
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: invenio-vocabularies
3
- Version: 4.1.1
3
+ Version: 4.2.0
4
4
  Summary: "Invenio module for managing vocabularies."
5
5
  Home-page: https://github.com/inveniosoftware/invenio-vocabularies
6
6
  Author: CERN
@@ -50,6 +50,14 @@ Description: ..
50
50
  Changes
51
51
  =======
52
52
 
53
+ Version v4.2.0 (released 2024-07-24)
54
+
55
+ - ror: check last update; use ld+json for metadata (#367)
56
+ - tasks: remove import funders task
57
+ - funders: add and export custom transformer
58
+ - affiliations: add and export custom transformer
59
+ - datastreams: implement asynchronous writer
60
+
53
61
  Version v4.1.1 (released 2024-07-15)
54
62
 
55
63
  - installation: use invenio-oaipmh-scythe from PyPI
@@ -10,6 +10,6 @@
10
10
 
11
11
  from .ext import InvenioVocabularies
12
12
 
13
- __version__ = "4.1.1"
13
+ __version__ = "4.2.0"
14
14
 
15
15
  __all__ = ("__version__", "InvenioVocabularies")
@@ -8,6 +8,7 @@
8
8
  # details.
9
9
 
10
10
  """Vocabularies admin interface."""
11
+
11
12
  from invenio_administration.views.base import (
12
13
  AdminResourceEditView,
13
14
  AdminResourceListView,
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  #
3
- # Copyright (C) 2020-2021 CERN.
3
+ # Copyright (C) 2020-2024 CERN.
4
4
  # Copyright (C) 2021 Graz University of Technology.
5
5
  #
6
6
  # Invenio-Vocabularies is free software; you can redistribute it and/or
@@ -9,7 +9,6 @@
9
9
 
10
10
  """Commands to create and manage vocabularies."""
11
11
 
12
-
13
12
  import click
14
13
  from flask.cli import with_appcontext
15
14
  from invenio_access.permissions import system_identity
@@ -101,7 +100,10 @@ def update(vocabulary, filepath=None, origin=None):
101
100
  config = vc.get_config(filepath, origin)
102
101
 
103
102
  for w_conf in config["writers"]:
104
- w_conf["args"]["update"] = True
103
+ if w_conf["type"] == "async":
104
+ w_conf["args"]["writer"]["args"]["update"] = True
105
+ else:
106
+ w_conf["args"]["update"] = True
105
107
 
106
108
  success, errored, filtered = _process_vocab(config)
107
109
 
@@ -24,7 +24,7 @@ from .datastreams.readers import (
24
24
  ZipReader,
25
25
  )
26
26
  from .datastreams.transformers import XMLTransformer
27
- from .datastreams.writers import ServiceWriter, YamlWriter
27
+ from .datastreams.writers import AsyncWriter, ServiceWriter, YamlWriter
28
28
  from .resources import VocabulariesResourceConfig
29
29
  from .services.config import VocabulariesServiceConfig
30
30
 
@@ -134,6 +134,7 @@ VOCABULARIES_DATASTREAM_TRANSFORMERS = {
134
134
  VOCABULARIES_DATASTREAM_WRITERS = {
135
135
  "service": ServiceWriter,
136
136
  "yaml": YamlWriter,
137
+ "async": AsyncWriter,
137
138
  }
138
139
  """Data Streams writers."""
139
140
 
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  #
3
- # Copyright (C) 2021 CERN.
3
+ # Copyright (C) 2021-2024 CERN.
4
4
  #
5
5
  # Invenio-Vocabularies is free software; you can redistribute it and/or
6
6
  # modify it under the terms of the MIT License; see LICENSE file for more
@@ -8,7 +8,6 @@
8
8
 
9
9
  """Vocabulary affiliations."""
10
10
 
11
-
12
11
  from .affiliations import record_type
13
12
 
14
13
  Affiliation = record_type.record_cls
@@ -9,11 +9,11 @@
9
9
 
10
10
  """Affiliations datastreams, transformers, writers and readers."""
11
11
 
12
- from invenio_access.permissions import system_identity
12
+ from flask import current_app
13
13
  from invenio_i18n import lazy_gettext as _
14
14
 
15
15
  from ...datastreams.writers import ServiceWriter
16
- from .config import affiliation_schemes
16
+ from ..common.ror.datastreams import RORTransformer
17
17
 
18
18
 
19
19
  class AffiliationsServiceWriter(ServiceWriter):
@@ -29,9 +29,35 @@ class AffiliationsServiceWriter(ServiceWriter):
29
29
  return entry["id"]
30
30
 
31
31
 
32
+ class AffiliationsRORTransformer(RORTransformer):
33
+ """Affiliations ROR Transformer."""
34
+
35
+ def __init__(
36
+ self, *args, vocab_schemes=None, funder_fundref_doi_prefix=None, **kwargs
37
+ ):
38
+ """Constructor."""
39
+ if vocab_schemes is None:
40
+ vocab_schemes = current_app.config.get("VOCABULARIES_AFFILIATION_SCHEMES")
41
+ super().__init__(
42
+ *args,
43
+ vocab_schemes=vocab_schemes,
44
+ funder_fundref_doi_prefix=funder_fundref_doi_prefix,
45
+ **kwargs
46
+ )
47
+
48
+
49
+ VOCABULARIES_DATASTREAM_READERS = {}
50
+ """Affiliations datastream readers."""
51
+
32
52
  VOCABULARIES_DATASTREAM_WRITERS = {
33
53
  "affiliations-service": AffiliationsServiceWriter,
34
54
  }
55
+ """Affiliations datastream writers."""
56
+
57
+ VOCABULARIES_DATASTREAM_TRANSFORMERS = {
58
+ "ror-affiliations": AffiliationsRORTransformer,
59
+ }
60
+ """Affiliations datastream transformers."""
35
61
 
36
62
 
37
63
  DATASTREAM_CONFIG = {
@@ -46,17 +72,16 @@ DATASTREAM_CONFIG = {
46
72
  ],
47
73
  "transformers": [
48
74
  {
49
- "type": "ror",
50
- "args": {
51
- "vocab_schemes": affiliation_schemes,
52
- },
75
+ "type": "ror-affiliations",
53
76
  },
54
77
  ],
55
78
  "writers": [
56
79
  {
57
- "type": "affiliations-service",
80
+ "type": "async",
58
81
  "args": {
59
- "identity": system_identity,
82
+ "writer": {
83
+ "type": "affiliations-service",
84
+ }
60
85
  },
61
86
  }
62
87
  ],
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  #
3
- # Copyright (C) 2021 CERN.
3
+ # Copyright (C) 2021-2024 CERN.
4
4
  #
5
5
  # Invenio-Vocabularies is free software; you can redistribute it and/or
6
6
  # modify it under the terms of the MIT License; see LICENSE file for more
@@ -8,7 +8,6 @@
8
8
 
9
9
  """Vocabulary affiliations."""
10
10
 
11
-
12
11
  from .affiliations import record_type
13
12
 
14
13
  AffiliationsServiceConfig = record_type.service_config_cls
@@ -1,12 +1,13 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  #
3
- # Copyright (C) 2022 CERN.
3
+ # Copyright (C) 2022-2024 CERN.
4
4
  #
5
5
  # Invenio-Vocabularies is free software; you can redistribute it and/or
6
6
  # modify it under the terms of the MIT License; see LICENSE file for more
7
7
  # details.
8
8
 
9
9
  """Vocabulary awards."""
10
+
10
11
  from flask_resources import (
11
12
  BaseListSchema,
12
13
  JSONSerializer,
@@ -7,6 +7,7 @@
7
7
  # details.
8
8
 
9
9
  """Awards datastreams, transformers, writers and readers."""
10
+
10
11
  import io
11
12
 
12
13
  import requests
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  #
3
- # Copyright (C) 2022 CERN.
3
+ # Copyright (C) 2022-2024 CERN.
4
4
  #
5
5
  # Invenio-Vocabularies is free software; you can redistribute it and/or
6
6
  # modify it under the terms of the MIT License; see LICENSE file for more
@@ -8,7 +8,6 @@
8
8
 
9
9
  """Vocabulary awards."""
10
10
 
11
-
12
11
  from .awards import record_type
13
12
 
14
13
  AwardsServiceConfig = record_type.service_config_cls
@@ -10,6 +10,7 @@
10
10
  """ROR-related Datastreams Readers/Writers/Transformers module."""
11
11
 
12
12
  import io
13
+ from datetime import datetime
13
14
 
14
15
  import requests
15
16
  from idutils import normalize_ror
@@ -22,6 +23,11 @@ from invenio_vocabularies.datastreams.transformers import BaseTransformer
22
23
  class RORHTTPReader(BaseReader):
23
24
  """ROR HTTP Reader returning an in-memory binary stream of the latest ROR data dump ZIP file."""
24
25
 
26
+ def __init__(self, origin=None, mode="r", since=None, *args, **kwargs):
27
+ """Constructor."""
28
+ self._since = since
29
+ super().__init__(origin, mode, *args, **kwargs)
30
+
25
31
  def _iter(self, fp, *args, **kwargs):
26
32
  raise NotImplementedError(
27
33
  "RORHTTPReader downloads one file and therefore does not iterate through items"
@@ -34,15 +40,41 @@ class RORHTTPReader(BaseReader):
34
40
  "RORHTTPReader does not support being chained after another reader"
35
41
  )
36
42
 
43
+ # Follow the DOI to get the link of the linkset
44
+ dataset_doi_link = "https://doi.org/10.5281/zenodo.6347574"
45
+ landing_page = requests.get(dataset_doi_link, allow_redirects=True)
46
+ landing_page.raise_for_status()
47
+
37
48
  # Call the signposting `linkset+json` endpoint for the Concept DOI (i.e. latest version) of the ROR data dump.
38
49
  # See: https://github.com/inveniosoftware/rfcs/blob/master/rfcs/rdm-0071-signposting.md#provide-an-applicationlinksetjson-endpoint
39
- headers = {"Accept": "application/linkset+json"}
40
- api_url = "https://zenodo.org/api/records/6347574"
41
- api_resp = requests.get(api_url, headers=headers)
42
- api_resp.raise_for_status()
50
+ if "linkset" not in landing_page.links:
51
+ raise ReaderError("Linkset not found in the ROR dataset record.")
52
+ linkset_response = requests.get(
53
+ landing_page.links["linkset"]["url"],
54
+ headers={"Accept": "application/linkset+json"},
55
+ )
56
+ linkset_response.raise_for_status()
57
+
58
+ if self._since:
59
+ for link in linkset_response.json()["linkset"]:
60
+ if "type" in link and link["type"] == "application/ld+json":
61
+ json_ld_reponse = requests.get(
62
+ link["anchor"], headers={"Accept": link["type"]}
63
+ )
64
+ json_ld_reponse.raise_for_status()
65
+
66
+ # TODO Update to use dateCreated once the field is added to InvenioRDM. (https://github.com/inveniosoftware/invenio-rdm-records/issues/1777)
67
+ last_dump_date = json_ld_reponse.json()["datePublished"]
68
+ if datetime.fromisoformat(last_dump_date) < datetime.fromisoformat(
69
+ self._since
70
+ ):
71
+ return
72
+ break
73
+ else:
74
+ raise ReaderError("Couldn't find json-ld in publisher's linkset.")
43
75
 
44
76
  # Extract the Landing page Link Set Object located as the first (index 0) item.
45
- landing_page_linkset = api_resp.json()["linkset"][0]
77
+ landing_page_linkset = linkset_response.json()["linkset"][0]
46
78
 
47
79
  # Extract the URL of the only ZIP file linked to the record.
48
80
  landing_page_zip_items = [
@@ -164,3 +196,5 @@ class RORTransformer(BaseTransformer):
164
196
  VOCABULARIES_DATASTREAM_TRANSFORMERS = {
165
197
  "ror": RORTransformer,
166
198
  }
199
+
200
+ VOCABULARIES_DATASTREAM_WRITERS = {}
@@ -9,12 +9,11 @@
9
9
 
10
10
  """Funders datastreams, transformers, writers and readers."""
11
11
 
12
- from idutils import normalize_ror
13
- from invenio_access.permissions import system_identity
12
+ from flask import current_app
14
13
  from invenio_i18n import lazy_gettext as _
15
14
 
16
15
  from ...datastreams.writers import ServiceWriter
17
- from .config import funder_fundref_doi_prefix, funder_schemes
16
+ from ..common.ror.datastreams import RORTransformer
18
17
 
19
18
 
20
19
  class FundersServiceWriter(ServiceWriter):
@@ -30,10 +29,40 @@ class FundersServiceWriter(ServiceWriter):
30
29
  return entry["id"]
31
30
 
32
31
 
32
+ class FundersRORTransformer(RORTransformer):
33
+ """Funders ROR Transformer."""
34
+
35
+ def __init__(
36
+ self, *args, vocab_schemes=None, funder_fundref_doi_prefix=None, **kwargs
37
+ ):
38
+ """Constructor."""
39
+ if vocab_schemes is None:
40
+ vocab_schemes = current_app.config.get("VOCABULARIES_FUNDER_SCHEMES")
41
+ if funder_fundref_doi_prefix is None:
42
+ funder_fundref_doi_prefix = current_app.config.get(
43
+ "VOCABULARIES_FUNDER_DOI_PREFIX"
44
+ )
45
+ super().__init__(
46
+ *args,
47
+ vocab_schemes=vocab_schemes,
48
+ funder_fundref_doi_prefix=funder_fundref_doi_prefix,
49
+ **kwargs
50
+ )
51
+
52
+
53
+ VOCABULARIES_DATASTREAM_READERS = {}
54
+ """Funders datastreams writers."""
55
+
33
56
  VOCABULARIES_DATASTREAM_WRITERS = {
34
57
  "funders-service": FundersServiceWriter,
35
58
  }
36
- """Funders Data Streams transformers."""
59
+ """Funders datastreams writers."""
60
+
61
+
62
+ VOCABULARIES_DATASTREAM_TRANSFORMERS = {
63
+ "ror-funders": FundersRORTransformer,
64
+ }
65
+ """Funders datastreams transformers."""
37
66
 
38
67
 
39
68
  DATASTREAM_CONFIG = {
@@ -48,18 +77,16 @@ DATASTREAM_CONFIG = {
48
77
  ],
49
78
  "transformers": [
50
79
  {
51
- "type": "ror",
52
- "args": {
53
- "vocab_schemes": funder_schemes,
54
- "funder_fundref_doi_prefix": funder_fundref_doi_prefix,
55
- },
80
+ "type": "ror-funders",
56
81
  },
57
82
  ],
58
83
  "writers": [
59
84
  {
60
- "type": "funders-service",
85
+ "type": "async",
61
86
  "args": {
62
- "identity": system_identity,
87
+ "writer": {
88
+ "type": "funders-service",
89
+ }
63
90
  },
64
91
  }
65
92
  ],
@@ -1,12 +1,13 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  #
3
- # Copyright (C) 2022 CERN.
3
+ # Copyright (C) 2022-2024 CERN.
4
4
  #
5
5
  # Invenio-Vocabularies is free software; you can redistribute it and/or
6
6
  # modify it under the terms of the MIT License; see LICENSE file for more
7
7
  # details.
8
8
 
9
9
  """Vocabulary funders."""
10
+
10
11
  from flask_resources import (
11
12
  BaseListSchema,
12
13
  JSONSerializer,
@@ -270,19 +270,38 @@ class OAIPMHReader(BaseReader):
270
270
  self.xml.find(f".//{self._oai_namespace}metadata").getchildren()[0],
271
271
  )
272
272
 
273
- scythe.class_mapping["ListRecords"] = OAIRecord
274
- try:
275
- records = scythe.list_records(
276
- from_=self._from,
277
- until=self._until,
278
- metadata_prefix=self._metadata_prefix,
279
- set_=self._set,
280
- ignore_deleted=True,
281
- )
282
- for record in records:
283
- yield {"record": record}
284
- except oaipmh_scythe.NoRecordsMatch:
285
- raise ReaderError(f"No records found in OAI-PMH request.")
273
+ if self._verb == "ListRecords":
274
+ scythe.class_mapping["ListRecords"] = OAIRecord
275
+ try:
276
+ records = scythe.list_records(
277
+ from_=self._from,
278
+ until=self._until,
279
+ metadata_prefix=self._metadata_prefix,
280
+ set_=self._set,
281
+ ignore_deleted=True,
282
+ )
283
+ for record in records:
284
+ yield {"record": record}
285
+ except oaipmh_scythe.NoRecordsMatch:
286
+ raise ReaderError("No records found in OAI-PMH request.")
287
+ else:
288
+ scythe.class_mapping["GetRecord"] = OAIRecord
289
+ try:
290
+ headers = scythe.list_identifiers(
291
+ from_=self._from,
292
+ until=self._until,
293
+ metadata_prefix=self._metadata_prefix,
294
+ set_=self._set,
295
+ ignore_deleted=True,
296
+ )
297
+ for header in headers:
298
+ record = scythe.get_record(
299
+ identifier=header.identifier,
300
+ metadata_prefix=self._metadata_prefix,
301
+ )
302
+ yield {"record": record}
303
+ except oaipmh_scythe.NoRecordsMatch:
304
+ raise ReaderError("No records found in OAI-PMH request.")
286
305
 
287
306
  def read(self, item=None, *args, **kwargs):
288
307
  """Reads from item or opens the file descriptor from origin."""
@@ -0,0 +1,25 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # Copyright (C) 2022-2024 CERN.
4
+ #
5
+ # Invenio-Vocabularies is free software; you can redistribute it and/or
6
+ # modify it under the terms of the MIT License; see LICENSE file for more
7
+ # details.
8
+
9
+ """Data Streams Celery tasks."""
10
+
11
+ from celery import shared_task
12
+
13
+ from ..datastreams import StreamEntry
14
+ from ..datastreams.factories import WriterFactory
15
+
16
+
17
+ @shared_task(ignore_result=True)
18
+ def write_entry(writer, entry):
19
+ """Write an entry.
20
+
21
+ :param writer: writer configuration as accepted by the WriterFactory.
22
+ :param entry: dictionary, StreamEntry is not serializable.
23
+ """
24
+ writer = WriterFactory.create(config=writer)
25
+ writer.write(StreamEntry(entry))
@@ -20,6 +20,7 @@ from marshmallow import ValidationError
20
20
 
21
21
  from .datastreams import StreamEntry
22
22
  from .errors import WriterError
23
+ from .tasks import write_entry
23
24
 
24
25
 
25
26
  class BaseWriter(ABC):
@@ -106,3 +107,21 @@ class YamlWriter(BaseWriter):
106
107
  yaml.safe_dump([stream_entry.entry], file, allow_unicode=True)
107
108
 
108
109
  return stream_entry
110
+
111
+
112
+ class AsyncWriter(BaseWriter):
113
+ """Writes the entries asynchronously (celery task)."""
114
+
115
+ def __init__(self, writer, *args, **kwargs):
116
+ """Constructor.
117
+
118
+ :param writer: writer to use.
119
+ """
120
+ self._writer = writer
121
+ super().__init__(*args, **kwargs)
122
+
123
+ def write(self, stream_entry, *args, **kwargs):
124
+ """Launches a celery task to write an entry."""
125
+ write_entry.delay(self._writer, stream_entry.entry)
126
+
127
+ return stream_entry
@@ -7,6 +7,7 @@
7
7
  # modify it under the terms of the MIT License; see LICENSE file for more
8
8
  # details.
9
9
  """Generate Vocabulary Config."""
10
+
10
11
  from copy import deepcopy
11
12
 
12
13
  import yaml
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  #
3
- # Copyright (C) 2020-2021 CERN.
3
+ # Copyright (C) 2020-2024 CERN.
4
4
  #
5
5
  # Invenio-Vocabularies is free software; you can redistribute it and/or
6
6
  # modify it under the terms of the MIT License; see LICENSE file for more
@@ -79,9 +79,7 @@ class VocabularyScheme(db.Model):
79
79
  """Create a new vocabulary subtype."""
80
80
  banned = [",", ":"]
81
81
  for b in banned:
82
- assert (
83
- b not in data["id"]
84
- ), f"No '{b}' allowed in VocabularyScheme.id" # noqa
82
+ assert b not in data["id"], f"No '{b}' allowed in VocabularyScheme.id"
85
83
 
86
84
  with db.session.begin_nested():
87
85
  obj = cls(**data)
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  #
3
- # Copyright (C) 2021 CERN.
3
+ # Copyright (C) 2021-2024 CERN.
4
4
  #
5
5
  # Invenio-Vocabularies is free software; you can redistribute it and/or
6
6
  # modify it under the terms of the MIT License; see LICENSE file for more
@@ -8,7 +8,6 @@
8
8
 
9
9
  """Persistent identifier provider for vocabularies."""
10
10
 
11
-
12
11
  from invenio_pidstore.models import PIDStatus
13
12
  from invenio_pidstore.providers.base import BaseProvider
14
13
 
@@ -7,6 +7,7 @@
7
7
  # details.
8
8
 
9
9
  """Resources module."""
10
+
10
11
  from invenio_vocabularies.resources.schema import L10NString, VocabularyL10Schema
11
12
 
12
13
  from .config import VocabulariesResourceConfig, VocabularyTypeResourceConfig
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  #
3
- # Copyright (C) 2020-2021 CERN.
3
+ # Copyright (C) 2020-2024 CERN.
4
4
  # Copyright (C) 2021 Northwestern University.
5
5
  #
6
6
  # Invenio-Vocabularies is free software; you can redistribute it and/or
@@ -8,6 +8,7 @@
8
8
  # details.
9
9
 
10
10
  """Vocabulary resource schema."""
11
+
11
12
  from marshmallow import Schema, fields
12
13
 
13
14
  from invenio_vocabularies.resources.serializer import L10NString
@@ -7,6 +7,7 @@
7
7
 
8
8
 
9
9
  """Custom fields."""
10
+
10
11
  from invenio_i18n import lazy_gettext as _
11
12
 
12
13
  from ...contrib.subjects.api import Subject
@@ -25,7 +26,7 @@ class SubjectCF(VocabularyCF):
25
26
  vocabulary_id="subjects",
26
27
  schema=SubjectRelationSchema,
27
28
  ui_schema=SubjectRelationSchema,
28
- **kwargs
29
+ **kwargs,
29
30
  )
30
31
  self.pid_field = Subject.pid
31
32
 
@@ -39,7 +39,7 @@ class VocabularyCF(BaseCF):
39
39
  sort_by=None,
40
40
  schema=VocabularyRelationSchema,
41
41
  ui_schema=VocabularyL10NItemSchema,
42
- **kwargs
42
+ **kwargs,
43
43
  ):
44
44
  """Constructor."""
45
45
  super().__init__(name, **kwargs)
@@ -0,0 +1,28 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # Copyright (C) 2022-2024 CERN.
4
+ #
5
+ # Invenio-Vocabularies is free software; you can redistribute it and/or modify
6
+ # it under the terms of the MIT License; see LICENSE file for more details.
7
+
8
+ """Celery tasks."""
9
+
10
+ from celery import shared_task
11
+ from flask import current_app
12
+
13
+ from ..datastreams.factories import DataStreamFactory
14
+
15
+
16
+ @shared_task(ignore_result=True)
17
+ def process_datastream(config):
18
+ """Process a datastream from config."""
19
+ ds = DataStreamFactory.create(
20
+ readers_config=config["readers"],
21
+ transformers_config=config.get("transformers"),
22
+ writers_config=config["writers"],
23
+ )
24
+
25
+ for result in ds.process():
26
+ if result.errors:
27
+ for err in result.errors:
28
+ current_app.logger.error(err)