invenio-vocabularies 5.1.0__py2.py3-none-any.whl → 6.1.0__py2.py3-none-any.whl
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/__init__.py +1 -1
- invenio_vocabularies/cli.py +7 -2
- invenio_vocabularies/config.py +13 -0
- invenio_vocabularies/contrib/affiliations/datastreams.py +95 -1
- invenio_vocabularies/contrib/awards/awards.py +15 -4
- invenio_vocabularies/contrib/awards/datastreams.py +156 -60
- invenio_vocabularies/contrib/awards/jsonschemas/awards/award-v1.0.0.json +35 -0
- invenio_vocabularies/contrib/awards/mappings/os-v1/awards/award-v1.0.0.json +44 -1
- invenio_vocabularies/contrib/awards/mappings/os-v2/awards/award-v1.0.0.json +44 -1
- invenio_vocabularies/contrib/awards/mappings/v7/awards/award-v1.0.0.json +44 -1
- invenio_vocabularies/contrib/awards/schema.py +16 -1
- invenio_vocabularies/contrib/awards/serializer.py +8 -1
- invenio_vocabularies/contrib/common/openaire/__init__.py +9 -0
- invenio_vocabularies/contrib/common/openaire/datastreams.py +84 -0
- invenio_vocabularies/contrib/common/ror/datastreams.py +20 -7
- invenio_vocabularies/contrib/names/datastreams.py +12 -2
- invenio_vocabularies/contrib/names/names.py +4 -3
- invenio_vocabularies/contrib/names/permissions.py +20 -0
- invenio_vocabularies/contrib/subjects/datastreams.py +12 -6
- invenio_vocabularies/contrib/subjects/euroscivoc/__init__.py +9 -0
- invenio_vocabularies/contrib/subjects/euroscivoc/datastreams.py +171 -0
- invenio_vocabularies/contrib/subjects/jsonschemas/subjects/subject-v1.0.0.json +16 -0
- invenio_vocabularies/contrib/subjects/mappings/os-v1/subjects/subject-v1.0.0.json +14 -0
- invenio_vocabularies/contrib/subjects/mappings/os-v2/subjects/subject-v1.0.0.json +14 -0
- invenio_vocabularies/contrib/subjects/mappings/v7/subjects/subject-v1.0.0.json +14 -0
- invenio_vocabularies/contrib/subjects/mesh/__init__.py +9 -0
- invenio_vocabularies/contrib/subjects/schema.py +30 -6
- invenio_vocabularies/datastreams/readers.py +15 -4
- invenio_vocabularies/datastreams/transformers.py +15 -4
- invenio_vocabularies/datastreams/writers.py +44 -12
- invenio_vocabularies/factories.py +30 -0
- invenio_vocabularies/jobs.py +88 -0
- {invenio_vocabularies-5.1.0.dist-info → invenio_vocabularies-6.1.0.dist-info}/METADATA +16 -1
- {invenio_vocabularies-5.1.0.dist-info → invenio_vocabularies-6.1.0.dist-info}/RECORD +39 -32
- {invenio_vocabularies-5.1.0.dist-info → invenio_vocabularies-6.1.0.dist-info}/entry_points.txt +3 -0
- {invenio_vocabularies-5.1.0.dist-info → invenio_vocabularies-6.1.0.dist-info}/AUTHORS.rst +0 -0
- {invenio_vocabularies-5.1.0.dist-info → invenio_vocabularies-6.1.0.dist-info}/LICENSE +0 -0
- {invenio_vocabularies-5.1.0.dist-info → invenio_vocabularies-6.1.0.dist-info}/WHEEL +0 -0
- {invenio_vocabularies-5.1.0.dist-info → invenio_vocabularies-6.1.0.dist-info}/top_level.txt +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
#
|
|
3
3
|
# Copyright (C) 2021 Northwestern University.
|
|
4
|
-
# Copyright (C) 2021-
|
|
4
|
+
# Copyright (C) 2021-2024 CERN.
|
|
5
5
|
# Copyright (C) 2024 University of Münster.
|
|
6
6
|
#
|
|
7
7
|
# Invenio-Vocabularies is free software; you can redistribute it and/or
|
|
@@ -10,15 +10,19 @@
|
|
|
10
10
|
|
|
11
11
|
"""Subjects schema."""
|
|
12
12
|
|
|
13
|
+
from functools import partial
|
|
14
|
+
|
|
13
15
|
from invenio_i18n import get_locale
|
|
14
|
-
from marshmallow import fields, pre_load
|
|
15
|
-
from marshmallow_utils.fields import SanitizedUnicode
|
|
16
|
+
from marshmallow import Schema, fields, pre_load
|
|
17
|
+
from marshmallow_utils.fields import IdentifierSet, SanitizedUnicode
|
|
18
|
+
from marshmallow_utils.schemas import IdentifierSchema
|
|
16
19
|
|
|
17
20
|
from ...services.schema import (
|
|
18
21
|
BaseVocabularySchema,
|
|
19
22
|
ContribVocabularyRelationSchema,
|
|
20
23
|
i18n_strings,
|
|
21
24
|
)
|
|
25
|
+
from .config import subject_schemes
|
|
22
26
|
|
|
23
27
|
|
|
24
28
|
class SubjectSchema(BaseVocabularySchema):
|
|
@@ -31,6 +35,16 @@ class SubjectSchema(BaseVocabularySchema):
|
|
|
31
35
|
scheme = SanitizedUnicode(required=True)
|
|
32
36
|
subject = SanitizedUnicode(required=True)
|
|
33
37
|
title = i18n_strings
|
|
38
|
+
props = fields.Dict(keys=SanitizedUnicode(), values=SanitizedUnicode())
|
|
39
|
+
identifiers = IdentifierSet(
|
|
40
|
+
fields.Nested(
|
|
41
|
+
partial(
|
|
42
|
+
IdentifierSchema,
|
|
43
|
+
allowed_schemes=subject_schemes,
|
|
44
|
+
identifier_required=False,
|
|
45
|
+
)
|
|
46
|
+
)
|
|
47
|
+
)
|
|
34
48
|
synonyms = fields.List(SanitizedUnicode())
|
|
35
49
|
|
|
36
50
|
@pre_load
|
|
@@ -48,6 +62,16 @@ class SubjectRelationSchema(ContribVocabularyRelationSchema):
|
|
|
48
62
|
ftf_name = "subject"
|
|
49
63
|
parent_field_name = "subjects"
|
|
50
64
|
subject = SanitizedUnicode()
|
|
51
|
-
scheme = SanitizedUnicode()
|
|
52
|
-
title =
|
|
53
|
-
|
|
65
|
+
scheme = SanitizedUnicode(dump_only=True)
|
|
66
|
+
title = fields.Dict(dump_only=True)
|
|
67
|
+
props = fields.Dict(dump_only=True)
|
|
68
|
+
identifiers = IdentifierSet(
|
|
69
|
+
fields.Nested(
|
|
70
|
+
partial(
|
|
71
|
+
IdentifierSchema,
|
|
72
|
+
allowed_schemes=subject_schemes,
|
|
73
|
+
identifier_required=False,
|
|
74
|
+
)
|
|
75
|
+
)
|
|
76
|
+
)
|
|
77
|
+
synonyms = fields.List(SanitizedUnicode(), dump_only=True)
|
|
@@ -224,19 +224,30 @@ class CSVReader(BaseReader):
|
|
|
224
224
|
class XMLReader(BaseReader):
|
|
225
225
|
"""XML reader."""
|
|
226
226
|
|
|
227
|
+
def __init__(self, root_element=None, *args, **kwargs):
|
|
228
|
+
"""Constructor."""
|
|
229
|
+
self.root_element = root_element
|
|
230
|
+
super().__init__(*args, **kwargs)
|
|
231
|
+
|
|
227
232
|
def _iter(self, fp, *args, **kwargs):
|
|
228
233
|
"""Read and parse an XML file to dict."""
|
|
229
234
|
# NOTE: We parse HTML, to skip XML validation and strip XML namespaces
|
|
230
235
|
record = None
|
|
231
236
|
try:
|
|
232
237
|
xml_tree = fromstring(fp)
|
|
233
|
-
|
|
238
|
+
xml_dict = etree_to_dict(xml_tree)
|
|
234
239
|
except Exception as e:
|
|
235
240
|
xml_tree = html_parse(fp).getroot()
|
|
236
|
-
|
|
241
|
+
xml_dict = etree_to_dict(xml_tree)["html"]["body"]
|
|
237
242
|
|
|
238
|
-
if
|
|
239
|
-
|
|
243
|
+
if self.root_element:
|
|
244
|
+
record = xml_dict.get(self.root_element)
|
|
245
|
+
if not record:
|
|
246
|
+
raise ReaderError(
|
|
247
|
+
f"Root element '{self.root_element}' not found in XML entry."
|
|
248
|
+
)
|
|
249
|
+
else:
|
|
250
|
+
record = xml_dict
|
|
240
251
|
|
|
241
252
|
yield record
|
|
242
253
|
|
|
@@ -32,6 +32,11 @@ class BaseTransformer(ABC):
|
|
|
32
32
|
class XMLTransformer(BaseTransformer):
|
|
33
33
|
"""XML transformer."""
|
|
34
34
|
|
|
35
|
+
def __init__(self, root_element=None, *args, **kwargs):
|
|
36
|
+
"""Initializes the transformer."""
|
|
37
|
+
self.root_element = root_element
|
|
38
|
+
super().__init__(*args, **kwargs)
|
|
39
|
+
|
|
35
40
|
@classmethod
|
|
36
41
|
def _xml_to_etree(cls, xml):
|
|
37
42
|
"""Converts XML to a lxml etree."""
|
|
@@ -43,10 +48,16 @@ class XMLTransformer(BaseTransformer):
|
|
|
43
48
|
Requires the root element to be named "record".
|
|
44
49
|
"""
|
|
45
50
|
xml_tree = self._xml_to_etree(stream_entry.entry)
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
if
|
|
49
|
-
|
|
51
|
+
xml_dict = etree_to_dict(xml_tree)["html"]["body"]
|
|
52
|
+
|
|
53
|
+
if self.root_element:
|
|
54
|
+
record = xml_dict.get(self.root_element)
|
|
55
|
+
if not record:
|
|
56
|
+
raise TransformerError(
|
|
57
|
+
f"Root element '{self.root_element}' not found in XML entry."
|
|
58
|
+
)
|
|
59
|
+
else:
|
|
60
|
+
record = xml_dict
|
|
50
61
|
|
|
51
62
|
stream_entry.entry = record
|
|
52
63
|
return stream_entry
|
|
@@ -13,10 +13,11 @@ from pathlib import Path
|
|
|
13
13
|
|
|
14
14
|
import yaml
|
|
15
15
|
from invenio_access.permissions import system_identity
|
|
16
|
-
from invenio_pidstore.errors import PIDAlreadyExists
|
|
16
|
+
from invenio_pidstore.errors import PIDAlreadyExists, PIDDoesNotExistError
|
|
17
17
|
from invenio_records.systemfields.relations.errors import InvalidRelationValue
|
|
18
18
|
from invenio_records_resources.proxies import current_service_registry
|
|
19
19
|
from marshmallow import ValidationError
|
|
20
|
+
from sqlalchemy.exc import NoResultFound
|
|
20
21
|
|
|
21
22
|
from .datastreams import StreamEntry
|
|
22
23
|
from .errors import WriterError
|
|
@@ -55,12 +56,15 @@ class BaseWriter(ABC):
|
|
|
55
56
|
class ServiceWriter(BaseWriter):
|
|
56
57
|
"""Writes the entries to an RDM instance using a Service object."""
|
|
57
58
|
|
|
58
|
-
def __init__(
|
|
59
|
+
def __init__(
|
|
60
|
+
self, service_or_name, *args, identity=None, insert=True, update=False, **kwargs
|
|
61
|
+
):
|
|
59
62
|
"""Constructor.
|
|
60
63
|
|
|
61
64
|
:param service_or_name: a service instance or a key of the
|
|
62
65
|
service registry.
|
|
63
66
|
:param identity: access identity.
|
|
67
|
+
:param insert: if True it will insert records which do not exist.
|
|
64
68
|
:param update: if True it will update records if they exist.
|
|
65
69
|
"""
|
|
66
70
|
if isinstance(service_or_name, str):
|
|
@@ -68,6 +72,7 @@ class ServiceWriter(BaseWriter):
|
|
|
68
72
|
|
|
69
73
|
self._service = service_or_name
|
|
70
74
|
self._identity = identity or system_identity
|
|
75
|
+
self._insert = insert
|
|
71
76
|
self._update = update
|
|
72
77
|
|
|
73
78
|
super().__init__(*args, **kwargs)
|
|
@@ -79,20 +84,47 @@ class ServiceWriter(BaseWriter):
|
|
|
79
84
|
def _resolve(self, id_):
|
|
80
85
|
return self._service.read(self._identity, id_)
|
|
81
86
|
|
|
87
|
+
def _do_update(self, entry):
|
|
88
|
+
vocab_id = self._entry_id(entry)
|
|
89
|
+
current = self._resolve(vocab_id)
|
|
90
|
+
combined_dict = current.to_dict()
|
|
91
|
+
|
|
92
|
+
# Update fields from entry
|
|
93
|
+
for key, value in entry.items():
|
|
94
|
+
if key in combined_dict:
|
|
95
|
+
if isinstance(combined_dict[key], list) and isinstance(value, list):
|
|
96
|
+
combined_dict[key].extend(
|
|
97
|
+
item for item in value if item not in combined_dict[key]
|
|
98
|
+
)
|
|
99
|
+
else:
|
|
100
|
+
combined_dict[key] = value
|
|
101
|
+
else:
|
|
102
|
+
combined_dict[key] = value
|
|
103
|
+
|
|
104
|
+
return StreamEntry(
|
|
105
|
+
self._service.update(self._identity, vocab_id, combined_dict)
|
|
106
|
+
)
|
|
107
|
+
|
|
82
108
|
def write(self, stream_entry, *args, **kwargs):
|
|
83
109
|
"""Writes the input entry using a given service."""
|
|
84
110
|
entry = stream_entry.entry
|
|
111
|
+
|
|
85
112
|
try:
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
self.
|
|
113
|
+
if self._insert:
|
|
114
|
+
try:
|
|
115
|
+
return StreamEntry(self._service.create(self._identity, entry))
|
|
116
|
+
except PIDAlreadyExists:
|
|
117
|
+
if not self._update:
|
|
118
|
+
raise WriterError([f"Vocabulary entry already exists: {entry}"])
|
|
119
|
+
return self._do_update(entry)
|
|
120
|
+
elif self._update:
|
|
121
|
+
try:
|
|
122
|
+
return self._do_update(entry)
|
|
123
|
+
except (NoResultFound, PIDDoesNotExistError):
|
|
124
|
+
raise WriterError([f"Vocabulary entry does not exist: {entry}"])
|
|
125
|
+
else:
|
|
126
|
+
raise WriterError(
|
|
127
|
+
["Writer wrongly configured to not insert and to not update"]
|
|
96
128
|
)
|
|
97
129
|
|
|
98
130
|
except ValidationError as err:
|
|
@@ -16,7 +16,13 @@ from invenio_records_resources.proxies import current_service_registry
|
|
|
16
16
|
from .contrib.affiliations.datastreams import (
|
|
17
17
|
DATASTREAM_CONFIG as affiliations_ds_config,
|
|
18
18
|
)
|
|
19
|
+
from .contrib.affiliations.datastreams import (
|
|
20
|
+
DATASTREAM_CONFIG_OPENAIRE as affiliations_openaire_ds_config,
|
|
21
|
+
)
|
|
19
22
|
from .contrib.awards.datastreams import DATASTREAM_CONFIG as awards_ds_config
|
|
23
|
+
from .contrib.awards.datastreams import (
|
|
24
|
+
DATASTREAM_CONFIG_CORDIS as awards_cordis_ds_config,
|
|
25
|
+
)
|
|
20
26
|
from .contrib.funders.datastreams import DATASTREAM_CONFIG as funders_ds_config
|
|
21
27
|
from .contrib.names.datastreams import DATASTREAM_CONFIG as names_ds_config
|
|
22
28
|
from .contrib.subjects.datastreams import DATASTREAM_CONFIG as subjects_ds_config
|
|
@@ -84,6 +90,17 @@ class AwardsVocabularyConfig(VocabularyConfig):
|
|
|
84
90
|
raise NotImplementedError("Service not implemented for Awards")
|
|
85
91
|
|
|
86
92
|
|
|
93
|
+
class AwardsCordisVocabularyConfig(VocabularyConfig):
|
|
94
|
+
"""Awards Vocabulary Config."""
|
|
95
|
+
|
|
96
|
+
config = awards_cordis_ds_config
|
|
97
|
+
vocabulary_name = "awards:cordis"
|
|
98
|
+
|
|
99
|
+
def get_service(self):
|
|
100
|
+
"""Get the service for the vocabulary."""
|
|
101
|
+
raise NotImplementedError("Service not implemented for CORDIS Awards")
|
|
102
|
+
|
|
103
|
+
|
|
87
104
|
class AffiliationsVocabularyConfig(VocabularyConfig):
|
|
88
105
|
"""Affiliations Vocabulary Config."""
|
|
89
106
|
|
|
@@ -95,13 +112,26 @@ class AffiliationsVocabularyConfig(VocabularyConfig):
|
|
|
95
112
|
raise NotImplementedError("Service not implemented for Affiliations")
|
|
96
113
|
|
|
97
114
|
|
|
115
|
+
class AffiliationsOpenAIREVocabularyConfig(VocabularyConfig):
|
|
116
|
+
"""OpenAIRE Affiliations Vocabulary Config."""
|
|
117
|
+
|
|
118
|
+
config = affiliations_openaire_ds_config
|
|
119
|
+
vocabulary_name = "affiliations:openaire"
|
|
120
|
+
|
|
121
|
+
def get_service(self):
|
|
122
|
+
"""Get the service for the vocabulary."""
|
|
123
|
+
raise NotImplementedError("Service not implemented for OpenAIRE Affiliations")
|
|
124
|
+
|
|
125
|
+
|
|
98
126
|
def get_vocabulary_config(vocabulary):
|
|
99
127
|
"""Factory function to get the appropriate Vocabulary Config."""
|
|
100
128
|
vocab_config = {
|
|
101
129
|
"names": NamesVocabularyConfig,
|
|
102
130
|
"funders": FundersVocabularyConfig,
|
|
103
131
|
"awards": AwardsVocabularyConfig,
|
|
132
|
+
"awards:cordis": AwardsCordisVocabularyConfig,
|
|
104
133
|
"affiliations": AffiliationsVocabularyConfig,
|
|
134
|
+
"affiliations:openaire": AffiliationsOpenAIREVocabularyConfig,
|
|
105
135
|
"subjects": SubjectsVocabularyConfig,
|
|
106
136
|
}
|
|
107
137
|
return vocab_config.get(vocabulary, VocabularyConfig)()
|
|
@@ -0,0 +1,88 @@
|
|
|
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
|
+
"""Jobs module."""
|
|
10
|
+
|
|
11
|
+
import datetime
|
|
12
|
+
from datetime import timezone
|
|
13
|
+
|
|
14
|
+
from invenio_i18n import gettext as _
|
|
15
|
+
from invenio_jobs.jobs import JobType
|
|
16
|
+
from marshmallow import Schema, fields
|
|
17
|
+
from marshmallow_utils.fields import TZDateTime
|
|
18
|
+
|
|
19
|
+
from invenio_vocabularies.services.tasks import process_datastream
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class ArgsSchema(Schema):
|
|
23
|
+
"""Schema of task input arguments."""
|
|
24
|
+
|
|
25
|
+
since = TZDateTime(
|
|
26
|
+
timezone=timezone.utc,
|
|
27
|
+
format="iso",
|
|
28
|
+
metadata={
|
|
29
|
+
"description": _(
|
|
30
|
+
"YYYY-MM-DD HH:mm format. "
|
|
31
|
+
"Leave field empty if it should continue since last successful run."
|
|
32
|
+
)
|
|
33
|
+
},
|
|
34
|
+
)
|
|
35
|
+
job_arg_schema = fields.String(
|
|
36
|
+
metadata={"type": "hidden"},
|
|
37
|
+
dump_default="ArgsSchema",
|
|
38
|
+
load_default="ArgsSchema",
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
class ProcessDataStreamJob(JobType):
|
|
43
|
+
"""Generic process data stream job type."""
|
|
44
|
+
|
|
45
|
+
arguments_schema = ArgsSchema
|
|
46
|
+
task = process_datastream
|
|
47
|
+
id = None
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
class ProcessRORAffiliationsJob(ProcessDataStreamJob):
|
|
51
|
+
"""Process ROR affiliations datastream registered task."""
|
|
52
|
+
|
|
53
|
+
description = "Process ROR affiliations"
|
|
54
|
+
title = "Load ROR affiliations"
|
|
55
|
+
id = "process_ror_affiliations"
|
|
56
|
+
|
|
57
|
+
@classmethod
|
|
58
|
+
def default_args(cls, job_obj, since=None, **kwargs):
|
|
59
|
+
"""Generate default job arguments here."""
|
|
60
|
+
if since is None and job_obj.last_runs["success"]:
|
|
61
|
+
since = job_obj.last_runs["success"].started_at
|
|
62
|
+
else:
|
|
63
|
+
since = datetime.datetime.now()
|
|
64
|
+
|
|
65
|
+
return {
|
|
66
|
+
"config": {
|
|
67
|
+
"readers": [
|
|
68
|
+
{
|
|
69
|
+
"args": {"since": since},
|
|
70
|
+
"type": "ror-http",
|
|
71
|
+
},
|
|
72
|
+
{"args": {"regex": "_schema_v2\\.json$"}, "type": "zip"},
|
|
73
|
+
{"type": "json"},
|
|
74
|
+
],
|
|
75
|
+
"writers": [
|
|
76
|
+
{
|
|
77
|
+
"args": {
|
|
78
|
+
"writer": {
|
|
79
|
+
"type": "affiliations-service",
|
|
80
|
+
"args": {"update": True},
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
"type": "async",
|
|
84
|
+
}
|
|
85
|
+
],
|
|
86
|
+
"transformers": [{"type": "ror-affiliations"}],
|
|
87
|
+
}
|
|
88
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: invenio-vocabularies
|
|
3
|
-
Version:
|
|
3
|
+
Version: 6.1.0
|
|
4
4
|
Summary: Invenio module for managing vocabularies.
|
|
5
5
|
Home-page: https://github.com/inveniosoftware/invenio-vocabularies
|
|
6
6
|
Author: CERN
|
|
@@ -13,9 +13,11 @@ Requires-Python: >=3.7
|
|
|
13
13
|
Requires-Dist: invenio-i18n <3.0.0,>=2.0.0
|
|
14
14
|
Requires-Dist: invenio-records-resources <7.0.0,>=6.0.0
|
|
15
15
|
Requires-Dist: invenio-administration <3.0.0,>=2.0.0
|
|
16
|
+
Requires-Dist: invenio-jobs <2.0.0,>=1.0.0
|
|
16
17
|
Requires-Dist: lxml >=4.5.0
|
|
17
18
|
Requires-Dist: PyYAML >=5.4.1
|
|
18
19
|
Requires-Dist: regex >=2024.7.24
|
|
20
|
+
Requires-Dist: rdflib >=7.0.0
|
|
19
21
|
Provides-Extra: elasticsearch7
|
|
20
22
|
Requires-Dist: invenio-search[elasticsearch7] <3.0.0,>=2.1.0 ; extra == 'elasticsearch7'
|
|
21
23
|
Provides-Extra: mysql
|
|
@@ -81,6 +83,19 @@ https://invenio-vocabularies.readthedocs.io/
|
|
|
81
83
|
Changes
|
|
82
84
|
=======
|
|
83
85
|
|
|
86
|
+
Version v6.1.0 (released 2024-10-10)
|
|
87
|
+
|
|
88
|
+
- jobs: define invenio job wrapper for ROR affiliation data stream
|
|
89
|
+
- awards: remove subj props from jsonschema
|
|
90
|
+
|
|
91
|
+
Version v6.0.0 (released 2024-10-03)
|
|
92
|
+
|
|
93
|
+
- datastreams: writers: add option to not insert
|
|
94
|
+
- subjects: added euroscivoc datastream
|
|
95
|
+
- affiliations: OpenAIRE transformer and writer adding PIC identifier
|
|
96
|
+
- awards: added subjects and participating organizations from CORDIS datastreams
|
|
97
|
+
- names: add permission check to names search
|
|
98
|
+
|
|
84
99
|
Version v5.1.0 (released 2024-09-25)
|
|
85
100
|
|
|
86
101
|
- funders: tune search boost for acronyms
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
invenio_vocabularies/__init__.py,sha256=
|
|
2
|
-
invenio_vocabularies/cli.py,sha256=
|
|
3
|
-
invenio_vocabularies/config.py,sha256=
|
|
1
|
+
invenio_vocabularies/__init__.py,sha256=FP2iYtN9rANG4J8ur97OwNGV6rvg034f6BWA90bCUNM,377
|
|
2
|
+
invenio_vocabularies/cli.py,sha256=S3lBsLxsSYa83sCDaGZr5mP7TwPvmmwxzzbB13h8VBI,5856
|
|
3
|
+
invenio_vocabularies/config.py,sha256=bpNKVgwfb7bgkP5zbmoawnAMD6bHWXIJV-6CpEhi-M8,5752
|
|
4
4
|
invenio_vocabularies/ext.py,sha256=GujJ4UARd4Fxf4z7zznRk9JAgHamZuYCOdrKU5czg00,5987
|
|
5
|
-
invenio_vocabularies/factories.py,sha256=
|
|
5
|
+
invenio_vocabularies/factories.py,sha256=mVg4yGKe58e4uS8rYe0DmIO6oMpmtNTcK3wH9eM5jVU,4380
|
|
6
6
|
invenio_vocabularies/fixtures.py,sha256=nNWwH04HFASjfj1oy5kMdcQGKmVjzUuA5wSw-ER1QAg,1585
|
|
7
|
+
invenio_vocabularies/jobs.py,sha256=QBWgScrUlKJagpOvwXN12G1OsvW6NM-IFKRgkbW_edg,2549
|
|
7
8
|
invenio_vocabularies/proxies.py,sha256=k7cTUgWfnCoYIuNqAj_VFi1zBN33KNNclRSVnBkObEM,711
|
|
8
9
|
invenio_vocabularies/views.py,sha256=PNJ5nvc3O7ASwNe56xmqy5YaU9n3UYF3W2JwvtE_kYs,1561
|
|
9
10
|
invenio_vocabularies/webpack.py,sha256=bp2vz3O8QdZwrznsV-SjAmS0g1nV9WGWqc-7ZJQY5PQ,1891
|
|
@@ -46,7 +47,7 @@ invenio_vocabularies/contrib/affiliations/__init__.py,sha256=rV8YAzBRoSKsBYcVjCN
|
|
|
46
47
|
invenio_vocabularies/contrib/affiliations/affiliations.py,sha256=BSEjzAjLq17GGKHyPrgC5VLluvZqVnKMepIiqqLQKzo,2077
|
|
47
48
|
invenio_vocabularies/contrib/affiliations/api.py,sha256=5nIOvpfcseuAAg2XgblHc8jb7TAdfU79XOBRpL-p398,326
|
|
48
49
|
invenio_vocabularies/contrib/affiliations/config.py,sha256=kk-zAl7Uyi6N4qVOiCkBD9cN1KKOvDcILDHJ-zoIzJA,2084
|
|
49
|
-
invenio_vocabularies/contrib/affiliations/datastreams.py,sha256=
|
|
50
|
+
invenio_vocabularies/contrib/affiliations/datastreams.py,sha256=vEH6wj951LLa9pSsNb0rS8IVJ1zWbEQDDe0Cu770J9k,5479
|
|
50
51
|
invenio_vocabularies/contrib/affiliations/facets.py,sha256=w316MGvtdyTpRCPOpCEmMxxLraRkbFFb1VvLkFlEc9o,1229
|
|
51
52
|
invenio_vocabularies/contrib/affiliations/models.py,sha256=JUcj-1ydc2Cw2Rsc24JwXE3TFBJ_6fivhUYhGq4rT8A,329
|
|
52
53
|
invenio_vocabularies/contrib/affiliations/resources.py,sha256=DBEbRxQmp-o-PeZlgFG588Q4sGcruuwIL8L9O-SzCes,435
|
|
@@ -65,26 +66,28 @@ invenio_vocabularies/contrib/affiliations/mappings/v7/__init__.py,sha256=zr9YyyK
|
|
|
65
66
|
invenio_vocabularies/contrib/affiliations/mappings/v7/affiliations/affiliation-v1.0.0.json,sha256=PaHChFsf9r7xRnZ_7ro8SWNEXpWv4uUYrl32g0QESZs,2096
|
|
66
67
|
invenio_vocabularies/contrib/awards/__init__.py,sha256=KwCmwFalz-3pDs9iTa5TKUidBjLepnUMqpCBXRiQOO8,474
|
|
67
68
|
invenio_vocabularies/contrib/awards/api.py,sha256=OXukE7PLXs45BTtqVrhvGBNqLmQaI-CgXmHTCi36LZk,303
|
|
68
|
-
invenio_vocabularies/contrib/awards/awards.py,sha256=
|
|
69
|
+
invenio_vocabularies/contrib/awards/awards.py,sha256=tOLvcvTPiN1gn1QAl-hSh1bwcclg8Kx2ZMmJMEhI7vk,2959
|
|
69
70
|
invenio_vocabularies/contrib/awards/config.py,sha256=PlDHabkWDUzwa1Fvk_U2hG83kQYBqM1IyChg8Yg_VlY,1630
|
|
70
|
-
invenio_vocabularies/contrib/awards/datastreams.py,sha256=
|
|
71
|
+
invenio_vocabularies/contrib/awards/datastreams.py,sha256=j6dtimniWg9faHzV1J49QpAgUJDDW3rjQR0_Mhcfqm4,11147
|
|
71
72
|
invenio_vocabularies/contrib/awards/models.py,sha256=mM-kSNf7kDH3oIbV8epxxbUi7muYqi4JreXxgWXlVzw,318
|
|
72
73
|
invenio_vocabularies/contrib/awards/resources.py,sha256=_9YTqbhz8axFXGhG5y4WyjE27p9n-7e3c6HoBRditPA,411
|
|
73
|
-
invenio_vocabularies/contrib/awards/schema.py,sha256=
|
|
74
|
-
invenio_vocabularies/contrib/awards/serializer.py,sha256=
|
|
74
|
+
invenio_vocabularies/contrib/awards/schema.py,sha256=P_k9EONMMx0eWpALVuhGBzZlDeh4599elLlmMis-Vko,3302
|
|
75
|
+
invenio_vocabularies/contrib/awards/serializer.py,sha256=W59OMDxOXPdXrrimzMdIPbDIfVk6hARgyz1N2xSbchA,1440
|
|
75
76
|
invenio_vocabularies/contrib/awards/services.py,sha256=zwOMHqa4SyZuHopGZwEKhfw3kUHrWg73_4zMNo5kOe4,371
|
|
76
77
|
invenio_vocabularies/contrib/awards/jsonschemas/__init__.py,sha256=XB2l9hr53vqTk7o9lmy18FWGhHEUvNHu8D6nMF8Bz4k,246
|
|
77
|
-
invenio_vocabularies/contrib/awards/jsonschemas/awards/award-v1.0.0.json,sha256=
|
|
78
|
+
invenio_vocabularies/contrib/awards/jsonschemas/awards/award-v1.0.0.json,sha256=KUJW0XaHSU8iYNtK0Hb1H42jlhw-oL4Y644Q_-aSlTo,2131
|
|
78
79
|
invenio_vocabularies/contrib/awards/mappings/__init__.py,sha256=PbM5urjiSrJSx4Ak-H_lJrOOVKGT38MrGgRv61gIbAM,243
|
|
79
80
|
invenio_vocabularies/contrib/awards/mappings/os-v1/__init__.py,sha256=r8IZvjorG9SVz32Hv1fncoqLfz-5Ml0Ph3jiYWCHBPk,250
|
|
80
|
-
invenio_vocabularies/contrib/awards/mappings/os-v1/awards/award-v1.0.0.json,sha256=
|
|
81
|
+
invenio_vocabularies/contrib/awards/mappings/os-v1/awards/award-v1.0.0.json,sha256=dcE1dvgGBYYb7vziGArmXb64rg2HpBdiIw_aP3oYaDw,2441
|
|
81
82
|
invenio_vocabularies/contrib/awards/mappings/os-v2/__init__.py,sha256=9gRLFRtjhNJcbop3qz8iRpQVEng_wudDTbOFsS-gxjk,250
|
|
82
|
-
invenio_vocabularies/contrib/awards/mappings/os-v2/awards/award-v1.0.0.json,sha256=
|
|
83
|
+
invenio_vocabularies/contrib/awards/mappings/os-v2/awards/award-v1.0.0.json,sha256=dcE1dvgGBYYb7vziGArmXb64rg2HpBdiIw_aP3oYaDw,2441
|
|
83
84
|
invenio_vocabularies/contrib/awards/mappings/v7/__init__.py,sha256=fERdPp7K7ajaoUu_4_HVLfF-WD_qcl7QgST6yGb68s4,253
|
|
84
|
-
invenio_vocabularies/contrib/awards/mappings/v7/awards/award-v1.0.0.json,sha256=
|
|
85
|
+
invenio_vocabularies/contrib/awards/mappings/v7/awards/award-v1.0.0.json,sha256=dcE1dvgGBYYb7vziGArmXb64rg2HpBdiIw_aP3oYaDw,2441
|
|
85
86
|
invenio_vocabularies/contrib/common/__init__.py,sha256=DdbGYRthEpQtObhY_YK4vOT9Zf7FFagQ6qtUjJOYw-M,247
|
|
87
|
+
invenio_vocabularies/contrib/common/openaire/__init__.py,sha256=L7UtSimFJ3NI6j53bHzYKsWpFti1uo4fPb9OaTl7leI,244
|
|
88
|
+
invenio_vocabularies/contrib/common/openaire/datastreams.py,sha256=BV6NtBCPFuii6KbTHGkgNQO5tt_3Hn9T_219bz8AINg,3514
|
|
86
89
|
invenio_vocabularies/contrib/common/ror/__init__.py,sha256=3u2-fre1SQ-4nz3Ay0nxj3ntmMZ8Ujh_4eV-fyxfmtc,239
|
|
87
|
-
invenio_vocabularies/contrib/common/ror/datastreams.py,sha256=
|
|
90
|
+
invenio_vocabularies/contrib/common/ror/datastreams.py,sha256=arhB2OKu3Hl0Sn6urTxBQh_kim4oc9TTMRAwzi4pbXE,8057
|
|
88
91
|
invenio_vocabularies/contrib/funders/__init__.py,sha256=YxFXBDnT7NM8rFwxT_Ge3xXR2n17EM0alknQq7r_Bt8,478
|
|
89
92
|
invenio_vocabularies/contrib/funders/api.py,sha256=QKGGeSnPHSoBfucvpaVruXT_txYidofZ080G3IxFkIo,306
|
|
90
93
|
invenio_vocabularies/contrib/funders/config.py,sha256=EU7UrwLOkr2Bem9Skz_HJIxyBQRkXEdPT8zIuV8vbzI,2217
|
|
@@ -110,9 +113,10 @@ invenio_vocabularies/contrib/funders/mappings/v7/funders/funder-v1.0.0.json,sha2
|
|
|
110
113
|
invenio_vocabularies/contrib/names/__init__.py,sha256=DBfsM7JMETZGaV5QmXEwE7zhCaAXvc2SZN6uXnW_V-c,451
|
|
111
114
|
invenio_vocabularies/contrib/names/api.py,sha256=sEPn_jFX3gyoxgbdEUSIvOoPCUI8pocI6qCZO6mzCgQ,300
|
|
112
115
|
invenio_vocabularies/contrib/names/config.py,sha256=8FVtMuq1NHC0cz8O-p_-Ng_IpHE9PTOVqQ7KDJIm7qA,1905
|
|
113
|
-
invenio_vocabularies/contrib/names/datastreams.py,sha256=
|
|
116
|
+
invenio_vocabularies/contrib/names/datastreams.py,sha256=EKatHb0gkvcC9LCYBLIcN5pAgklBY4G43lZR_XE52wY,9505
|
|
114
117
|
invenio_vocabularies/contrib/names/models.py,sha256=SYdtDDG-y5Wq_d06YhiVO5n8gfxPW_mx-tECsIcv5H8,308
|
|
115
|
-
invenio_vocabularies/contrib/names/names.py,sha256=
|
|
118
|
+
invenio_vocabularies/contrib/names/names.py,sha256=x_kcSrH48Q6Iqx1zeCcat5xRmTLe_KqZd5CbHCeR2C4,2498
|
|
119
|
+
invenio_vocabularies/contrib/names/permissions.py,sha256=d7UxvmqFBKWNcFQeJ4MGGFUHlNh_BJGO03-DVW_YFI4,576
|
|
116
120
|
invenio_vocabularies/contrib/names/resources.py,sha256=Z8XqLKfFKE69zdTTvcTDmpEZ6wqiqjIH5tp0LzXTSwQ,1588
|
|
117
121
|
invenio_vocabularies/contrib/names/s3client.py,sha256=c7B9_NbnXCfE4pE_yMTsT6uQ2hgbcRU-KY6nbWFuFzU,1063
|
|
118
122
|
invenio_vocabularies/contrib/names/schema.py,sha256=eKhpNwBaACMEY0JWNrSUhr-40lXhkiHDRmM42KsLrYg,3354
|
|
@@ -131,31 +135,34 @@ invenio_vocabularies/contrib/names/mappings/v7/names/name-v1.0.0.json,sha256=5Yb
|
|
|
131
135
|
invenio_vocabularies/contrib/subjects/__init__.py,sha256=GtXZKA6VWG1oA1fUX2Wh92nd-1i7RnnQF6RprGhxkD4,591
|
|
132
136
|
invenio_vocabularies/contrib/subjects/api.py,sha256=QH8mxoLsa8qjJT1i1Tj6rRnpbH23plo2IMOJ56rnvbU,347
|
|
133
137
|
invenio_vocabularies/contrib/subjects/config.py,sha256=12Hoy46iGaBv7DlxcCjBuJaDtmpSvPPQKrWabtaUGe0,1712
|
|
134
|
-
invenio_vocabularies/contrib/subjects/datastreams.py,sha256=
|
|
138
|
+
invenio_vocabularies/contrib/subjects/datastreams.py,sha256=CiLSTm9PukzLKm34VDmmKOH4A_pYnjbrshxAht1Fox4,1787
|
|
135
139
|
invenio_vocabularies/contrib/subjects/facets.py,sha256=qQ7_rppFBzsmrlZu4-MvOIdUcjeOmDA9gOHAcs0lWwI,695
|
|
136
140
|
invenio_vocabularies/contrib/subjects/models.py,sha256=8XgbVRxDDvhWPjMWsoCriNlOKdmV_113a14yLRtlvM4,363
|
|
137
141
|
invenio_vocabularies/contrib/subjects/resources.py,sha256=0KRfUMizwgIziZybk4HnIjiSsXbrCv_XmguNPwnxoo8,506
|
|
138
|
-
invenio_vocabularies/contrib/subjects/schema.py,sha256=
|
|
142
|
+
invenio_vocabularies/contrib/subjects/schema.py,sha256=5pM9FFVdeb1nUuTwr2SqkUJh-oHIjYN-EXXI8_SSjCQ,2446
|
|
139
143
|
invenio_vocabularies/contrib/subjects/services.py,sha256=s1U6HMmpjuz7rrgR0DtT9C28TC6sZEeDTsa4Jh1TXQk,864
|
|
140
144
|
invenio_vocabularies/contrib/subjects/subjects.py,sha256=NwZycExLyV8l7ikGStH4GOecVuDSxFT70KoNv6qC78I,1877
|
|
145
|
+
invenio_vocabularies/contrib/subjects/euroscivoc/__init__.py,sha256=e5L9E4l5JHqVzijAX8tn2DIa2n01vJ5wOAZdN62RnIo,247
|
|
146
|
+
invenio_vocabularies/contrib/subjects/euroscivoc/datastreams.py,sha256=ZEFDySRSEkb-2cjbYP_so2uCB1tP2_zcdMGpwPcRe90,6152
|
|
141
147
|
invenio_vocabularies/contrib/subjects/jsonschemas/__init__.py,sha256=WowVUST1JoEDS3-xeHhCJvIgC9nzMkFs8XRks9zgzaM,292
|
|
142
|
-
invenio_vocabularies/contrib/subjects/jsonschemas/subjects/subject-v1.0.0.json,sha256=
|
|
148
|
+
invenio_vocabularies/contrib/subjects/jsonschemas/subjects/subject-v1.0.0.json,sha256=SCFOfwtdAQJnUC4wccRJj--c2yUUmo5Z3tnOfo2XluU,1632
|
|
143
149
|
invenio_vocabularies/contrib/subjects/mappings/__init__.py,sha256=Qk-yj1ENsTmijO8ImWuDYGzXi6QQ2VjP4DbjrpRfDk8,243
|
|
144
150
|
invenio_vocabularies/contrib/subjects/mappings/os-v1/__init__.py,sha256=rv2-AasC_WJFp2t9Nrhzivmw9RovRI2_msin4oHTZuk,250
|
|
145
|
-
invenio_vocabularies/contrib/subjects/mappings/os-v1/subjects/subject-v1.0.0.json,sha256=
|
|
151
|
+
invenio_vocabularies/contrib/subjects/mappings/os-v1/subjects/subject-v1.0.0.json,sha256=WNNWVsaf-pNxqV6p_IR2uIcwIBh30WJeP4IDIxzqutI,1810
|
|
146
152
|
invenio_vocabularies/contrib/subjects/mappings/os-v2/__init__.py,sha256=rQnrw1tMKR0yzlPiXBbCVHnxy_aAhwrKghrSuhhZYAc,250
|
|
147
|
-
invenio_vocabularies/contrib/subjects/mappings/os-v2/subjects/subject-v1.0.0.json,sha256=
|
|
153
|
+
invenio_vocabularies/contrib/subjects/mappings/os-v2/subjects/subject-v1.0.0.json,sha256=cJSjcJ_PqrifBZOUeDMW3qyT7VtENTvYq3Xvi-iylOc,1810
|
|
148
154
|
invenio_vocabularies/contrib/subjects/mappings/v7/__init__.py,sha256=QK__a1749g2UN3fBqOr9jx8ccZHWAuvd6DSN4B1jJW4,258
|
|
149
|
-
invenio_vocabularies/contrib/subjects/mappings/v7/subjects/subject-v1.0.0.json,sha256=
|
|
155
|
+
invenio_vocabularies/contrib/subjects/mappings/v7/subjects/subject-v1.0.0.json,sha256=WNNWVsaf-pNxqV6p_IR2uIcwIBh30WJeP4IDIxzqutI,1810
|
|
156
|
+
invenio_vocabularies/contrib/subjects/mesh/__init__.py,sha256=P44hmgVNNTN5O_EmWgaeYJ91yqkGNoeKYo0wfif_wE4,241
|
|
150
157
|
invenio_vocabularies/contrib/subjects/mesh/datastreams.py,sha256=qsi2fu-TzpI2aC9qIOkXGpNcLFkClJ5Dw5rC9ffEdjc,1318
|
|
151
158
|
invenio_vocabularies/datastreams/__init__.py,sha256=VPefh6k4Q3eYxKIW8I5zXUGucntp7VHxaOR5Vhgkfmg,412
|
|
152
159
|
invenio_vocabularies/datastreams/datastreams.py,sha256=SpI6ivmf2LIDS2JSkxoM2v5kRmrPoRDtAG5fuzZO4oQ,6078
|
|
153
160
|
invenio_vocabularies/datastreams/errors.py,sha256=IDUZ3gNtYGrhcOgApHCms1gNNJTyJzoMPmG5JtIeYNU,678
|
|
154
161
|
invenio_vocabularies/datastreams/factories.py,sha256=H8a2gAy7KNImtdCdtqpVKC5gIvE3ON6U1Wn1_zaMlQ4,2181
|
|
155
|
-
invenio_vocabularies/datastreams/readers.py,sha256=
|
|
162
|
+
invenio_vocabularies/datastreams/readers.py,sha256=Gr_KbN-tZtoQ8R4TJG4dTBTE8028eLRlcxSv2-IqI9c,11386
|
|
156
163
|
invenio_vocabularies/datastreams/tasks.py,sha256=0fuH_PRt9Ncv6WHM4pkYmfheRVGDKkERZiMPvgV4bZU,1129
|
|
157
|
-
invenio_vocabularies/datastreams/transformers.py,sha256=
|
|
158
|
-
invenio_vocabularies/datastreams/writers.py,sha256=
|
|
164
|
+
invenio_vocabularies/datastreams/transformers.py,sha256=0ymZiHtNtgfYxt2MIjthtSzikRH1jAqhIAZ1yScoAHs,1733
|
|
165
|
+
invenio_vocabularies/datastreams/writers.py,sha256=PO9UPQ8rT4pstfoCiB-zCfuvCNOHRgFbysq6-spXm34,7218
|
|
159
166
|
invenio_vocabularies/datastreams/xml.py,sha256=HFa-lfxj7kFrr2IjeN1jxSLDfcvpBwO9nZLZF2-BryE,997
|
|
160
167
|
invenio_vocabularies/records/__init__.py,sha256=Uj7O6fYdAtLOkLXUGSAYPADBB7aqP4yVs9b6OAjA158,243
|
|
161
168
|
invenio_vocabularies/records/api.py,sha256=Lynt6Sz4BVN1orh0zgJ5ljhnUobEtcq8c22PmSeUo2U,1494
|
|
@@ -290,10 +297,10 @@ invenio_vocabularies/translations/zh_CN/LC_MESSAGES/messages.mo,sha256=g1I5aNO8r
|
|
|
290
297
|
invenio_vocabularies/translations/zh_CN/LC_MESSAGES/messages.po,sha256=vg8qC8ofpAdJ3mQz7mWM1ylKDpiNWXFs7rlMdSPkgKk,4629
|
|
291
298
|
invenio_vocabularies/translations/zh_TW/LC_MESSAGES/messages.mo,sha256=cqSm8NtMAwrP9O6qbmtkDtRT1e9D93qpsJN5X9_PPVw,600
|
|
292
299
|
invenio_vocabularies/translations/zh_TW/LC_MESSAGES/messages.po,sha256=9ACePz_EpB-LfcIJajZ2kp8Q04tcdrQLOtug162ZUss,4115
|
|
293
|
-
invenio_vocabularies-
|
|
294
|
-
invenio_vocabularies-
|
|
295
|
-
invenio_vocabularies-
|
|
296
|
-
invenio_vocabularies-
|
|
297
|
-
invenio_vocabularies-
|
|
298
|
-
invenio_vocabularies-
|
|
299
|
-
invenio_vocabularies-
|
|
300
|
+
invenio_vocabularies-6.1.0.dist-info/AUTHORS.rst,sha256=8d0p_WWE1r9DavvzMDi2D4YIGBHiMYcN3LYxqQOj8sY,291
|
|
301
|
+
invenio_vocabularies-6.1.0.dist-info/LICENSE,sha256=UvI8pR8jGWqe0sTkb_hRG6eIrozzWwWzyCGEpuXX4KE,1062
|
|
302
|
+
invenio_vocabularies-6.1.0.dist-info/METADATA,sha256=QwLqpBcTeK4HsEnUp0i6yVeK-_6Btwf-wER2m_FmdBM,9659
|
|
303
|
+
invenio_vocabularies-6.1.0.dist-info/WHEEL,sha256=-G_t0oGuE7UD0DrSpVZnq1hHMBV9DD2XkS5v7XpmTnk,110
|
|
304
|
+
invenio_vocabularies-6.1.0.dist-info/entry_points.txt,sha256=qm4ydo2p2KWN3937X8argeeSHw-BX_IJ7gS11pkADEU,2903
|
|
305
|
+
invenio_vocabularies-6.1.0.dist-info/top_level.txt,sha256=x1gRNbaODF_bCD0SBLM3nVOFPGi06cmGX5X94WKrFKk,21
|
|
306
|
+
invenio_vocabularies-6.1.0.dist-info/RECORD,,
|
{invenio_vocabularies-5.1.0.dist-info → invenio_vocabularies-6.1.0.dist-info}/entry_points.txt
RENAMED
|
@@ -49,6 +49,9 @@ vocabulary_model = invenio_vocabularies.records.models
|
|
|
49
49
|
[invenio_i18n.translations]
|
|
50
50
|
invenio_vocabularies = invenio_vocabularies
|
|
51
51
|
|
|
52
|
+
[invenio_jobs.jobs]
|
|
53
|
+
process_ror_affiliations = invenio_vocabularies.jobs:ProcessRORAffiliationsJob
|
|
54
|
+
|
|
52
55
|
[invenio_jsonschemas.schemas]
|
|
53
56
|
affiliations = invenio_vocabularies.contrib.affiliations.jsonschemas
|
|
54
57
|
awards = invenio_vocabularies.contrib.awards.jsonschemas
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|