invenio-vocabularies 2.2.0__tar.gz → 2.2.2__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 (382) hide show
  1. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/CHANGES.rst +11 -1
  2. {invenio-vocabularies-2.2.0/invenio_vocabularies.egg-info → invenio-vocabularies-2.2.2}/PKG-INFO +12 -2
  3. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/__init__.py +2 -2
  4. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/alembic/55a700f897b6_add_names_and_afiliations_pid_column.py +1 -1
  5. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/contrib/forms/Funding/CustomAwardForm.js +1 -0
  6. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/affiliations/facets.py +3 -3
  7. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/funders/facets.py +3 -3
  8. invenio-vocabularies-2.2.2/invenio_vocabularies/services/facets.py +114 -0
  9. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/af/LC_MESSAGES/messages.mo +0 -0
  10. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/ar/LC_MESSAGES/messages.mo +0 -0
  11. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/bg/LC_MESSAGES/messages.mo +0 -0
  12. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/ca/LC_MESSAGES/messages.mo +0 -0
  13. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/cs/LC_MESSAGES/messages.mo +0 -0
  14. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/da/LC_MESSAGES/messages.mo +0 -0
  15. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/de/LC_MESSAGES/messages.mo +0 -0
  16. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/de_AT/LC_MESSAGES/messages.mo +0 -0
  17. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/de_DE/LC_MESSAGES/messages.mo +0 -0
  18. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/el/LC_MESSAGES/messages.mo +0 -0
  19. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/en/LC_MESSAGES/messages.mo +0 -0
  20. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/en_AT/LC_MESSAGES/messages.mo +0 -0
  21. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/en_HU/LC_MESSAGES/messages.mo +0 -0
  22. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/es/LC_MESSAGES/messages.mo +0 -0
  23. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/es_CU/LC_MESSAGES/messages.mo +0 -0
  24. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/es_MX/LC_MESSAGES/messages.mo +0 -0
  25. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/et/LC_MESSAGES/messages.mo +0 -0
  26. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/et_EE/LC_MESSAGES/messages.mo +0 -0
  27. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/fa/LC_MESSAGES/messages.mo +0 -0
  28. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/fa_IR/LC_MESSAGES/messages.mo +0 -0
  29. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/fr/LC_MESSAGES/messages.mo +0 -0
  30. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/fr_CI/LC_MESSAGES/messages.mo +0 -0
  31. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/fr_FR/LC_MESSAGES/messages.mo +0 -0
  32. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/gl/LC_MESSAGES/messages.mo +0 -0
  33. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/hi_IN/LC_MESSAGES/messages.mo +0 -0
  34. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/hr/LC_MESSAGES/messages.mo +0 -0
  35. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/hu/LC_MESSAGES/messages.mo +0 -0
  36. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/hu_HU/LC_MESSAGES/messages.mo +0 -0
  37. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/it/LC_MESSAGES/messages.mo +0 -0
  38. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/ja/LC_MESSAGES/messages.mo +0 -0
  39. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/ka/LC_MESSAGES/messages.mo +0 -0
  40. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/lt/LC_MESSAGES/messages.mo +0 -0
  41. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/ne/LC_MESSAGES/messages.mo +0 -0
  42. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/no/LC_MESSAGES/messages.mo +0 -0
  43. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/pl/LC_MESSAGES/messages.mo +0 -0
  44. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/pt/LC_MESSAGES/messages.mo +0 -0
  45. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/ro/LC_MESSAGES/messages.mo +0 -0
  46. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/ru/LC_MESSAGES/messages.mo +0 -0
  47. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/rw/LC_MESSAGES/messages.mo +0 -0
  48. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/sk/LC_MESSAGES/messages.mo +0 -0
  49. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/sv/LC_MESSAGES/messages.mo +0 -0
  50. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/sv_SE/LC_MESSAGES/messages.mo +0 -0
  51. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/tr/LC_MESSAGES/messages.mo +0 -0
  52. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/uk/LC_MESSAGES/messages.mo +0 -0
  53. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/uk_UA/LC_MESSAGES/messages.mo +0 -0
  54. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/zh_CN/LC_MESSAGES/messages.mo +0 -0
  55. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/zh_TW/LC_MESSAGES/messages.mo +0 -0
  56. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2/invenio_vocabularies.egg-info}/PKG-INFO +12 -2
  57. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/resources/test_tasks_resources.py +0 -1
  58. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/services/test_labels.py +1 -26
  59. invenio-vocabularies-2.2.0/invenio_vocabularies/services/facets.py +0 -135
  60. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/.dockerignore +0 -0
  61. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/.editorconfig +0 -0
  62. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/.git-blame-ignore-revs +0 -0
  63. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/.github/workflows/i18n-pull.yml +0 -0
  64. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/.github/workflows/i18n-push.yml +0 -0
  65. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/.github/workflows/pypi-publish.yml +0 -0
  66. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/.github/workflows/tests.yml +0 -0
  67. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/.tx/config +0 -0
  68. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/AUTHORS.rst +0 -0
  69. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/CONTRIBUTING.rst +0 -0
  70. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/INSTALL.rst +0 -0
  71. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/LICENSE +0 -0
  72. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/MANIFEST.in +0 -0
  73. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/README.rst +0 -0
  74. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/babel.ini +0 -0
  75. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/docs/Makefile +0 -0
  76. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/docs/api.rst +0 -0
  77. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/docs/authors.rst +0 -0
  78. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/docs/changes.rst +0 -0
  79. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/docs/conf.py +0 -0
  80. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/docs/configuration.rst +0 -0
  81. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/docs/contributing.rst +0 -0
  82. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/docs/index.rst +0 -0
  83. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/docs/installation.rst +0 -0
  84. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/docs/license.rst +0 -0
  85. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/docs/make.bat +0 -0
  86. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/docs/requirements.txt +0 -0
  87. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/docs/usage.rst +0 -0
  88. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/gen-migration.sh +0 -0
  89. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/alembic/17c703ce1eb7_create_names_table.py +0 -0
  90. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/alembic/4a9a4fd235f8_create_vocabulary_schemes.py +0 -0
  91. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/alembic/4f365fced43f_create_vocabularies_tables.py +0 -0
  92. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/alembic/6312f33645c1_create_affiliations_table.py +0 -0
  93. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/alembic/676dd587542d_create_funders_vocabulary_table.py +0 -0
  94. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/alembic/8ff82dfb0be8_create_vocabularies_branch.py +0 -0
  95. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/alembic/__init__.py +0 -0
  96. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/alembic/e1146238edd3_create_awards_table.py +0 -0
  97. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/.eslintrc.yml +0 -0
  98. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/.prettierrc +0 -0
  99. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/index.js +0 -0
  100. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/package.json +0 -0
  101. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/contrib/forms/Funding/AwardResults.js +0 -0
  102. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/contrib/forms/Funding/FunderDropdown.js +0 -0
  103. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/contrib/forms/Funding/FundingField.js +0 -0
  104. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/contrib/forms/Funding/FundingField.test.js +0 -0
  105. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/contrib/forms/Funding/FundingFieldItem.js +0 -0
  106. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/contrib/forms/Funding/FundingModal.js +0 -0
  107. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/contrib/forms/Funding/NoAwardResults.js +0 -0
  108. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/contrib/forms/Funding/index.js +0 -0
  109. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/contrib/forms/index.js +0 -0
  110. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/contrib/index.js +0 -0
  111. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/index.js +0 -0
  112. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/i18next-scanner.config.js +0 -0
  113. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/i18next.js +0 -0
  114. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/index.js +0 -0
  115. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/package.json +0 -0
  116. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/scripts/compileCatalog.js +0 -0
  117. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/scripts/initCatalog.js +0 -0
  118. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/cli.py +0 -0
  119. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/config.py +0 -0
  120. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/__init__.py +0 -0
  121. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/affiliations/__init__.py +0 -0
  122. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/affiliations/affiliations.py +0 -0
  123. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/affiliations/api.py +0 -0
  124. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/affiliations/config.py +0 -0
  125. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/affiliations/jsonschemas/__init__.py +0 -0
  126. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/affiliations/jsonschemas/affiliations/affiliation-v1.0.0.json +0 -0
  127. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/affiliations/mappings/__init__.py +0 -0
  128. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/affiliations/mappings/os-v1/__init__.py +0 -0
  129. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/affiliations/mappings/os-v1/affiliations/affiliation-v1.0.0.json +0 -0
  130. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/affiliations/mappings/os-v2/__init__.py +0 -0
  131. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/affiliations/mappings/os-v2/affiliations/affiliation-v1.0.0.json +0 -0
  132. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/affiliations/mappings/v7/__init__.py +0 -0
  133. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/affiliations/mappings/v7/affiliations/affiliation-v1.0.0.json +0 -0
  134. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/affiliations/models.py +0 -0
  135. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/affiliations/resources.py +0 -0
  136. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/affiliations/schema.py +0 -0
  137. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/affiliations/services.py +0 -0
  138. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/awards/__init__.py +0 -0
  139. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/awards/api.py +0 -0
  140. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/awards/awards.py +0 -0
  141. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/awards/config.py +0 -0
  142. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/awards/datastreams.py +0 -0
  143. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/awards/jsonschemas/__init__.py +0 -0
  144. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/awards/jsonschemas/awards/award-v1.0.0.json +0 -0
  145. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/awards/mappings/__init__.py +0 -0
  146. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/awards/mappings/os-v1/__init__.py +0 -0
  147. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/awards/mappings/os-v1/awards/award-v1.0.0.json +0 -0
  148. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/awards/mappings/os-v2/__init__.py +0 -0
  149. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/awards/mappings/os-v2/awards/award-v1.0.0.json +0 -0
  150. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/awards/mappings/v7/__init__.py +0 -0
  151. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/awards/mappings/v7/awards/award-v1.0.0.json +0 -0
  152. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/awards/models.py +0 -0
  153. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/awards/resources.py +0 -0
  154. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/awards/schema.py +0 -0
  155. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/awards/serializer.py +0 -0
  156. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/awards/services.py +0 -0
  157. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/funders/__init__.py +0 -0
  158. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/funders/api.py +0 -0
  159. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/funders/config.py +0 -0
  160. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/funders/datastreams.py +0 -0
  161. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/funders/funders.py +0 -0
  162. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/funders/jsonschemas/__init__.py +0 -0
  163. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/funders/jsonschemas/funders/funder-v1.0.0.json +0 -0
  164. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/funders/mappings/__init__.py +0 -0
  165. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/funders/mappings/os-v1/__init__.py +0 -0
  166. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/funders/mappings/os-v1/funders/funder-v1.0.0.json +0 -0
  167. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/funders/mappings/os-v2/__init__.py +0 -0
  168. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/funders/mappings/os-v2/funders/funder-v1.0.0.json +0 -0
  169. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/funders/mappings/v7/__init__.py +0 -0
  170. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/funders/mappings/v7/funders/funder-v1.0.0.json +0 -0
  171. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/funders/models.py +0 -0
  172. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/funders/resources.py +0 -0
  173. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/funders/schema.py +0 -0
  174. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/funders/serializer.py +0 -0
  175. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/funders/services.py +0 -0
  176. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/names/__init__.py +0 -0
  177. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/names/api.py +0 -0
  178. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/names/config.py +0 -0
  179. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/names/datastreams.py +0 -0
  180. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/names/jsonschemas/__init__.py +0 -0
  181. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/names/jsonschemas/names/name-v1.0.0.json +0 -0
  182. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/names/mappings/__init__.py +0 -0
  183. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/names/mappings/os-v1/__init__.py +0 -0
  184. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/names/mappings/os-v1/names/name-v1.0.0.json +0 -0
  185. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/names/mappings/os-v2/__init__.py +0 -0
  186. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/names/mappings/os-v2/names/name-v1.0.0.json +0 -0
  187. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/names/mappings/v7/__init__.py +0 -0
  188. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/names/mappings/v7/names/name-v1.0.0.json +0 -0
  189. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/names/models.py +0 -0
  190. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/names/names.py +0 -0
  191. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/names/resources.py +0 -0
  192. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/names/schema.py +0 -0
  193. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/names/services.py +0 -0
  194. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/subjects/__init__.py +0 -0
  195. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/subjects/api.py +0 -0
  196. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/subjects/config.py +0 -0
  197. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/subjects/facets.py +0 -0
  198. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/subjects/jsonschemas/__init__.py +0 -0
  199. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/subjects/jsonschemas/subjects/subject-v1.0.0.json +0 -0
  200. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/subjects/mappings/__init__.py +0 -0
  201. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/subjects/mappings/os-v1/__init__.py +0 -0
  202. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/subjects/mappings/os-v1/subjects/subject-v1.0.0.json +0 -0
  203. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/subjects/mappings/os-v2/__init__.py +0 -0
  204. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/subjects/mappings/os-v2/subjects/subject-v1.0.0.json +0 -0
  205. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/subjects/mappings/v7/__init__.py +0 -0
  206. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/subjects/mappings/v7/subjects/subject-v1.0.0.json +0 -0
  207. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/subjects/models.py +0 -0
  208. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/subjects/resources.py +0 -0
  209. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/subjects/schema.py +0 -0
  210. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/subjects/services.py +0 -0
  211. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/subjects/subjects.py +0 -0
  212. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/datastreams/__init__.py +0 -0
  213. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/datastreams/datastreams.py +0 -0
  214. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/datastreams/errors.py +0 -0
  215. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/datastreams/factories.py +0 -0
  216. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/datastreams/readers.py +0 -0
  217. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/datastreams/transformers.py +0 -0
  218. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/datastreams/writers.py +0 -0
  219. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/ext.py +0 -0
  220. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/fixtures.py +0 -0
  221. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/proxies.py +0 -0
  222. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/records/__init__.py +0 -0
  223. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/records/api.py +0 -0
  224. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/records/jsonschemas/__init__.py +0 -0
  225. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/records/jsonschemas/vocabularies/definitions-v1.0.0.json +0 -0
  226. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/records/jsonschemas/vocabularies/vocabulary-v1.0.0.json +0 -0
  227. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/records/mappings/__init__.py +0 -0
  228. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/records/mappings/os-v1/__init__.py +0 -0
  229. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/records/mappings/os-v1/vocabularies/vocabulary-v1.0.0.json +0 -0
  230. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/records/mappings/os-v2/__init__.py +0 -0
  231. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/records/mappings/os-v2/vocabularies/vocabulary-v1.0.0.json +0 -0
  232. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/records/mappings/v7/__init__.py +0 -0
  233. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/records/mappings/v7/vocabularies/vocabulary-v1.0.0.json +0 -0
  234. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/records/models.py +0 -0
  235. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/records/pidprovider.py +0 -0
  236. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/records/systemfields/__init__.py +0 -0
  237. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/records/systemfields/pid.py +0 -0
  238. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/records/systemfields/relations.py +0 -0
  239. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/resources/__init__.py +0 -0
  240. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/resources/resource.py +0 -0
  241. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/resources/schema.py +0 -0
  242. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/resources/serializer.py +0 -0
  243. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/services/__init__.py +0 -0
  244. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/services/components.py +0 -0
  245. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/services/custom_fields/__init__.py +0 -0
  246. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/services/custom_fields/vocabulary.py +0 -0
  247. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/services/permissions.py +0 -0
  248. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/services/querystr.py +0 -0
  249. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/services/schema.py +0 -0
  250. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/services/service.py +0 -0
  251. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/services/tasks.py +0 -0
  252. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/af/LC_MESSAGES/messages.po +0 -0
  253. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/ar/LC_MESSAGES/messages.po +0 -0
  254. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/bg/LC_MESSAGES/messages.po +0 -0
  255. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/ca/LC_MESSAGES/messages.po +0 -0
  256. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/cs/LC_MESSAGES/messages.po +0 -0
  257. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/da/LC_MESSAGES/messages.po +0 -0
  258. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/de/LC_MESSAGES/messages.po +0 -0
  259. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/de_AT/LC_MESSAGES/messages.po +0 -0
  260. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/de_DE/LC_MESSAGES/messages.po +0 -0
  261. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/el/LC_MESSAGES/messages.po +0 -0
  262. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/en/LC_MESSAGES/messages.po +0 -0
  263. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/en_AT/LC_MESSAGES/messages.po +0 -0
  264. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/en_HU/LC_MESSAGES/messages.po +0 -0
  265. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/es/LC_MESSAGES/messages.po +0 -0
  266. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/es_CU/LC_MESSAGES/messages.po +0 -0
  267. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/es_MX/LC_MESSAGES/messages.po +0 -0
  268. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/et/LC_MESSAGES/messages.po +0 -0
  269. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/et_EE/LC_MESSAGES/messages.po +0 -0
  270. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/fa/LC_MESSAGES/messages.po +0 -0
  271. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/fa_IR/LC_MESSAGES/messages.po +0 -0
  272. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/fr/LC_MESSAGES/messages.po +0 -0
  273. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/fr_CI/LC_MESSAGES/messages.po +0 -0
  274. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/fr_FR/LC_MESSAGES/messages.po +0 -0
  275. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/gl/LC_MESSAGES/messages.po +0 -0
  276. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/hi_IN/LC_MESSAGES/messages.po +0 -0
  277. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/hr/LC_MESSAGES/messages.po +0 -0
  278. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/hu/LC_MESSAGES/messages.po +0 -0
  279. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/hu_HU/LC_MESSAGES/messages.po +0 -0
  280. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/it/LC_MESSAGES/messages.po +0 -0
  281. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/ja/LC_MESSAGES/messages.po +0 -0
  282. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/ka/LC_MESSAGES/messages.po +0 -0
  283. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/lt/LC_MESSAGES/messages.po +0 -0
  284. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/messages.pot +0 -0
  285. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/ne/LC_MESSAGES/messages.po +0 -0
  286. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/no/LC_MESSAGES/messages.po +0 -0
  287. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/pl/LC_MESSAGES/messages.po +0 -0
  288. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/pt/LC_MESSAGES/messages.po +0 -0
  289. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/ro/LC_MESSAGES/messages.po +0 -0
  290. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/ru/LC_MESSAGES/messages.po +0 -0
  291. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/rw/LC_MESSAGES/messages.po +0 -0
  292. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/sk/LC_MESSAGES/messages.po +0 -0
  293. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/sv/LC_MESSAGES/messages.po +0 -0
  294. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/sv_SE/LC_MESSAGES/messages.po +0 -0
  295. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/tr/LC_MESSAGES/messages.po +0 -0
  296. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/uk/LC_MESSAGES/messages.po +0 -0
  297. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/uk_UA/LC_MESSAGES/messages.po +0 -0
  298. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/zh_CN/LC_MESSAGES/messages.po +0 -0
  299. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/zh_TW/LC_MESSAGES/messages.po +0 -0
  300. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/views.py +0 -0
  301. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/webpack.py +0 -0
  302. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies.egg-info/SOURCES.txt +0 -0
  303. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies.egg-info/dependency_links.txt +0 -0
  304. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies.egg-info/entry_points.txt +0 -0
  305. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies.egg-info/not-zip-safe +0 -0
  306. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies.egg-info/requires.txt +0 -0
  307. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies.egg-info/top_level.txt +0 -0
  308. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/pyproject.toml +0 -0
  309. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/requirements-feature.txt +0 -0
  310. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/run-js-linter.sh +0 -0
  311. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/run-tests.sh +0 -0
  312. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/setup.cfg +0 -0
  313. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/setup.py +0 -0
  314. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/conftest.py +0 -0
  315. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/affiliations/conftest.py +0 -0
  316. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/affiliations/test_affiliations_api.py +0 -0
  317. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/affiliations/test_affiliations_jsonschema.py +0 -0
  318. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/affiliations/test_affiliations_resource.py +0 -0
  319. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/affiliations/test_affiliations_schema.py +0 -0
  320. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/affiliations/test_affiliations_service.py +0 -0
  321. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/awards/conftest.py +0 -0
  322. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/awards/test_awards_api.py +0 -0
  323. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/awards/test_awards_datastreams.py +0 -0
  324. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/awards/test_awards_jsonschema.py +0 -0
  325. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/awards/test_awards_resource.py +0 -0
  326. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/awards/test_awards_schema.py +0 -0
  327. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/awards/test_awards_service.py +0 -0
  328. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/funders/conftest.py +0 -0
  329. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/funders/test_funders_api.py +0 -0
  330. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/funders/test_funders_datastreams.py +0 -0
  331. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/funders/test_funders_jsonschema.py +0 -0
  332. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/funders/test_funders_resource.py +0 -0
  333. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/funders/test_funders_schema.py +0 -0
  334. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/funders/test_funders_service.py +0 -0
  335. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/names/conftest.py +0 -0
  336. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/names/test_names_api.py +0 -0
  337. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/names/test_names_datastreams.py +0 -0
  338. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/names/test_names_jsonschema.py +0 -0
  339. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/names/test_names_resource.py +0 -0
  340. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/names/test_names_schema.py +0 -0
  341. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/names/test_names_service.py +0 -0
  342. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/subjects/conftest.py +0 -0
  343. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/subjects/test_subjects_api.py +0 -0
  344. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/subjects/test_subjects_facets.py +0 -0
  345. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/subjects/test_subjects_jsonschema.py +0 -0
  346. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/subjects/test_subjects_resource.py +0 -0
  347. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/subjects/test_subjects_schema.py +0 -0
  348. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/subjects/test_subjects_service.py +0 -0
  349. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/custom_fields/test_custom_fields.py +0 -0
  350. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/datastreams/conftest.py +0 -0
  351. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/datastreams/test_datastreams.py +0 -0
  352. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/datastreams/test_fixtures.py +0 -0
  353. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/datastreams/test_readers.py +0 -0
  354. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/datastreams/test_transformers.py +0 -0
  355. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/datastreams/test_writers.py +0 -0
  356. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/datastreams/vocabularies.yaml +0 -0
  357. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/mock_module/__init__.py +0 -0
  358. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/mock_module/api.py +0 -0
  359. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/mock_module/jsonschemas/__init__.py +0 -0
  360. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/mock_module/jsonschemas/records/record-v1.0.0.json +0 -0
  361. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/mock_module/mappings/__init__.py +0 -0
  362. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/mock_module/mappings/v6/__init__.py +0 -0
  363. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/mock_module/mappings/v6/records/record-v1.0.0.json +0 -0
  364. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/mock_module/mappings/v7/__init__.py +0 -0
  365. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/mock_module/mappings/v7/records/record-v1.0.0.json +0 -0
  366. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/mock_module/models.py +0 -0
  367. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/records/conftest.py +0 -0
  368. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/records/test_api.py +0 -0
  369. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/records/test_jsonschema.py +0 -0
  370. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/records/test_models.py +0 -0
  371. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/records/test_relationship.py +0 -0
  372. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/resources/conftest.py +0 -0
  373. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/resources/test_resources_get.py +0 -0
  374. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/resources/test_resources_l10n.py +0 -0
  375. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/resources/test_resources_search.py +0 -0
  376. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/services/conftest.py +0 -0
  377. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/services/test_permissions.py +0 -0
  378. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/services/test_schema.py +0 -0
  379. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/services/test_service.py +0 -0
  380. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/test_alembic.py +0 -0
  381. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/test_cli.py +0 -0
  382. {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/test_invenio_vocabularies.py +0 -0
@@ -1,5 +1,5 @@
1
1
  ..
2
- Copyright (C) 2020 CERN.
2
+ Copyright (C) 2020-2023 CERN.
3
3
 
4
4
  Invenio-Vocabularies is free software; you can redistribute it and/or
5
5
  modify it under the terms of the MIT License; see LICENSE file for more
@@ -8,6 +8,16 @@
8
8
  Changes
9
9
  =======
10
10
 
11
+ Version 2.2.2 (2023-10-06)
12
+
13
+ - alembic rcp: set explicit dependency on pidstore create table
14
+
15
+ Version 2.2.1 (2023-10-02)
16
+
17
+ - facets: change caching strategy by caching each vocabulary by id. Replace
18
+ lru_cache with invenio-cache to ensure that cache expiration uses a TTL that
19
+ is correctly computed.
20
+
11
21
  Version 2.2.0 (2023-09-19)
12
22
 
13
23
  - facets: implement in-memory cache
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: invenio-vocabularies
3
- Version: 2.2.0
3
+ Version: 2.2.2
4
4
  Summary: "Invenio module for managing vocabularies."
5
5
  Home-page: https://github.com/inveniosoftware/invenio-vocabularies
6
6
  Author: CERN
@@ -41,7 +41,7 @@ Description: ..
41
41
  https://invenio-vocabularies.readthedocs.io/
42
42
 
43
43
  ..
44
- Copyright (C) 2020 CERN.
44
+ Copyright (C) 2020-2023 CERN.
45
45
 
46
46
  Invenio-Vocabularies is free software; you can redistribute it and/or
47
47
  modify it under the terms of the MIT License; see LICENSE file for more
@@ -50,6 +50,16 @@ Description: ..
50
50
  Changes
51
51
  =======
52
52
 
53
+ Version 2.2.2 (2023-10-06)
54
+
55
+ - alembic rcp: set explicit dependency on pidstore create table
56
+
57
+ Version 2.2.1 (2023-10-02)
58
+
59
+ - facets: change caching strategy by caching each vocabulary by id. Replace
60
+ lru_cache with invenio-cache to ensure that cache expiration uses a TTL that
61
+ is correctly computed.
62
+
53
63
  Version 2.2.0 (2023-09-19)
54
64
 
55
65
  - facets: implement in-memory cache
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  #
3
- # Copyright (C) 2020-2022 CERN.
3
+ # Copyright (C) 2020-2023 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
@@ -10,6 +10,6 @@
10
10
 
11
11
  from .ext import InvenioVocabularies
12
12
 
13
- __version__ = "2.2.0"
13
+ __version__ = "2.2.2"
14
14
 
15
15
  __all__ = ("__version__", "InvenioVocabularies")
@@ -14,7 +14,7 @@ from alembic import op
14
14
  revision = "55a700f897b6"
15
15
  down_revision = "e1146238edd3"
16
16
  branch_labels = ()
17
- depends_on = None
17
+ depends_on = "999c62899c20"
18
18
 
19
19
 
20
20
  pids_table = sa.sql.table(
@@ -72,6 +72,7 @@ function CustomAwardForm({ deserializeFunder, selectedFunding }) {
72
72
  selectOnNavigation={false}
73
73
  required
74
74
  search={(options) => options}
75
+ isFocused
75
76
  onValueChange={({ formikProps }, selectedFundersArray) => {
76
77
  if (selectedFundersArray.length === 1) {
77
78
  const selectedFunder = selectedFundersArray[0];
@@ -14,20 +14,20 @@ from ...services.facets import VocabularyLabels, lazy_get_label
14
14
  class AffiliationsLabels(VocabularyLabels):
15
15
  """Fetching of vocabulary labels for facets."""
16
16
 
17
- def __init__(self, vocabulary, cache=True, cache_ttl=3600, service_name=None):
17
+ def __init__(self, vocabulary, cache=True, cache_ttl=3600, service_id=None):
18
18
  """Initialize the labels.
19
19
 
20
20
  :param vocabulary: the name of the vocabulary type.
21
21
  :param cache: use simple process in-memory cache when True.
22
22
  :param cache_ttl: cache expiration in seconds.
23
- :param service_name: the name of the registered service to be used
23
+ :param service_id: the id of the registered service to be used
24
24
  when fetching values for the vocabulary.
25
25
  """
26
26
  super().__init__(
27
27
  vocabulary,
28
28
  cache=cache,
29
29
  cache_ttl=cache_ttl,
30
- service_name="affiliations",
30
+ service_id="affiliations",
31
31
  )
32
32
  self.fields = ("id", "title") # not configurable
33
33
 
@@ -14,20 +14,20 @@ from ...services.facets import VocabularyLabels, lazy_get_label
14
14
  class FundersLabels(VocabularyLabels):
15
15
  """Fetching of vocabulary labels for facets."""
16
16
 
17
- def __init__(self, vocabulary, cache=True, cache_ttl=3600, service_name=None):
17
+ def __init__(self, vocabulary, cache=True, cache_ttl=3600, service_id=None):
18
18
  """Initialize the labels.
19
19
 
20
20
  :param vocabulary: the name of the vocabulary type.
21
21
  :param cache: use simple process in-memory cache when True.
22
22
  :param cache_ttl: cache expiration in seconds.
23
- :param service_name: the name of the registered service to be used
23
+ :param service_id: the id of the registered service to be used
24
24
  when fetching values for the vocabulary.
25
25
  """
26
26
  super().__init__(
27
27
  vocabulary,
28
28
  cache=cache,
29
29
  cache_ttl=cache_ttl,
30
- service_name="funders",
30
+ service_id="funders",
31
31
  )
32
32
  self.fields = ("id", "title", "country") # not configurable
33
33
 
@@ -0,0 +1,114 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # Copyright (C) 2021-2023 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
+ """Vocabulary facets."""
10
+
11
+ from flask_principal import AnonymousIdentity
12
+ from invenio_cache.decorators import cached_with_expiration
13
+ from invenio_i18n.ext import current_i18n
14
+ from invenio_records_resources.proxies import current_service_registry
15
+ from invenio_records_resources.services.errors import FacetNotFoundError
16
+ from marshmallow_utils.fields.babel import gettext_from_dict
17
+ from speaklater import make_lazy_string
18
+ from sqlalchemy.exc import NoResultFound
19
+
20
+ from ..proxies import current_service
21
+
22
+
23
+ def get_service(service_id):
24
+ """Get the service object by name.
25
+
26
+ It is required to access the registry lazily, to avoid "out of
27
+ application context" errors.
28
+ """
29
+ return current_service_registry.get(service_id) if service_id else current_service
30
+
31
+
32
+ def get_vocabs(service_id, type, fields, ids):
33
+ """Fetch vocabulary values by ids, using the service."""
34
+ service = get_service(service_id)
35
+ vocabs = service.read_many(
36
+ AnonymousIdentity(), type=type, ids=list(ids), fields=list(fields)
37
+ )
38
+ return list(vocabs.hits) # the service returns a generator
39
+
40
+
41
+ @cached_with_expiration
42
+ def get_cached_vocab(service_id, type, fields, id_):
43
+ """Cache vocabulary values by type in-memory."""
44
+ vocabs = get_vocabs(service_id, type, fields, [id_])
45
+ return vocabs[0] if vocabs else None
46
+
47
+
48
+ def lazy_get_label(vocab_item):
49
+ """Lazy evaluation of a localized vocabulary label."""
50
+ params = {"locale": current_i18n.locale, "default_locale": "en"}
51
+
52
+ return make_lazy_string(gettext_from_dict, vocab_item, **params)
53
+
54
+
55
+ class VocabularyLabels:
56
+ """Fetching of vocabulary labels for facets."""
57
+
58
+ def __init__(
59
+ self, vocabulary, cache=True, cache_ttl=3600, service_id=None, id_field="id"
60
+ ):
61
+ """Initialize the labels.
62
+
63
+ :param vocabulary: the name of the vocabulary type.
64
+ :param cache: use simple process in-memory cache when True.
65
+ :param cache_ttl: cache expiration in seconds.
66
+ :param service_id: the id of the registered service to be used
67
+ when fetching values for the vocabulary.
68
+ :param id_field: the name of the `id` field.
69
+ """
70
+ self.vocabulary = vocabulary
71
+ self.cache = cache
72
+ self.cache_ttl = cache_ttl
73
+ self.fields = ("id", "title") # not configurable
74
+ self.service_id = service_id
75
+ self.id_field = id_field
76
+
77
+ def _vocab_to_label(self, vocab):
78
+ """Returns the label string for a vocabulary entry."""
79
+ return lazy_get_label(vocab["title"])
80
+
81
+ def __call__(self, ids):
82
+ """Return the mapping when evaluated."""
83
+ if not ids:
84
+ return {}
85
+
86
+ labels = {}
87
+ try:
88
+ if self.cache:
89
+ for id_ in ids:
90
+ vocab = get_cached_vocab(
91
+ self.service_id,
92
+ self.vocabulary,
93
+ self.fields,
94
+ id_,
95
+ cache_ttl=self.cache_ttl,
96
+ )
97
+ if not vocab:
98
+ continue
99
+ labels[vocab[self.id_field]] = self._vocab_to_label(vocab)
100
+ else:
101
+ vocab_list = get_vocabs(
102
+ self.service_id,
103
+ self.vocabulary,
104
+ self.fields,
105
+ ids,
106
+ )
107
+ for vocab in vocab_list:
108
+ id_ = vocab[self.id_field]
109
+ if id_ in ids:
110
+ labels[id_] = self._vocab_to_label(vocab)
111
+ except NoResultFound:
112
+ raise FacetNotFoundError(self.vocabulary)
113
+
114
+ return labels
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: invenio-vocabularies
3
- Version: 2.2.0
3
+ Version: 2.2.2
4
4
  Summary: "Invenio module for managing vocabularies."
5
5
  Home-page: https://github.com/inveniosoftware/invenio-vocabularies
6
6
  Author: CERN
@@ -41,7 +41,7 @@ Description: ..
41
41
  https://invenio-vocabularies.readthedocs.io/
42
42
 
43
43
  ..
44
- Copyright (C) 2020 CERN.
44
+ Copyright (C) 2020-2023 CERN.
45
45
 
46
46
  Invenio-Vocabularies is free software; you can redistribute it and/or
47
47
  modify it under the terms of the MIT License; see LICENSE file for more
@@ -50,6 +50,16 @@ Description: ..
50
50
  Changes
51
51
  =======
52
52
 
53
+ Version 2.2.2 (2023-10-06)
54
+
55
+ - alembic rcp: set explicit dependency on pidstore create table
56
+
57
+ Version 2.2.1 (2023-10-02)
58
+
59
+ - facets: change caching strategy by caching each vocabulary by id. Replace
60
+ lru_cache with invenio-cache to ensure that cache expiration uses a TTL that
61
+ is correctly computed.
62
+
53
63
  Version 2.2.0 (2023-09-19)
54
64
 
55
65
  - facets: implement in-memory cache
@@ -13,7 +13,6 @@ from unittest.mock import patch
13
13
 
14
14
  import pytest
15
15
 
16
- from invenio_vocabularies.datastreams.datastreams import StreamEntry
17
16
  from invenio_vocabularies.datastreams.readers import BaseReader
18
17
  from invenio_vocabularies.datastreams.transformers import BaseTransformer
19
18
  from invenio_vocabularies.datastreams.writers import BaseWriter
@@ -12,7 +12,7 @@
12
12
  import pytest
13
13
 
14
14
  from invenio_vocabularies.records.api import Vocabulary
15
- from invenio_vocabularies.services.facets import VocabularyLabels, cached_vocabs
15
+ from invenio_vocabularies.services.facets import VocabularyLabels
16
16
 
17
17
 
18
18
  @pytest.fixture(scope="module")
@@ -75,28 +75,3 @@ def test_vocabulary_label_not_found(example_records):
75
75
 
76
76
  assert labels["eng"] == "English"
77
77
  assert not labels.get("glg") # search wont fail
78
-
79
-
80
- def test_lru_cache():
81
- # reset
82
- cached_vocabs.cache_clear()
83
- # 1st exec, cache miss
84
- assert cached_vocabs(None, "languages", ("eng", "glg"), ("id", "title"), ttl_hash=1)
85
- cache_info = cached_vocabs.cache_info()
86
- assert cache_info.hits == 0
87
- assert cache_info.misses == 1
88
- assert cache_info.currsize == 1
89
-
90
- # 2nd exec with same params, cache hit
91
- assert cached_vocabs(None, "languages", ("eng", "glg"), ("id", "title"), ttl_hash=1)
92
- cache_info = cached_vocabs.cache_info()
93
- assert cache_info.hits == 1
94
- assert cache_info.misses == 1
95
- assert cache_info.currsize == 1
96
-
97
- # 3rd exec with different ttl_hash to expire the cache, cache miss
98
- assert cached_vocabs(None, "languages", ("eng", "glg"), ("id", "title"), ttl_hash=2)
99
- cache_info = cached_vocabs.cache_info()
100
- assert cache_info.hits == 1
101
- assert cache_info.misses == 2
102
- assert cache_info.currsize == 2
@@ -1,135 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- #
3
- # Copyright (C) 2021-2022 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
- """Vocabulary facets."""
10
-
11
- import time
12
- from functools import lru_cache
13
-
14
- from flask_principal import AnonymousIdentity
15
- from invenio_i18n.ext import current_i18n
16
- from invenio_records_resources.proxies import current_service_registry
17
- from invenio_records_resources.services.errors import FacetNotFoundError
18
- from marshmallow_utils.fields.babel import gettext_from_dict
19
- from speaklater import make_lazy_string
20
- from sqlalchemy.exc import NoResultFound
21
-
22
- from ..proxies import current_service
23
-
24
-
25
- def get_service(service_name):
26
- """Get the service object by name.
27
-
28
- It is required to access the registry lazily, to avoid out of
29
- application context errors.
30
- """
31
- return (
32
- current_service_registry.get(service_name) if service_name else current_service
33
- )
34
-
35
-
36
- def get_vocabs(service_name, type, ids, fields):
37
- """Fetch vocabulary values by ids, using the service."""
38
- service = get_service(service_name)
39
- vocabs = service.read_many(AnonymousIdentity(), type=type, ids=ids, fields=fields)
40
- return list(vocabs.hits) # the service returns a generator
41
-
42
-
43
- def get_ttl_hash(seconds=3600):
44
- """Return the same value withing `seconds` time period. Default 1 hour."""
45
- return round(time.time() / seconds)
46
-
47
-
48
- @lru_cache(maxsize=32)
49
- def cached_vocabs(service_name, type, ids, fields, ttl_hash=None):
50
- """Cache vocabulary values by type with a simple process in-memory cache.
51
-
52
- This cache is meant to greatly optimize performance when getting the title of
53
- each facet, during searches, and to avoid accessing DB/Search each time.
54
- This cache suffer of a slower warm up at the first cache miss when each process is
55
- restarted. A data store cache could be also used as mitigation, with the drawback
56
- of the added network latency.
57
-
58
- `@lru_cache` is threadsafe. `maxsize` is set to 32, assuming that there are not more
59
- than 32 (multiple of 2 for optimization) different vocabularies types defined
60
- in the instance.
61
-
62
- The ttl_hash kwarg is necessary to make the cache expiring, by changing the hash key
63
- after the defined time.
64
- """
65
- return get_vocabs(service_name, type=type, ids=list(ids), fields=list(fields))
66
-
67
-
68
- def lazy_get_label(vocab_item):
69
- """Lazy evaluation of a localized vocabulary label."""
70
- params = {"locale": current_i18n.locale, "default_locale": "en"}
71
-
72
- return make_lazy_string(gettext_from_dict, vocab_item, **params)
73
-
74
-
75
- class VocabularyLabels:
76
- """Fetching of vocabulary labels for facets."""
77
-
78
- def __init__(
79
- self, vocabulary, cache=True, cache_ttl=3600, service_name=None, id_field="id"
80
- ):
81
- """Initialize the labels.
82
-
83
- :param vocabulary: the name of the vocabulary type.
84
- :param cache: use simple process in-memory cache when True.
85
- :param cache_ttl: cache expiration in seconds.
86
- :param service_name: the name of the registered service to be used
87
- when fetching values for the vocabulary.
88
- :param id_field: the name of the `id` field.
89
- """
90
- self.vocabulary = vocabulary
91
- self.cache = cache
92
- self.cache_ttl = cache_ttl
93
- self.fields = ("id", "title") # not configurable
94
- self.service_name = service_name
95
- self.id_field = id_field
96
-
97
- def _vocab_to_label(self, vocab):
98
- """Returns the label string for a vocabulary entry."""
99
- return lazy_get_label(vocab["title"])
100
-
101
- def __call__(self, ids):
102
- """Return the mapping when evaluated."""
103
- try:
104
- if self.cache:
105
- vocab_list = cached_vocabs(
106
- self.service_name,
107
- self.vocabulary,
108
- tuple(ids),
109
- self.fields,
110
- ttl_hash=get_ttl_hash(seconds=self.cache_ttl),
111
- )
112
- else:
113
- vocab_list = get_vocabs(
114
- self.service_name,
115
- self.vocabulary,
116
- ids,
117
- list(self.fields),
118
- )
119
- except NoResultFound:
120
- raise FacetNotFoundError(self.vocabulary)
121
-
122
- labels = {}
123
- ids = set(ids)
124
- seen = set()
125
- for vocab in vocab_list:
126
- # cannot loop over ids because vocab id is inside each item
127
- if len(ids) == len(seen):
128
- break
129
-
130
- id_ = vocab[self.id_field]
131
- if id_ in ids:
132
- labels[id_] = self._vocab_to_label(vocab)
133
- seen.add(id_)
134
-
135
- return labels