diff --git a/eossr/api/zenodo.py b/eossr/api/zenodo.py index 36b0ef88592c5391094119715afd0f6fc567cad5..12d9c93bc7f9a7fd28fb626e829dd4c052dedcc1 100644 --- a/eossr/api/zenodo.py +++ b/eossr/api/zenodo.py @@ -311,7 +311,8 @@ class ZenodoAPI: parse_codemeta_and_write_zenodo_metadata_file(self.path_codemeta_file, self.path_zenodo_metadata_file) else: - pass + print("\n ! NO codemeta.json file found. \n" + " Please add one to the ROOT directory of your project to ble able to perform the conversion.") def check_upload_to_zenodo(self): """ @@ -339,8 +340,7 @@ class ZenodoAPI: if self.exist_codemeta_file: self.conversion_codemeta2zenodo() else: - print("\n ! NO codemeta.json NOR .zenodo.json file found. " - "Please add one to the ROOT directory of your project.") + # No codemeta.json nor .zenodo.json sys.exit(-1) print("\n * Using the .zenodo.json file to simulate a new upload to Zenodo... \n") diff --git a/eossr/ci/__init__.py b/eossr/ci/__init__.py deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/eossr/metadata/__init__.py b/eossr/metadata/__init__.py index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..5836648be3aaa1be04656c7c2d73caa0affc5fbf 100644 --- a/eossr/metadata/__init__.py +++ b/eossr/metadata/__init__.py @@ -0,0 +1 @@ +from . import codemeta2zenodo \ No newline at end of file diff --git a/eossr/metadata/codemeta2zenodo.py b/eossr/metadata/codemeta2zenodo.py index 8b204844ce0df5cb36bc74de0467433c662eb03b..373c9be07bddfc837198159c1cd7f8c474c23be4 100644 --- a/eossr/metadata/codemeta2zenodo.py +++ b/eossr/metadata/codemeta2zenodo.py @@ -50,7 +50,7 @@ def parse_person_schema_property(person_property, contributor_field): # Parse correctly the contributors if contributor_field in codemeta_contributors_fields: - if contributor_field == 'provider' or contributor_field == 'publisher': + if contributor_field in ['provider', 'publisher']: zenodo_person['type'] = 'Other' else: # First letter of contributor type MUST be capitalized @@ -92,7 +92,7 @@ def add_author_metadata(zenodo_file, codemt_person_entry, person_field): full_contacts[zenodo_person['name']] = zenodo_person # then save each person by field and avoid duplicates - for person in full_contacts: + for person, value in full_contacts.items(): if person_field in codemeta_creators_fields: @@ -100,11 +100,8 @@ def add_author_metadata(zenodo_file, codemt_person_entry, person_field): if 'creators' not in zenodo_file: zenodo_file['creators'] = [] - if full_contacts[person] not in zenodo_file['creators']: + if value not in zenodo_file['creators']: zenodo_file['creators'].append(full_contacts[person]) - else: - pass # avoid duplicates - elif person_field in codemeta_contributors_fields: if 'contributors' not in zenodo_file: @@ -112,8 +109,6 @@ def add_author_metadata(zenodo_file, codemt_person_entry, person_field): if full_contacts[person] not in zenodo_file['contributors']: zenodo_file['contributors'].append(full_contacts[person]) - else: - pass # avoid duplicates def find_matching_metadata(codemeta_json): @@ -171,11 +166,8 @@ def find_matching_metadata(codemeta_json): if 'softwareVersion' in codemeta_json and 'version' not in codemeta_json: metadata_zenodo['version'] = codemeta_json['softwareVersion'] - elif 'version' in codemeta_json and 'softwareVersion' not in codemeta_json: - metadata_zenodo['version'] = codemeta_json['version'] else: metadata_zenodo['version'] = codemeta_json['version'] - if 'keywords' in codemeta_json: if type(codemeta_json['keywords']) == list: metadata_zenodo['keywords'] = codemeta_json['keywords'] diff --git a/eossr/metadata/generator.py b/eossr/metadata/generator.py deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/eossr/metadata/tests/test_codemeta2zenodo.py b/eossr/metadata/tests/test_codemeta2zenodo.py index 779360d50915c27ed6f72109f7c47270d586766e..13cbb4ff767820686022c13b4b19d75373bb17c8 100644 --- a/eossr/metadata/tests/test_codemeta2zenodo.py +++ b/eossr/metadata/tests/test_codemeta2zenodo.py @@ -2,6 +2,7 @@ import json import unittest import tempfile from os.path import dirname, realpath, join +from eossr.metadata import codemeta2zenodo SAMPLES_DIR = join(dirname(realpath(__file__)), "samples") ROOT_DIR = dirname(realpath("codemeta.json")) @@ -60,9 +61,8 @@ zenodo_entries = [ def test_Codemeta2ZenodoController(): - from eossr.metadata.codemeta2zenodo import CodeMeta2ZenodoController - converter = CodeMeta2ZenodoController() + converter = codemeta2zenodo.CodeMeta2ZenodoController() assert converter.codemeta_data == {} assert converter.zenodo_data == {} @@ -84,41 +84,37 @@ def test_Codemeta2ZenodoController(): def test_add_author_metadata(): - from eossr.metadata.codemeta2zenodo import add_author_metadata, codemeta_allowed_person_fields with open(join(SAMPLES_DIR, "codemeta_contributors_sample.json")) as f: codemeta_metadata = json.load(f) zenodo_metadata = {} - assert all(person in codemeta_metadata.keys() for person in codemeta_allowed_person_fields) + assert all(person in codemeta_metadata.keys() for person in codemeta2zenodo.codemeta_allowed_person_fields) - for person in codemeta_allowed_person_fields: - add_author_metadata(zenodo_metadata, - codemeta_metadata[person], - person - ) + for person in codemeta2zenodo.codemeta_allowed_person_fields: + codemeta2zenodo.add_author_metadata(zenodo_metadata, + codemeta_metadata[person], + person + ) - assert 'creators' in zenodo_metadata.keys() + assert 'creators' in zenodo_metadata # 4 'creators' one repeated, should not be duplicated. # Maintainer and Contributor. Author and Creator are the same person assert len(zenodo_metadata['creators']) == 3 - assert 'contributors' in zenodo_metadata.keys() + assert 'contributors' in zenodo_metadata # Editor, Producer, Publisher, Provider and Sponsor assert len(zenodo_metadata['contributors']) == 5 def test_parse_person_schema_property(): - from eossr.metadata.codemeta2zenodo import \ - parse_person_schema_property, \ - codemeta_contributors_fields with open(join(SAMPLES_DIR, "codemeta_contributors_sample.json")) as f: codemeta_metadata = json.load(f) - for person in codemeta_contributors_fields: - zenodo_metadata = parse_person_schema_property(codemeta_metadata[person], - person) + for person in codemeta2zenodo.codemeta_contributors_fields: + zenodo_metadata = codemeta2zenodo.parse_person_schema_property(codemeta_metadata[person], + person) if person == 'editor': assert zenodo_metadata['type'] == 'Editor' elif person == 'producer': @@ -131,20 +127,18 @@ def test_parse_person_schema_property(): class TestConverting(unittest.TestCase): def test_sample_file_conversion(self): - from eossr.metadata.codemeta2zenodo import parse_codemeta_and_write_zenodo_metadata_file outfile = tempfile.NamedTemporaryFile(delete=True) - parse_codemeta_and_write_zenodo_metadata_file( + codemeta2zenodo.parse_codemeta_and_write_zenodo_metadata_file( join(SAMPLES_DIR, "codemeta_sample1.json"), outfile.name ) json.load(outfile) def test_root_codemeta_conversion(self): - from eossr.metadata.codemeta2zenodo import parse_codemeta_and_write_zenodo_metadata_file outfile = tempfile.NamedTemporaryFile(delete=True) - parse_codemeta_and_write_zenodo_metadata_file( + codemeta2zenodo.parse_codemeta_and_write_zenodo_metadata_file( join(ROOT_DIR, "codemeta.json"), outfile.name ) json.load(outfile) @@ -152,9 +146,8 @@ class TestConverting(unittest.TestCase): class TestLicense(unittest.TestCase): def test_license1(self): - from eossr.metadata.codemeta2zenodo import CodeMeta2ZenodoController - converter = CodeMeta2ZenodoController() + converter = codemeta2zenodo.CodeMeta2ZenodoController() converter.convert_license() assert 'license' not in converter.zenodo_data diff --git a/eossr/metadata/validator.py b/eossr/metadata/validator.py deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000