def _construct_creators(creators, ignore_email=False): from collections.abc import Iterable creators = creators or () if not isinstance(creators, Iterable) or isinstance(creators, str): raise errors.ParameterError("Invalid type") people = [] no_email_warnings = [] for creator in creators: if isinstance(creator, str): person = Person.from_string(creator) elif isinstance(creator, dict): person = Person.from_dict(creator) else: raise errors.ParameterError("Invalid type") message = 'A valid format is "Name <email> [affiliation]"' if not person.name: # pragma: no cover raise errors.ParameterError( f'Name is invalid: "{creator}".\n{message}') if not person.email: if not ignore_email: # pragma: no cover raise errors.ParameterError( f'Email is invalid: "{creator}".\n{message}') else: no_email_warnings.append(creator) people.append(person) return people, no_email_warnings
def create_dataset( client, name, short_name=None, description=None, creators=None, commit_message=None, ): """Create an empty dataset in the current repo. :raises: ``renku.core.errors.ParameterError`` """ if not creators: creators = [Person.from_git(client.repo)] elif hasattr(creators, '__iter__') and isinstance(creators[0], str): creators = [Person.from_string(c) for c in creators] elif hasattr(creators, '__iter__') and isinstance(creators[0], dict): creators = [Person.from_dict(creator) for creator in creators] dataset, _, __ = client.create_dataset(name=name, short_name=short_name, description=description, creators=creators) return dataset
def test_construct_person(value, has_name, has_email, has_affiliation): """Test construct person from string.""" p = Person.from_string(value) if has_name: assert "John Doe" == p.name else: assert "" == p.name if has_email: assert "*****@*****.**" == p.email else: assert p.email is None if has_affiliation: assert "Some Affiliation" == p.affiliation else: assert p.affiliation is None