Skip to content

Commit e868ba0

Browse files
authored
Merge branch 'master' into 755-kg-validation
2 parents 328f5b5 + 4f80efc commit e868ba0

File tree

12 files changed

+136
-168
lines changed

12 files changed

+136
-168
lines changed

docs/models/datasets.rst

-8
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,3 @@ Manage files in the dataset.
3737
.. autoclass:: renku.core.models.datasets.DatasetFile
3838
:members:
3939
:inherited-members:
40-
41-
42-
Creator
43-
-------
44-
45-
.. autoclass:: renku.core.models.creators.Creator
46-
:members:
47-
:inherited-members:

renku/cli/exception_handler.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -136,10 +136,10 @@ def _handle_sentry(self):
136136
with capture_internal_exceptions():
137137
from git import Repo
138138
from renku.core.commands import get_git_home
139-
from renku.core.models.creators import Creator
139+
from renku.core.models.provenance.agents import Person
140140

141141
repo = Repo(get_git_home())
142-
user = Creator.from_git(repo)
142+
user = Person.from_git(repo)
143143

144144
scope.user = {'name': user.name, 'email': user.email}
145145

renku/core/commands/dataset.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@
4242
MigrationRequired, ParameterError, UsageError
4343
from renku.core.management.datasets import DATASET_METADATA_PATHS
4444
from renku.core.management.git import COMMIT_DIFF_STRATEGY
45-
from renku.core.models.creators import Creator
4645
from renku.core.models.datasets import Dataset
46+
from renku.core.models.provenance.agents import Person
4747
from renku.core.models.refs import LinkReference
4848
from renku.core.models.tabulate import tabulate
4949
from renku.core.utils.doi import extract_doi
@@ -106,7 +106,7 @@ def create_dataset(client, name):
106106
:raises: ``renku.core.errors.ParameterError``
107107
"""
108108
with client.with_dataset(name=name, create=True) as dataset:
109-
creator = Creator.from_git(client.repo)
109+
creator = Person.from_git(client.repo)
110110
if creator not in dataset.creator:
111111
dataset.creator.append(creator)
112112

renku/core/management/datasets.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,10 @@
3535

3636
from renku.core import errors
3737
from renku.core.management.config import RENKU_HOME
38-
from renku.core.models.creators import Creator
3938
from renku.core.models.datasets import Dataset, DatasetFile, DatasetTag
4039
from renku.core.models.git import GitURL
4140
from renku.core.models.locals import with_reference
41+
from renku.core.models.provenance.agents import Person
4242
from renku.core.models.refs import LinkReference
4343

4444

@@ -425,7 +425,7 @@ def _add_from_git(
425425
creators = []
426426
# grab all the creators from the commit history
427427
for commit in repo.iter_commits(paths=path):
428-
creator = Creator.from_commit(commit)
428+
creator = Person.from_commit(commit)
429429
if creator not in creators:
430430
creators.append(creator)
431431

@@ -727,7 +727,7 @@ def update_dataset_files(self, files, ref, delete=False):
727727
creators = []
728728
# grab all the creators from the commit history
729729
for commit in repo.iter_commits(paths=file_.path):
730-
creator = Creator.from_commit(commit)
730+
creator = Person.from_commit(commit)
731731
if creator not in creators:
732732
creators.append(creator)
733733

renku/core/management/repository.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -394,8 +394,8 @@ def init_repository(self, name=None, force=False):
394394
self.repo.description = name or path.name
395395

396396
# Check that an creator can be determined from Git.
397-
from renku.core.models.creators import Creator
398-
Creator.from_git(self.repo)
397+
from renku.core.models.provenance.agents import Person
398+
Person.from_git(self.repo)
399399

400400
# TODO read existing gitignore and create a unique set of rules
401401
import pkg_resources

renku/core/models/creators.py

-97
This file was deleted.

renku/core/models/datasets.py

+30-37
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,9 @@
2929
import attr
3030
from attr.validators import instance_of
3131

32-
from renku.core.models.creators import Creator, CreatorsMixin
32+
# from renku.core.models.creators import CreatorsMixin
3333
from renku.core.models.entities import Entity
34+
from renku.core.models.provenance.agents import Person
3435
from renku.core.utils.datetime8601 import parse_date
3536
from renku.core.utils.doi import extract_doi, is_doi
3637

@@ -44,6 +45,32 @@
4445
)
4546

4647

48+
def _convert_creators(value):
49+
"""Convert creators."""
50+
if isinstance(value, dict): # compatibility with previous versions
51+
return [Person.from_jsonld(value)]
52+
53+
if isinstance(value, list):
54+
return [Person.from_jsonld(v) for v in value]
55+
56+
57+
@attr.s
58+
class CreatorMixin:
59+
"""Mixin for handling creators container."""
60+
61+
creator = jsonld.container.list(
62+
Person,
63+
kw_only=True,
64+
context='schema:creator',
65+
converter=_convert_creators
66+
)
67+
68+
@property
69+
def creators_csv(self):
70+
"""Comma-separated list of creators associated with dataset."""
71+
return ','.join(creator.name for creator in self.creator)
72+
73+
4774
def _extract_doi(value):
4875
"""Return either a string or the doi part of a URL."""
4976
value = str(value)
@@ -117,17 +144,6 @@ class Language:
117144
name = jsonld.ib(default=None, kw_only=True, context='schema:name')
118145

119146

120-
def _convert_dataset_files_creators(value):
121-
"""Convert dataset files creators."""
122-
coll = value
123-
124-
if isinstance(coll, dict):
125-
return [Creator.from_jsonld(coll)]
126-
127-
if isinstance(coll, list):
128-
return [Creator.from_jsonld(c) for c in coll]
129-
130-
131147
def convert_filename_path(p):
132148
"""Return name of the file."""
133149
if p:
@@ -141,16 +157,9 @@ def convert_filename_path(p):
141157
'schema': 'http://schema.org/',
142158
}
143159
)
144-
class DatasetFile(Entity, CreatorsMixin):
160+
class DatasetFile(Entity, CreatorMixin):
145161
"""Represent a file in a dataset."""
146162

147-
creator = jsonld.container.list(
148-
Creator,
149-
converter=_convert_dataset_files_creators,
150-
kw_only=True,
151-
context='schema:creator'
152-
)
153-
154163
added = jsonld.ib(
155164
converter=parse_date, context='schema:dateCreated', kw_only=True
156165
)
@@ -226,15 +235,6 @@ def _convert_dataset_tags(value):
226235
return [DatasetTag.from_jsonld(v) for v in value]
227236

228237

229-
def _convert_dataset_creator(value):
230-
"""Convert dataset creators."""
231-
if isinstance(value, dict): # compatibility with previous versions
232-
return [Creator.from_jsonld(value)]
233-
234-
if isinstance(value, list):
235-
return [Creator.from_jsonld(v) for v in value]
236-
237-
238238
def _convert_language(obj):
239239
"""Convert language object."""
240240
if isinstance(obj, dict):
@@ -257,7 +257,7 @@ def _convert_keyword(keywords):
257257
'schema': 'http://schema.org/',
258258
},
259259
)
260-
class Dataset(Entity, CreatorsMixin):
260+
class Dataset(Entity, CreatorMixin):
261261
"""Repesent a dataset."""
262262

263263
SUPPORTED_SCHEMES = ('', 'file', 'http', 'https', 'git+https', 'git+ssh')
@@ -270,13 +270,6 @@ class Dataset(Entity, CreatorsMixin):
270270
_id = jsonld.ib(default=None, context='@id', kw_only=True)
271271
_label = jsonld.ib(default=None, context='rdfs:label', kw_only=True)
272272

273-
creator = jsonld.container.list(
274-
Creator,
275-
converter=_convert_dataset_creator,
276-
context='schema:creator',
277-
kw_only=True
278-
)
279-
280273
date_published = jsonld.ib(
281274
default=None, context='schema:datePublished', kw_only=True
282275
)

renku/core/models/projects.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@
2323
import attr
2424

2525
from renku.core.models import jsonld
26-
from renku.core.models.creators import Creator
2726
from renku.core.models.datastructures import Collection
27+
from renku.core.models.provenance.agents import Person
2828
from renku.core.utils.datetime8601 import parse_date
2929

3030
PROJECT_URL_PATH = 'projects'
@@ -75,7 +75,7 @@ class Project(object):
7575
'@id': 'schema:creator',
7676
'@type': 'schema:Person',
7777
},
78-
type=Creator
78+
type=Person
7979
)
8080

8181
_id = jsonld.ib(context='@id', kw_only=True, default=None)
@@ -90,14 +90,14 @@ def __attrs_post_init__(self):
9090
"""Initialize computed attributes."""
9191
if not self.creator and self.client:
9292
if self.client.renku_metadata_path.exists():
93-
self.creator = Creator.from_commit(
93+
self.creator = Person.from_commit(
9494
self.client.find_previous_commit(
9595
self.client.renku_metadata_path, return_first=True
9696
),
9797
)
9898
else:
9999
# this assumes the project is being newly created
100-
self.creator = Creator.from_git(self.client.repo)
100+
self.creator = Person.from_git(self.client.repo)
101101

102102
self._id = self.project_id
103103

0 commit comments

Comments
 (0)