@@ -341,49 +341,58 @@ def canonical_to_datacite(
341341 ]
342342 )
343343 return DataCite (
344- doi = primary_doi ,
345- prefix = doi_prefix ,
346- suffix = doi_suffix ,
347- url = get_first_if_list (data .url ),
348- types = Types (
349- resourceType = data .applicationCategory , resourceTypeGeneral = "Software"
350- ),
351- creators = codemeta_actors_to_datacite (data .author , Creator ),
352- titles = [Title (title = data .name )],
353- publisher = get_first_if_list (
354- codemeta_actors_to_datacite (data .publisher , Publisher )
355- ),
356- publicationYear = str (data .datePublished .year ) if data .datePublished else None ,
357- subjects = [Subject (subject = subject ) for subject in ensure_list (data .keywords )]
358- or None ,
359- contributors = codemeta_actors_to_datacite (data .contributor , Contributor ),
360- dates = [
361- DateModel (
362- date = date .date () if isinstance (date , datetime ) else date ,
363- dateType = date_type ,
364- )
365- for date , date_type in [
366- (data .dateCreated , "Created" ),
367- (data .dateModified , "Updated" ),
368- ]
369- if date is not None
370- ],
371- # we have no way of knowing what the relationships are for relatedLinks since
372- # they are just urls
373- # TODO: though, it may be possible to use the following codemeta fields:
374- # hasPart, isPartOf, readme, sameAs, review, releaseNotes
375- # relatedIdentifiers=data.relatedLink,
376- sizes = [data .fileSize ] if data .fileSize else None ,
377- formats = codemeta_language_fileformat_to_datacite_format (
378- data .programmingLanguage , data .fileFormat
379- ),
380- version = str (data .version ) if data .version else None ,
381- rightsList = codemeta_license_to_datacite_rights (data .license ),
382- descriptions = descriptions ,
383- # codemeta.funding is a plain string, can't really ensure that the string
384- # is the required name field
385- # fundingReferences=None,
386- ** custom_fields ,
344+ ** {
345+ ** dict (
346+ doi = primary_doi ,
347+ prefix = doi_prefix ,
348+ suffix = doi_suffix ,
349+ url = get_first_if_list (data .url ),
350+ types = Types (
351+ resourceType = data .applicationCategory ,
352+ resourceTypeGeneral = "Software" ,
353+ ),
354+ creators = codemeta_actors_to_datacite (data .author , Creator ),
355+ titles = [Title (title = data .name )],
356+ publisher = get_first_if_list (
357+ codemeta_actors_to_datacite (data .publisher , Publisher )
358+ ),
359+ publicationYear = (
360+ str (data .datePublished .year ) if data .datePublished else None
361+ ),
362+ subjects = [
363+ Subject (subject = subject ) for subject in ensure_list (data .keywords )
364+ ]
365+ or None ,
366+ contributors = codemeta_actors_to_datacite (data .contributor , Contributor ),
367+ dates = [
368+ DateModel (
369+ date = date .date () if isinstance (date , datetime ) else date ,
370+ dateType = date_type ,
371+ )
372+ for date , date_type in [
373+ (data .dateCreated , "Created" ),
374+ (data .dateModified , "Updated" ),
375+ ]
376+ if date is not None
377+ ],
378+ # we have no way of knowing what the relationships are for relatedLinks since
379+ # they are just urls
380+ # TODO: though, it may be possible to use the following codemeta fields:
381+ # hasPart, isPartOf, readme, sameAs, review, releaseNotes
382+ # relatedIdentifiers=data.relatedLink,
383+ sizes = [data .fileSize ] if data .fileSize else None ,
384+ formats = codemeta_language_fileformat_to_datacite_format (
385+ data .programmingLanguage , data .fileFormat
386+ ),
387+ version = str (data .version ) if data .version else None ,
388+ rightsList = codemeta_license_to_datacite_rights (data .license ),
389+ descriptions = descriptions ,
390+ # codemeta.funding is a plain string, can't really ensure that the string
391+ # is the required name field
392+ # fundingReferences=None,
393+ ),
394+ ** custom_fields ,
395+ }
387396 )
388397
389398
0 commit comments