Skip to content

Commit

Permalink
add support for identifiers uuid and guid
Browse files Browse the repository at this point in the history
  • Loading branch information
mfenner committed Oct 17, 2024
1 parent 620b312 commit 8f663ee
Show file tree
Hide file tree
Showing 18 changed files with 447 additions and 364 deletions.
2 changes: 1 addition & 1 deletion commonmeta/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"""

__title__ = "commonmeta-py"
__version__ = "0.41"
__version__ = "0.42"
__author__ = "Martin Fenner"
__license__ = "MIT"

Expand Down
2 changes: 2 additions & 0 deletions commonmeta/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -610,6 +610,8 @@ class Commonmeta(TypedDict):
"URL": "url",
"URN": "urn",
"W3ID": "w3id",
"GUID": "guid",
"UUID": "uuid",
"Other": "other",
}

Expand Down
16 changes: 7 additions & 9 deletions commonmeta/crossref_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -363,10 +363,12 @@ def insert_funding_references(metadata, xml):
)
if funding_reference.get("funderIdentifier", None) is not None:
funder_identifier = funding_reference.get("funderIdentifier", None)

# translate ROR to Crossref funder ID until Crossref supports ROR
funder_identifier = ROR_TO_CROSSREF_FUNDER_ID_TRANSLATIONS.get(funder_identifier, funder_identifier)

funder_identifier = ROR_TO_CROSSREF_FUNDER_ID_TRANSLATIONS.get(
funder_identifier, funder_identifier
)

etree.SubElement(
funder_name,
"assertion",
Expand Down Expand Up @@ -447,9 +449,7 @@ def insert_item_number(metadata, xml):
if metadata.identifiers is None:
return xml
for identifier in metadata.identifiers:
if identifier.get("identifier", None) is None:
continue
if identifier.get("identifierType", None) is not None:
if identifier.get("identifierType", None) == "UUID":
# strip hyphen from UUIDs, as item_number can only be 32 characters long (UUIDv4 is 36 characters long)
if identifier.get("identifierType", None) == "UUID":
identifier["identifier"] = identifier.get("identifier", "").replace(
Expand All @@ -461,9 +461,7 @@ def insert_item_number(metadata, xml):
{"item_number_type": identifier.get("identifierType", "").lower()},
).text = identifier.get("identifier", None)
else:
etree.SubElement(xml, "item_number").text = identifier.get(
"identifier", None
)
continue
return xml


Expand Down
39 changes: 23 additions & 16 deletions commonmeta/readers/json_feed_reader.py
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,10 @@ def read_json_feed_item(data: Optional[dict], **kwargs) -> Commonmeta:
"type": "IsPartOf",
}
)
identifiers = [{"identifier": meta.get("id"), "identifierType": "UUID"}]
identifiers = [
{"identifier": meta.get("id"), "identifierType": "UUID"},
{"identifier": meta.get("guid"), "identifierType": "GUID"},
]
files = get_files(_id)
state = "findable" if meta or read_options else "not_found"

Expand Down Expand Up @@ -237,13 +240,15 @@ def format_funding(urls: list) -> list:
else:
award_number = f.path.segments[-1]
return [
compact({
"funderName": funder_name,
"funderIdentifier": urls[0],
"funderIdentifierType": "Crossref Funder ID",
"awardUri": urls[1],
"awardNumber": award_number,
})
compact(
{
"funderName": funder_name,
"funderIdentifier": urls[0],
"funderIdentifierType": "Crossref Funder ID",
"awardUri": urls[1],
"awardNumber": award_number,
}
)
]
# URL is ROR ID for funder.
elif len(urls) == 2 and validate_ror(urls[0]):
Expand All @@ -254,7 +259,7 @@ def format_funding(urls: list) -> list:
funder_name = ror.get("name", None)
funder_identifier = urls[0]
funder_identifier_type = "ROR"

f = furl(urls[1])
# url is for NSF grant
if f.args["awd_id"] is not None:
Expand All @@ -263,13 +268,15 @@ def format_funding(urls: list) -> list:
award_number = f.path.segments[-1]
return [
compact(
compact({
"funderName": funder_name,
"funderIdentifier": funder_identifier,
"funderIdentifierType": funder_identifier_type,
"awardUri": urls[1],
"awardNumber": award_number,
})
compact(
{
"funderName": funder_name,
"funderIdentifier": funder_identifier,
"funderIdentifierType": funder_identifier_type,
"awardUri": urls[1],
"awardNumber": award_number,
}
)
)
]

Expand Down
1 change: 1 addition & 0 deletions commonmeta/resources/commonmeta_v0.15.json
Original file line number Diff line number Diff line change
Expand Up @@ -274,6 +274,7 @@
"URL",
"URN",
"UUID",
"GUID",
"Other"
]
}
Expand Down
4 changes: 2 additions & 2 deletions commonmeta/writers/inveniordm_writer.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
get_language,
validate_orcid,
id_from_url,
issn_from_url,
FOS_MAPPINGS,
)

Expand All @@ -39,8 +38,9 @@ def write_inveniordm(metadata):
),
}
for i in wrap(metadata.identifiers)
if i.get("id", None) != metadata.id
if i.get("identifier", None) != metadata.id
]
print(identifiers, metadata.id)
references = [
to_inveniordm_related_identifier(i)
for i in wrap(metadata.references)
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name="commonmeta-py"
version="0.41"
version="0.42"
repository = "https:/front-matter/commonmeta-py"
homepage = "https://python.commonmeta.org"
documentation = "https://python.commonmeta.org"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,17 +106,17 @@ interactions:
content-type:
- application/json
date:
- Tue, 15 Oct 2024 17:33:08 GMT
- Thu, 17 Oct 2024 19:39:37 GMT
fly-request-id:
- 01JA8KV81EP0A5MF58PQ5ZWXHT-arn
- 01JADZW9AJ4PJZJ8Q3PYJWCB4R-arn
ratelimit-limit:
- '15'
ratelimit-remaining:
- '14'
ratelimit-reset:
- '3'
server:
- Fly/c3dfa7435 (2024-10-15)
- Fly/27d4b875a (2024-10-17)
transfer-encoding:
- chunked
vary:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,73 +74,71 @@ interactions:
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
daRUywUAAPC41W4sAAA=
headers:
content-encoding:
- gzip
content-type:
- application/json
date:
- Tue, 15 Oct 2024 17:33:08 GMT
- Thu, 17 Oct 2024 19:39:38 GMT
fly-request-id:
- 01JA8KV8BMJ380XJVEW3SWA9SD-arn
- 01JADZWAMMJXF4P100EQHAAXGJ-arn
ratelimit-limit:
- '15'
ratelimit-remaining:
- '13'
ratelimit-reset:
- '7'
- '6'
server:
- Fly/c3dfa7435 (2024-10-15)
- Fly/27d4b875a (2024-10-17)
transfer-encoding:
- chunked
vary:
Expand Down
Loading

0 comments on commit 8f663ee

Please sign in to comment.