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.
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/CHANGES.rst +11 -1
- {invenio-vocabularies-2.2.0/invenio_vocabularies.egg-info → invenio-vocabularies-2.2.2}/PKG-INFO +12 -2
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/__init__.py +2 -2
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/alembic/55a700f897b6_add_names_and_afiliations_pid_column.py +1 -1
- {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
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/affiliations/facets.py +3 -3
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/funders/facets.py +3 -3
- invenio-vocabularies-2.2.2/invenio_vocabularies/services/facets.py +114 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/af/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/ar/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/bg/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/ca/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/cs/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/da/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/de/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/de_AT/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/de_DE/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/el/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/en/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/en_AT/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/en_HU/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/es/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/es_CU/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/es_MX/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/et/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/et_EE/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/fa/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/fa_IR/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/fr/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/fr_CI/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/fr_FR/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/gl/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/hi_IN/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/hr/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/hu/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/hu_HU/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/it/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/ja/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/ka/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/lt/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/ne/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/no/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/pl/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/pt/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/ro/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/ru/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/rw/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/sk/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/sv/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/sv_SE/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/tr/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/uk/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/uk_UA/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/zh_CN/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/zh_TW/LC_MESSAGES/messages.mo +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2/invenio_vocabularies.egg-info}/PKG-INFO +12 -2
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/resources/test_tasks_resources.py +0 -1
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/services/test_labels.py +1 -26
- invenio-vocabularies-2.2.0/invenio_vocabularies/services/facets.py +0 -135
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/.dockerignore +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/.editorconfig +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/.git-blame-ignore-revs +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/.github/workflows/i18n-pull.yml +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/.github/workflows/i18n-push.yml +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/.github/workflows/pypi-publish.yml +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/.github/workflows/tests.yml +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/.tx/config +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/AUTHORS.rst +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/CONTRIBUTING.rst +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/INSTALL.rst +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/LICENSE +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/MANIFEST.in +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/README.rst +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/babel.ini +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/docs/Makefile +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/docs/api.rst +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/docs/authors.rst +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/docs/changes.rst +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/docs/conf.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/docs/configuration.rst +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/docs/contributing.rst +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/docs/index.rst +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/docs/installation.rst +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/docs/license.rst +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/docs/make.bat +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/docs/requirements.txt +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/docs/usage.rst +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/gen-migration.sh +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/alembic/17c703ce1eb7_create_names_table.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/alembic/4a9a4fd235f8_create_vocabulary_schemes.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/alembic/4f365fced43f_create_vocabularies_tables.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/alembic/6312f33645c1_create_affiliations_table.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/alembic/676dd587542d_create_funders_vocabulary_table.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/alembic/8ff82dfb0be8_create_vocabularies_branch.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/alembic/__init__.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/alembic/e1146238edd3_create_awards_table.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/.eslintrc.yml +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/.prettierrc +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/index.js +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/package.json +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/contrib/index.js +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/index.js +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/i18next-scanner.config.js +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/i18next.js +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/index.js +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/package.json +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/scripts/compileCatalog.js +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/scripts/initCatalog.js +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/cli.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/config.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/__init__.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/affiliations/__init__.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/affiliations/affiliations.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/affiliations/api.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/affiliations/config.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/affiliations/jsonschemas/__init__.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/affiliations/jsonschemas/affiliations/affiliation-v1.0.0.json +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/affiliations/mappings/__init__.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/affiliations/mappings/os-v1/__init__.py +0 -0
- {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
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/affiliations/mappings/os-v2/__init__.py +0 -0
- {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
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/affiliations/mappings/v7/__init__.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/affiliations/mappings/v7/affiliations/affiliation-v1.0.0.json +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/affiliations/models.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/affiliations/resources.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/affiliations/schema.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/affiliations/services.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/awards/__init__.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/awards/api.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/awards/awards.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/awards/config.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/awards/datastreams.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/awards/jsonschemas/__init__.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/awards/jsonschemas/awards/award-v1.0.0.json +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/awards/mappings/__init__.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/awards/mappings/os-v1/__init__.py +0 -0
- {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
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/awards/mappings/os-v2/__init__.py +0 -0
- {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
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/awards/mappings/v7/__init__.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/awards/mappings/v7/awards/award-v1.0.0.json +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/awards/models.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/awards/resources.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/awards/schema.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/awards/serializer.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/awards/services.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/funders/__init__.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/funders/api.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/funders/config.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/funders/datastreams.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/funders/funders.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/funders/jsonschemas/__init__.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/funders/jsonschemas/funders/funder-v1.0.0.json +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/funders/mappings/__init__.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/funders/mappings/os-v1/__init__.py +0 -0
- {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
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/funders/mappings/os-v2/__init__.py +0 -0
- {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
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/funders/mappings/v7/__init__.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/funders/mappings/v7/funders/funder-v1.0.0.json +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/funders/models.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/funders/resources.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/funders/schema.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/funders/serializer.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/funders/services.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/names/__init__.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/names/api.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/names/config.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/names/datastreams.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/names/jsonschemas/__init__.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/names/jsonschemas/names/name-v1.0.0.json +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/names/mappings/__init__.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/names/mappings/os-v1/__init__.py +0 -0
- {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
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/names/mappings/os-v2/__init__.py +0 -0
- {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
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/names/mappings/v7/__init__.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/names/mappings/v7/names/name-v1.0.0.json +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/names/models.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/names/names.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/names/resources.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/names/schema.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/names/services.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/subjects/__init__.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/subjects/api.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/subjects/config.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/subjects/facets.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/subjects/jsonschemas/__init__.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/subjects/jsonschemas/subjects/subject-v1.0.0.json +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/subjects/mappings/__init__.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/subjects/mappings/os-v1/__init__.py +0 -0
- {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
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/subjects/mappings/os-v2/__init__.py +0 -0
- {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
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/subjects/mappings/v7/__init__.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/subjects/mappings/v7/subjects/subject-v1.0.0.json +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/subjects/models.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/subjects/resources.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/subjects/schema.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/subjects/services.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/contrib/subjects/subjects.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/datastreams/__init__.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/datastreams/datastreams.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/datastreams/errors.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/datastreams/factories.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/datastreams/readers.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/datastreams/transformers.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/datastreams/writers.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/ext.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/fixtures.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/proxies.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/records/__init__.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/records/api.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/records/jsonschemas/__init__.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/records/jsonschemas/vocabularies/definitions-v1.0.0.json +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/records/jsonschemas/vocabularies/vocabulary-v1.0.0.json +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/records/mappings/__init__.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/records/mappings/os-v1/__init__.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/records/mappings/os-v1/vocabularies/vocabulary-v1.0.0.json +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/records/mappings/os-v2/__init__.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/records/mappings/os-v2/vocabularies/vocabulary-v1.0.0.json +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/records/mappings/v7/__init__.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/records/mappings/v7/vocabularies/vocabulary-v1.0.0.json +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/records/models.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/records/pidprovider.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/records/systemfields/__init__.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/records/systemfields/pid.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/records/systemfields/relations.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/resources/__init__.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/resources/resource.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/resources/schema.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/resources/serializer.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/services/__init__.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/services/components.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/services/custom_fields/__init__.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/services/custom_fields/vocabulary.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/services/permissions.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/services/querystr.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/services/schema.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/services/service.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/services/tasks.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/af/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/ar/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/bg/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/ca/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/cs/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/da/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/de/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/de_AT/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/de_DE/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/el/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/en/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/en_AT/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/en_HU/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/es/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/es_CU/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/es_MX/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/et/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/et_EE/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/fa/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/fa_IR/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/fr/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/fr_CI/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/fr_FR/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/gl/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/hi_IN/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/hr/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/hu/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/hu_HU/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/it/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/ja/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/ka/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/lt/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/messages.pot +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/ne/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/no/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/pl/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/pt/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/ro/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/ru/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/rw/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/sk/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/sv/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/sv_SE/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/tr/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/uk/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/uk_UA/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/zh_CN/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/translations/zh_TW/LC_MESSAGES/messages.po +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/views.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies/webpack.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies.egg-info/SOURCES.txt +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies.egg-info/dependency_links.txt +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies.egg-info/entry_points.txt +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies.egg-info/not-zip-safe +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies.egg-info/requires.txt +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/invenio_vocabularies.egg-info/top_level.txt +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/pyproject.toml +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/requirements-feature.txt +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/run-js-linter.sh +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/run-tests.sh +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/setup.cfg +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/setup.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/conftest.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/affiliations/conftest.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/affiliations/test_affiliations_api.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/affiliations/test_affiliations_jsonschema.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/affiliations/test_affiliations_resource.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/affiliations/test_affiliations_schema.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/affiliations/test_affiliations_service.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/awards/conftest.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/awards/test_awards_api.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/awards/test_awards_datastreams.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/awards/test_awards_jsonschema.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/awards/test_awards_resource.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/awards/test_awards_schema.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/awards/test_awards_service.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/funders/conftest.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/funders/test_funders_api.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/funders/test_funders_datastreams.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/funders/test_funders_jsonschema.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/funders/test_funders_resource.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/funders/test_funders_schema.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/funders/test_funders_service.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/names/conftest.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/names/test_names_api.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/names/test_names_datastreams.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/names/test_names_jsonschema.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/names/test_names_resource.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/names/test_names_schema.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/names/test_names_service.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/subjects/conftest.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/subjects/test_subjects_api.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/subjects/test_subjects_facets.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/subjects/test_subjects_jsonschema.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/subjects/test_subjects_resource.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/subjects/test_subjects_schema.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/contrib/subjects/test_subjects_service.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/custom_fields/test_custom_fields.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/datastreams/conftest.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/datastreams/test_datastreams.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/datastreams/test_fixtures.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/datastreams/test_readers.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/datastreams/test_transformers.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/datastreams/test_writers.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/datastreams/vocabularies.yaml +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/mock_module/__init__.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/mock_module/api.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/mock_module/jsonschemas/__init__.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/mock_module/jsonschemas/records/record-v1.0.0.json +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/mock_module/mappings/__init__.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/mock_module/mappings/v6/__init__.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/mock_module/mappings/v6/records/record-v1.0.0.json +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/mock_module/mappings/v7/__init__.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/mock_module/mappings/v7/records/record-v1.0.0.json +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/mock_module/models.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/records/conftest.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/records/test_api.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/records/test_jsonschema.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/records/test_models.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/records/test_relationship.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/resources/conftest.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/resources/test_resources_get.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/resources/test_resources_l10n.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/resources/test_resources_search.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/services/conftest.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/services/test_permissions.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/services/test_schema.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/services/test_service.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/test_alembic.py +0 -0
- {invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/test_cli.py +0 -0
- {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
|
{invenio-vocabularies-2.2.0/invenio_vocabularies.egg-info → invenio-vocabularies-2.2.2}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: invenio-vocabularies
|
|
3
|
-
Version: 2.2.
|
|
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-
|
|
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.
|
|
13
|
+
__version__ = "2.2.2"
|
|
14
14
|
|
|
15
15
|
__all__ = ("__version__", "InvenioVocabularies")
|
|
@@ -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,
|
|
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
|
|
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
|
-
|
|
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,
|
|
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
|
|
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
|
-
|
|
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
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
{invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2/invenio_vocabularies.egg-info}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: invenio-vocabularies
|
|
3
|
-
Version: 2.2.
|
|
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
|
{invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/tests/resources/test_tasks_resources.py
RENAMED
|
@@ -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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{invenio-vocabularies-2.2.0 → invenio-vocabularies-2.2.2}/.github/workflows/pypi-publish.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|