commonmeta-py 0.39__py3-none-any.whl → 0.40__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.
commonmeta/__init__.py CHANGED
@@ -10,7 +10,7 @@ commonmeta-py is a Python library to convert scholarly metadata
10
10
  """
11
11
 
12
12
  __title__ = "commonmeta-py"
13
- __version__ = "0.39"
13
+ __version__ = "0.40"
14
14
  __author__ = "Martin Fenner"
15
15
  __license__ = "MIT"
16
16
 
commonmeta/constants.py CHANGED
@@ -623,3 +623,13 @@ CROSSREF_FUNDER_ID_TO_ROR_TRANSLATIONS = {
623
623
  "https://doi.org/10.13039/501100001711": "https://ror.org/00yjd3n13",
624
624
  "https://doi.org/10.13039/501100003043": "https://ror.org/04wfr2810",
625
625
  }
626
+
627
+
628
+ ROR_TO_CROSSREF_FUNDER_ID_TRANSLATIONS = {
629
+ "https://ror.org/021nxhr62": "https://doi.org/10.13039/100000001",
630
+ "https://ror.org/00k4n6c32": "https://doi.org/10.13039/501100000780",
631
+ "https://ror.org/018mejw64": "https://doi.org/10.13039/501100001659",
632
+ "https://ror.org/019whta54": "https://doi.org/10.13039/501100006390",
633
+ "https://ror.org/00yjd3n13": "https://doi.org/10.13039/501100001711",
634
+ "https://ror.org/04wfr2810": "https://doi.org/10.13039/501100003043",
635
+ }
@@ -8,7 +8,7 @@ import uuid
8
8
  import pydash as py_
9
9
  from furl import furl
10
10
 
11
- from .constants import Commonmeta
11
+ from .constants import Commonmeta, ROR_TO_CROSSREF_FUNDER_ID_TRANSLATIONS
12
12
  from .utils import wrap, compact, normalize_orcid, normalize_id, validate_url
13
13
  from .doi_utils import doi_from_url, validate_doi
14
14
 
@@ -362,11 +362,16 @@ def insert_funding_references(metadata, xml):
362
362
  {"name": "funder_name"},
363
363
  )
364
364
  if funding_reference.get("funderIdentifier", None) is not None:
365
+ funder_identifier = funding_reference.get("funderIdentifier", None)
366
+
367
+ # translate ROR to Crossref funder ID until Crossref supports ROR
368
+ funder_identifier = ROR_TO_CROSSREF_FUNDER_ID_TRANSLATIONS.get(funder_identifier, funder_identifier)
369
+
365
370
  etree.SubElement(
366
371
  funder_name,
367
372
  "assertion",
368
373
  {"name": "funder_identifier"},
369
- ).text = funding_reference.get("funderIdentifier", None)
374
+ ).text = funder_identifier
370
375
  if funding_reference.get("awardNumber", None) is not None:
371
376
  etree.SubElement(
372
377
  assertion,
@@ -214,13 +214,15 @@ def get_funding_references(meta: Optional[dict]) -> Optional[list]:
214
214
  or furl(urls[0]).host == "cordis.europa.eu"
215
215
  ):
216
216
  return [
217
- {
218
- "funderName": "European Commission",
219
- "funderIdentifier": "https://doi.org/10.13039/501100000780",
220
- "funderIdentifierType": "Crossref Funder ID",
221
- "awardUri": urls[0],
222
- "awardNumber": urls[0].split("/")[-1],
223
- }
217
+ compact(
218
+ {
219
+ "funderName": "European Commission",
220
+ "funderIdentifier": "https://ror.org/00k4n6c32",
221
+ "funderIdentifierType": "ROR",
222
+ "awardUri": urls[0],
223
+ "awardNumber": urls[0].split("/")[-1],
224
+ }
225
+ )
224
226
  ]
225
227
  # Prefix 10.13039 means funder ID from Open Funder registry.
226
228
  elif len(urls) == 2 and validate_prefix(urls[0]) == "10.13039":
@@ -235,29 +237,24 @@ def get_funding_references(meta: Optional[dict]) -> Optional[list]:
235
237
  else:
236
238
  award_number = f.path.segments[-1]
237
239
  return [
238
- {
240
+ compact({
239
241
  "funderName": funder_name,
240
242
  "funderIdentifier": urls[0],
241
243
  "funderIdentifierType": "Crossref Funder ID",
242
244
  "awardUri": urls[1],
243
245
  "awardNumber": award_number,
244
- }
246
+ })
245
247
  ]
246
- # URL is ROR ID for funder. Need to transform to Crossref Funder ID
247
- # until Crossref production service supports ROR IDs.
248
+ # URL is ROR ID for funder.
248
249
  elif len(urls) == 2 and validate_ror(urls[0]):
249
250
  f = furl(urls[0])
250
251
  _id = f.path.segments[-1]
251
252
  response = httpx.get(f"https://api.ror.org/organizations/{_id}", timeout=10)
252
253
  ror = response.json()
253
254
  funder_name = ror.get("name", None)
254
- funder_identifier = py_.get(ror, "external_ids.FUNDREF.all.0")
255
- if funder_identifier is not None:
256
- funder_identifier = f"https://doi.org/{funder_identifier}"
257
- funder_identifier_type = "Crossref Funder ID"
258
- else:
259
- funder_identifier = urls[0]
260
- funder_identifier_type = "ROR"
255
+ funder_identifier = urls[0]
256
+ funder_identifier_type = "ROR"
257
+
261
258
  f = furl(urls[1])
262
259
  # url is for NSF grant
263
260
  if f.args["awd_id"] is not None:
@@ -266,13 +263,13 @@ def get_funding_references(meta: Optional[dict]) -> Optional[list]:
266
263
  award_number = f.path.segments[-1]
267
264
  return [
268
265
  compact(
269
- {
266
+ compact({
270
267
  "funderName": funder_name,
271
268
  "funderIdentifier": funder_identifier,
272
269
  "funderIdentifierType": funder_identifier_type,
273
270
  "awardUri": urls[1],
274
271
  "awardNumber": award_number,
275
- }
272
+ })
276
273
  )
277
274
  ]
278
275
 
@@ -290,7 +287,6 @@ def get_funding_references(meta: Optional[dict]) -> Optional[list]:
290
287
  "funderName": funding.get("funder_name", None),
291
288
  "funderIdentifier": funding.get("funder_id", None),
292
289
  "funderIdentifierType": "Crossref Funder ID",
293
- "awardTitle": funding.get("award", None),
294
290
  "awardNumber": funding.get("award_number", None),
295
291
  }
296
292
  ]
@@ -243,7 +243,7 @@ def to_inveniordm_related_identifier(relation: dict) -> dict:
243
243
  def to_inveniordm_funding(funding: dict) -> Optional[dict]:
244
244
  """Convert funding to inveniordm funding"""
245
245
  if funding.get("funderIdentifierType", None) == "ROR":
246
- funder_identifier = id_from_url(funder_identifier)
246
+ funder_identifier = id_from_url(funding.get("funderIdentifier", None))
247
247
  elif funding.get("funderIdentifierType", None) == "Crossref Funder ID":
248
248
  # convert to ROR
249
249
  funder_identifier = id_from_url(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: commonmeta-py
3
- Version: 0.39
3
+ Version: 0.40
4
4
  Summary: Library for conversions to/from the Commonmeta scholarly metadata format
5
5
  Home-page: https://python.commonmeta.org
6
6
  License: MIT
@@ -1,10 +1,10 @@
1
- commonmeta/__init__.py,sha256=Yb35HxY9mUSmG9MYb6v3qVEfQF7Zt6PWJr8hehffPNU,1779
1
+ commonmeta/__init__.py,sha256=Xc4MVM80sSD7NZdUZZB6CqIuzR5xxY7Fy-dFmKTeNqI,1779
2
2
  commonmeta/api_utils.py,sha256=-ZHGVZZhJqnjnsLtp4-PoeHYbDqL0cQme7W70BEjo4U,2677
3
3
  commonmeta/author_utils.py,sha256=zBIPTgP5n7Zx57xomJ2h7x0dvC0AV8gJ2gPoYeDy5Lo,8348
4
4
  commonmeta/base_utils.py,sha256=0t6fr9XGeeTBoMlKSAMI7p_EmKsA6wYRW0roEBXVcc8,3722
5
5
  commonmeta/cli.py,sha256=0IJF1SQ1sKPg7M0Gb8fpX2nBps-G0L13o01__M6c5Z0,6104
6
- commonmeta/constants.py,sha256=aMD7vG_kJD5ja5YOqDjsfuokWcRMnWOF7jv0YV3-OXw,16973
7
- commonmeta/crossref_utils.py,sha256=xyS8jFXO8unzumCC6YXK45kzz16PQAAOkWUHgjqawAo,22063
6
+ commonmeta/constants.py,sha256=cank4niDCO-VvjjRIgCxOAqFEnV1R8xyGC6xEL1iDsw,17461
7
+ commonmeta/crossref_utils.py,sha256=LBYfmhIldYryaBUYohfLnv870aWGMDm043Ny8Wav6Bg,22370
8
8
  commonmeta/date_utils.py,sha256=amF3E0ZJlh8yY5eY3aVXQyAO1x2WuZHJXw-ajOEcdUQ,5808
9
9
  commonmeta/doi_utils.py,sha256=Dt6K9ADD2ga2WNsOzfX9f29gnubhn7xqeKL7U5pEpBs,8209
10
10
  commonmeta/metadata.py,sha256=dqqk4IW-_OwtS_PVs0i7AuxrkNqOYjJCqhQJ2X-I1DQ,12398
@@ -19,7 +19,7 @@ commonmeta/readers/csl_reader.py,sha256=5V_sHSJwcAWJmhB8SYk199nB96BWYX1Sq9vkQ3iE
19
19
  commonmeta/readers/datacite_reader.py,sha256=CdOtxhthrakBoQMsLTdPx6sUCmqtEWo5ICYE6ZsWDdo,12026
20
20
  commonmeta/readers/datacite_xml_reader.py,sha256=nhnO92fZihr1HZlbXjyem-HJXc9_DWLgJ2zeltuPMIg,13041
21
21
  commonmeta/readers/inveniordm_reader.py,sha256=jzv0rXzT8OCdPD_MShBXTnlwD-F9tpTX7OKZGn8smzs,7480
22
- commonmeta/readers/json_feed_reader.py,sha256=x7TjLq5nJsYw-MpDfYeiAWn2RbvqrIVkdOjQFW_Y7EE,13403
22
+ commonmeta/readers/json_feed_reader.py,sha256=y-sX_l9AD0I71pSZSZWr2x2tLTlD4mxoB2eF0vf0rWk,13034
23
23
  commonmeta/readers/kbase_reader.py,sha256=ehKXQsJyPCtaq2FmBxNb2Jb5Nktpx8pNscpmEM6N0A4,6763
24
24
  commonmeta/readers/ris_reader.py,sha256=v6qOd-i2OcMTEFy5RGd3MlYthJcYSU6yzmZ5yHDzmII,3677
25
25
  commonmeta/readers/schema_org_reader.py,sha256=xyWzO2XAWlI2pYVl2EbVRsUmfiWXEwP64CHRBQNRN-M,16835
@@ -66,11 +66,11 @@ commonmeta/writers/commonmeta_writer.py,sha256=2qlttCfYpGhfVjrYkjzbIra7AywssRLT3
66
66
  commonmeta/writers/crossref_xml_writer.py,sha256=0Ds494RnXfdfjWw5CLX1kwV2zP7gqffdVqO-X74Uc6c,492
67
67
  commonmeta/writers/csl_writer.py,sha256=rlCeShkvC6ui9By0yVfNCMay_JfaZ4AooUPOPg-g-2M,2819
68
68
  commonmeta/writers/datacite_writer.py,sha256=G7Lr0aZ4sAEdbfXe3dG4Y6AyGUKA9UWr_iiaQRDnV24,6233
69
- commonmeta/writers/inveniordm_writer.py,sha256=zPGji-ccaGwTmXM0uYUQYi0SWCkJxijz3g974d8QkAk,9622
69
+ commonmeta/writers/inveniordm_writer.py,sha256=sCDmPC4DEOWjuKtA14dZhjrr--IiO0rgeTXL2O2hre4,9642
70
70
  commonmeta/writers/ris_writer.py,sha256=AcnCszS3WY9lF594NbFBtLylsA8ownnYp_XLQJ84Ios,2093
71
71
  commonmeta/writers/schema_org_writer.py,sha256=5j002uCNLdlScZMNQmPjodcVWqaBh2z38zL1H4lo2hY,5741
72
- commonmeta_py-0.39.dist-info/LICENSE,sha256=746hEF2wZCKkcckk5-_DcBLtHewfaEMS4iXTlA1PVwk,1074
73
- commonmeta_py-0.39.dist-info/METADATA,sha256=00-S7EqflCWSm8Db0wNxmoXkVRC5AR7CMBEXt1MZI-Q,8331
74
- commonmeta_py-0.39.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
75
- commonmeta_py-0.39.dist-info/entry_points.txt,sha256=vbcDw3_2lMTKdcAL2VUF4DRYRpKuzXVYLMCdgKVf88U,49
76
- commonmeta_py-0.39.dist-info/RECORD,,
72
+ commonmeta_py-0.40.dist-info/LICENSE,sha256=746hEF2wZCKkcckk5-_DcBLtHewfaEMS4iXTlA1PVwk,1074
73
+ commonmeta_py-0.40.dist-info/METADATA,sha256=bB20Im9gNUUGJIt7TnMLFpGouHdnpmV7GkC_fiZmk7I,8331
74
+ commonmeta_py-0.40.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
75
+ commonmeta_py-0.40.dist-info/entry_points.txt,sha256=vbcDw3_2lMTKdcAL2VUF4DRYRpKuzXVYLMCdgKVf88U,49
76
+ commonmeta_py-0.40.dist-info/RECORD,,