commonmeta-py 0.105__py3-none-any.whl → 0.107__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.
Files changed (33) hide show
  1. commonmeta/__init__.py +13 -1
  2. commonmeta/api_utils.py +7 -6
  3. commonmeta/author_utils.py +10 -10
  4. commonmeta/base_utils.py +3 -2
  5. commonmeta/crossref_utils.py +80 -1
  6. commonmeta/date_utils.py +3 -2
  7. commonmeta/doi_utils.py +4 -4
  8. commonmeta/readers/cff_reader.py +9 -8
  9. commonmeta/readers/codemeta_reader.py +14 -13
  10. commonmeta/readers/crossref_reader.py +6 -5
  11. commonmeta/readers/crossref_xml_reader.py +20 -19
  12. commonmeta/readers/datacite_reader.py +6 -5
  13. commonmeta/readers/datacite_xml_reader.py +7 -6
  14. commonmeta/readers/inveniordm_reader.py +15 -16
  15. commonmeta/readers/json_feed_reader.py +25 -22
  16. commonmeta/readers/openalex_reader.py +10 -9
  17. commonmeta/readers/schema_org_reader.py +31 -29
  18. commonmeta/schema_utils.py +1 -0
  19. commonmeta/translators.py +2 -1
  20. commonmeta/utils.py +70 -11
  21. commonmeta/writers/citation_writer.py +10 -5
  22. commonmeta/writers/commonmeta_writer.py +1 -0
  23. commonmeta/writers/crossref_xml_writer.py +1 -0
  24. commonmeta/writers/csl_writer.py +5 -4
  25. commonmeta/writers/datacite_writer.py +5 -4
  26. commonmeta/writers/inveniordm_writer.py +9 -8
  27. {commonmeta_py-0.105.dist-info → commonmeta_py-0.107.dist-info}/METADATA +17 -15
  28. {commonmeta_py-0.105.dist-info → commonmeta_py-0.107.dist-info}/RECORD +31 -33
  29. commonmeta/resources/ietf-bcp-47.json +0 -3025
  30. commonmeta/resources/iso-8601.json +0 -3182
  31. {commonmeta_py-0.105.dist-info → commonmeta_py-0.107.dist-info}/WHEEL +0 -0
  32. {commonmeta_py-0.105.dist-info → commonmeta_py-0.107.dist-info}/entry_points.txt +0 -0
  33. {commonmeta_py-0.105.dist-info → commonmeta_py-0.107.dist-info}/licenses/LICENSE +0 -0
@@ -2,8 +2,9 @@
2
2
 
3
3
  from typing import Optional
4
4
 
5
- import httpx
5
+ import requests
6
6
  from pydash import py_
7
+ from requests.exceptions import ConnectionError, ReadTimeout
7
8
 
8
9
  from ..author_utils import get_authors
9
10
  from ..base_utils import compact, presence, sanitize, wrap
@@ -40,7 +41,7 @@ OA_IDENTIFIER_TYPES = {
40
41
  def get_openalex_list(query: dict, **kwargs) -> list[dict]:
41
42
  """get_openalex list from OpenAlex API."""
42
43
  url = openalex_api_query_url(query, **kwargs)
43
- response = httpx.get(url, timeout=30, **kwargs)
44
+ response = requests.get(url, timeout=30, **kwargs)
44
45
  if response.status_code != 200:
45
46
  return []
46
47
  return response.json().get("results", [])
@@ -52,7 +53,7 @@ def get_openalex(pid: str, **kwargs) -> dict:
52
53
  if identifier_type not in ["DOI", "MAG", "OpenAlex", "PMID", "PMCID"]:
53
54
  return {"state": "not_found"}
54
55
  url = openalex_api_url(id, identifier_type, **kwargs)
55
- response = httpx.get(url, timeout=10, **kwargs)
56
+ response = requests.get(url, timeout=10, **kwargs)
56
57
  if response.status_code != 200:
57
58
  return {"state": "not_found"}
58
59
  # OpenAlex returns record as list
@@ -212,7 +213,7 @@ def get_references(pids: list, **kwargs) -> list:
212
213
 
213
214
 
214
215
  def get_citations(citation_url: str, **kwargs) -> list:
215
- response = httpx.get(citation_url, timeout=10, **kwargs)
216
+ response = requests.get(citation_url, timeout=10, **kwargs)
216
217
  if response.status_code != 200:
217
218
  return {"state": "not_found"}
218
219
  response = response.json()
@@ -248,7 +249,7 @@ def get_openalex_works(pids: list, **kwargs) -> list:
248
249
  for pid_batch in pid_batches:
249
250
  ids = "|".join(pid_batch)
250
251
  url = f"https://api.openalex.org/works?filter=ids.openalex:{ids}"
251
- response = httpx.get(url, timeout=10, **kwargs)
252
+ response = requests.get(url, timeout=10, **kwargs)
252
253
  if response.status_code != 200:
253
254
  return {"state": "not_found"}
254
255
  response = response.json()
@@ -268,7 +269,7 @@ def get_openalex_funders(pids: list, **kwargs) -> list:
268
269
  for pid_batch in pid_batches:
269
270
  ids = "|".join(pid_batch)
270
271
  url = f"https://api.openalex.org/funders?filter=ids.openalex:{ids}"
271
- response = httpx.get(url, timeout=10, **kwargs)
272
+ response = requests.get(url, timeout=10, **kwargs)
272
273
  if response.status_code != 200:
273
274
  return {"state": "not_found"}
274
275
  response = response.json()
@@ -297,7 +298,7 @@ def get_openalex_source(str: Optional[str], **kwargs) -> Optional[dict]:
297
298
  return None
298
299
 
299
300
  url = f"https://api.openalex.org/sources/{id}"
300
- response = httpx.get(url, timeout=10, **kwargs)
301
+ response = requests.get(url, timeout=10, **kwargs)
301
302
  if response.status_code != 200:
302
303
  return {"state": "not_found"}
303
304
  response = response.json()
@@ -381,11 +382,11 @@ def get_random_openalex_id(number: int = 1, **kwargs) -> list:
381
382
  number = min(number, 20)
382
383
  url = openalex_api_sample_url(number, **kwargs)
383
384
  try:
384
- response = httpx.get(url, timeout=10)
385
+ response = requests.get(url, timeout=10)
385
386
  if response.status_code != 200:
386
387
  return []
387
388
 
388
389
  items = py_.get(response.json(), "results")
389
390
  return items
390
- except (httpx.ReadTimeout, httpx.ConnectError):
391
+ except (ReadTimeout, ConnectionError):
391
392
  return []
@@ -1,43 +1,45 @@
1
1
  """schema_org reader for commonmeta-py"""
2
2
 
3
- from typing import Optional
4
3
  import io
5
- import orjson as json
6
- from datetime import datetime
7
4
  from collections import defaultdict
8
- import httpx
9
- from pydash import py_
10
- from bs4 import BeautifulSoup
5
+ from datetime import datetime
6
+ from typing import Optional
7
+
8
+ import orjson as json
11
9
  import pikepdf
10
+ import requests
11
+ from bs4 import BeautifulSoup
12
+ from pydash import py_
13
+ from requests.exceptions import ConnectionError
12
14
 
13
- from ..utils import (
14
- dict_to_spdx,
15
- normalize_cc_url,
16
- from_schema_org,
17
- from_schema_org_creators,
18
- normalize_id,
19
- normalize_ids,
20
- normalize_url,
21
- name_to_fos,
22
- get_language,
23
- )
24
- from ..readers.crossref_reader import get_crossref
25
- from ..readers.datacite_reader import get_datacite
26
- from ..base_utils import wrap, compact, presence, parse_attributes, sanitize
27
15
  from ..author_utils import get_authors
16
+ from ..base_utils import compact, parse_attributes, presence, sanitize, wrap
17
+ from ..constants import (
18
+ OG_TO_SO_TRANSLATIONS,
19
+ SO_TO_CM_TRANSLATIONS,
20
+ SO_TO_DC_RELATION_TYPES,
21
+ SO_TO_DC_REVERSE_RELATION_TYPES,
22
+ Commonmeta,
23
+ )
28
24
  from ..date_utils import (
25
+ get_datetime_from_pdf_time,
29
26
  get_iso8601_date,
30
27
  strip_milliseconds,
31
- get_datetime_from_pdf_time,
32
28
  )
33
29
  from ..doi_utils import doi_from_url, get_doi_ra, validate_doi
30
+ from ..readers.crossref_reader import get_crossref
31
+ from ..readers.datacite_reader import get_datacite
34
32
  from ..translators import web_translator
35
- from ..constants import (
36
- SO_TO_CM_TRANSLATIONS,
37
- SO_TO_DC_RELATION_TYPES,
38
- SO_TO_DC_REVERSE_RELATION_TYPES,
39
- OG_TO_SO_TRANSLATIONS,
40
- Commonmeta,
33
+ from ..utils import (
34
+ dict_to_spdx,
35
+ from_schema_org,
36
+ from_schema_org_creators,
37
+ get_language,
38
+ name_to_fos,
39
+ normalize_cc_url,
40
+ normalize_id,
41
+ normalize_ids,
42
+ normalize_url,
41
43
  )
42
44
 
43
45
 
@@ -51,8 +53,8 @@ def get_schema_org(pid: str, **kwargs) -> dict:
51
53
  if doi_from_url(pid):
52
54
  return get_doi_meta(doi_from_url(pid))
53
55
  try:
54
- response = httpx.get(url, timeout=10, follow_redirects=True, **kwargs)
55
- except httpx.ConnectError as error:
56
+ response = requests.get(url, timeout=10, allow_redirects=True, **kwargs)
57
+ except ConnectionError as error:
56
58
  return {
57
59
  "@id": url,
58
60
  "@type": "WebPage",
@@ -1,6 +1,7 @@
1
1
  """Schema utils for commonmeta-py"""
2
2
 
3
3
  from os import path
4
+
4
5
  import orjson as json
5
6
  from jsonschema import Draft202012Validator, ValidationError
6
7
 
commonmeta/translators.py CHANGED
@@ -1,8 +1,9 @@
1
1
  """Web translators for commonmeta. Using BeautifulSoup to extract metadata from web pages."""
2
2
 
3
- from furl import furl
4
3
  import re
5
4
 
5
+ from furl import furl
6
+
6
7
  from .doi_utils import doi_as_url
7
8
 
8
9
 
commonmeta/utils.py CHANGED
@@ -408,14 +408,36 @@ def openalex_api_url(id: str, identifier_type: str, **kwargs) -> str:
408
408
 
409
409
  def openalex_api_query_url(query: dict) -> str:
410
410
  """Return the OpenAlex API query URL"""
411
+ # Define allowed types
412
+ types = [
413
+ "article", "book-chapter", "dataset", "preprint", "dissertation",
414
+ "book", "review", "paratext", "libguides", "letter", "other",
415
+ "reference-entry", "report", "editorial", "peer-review", "erratum",
416
+ "standard", "grant", "supplementary-materials", "retraction",
417
+ ]
418
+
411
419
  url = "https://api.openalex.org/works"
412
420
  f = furl(url)
413
- rows = min(int(query.get("rows", 20)), 1000)
414
- queries = []
421
+
422
+ # Handle pagination and sample parameters
423
+ number = max(1, min(1000, int(query.get("number", query.get("rows", 10)))))
424
+ page = max(1, int(query.get("page", 1)))
425
+
426
+ sample = query.get("sample", False)
427
+ if sample:
428
+ f.args["sample"] = str(number)
429
+ else:
430
+ f.args["per-page"] = str(number)
431
+ f.args["page"] = str(page)
432
+ # Sort results by published date in descending order
433
+ f.args["sort"] = "publication_date:desc"
434
+
435
+ # Build filters
415
436
  filters = []
437
+ queries = []
416
438
  _query = None
417
- _filter = None
418
439
 
440
+ # Handle query parameters
419
441
  if query.get("query", None) is not None:
420
442
  queries += [query.get("query")]
421
443
  for key, value in query.items():
@@ -428,23 +450,60 @@ def openalex_api_query_url(query: dict) -> str:
428
450
  queries += [f"{key}:{value}"]
429
451
  if queries:
430
452
  _query = ",".join(queries)
453
+ f.args["query"] = _query
454
+
455
+ # Member/IDs filter
456
+ ids = query.get("ids", query.get("member", ""))
457
+ if ids:
458
+ filters.append(f"member:{ids}")
459
+
460
+ # Type filter
461
+ type_ = query.get("type_", query.get("type", ""))
462
+ if type_ and type_ in types:
463
+ filters.append(f"type:{type_}")
431
464
 
465
+ # ROR filter
466
+ ror = query.get("ror", "")
467
+ if ror:
468
+ r = validate_ror(ror)
469
+ if r:
470
+ filters.append(f"authorships.institutions.ror:{r}")
471
+
472
+ # ORCID filter
473
+ orcid = query.get("orcid", "")
474
+ if orcid:
475
+ o = validate_orcid(orcid)
476
+ if o:
477
+ filters.append(f"authorships.author.id:{o}")
478
+
479
+ # Year filter
480
+ year = query.get("year", query.get("publication_year", ""))
481
+ if year:
482
+ filters.append(f"publication_year:{year}")
483
+
484
+ # Other filters from the original function
432
485
  for key, value in query.items():
433
486
  if key in [
434
487
  "prefix",
435
- "member",
436
- "type",
437
488
  "has-full-text",
438
- "has-references",
439
- "has-orcid",
440
489
  "has-funder",
441
490
  "has-license",
442
491
  ]:
443
- filters += [f"{key}:{value}"]
444
- if filters:
445
- _filter = ",".join(filters)
492
+ filters.append(f"{key}:{value}")
493
+
494
+ # Boolean filters
495
+ # if query.get("hasORCID", query.get("has-orcid", False)):
496
+ # filters.append("has-orcid:true")
497
+
498
+ # if query.get("hasReferences", query.get("has-references", False)):
499
+ # filters.append("has-references:true")
446
500
 
447
- f.args.update(compact({"rows": rows, "query": _query, "filter": _filter}))
501
+ # if query.get("hasAbstract", query.get("has-abstract", False)):
502
+ # filters.append("has-abstract:true")
503
+
504
+ # Add filters to params if any exist
505
+ if filters:
506
+ f.args["filter"] = ",".join(filters)
448
507
 
449
508
  return f.url
450
509
 
@@ -1,13 +1,18 @@
1
1
  """Citation writer for commonmeta-py"""
2
2
 
3
- import orjson as json
4
3
  import re
5
- from pydash import py_
6
- from citeproc import CitationStylesStyle, CitationStylesBibliography
7
- from citeproc import Citation, CitationItem
8
- from citeproc import formatter
4
+
5
+ import orjson as json
6
+ from citeproc import (
7
+ Citation,
8
+ CitationItem,
9
+ CitationStylesBibliography,
10
+ CitationStylesStyle,
11
+ formatter,
12
+ )
9
13
  from citeproc.source.json import CiteProcJSON
10
14
  from citeproc_styles import get_style_filepath
15
+ from pydash import py_
11
16
 
12
17
 
13
18
  def write_citation(metadata):
@@ -3,6 +3,7 @@
3
3
  import orjson as json
4
4
  import orjsonl
5
5
  import pydash as py_
6
+
6
7
  from ..base_utils import compact
7
8
 
8
9
 
@@ -1,6 +1,7 @@
1
1
  """Crossref XML writer for commonmeta-py"""
2
2
 
3
3
  from typing import Optional
4
+
4
5
  from ..constants import Commonmeta
5
6
  from ..crossref_utils import generate_crossref_xml, generate_crossref_xml_list
6
7
 
@@ -1,13 +1,14 @@
1
1
  """CSL-JSON writer for commonmeta-py"""
2
2
 
3
- import orjson as json
4
3
  from typing import Optional
5
4
 
6
- from ..utils import pages_as_string, to_csl
7
- from ..base_utils import wrap, presence, parse_attributes, compact
5
+ import orjson as json
6
+
7
+ from ..base_utils import compact, parse_attributes, presence, wrap
8
+ from ..constants import CM_TO_CSL_TRANSLATIONS, Commonmeta
8
9
  from ..date_utils import get_date_parts
9
10
  from ..doi_utils import doi_from_url
10
- from ..constants import CM_TO_CSL_TRANSLATIONS, Commonmeta
11
+ from ..utils import pages_as_string, to_csl
11
12
 
12
13
 
13
14
  def write_csl(metadata: Commonmeta) -> Optional[str]:
@@ -1,19 +1,20 @@
1
1
  """DataCite writer for commonmeta-py"""
2
2
 
3
- import orjson as json
4
3
  from typing import Optional, Union
5
4
 
6
- from ..base_utils import wrap, compact
7
- from ..doi_utils import doi_from_url, normalize_doi
5
+ import orjson as json
6
+
7
+ from ..base_utils import compact, wrap
8
8
  from ..constants import (
9
9
  CM_TO_BIB_TRANSLATIONS,
10
- CM_TO_CSL_TRANSLATIONS,
11
10
  CM_TO_CR_TRANSLATIONS,
11
+ CM_TO_CSL_TRANSLATIONS,
12
12
  CM_TO_DC_TRANSLATIONS,
13
13
  CM_TO_RIS_TRANSLATIONS,
14
14
  CM_TO_SO_TRANSLATIONS,
15
15
  Commonmeta,
16
16
  )
17
+ from ..doi_utils import doi_from_url, normalize_doi
17
18
 
18
19
 
19
20
  def write_datacite(metadata: Commonmeta) -> Optional[Union[str, dict]]:
@@ -1,23 +1,24 @@
1
1
  """InvenioRDM writer for commonmeta-py"""
2
2
 
3
- import orjson as json
4
3
  from typing import Optional
5
4
 
6
- from ..base_utils import compact, wrap, parse_attributes, presence
7
- from ..date_utils import get_iso8601_date
8
- from ..doi_utils import doi_from_url, normalize_doi
5
+ import orjson as json
6
+
7
+ from ..base_utils import compact, parse_attributes, presence, wrap
9
8
  from ..constants import (
10
9
  CM_TO_INVENIORDM_TRANSLATIONS,
11
- INVENIORDM_IDENTIFIER_TYPES,
12
10
  CROSSREF_FUNDER_ID_TO_ROR_TRANSLATIONS,
11
+ INVENIORDM_IDENTIFIER_TYPES,
13
12
  )
13
+ from ..date_utils import get_iso8601_date
14
+ from ..doi_utils import doi_from_url, normalize_doi
14
15
  from ..utils import (
16
+ FOS_MAPPINGS,
15
17
  get_language,
16
- validate_orcid,
17
- validate_ror,
18
18
  id_from_url,
19
19
  normalize_url,
20
- FOS_MAPPINGS,
20
+ validate_orcid,
21
+ validate_ror,
21
22
  )
22
23
 
23
24
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: commonmeta-py
3
- Version: 0.105
3
+ Version: 0.107
4
4
  Summary: Library for conversions to/from the Commonmeta scholarly metadata format
5
5
  Project-URL: Homepage, https://python.commonmeta.org
6
6
  Project-URL: Repository, https://github.com/front-matter/commonmeta-py
@@ -8,37 +8,39 @@ Project-URL: Documentation, https://python.commonmeta.org
8
8
  Author-email: Martin Fenner <martin@front-matter.io>
9
9
  License-Expression: MIT
10
10
  License-File: LICENSE
11
- Keywords: bibtex,commonmeta,crossref,csl,datacite,metadata,science
11
+ Keywords: bibtex,commonmeta,crossref,csl,datacite,inveniordm,metadata,openalex,schemaorg,science
12
12
  Requires-Python: <4.0,>=3.9
13
13
  Requires-Dist: base32-lib~=1.0
14
- Requires-Dist: beautifulsoup4~=4.11
14
+ Requires-Dist: beautifulsoup4<5,>=4.11
15
15
  Requires-Dist: bibtexparser~=1.4
16
- Requires-Dist: citeproc-py-styles~=0.1.3
17
- Requires-Dist: citeproc-py<0.9,>=0.7
16
+ Requires-Dist: citeproc-py-styles<1,>=0.1.2
17
+ Requires-Dist: citeproc-py<1,>=0.6
18
18
  Requires-Dist: click<9,>=8.1.7
19
- Requires-Dist: datacite~=1.1
19
+ Requires-Dist: datacite<2,>=1.1.1
20
20
  Requires-Dist: dateparser<2,>=1.1.7
21
21
  Requires-Dist: edtf<6,>=5.0.0
22
22
  Requires-Dist: furl<3,>=2.1.3
23
- Requires-Dist: httpx<0.29,>=0.28
24
23
  Requires-Dist: jsonschema~=4.21
25
24
  Requires-Dist: lxml>=4.8
26
- Requires-Dist: nameparser<2,>=1.1.2
25
+ Requires-Dist: marshmallow-utils>=0.10.0
26
+ Requires-Dist: nameparser<2,>=1.1.1
27
27
  Requires-Dist: nh3<0.3,>=0.2.14
28
28
  Requires-Dist: orjson<4,>=3.9.14
29
29
  Requires-Dist: orjsonl<2,>=1.0.0
30
30
  Requires-Dist: pikepdf<10.0,>=8.14
31
- Requires-Dist: pycountry<25,>=23.12.11
32
- Requires-Dist: pydash<9,>=7
31
+ Requires-Dist: pycountry>=22.3.5
32
+ Requires-Dist: pydash<9,>=6
33
33
  Requires-Dist: pyjwt<3,>=2.8.0
34
34
  Requires-Dist: python-dateutil<3,>=2.8.2
35
- Requires-Dist: pyyaml~=6.0
35
+ Requires-Dist: pyyaml>=5.4
36
+ Requires-Dist: requests>=2.31.0
37
+ Requires-Dist: requests>=2.32.3
36
38
  Requires-Dist: simplejson~=3.18
37
- Requires-Dist: types-beautifulsoup4~=4.11
39
+ Requires-Dist: types-beautifulsoup4<5,>=4.11
38
40
  Requires-Dist: types-dateparser~=1.1
39
- Requires-Dist: types-pyyaml~=6.0
40
- Requires-Dist: types-xmltodict<0.15,>=0.13
41
- Requires-Dist: xmltodict<0.15,>=0.12
41
+ Requires-Dist: types-pyyaml>=5.4
42
+ Requires-Dist: types-xmltodict<0.20,>=0.13
43
+ Requires-Dist: xmltodict<0.20,>=0.12
42
44
  Description-Content-Type: text/markdown
43
45
 
44
46
  [![DOI](https://zenodo.org/badge/570526578.svg)](https://zenodo.org/doi/10.5281/zenodo.8340374)
@@ -1,32 +1,32 @@
1
- commonmeta/__init__.py,sha256=-CGF2Vsunhb1pTKiRlTsTwhtS4tU9GPGxegTdD8ASkw,1933
2
- commonmeta/api_utils.py,sha256=-ZHGVZZhJqnjnsLtp4-PoeHYbDqL0cQme7W70BEjo4U,2677
3
- commonmeta/author_utils.py,sha256=4ftyfy0tZRtP8bJ_PYdrNS8Z76FNBJ38sHj5EMhds1Y,8585
4
- commonmeta/base_utils.py,sha256=-HKaIts_LzTKNsdqSAw52r5zx1baGawSQawGh8l5Sio,3751
1
+ commonmeta/__init__.py,sha256=Vz7vv934Mmzs1qxlSSx2bkuMVYtdkFJvvikHMihyzAA,2220
2
+ commonmeta/api_utils.py,sha256=jkM1d4jgvdZ5k0gkLeg8NDXsizPEesiHNB9sF7P-gFA,2687
3
+ commonmeta/author_utils.py,sha256=3lYW5s1rOUWNTKs1FP6XLfEUY3yCLOe_3L_VdJTDMp0,8585
4
+ commonmeta/base_utils.py,sha256=TCaMENjyySStUxFowg6R08Vt5eLkHfW7WjdEHVcAZWo,3752
5
5
  commonmeta/cli.py,sha256=_sMYNzfiEgQ1qx6tZPMbOp1GZ9BBiWe0fYF3jJlamKU,6251
6
6
  commonmeta/constants.py,sha256=NuugDPtaAlYx7d-0WKPHNO-qnjt4rzcj-EbzL2vSi2Q,19259
7
- commonmeta/crossref_utils.py,sha256=mEXNP7LQXcJyEmCqcpWxi_VI3GU1ZD_XvarYjUMxPL0,22284
8
- commonmeta/date_utils.py,sha256=WW0tg0mgHdORPhAHt9nJIuVawhepZtUCouW-SdqI1OM,6317
9
- commonmeta/doi_utils.py,sha256=uIDfE6i68bJv-AJ4STMmT6JhXEvmTu6eZwIxAr_4MD8,9570
7
+ commonmeta/crossref_utils.py,sha256=odkcP_Ivk0Fs_BvUzxdPQ4F2098RIsKQT_NbZGQXo4A,24354
8
+ commonmeta/date_utils.py,sha256=H2cCobX0JREIUOT_cCigGd3MG7prGiQpXk1m4ZNrFwU,6318
9
+ commonmeta/doi_utils.py,sha256=ZztajfOLtnASk1BbQ1Y2Q4B_xxlnbujn7Opx5a1U5vY,9582
10
10
  commonmeta/metadata.py,sha256=qgqbrvxPEbYn0pKIArhpaGjIeiHeuubc6nF37QgWp2Y,16702
11
- commonmeta/schema_utils.py,sha256=GFFusU6D9atmjiQ7SS-rQ5cqrOEQlwYzF3q1CnOUXRA,916
12
- commonmeta/translators.py,sha256=RpGJtKNLjmz41VREZDY7KyyE2eXOi8j7m-da4jHmknI,1362
13
- commonmeta/utils.py,sha256=APDXdeR2oWyn15vcQPJjPisRHn14hzt1q_21vPxkFCE,48589
11
+ commonmeta/schema_utils.py,sha256=yEb8Bt7WqjfQW5y15TV1uaZZdK_k9Ufz6V7Nq7Ywhi0,917
12
+ commonmeta/translators.py,sha256=CBMK4jrXRmGZiAhCh6wsJjhbDJWbcsda8UvXFXxccAw,1363
13
+ commonmeta/utils.py,sha256=G4BL_YQ-Ug0XwBHU4L83OViRQCiyOqZXg5uJC7WQZ2A,50462
14
14
  commonmeta/readers/__init__.py,sha256=vOf7UsOKNoh_ZCuyexxhAmPMt8wjB-pF_CfpWRaN8pk,45
15
15
  commonmeta/readers/bibtex_reader.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
- commonmeta/readers/cff_reader.py,sha256=V379XNQUc0M-cDxNPwHqabu9b0NTscPUJpM9DXNgL_c,6145
17
- commonmeta/readers/codemeta_reader.py,sha256=RpzyHs07Jfix4i0mYjW48ZLuTrMPTMQ9RenowjQy-Fc,3659
16
+ commonmeta/readers/cff_reader.py,sha256=kIG-OKGQz37oWL6cU3Cz7HQ83DnRCmQ2PKSjIDodSp8,6152
17
+ commonmeta/readers/codemeta_reader.py,sha256=NUpdFXZZKR_sj2dT62ch9n3KEx-VcTWnsF5cHdAQ8JM,3666
18
18
  commonmeta/readers/commonmeta_reader.py,sha256=46XrCr2whkUP4uiaNiFXS7ABwowcRdWcLG-3OcfhVdk,303
19
- commonmeta/readers/crossref_reader.py,sha256=53Up2X6ff2iVPXLoRjjhTSa5rWrjgT8FObclU50Gazc,12540
20
- commonmeta/readers/crossref_xml_reader.py,sha256=yZOh66_4tVS5i0TdEyOa48ckpl7_cj69hfZnaA9pjM8,18723
19
+ commonmeta/readers/crossref_reader.py,sha256=xvFrSBtKb4A83t61R7QfruZQ96IVxBZpODYny0vuRjA,12604
20
+ commonmeta/readers/crossref_xml_reader.py,sha256=f4bBueit6DAlRNtUVaDs5p3wkT6wmNEz8ffQAj0BobY,18730
21
21
  commonmeta/readers/csl_reader.py,sha256=OxzC2AZKfv43BCah4XGYvlK_LUK-5mxXFcjdzB5vv_o,3216
22
- commonmeta/readers/datacite_reader.py,sha256=YuYUl4tSOB6BXeY5aASek4BjFsF47Ibow1gIrsbTDOM,12027
23
- commonmeta/readers/datacite_xml_reader.py,sha256=nhnO92fZihr1HZlbXjyem-HJXc9_DWLgJ2zeltuPMIg,13041
24
- commonmeta/readers/inveniordm_reader.py,sha256=qFPXdOGArWwsb09MdPf0uCsXEkL19AgsRSgsH7KT9Pw,8437
25
- commonmeta/readers/json_feed_reader.py,sha256=uiFAeDmgDOpoZR7Zah2uLDsY7xrkxpkg59bo3obZ8uk,14477
22
+ commonmeta/readers/datacite_reader.py,sha256=kO_Frddha0qzamz20XzXfU9G1NkdTOVr4K8qmhbSlZY,12068
23
+ commonmeta/readers/datacite_xml_reader.py,sha256=zJSuN9pnWplYFH7V1eneh0OjKTFCNkOLmEMf6fU6_xg,13048
24
+ commonmeta/readers/inveniordm_reader.py,sha256=6LkT6R20jSFqDdZqAzcREHbdAcIPHiYJvxKsK_mpDdw,8374
25
+ commonmeta/readers/json_feed_reader.py,sha256=edF4jirGRpvE0SMosXtjAS9_LCJt0WjwRcG1Rn4a3KE,14522
26
26
  commonmeta/readers/kbase_reader.py,sha256=KH3loJvuq2bm8zAYIUG7hTsr5-2Anj3NQvoJUDiqmss,6764
27
- commonmeta/readers/openalex_reader.py,sha256=jYBvAoawztrMQg6AdYyQf9cCVWR1M5CaraHe9CInEbU,12750
27
+ commonmeta/readers/openalex_reader.py,sha256=4HUkBsut_iUjhUcC5c1GHgxnKsYQc-fgY43QILgVZEg,12826
28
28
  commonmeta/readers/ris_reader.py,sha256=oQ3G7qQmNwhr4cNp-Gv5UW28J2K1oKpBlPh-tjRtnpQ,3678
29
- commonmeta/readers/schema_org_reader.py,sha256=oZoLG9okMxzlyCuX6oNNNFwvGCFpQ3W2Pz2TpXr3vkA,17224
29
+ commonmeta/readers/schema_org_reader.py,sha256=AlFMmuUovqlMYkwL9F1Um6bX5vIWzhqmreHCrzsC3rU,17275
30
30
  commonmeta/resources/cff_v1.2.0.json,sha256=MpfjDYgX7fN9PLiG54ISZ2uu9WItNqfh-yaRuTf6Ptg,46691
31
31
  commonmeta/resources/commonmeta_v0.12.json,sha256=HUSNReXh2JN3Q6YWSt7CE69js8dh50OlpMYGTyU98oU,16762
32
32
  commonmeta/resources/commonmeta_v0.13.json,sha256=2-WSZGijR13zVu97S_YHXr-cyeLW7hzHXYMlr6nIjdw,15787
@@ -37,8 +37,6 @@ commonmeta/resources/crossref-v0.2.json,sha256=THbFem4IDSE-TFNOtP1-NOmZhED2dlLBs
37
37
  commonmeta/resources/csl-data.json,sha256=I7LAYtdSYGD0YxuwS0s7ojfkiEhCU-MnvQD6aRhhuBE,12222
38
38
  commonmeta/resources/datacite-v4.5.json,sha256=ocpQNSbORPJf5Ogidy6M6EHundgv7DSgIqRco02KgM4,18970
39
39
  commonmeta/resources/datacite-v4.5pr.json,sha256=2A1fKDid_hNfKc5YLjOjtXUobJovU3so9lNkTXVS3sw,21092
40
- commonmeta/resources/ietf-bcp-47.json,sha256=QQUmtIleKwywDfilVLlxzhf7XA4T46LdtLZic5XwDco,228225
41
- commonmeta/resources/iso-8601.json,sha256=SJpMPOyep2ujMnTw7PeL_KjF4tNPjx5E0n7KslCm2_I,246361
42
40
  commonmeta/resources/spdx-schema.json,sha256=Zq3_ad54nFivIkbnnqGPXEcXcDHJ_KuA6WIBSjmeJq8,47334
43
41
  commonmeta/resources/crossref/AccessIndicators.xsd,sha256=en-G2FFt4ewIFRw5C6g4YA8Nc0M66fCM2CygiO_ZqqY,2825
44
42
  commonmeta/resources/crossref/JATS-journalpublishing1-3d2-mathml3-elements.xsd,sha256=l5jJMFm4xx09bavH2Gc3EqIdr-0PTf6M9YBTNpUaZhY,415409
@@ -63,16 +61,16 @@ commonmeta/resources/styles/modern-language-association.csl,sha256=HI2iU4krze1aH
63
61
  commonmeta/resources/styles/vancouver.csl,sha256=lun3_i2oTilgsANk4LjFao2UDPQlGj_hgFgKAWC_DF8,12878
64
62
  commonmeta/writers/__init__.py,sha256=47-snms6xBHkoEXKYV1DBtH1npAtlVtvY29Z4Zr45qI,45
65
63
  commonmeta/writers/bibtex_writer.py,sha256=RjxpFt19N2PjX7cNtvN8kMYTxLWp_KhLYTsQNxYiC-4,4972
66
- commonmeta/writers/citation_writer.py,sha256=7CIC6zuT87dkqTDx-r7xvdbXauAFopNiBvR4CBThr5U,2357
67
- commonmeta/writers/commonmeta_writer.py,sha256=mu-yXQvQs_xdYM4MxbTTxxYB5n0lJA5BqiYfRPV562Q,1870
68
- commonmeta/writers/crossref_xml_writer.py,sha256=ckEOL1q7x8obWLzoMrLuOiDuRKiXHammI1m_GA85BVg,493
69
- commonmeta/writers/csl_writer.py,sha256=_5tmPFLzEIaRgYI9Wz00nPwtfXmBuukCrTVUEFuf83c,2808
70
- commonmeta/writers/datacite_writer.py,sha256=rygkSNUWdF4lvGd4BsjrlBfPHHsSLwkFp-aYLGOWNiU,6305
71
- commonmeta/writers/inveniordm_writer.py,sha256=M_VmBZ_E5x_BHSgMjt2u70c34Eij2ngoaDwYWOrJzkg,11429
64
+ commonmeta/writers/citation_writer.py,sha256=qs_4X3BjrSqHexmJFPvPDTp0mRIqzb0F70_Wuc7S9x0,2343
65
+ commonmeta/writers/commonmeta_writer.py,sha256=erIIcAGBy9cZb6FWSR6P0qzxr1c6iS3oCgKbGAsA94o,1871
66
+ commonmeta/writers/crossref_xml_writer.py,sha256=REORiWPyT2x13Y66IT1RNtOwB9NWutrzNCt_HLeQrsY,494
67
+ commonmeta/writers/csl_writer.py,sha256=IU70HwS77DD-NhQjc4TEGQVSaF-1TgIvyVR9E_zOqy0,2809
68
+ commonmeta/writers/datacite_writer.py,sha256=vijXscY411UMC72WL9VUYJhBtH6ZCPQTk8xtCo1jYtQ,6306
69
+ commonmeta/writers/inveniordm_writer.py,sha256=vGCItVrxkzPgvV-_m-cYnxTSux6mc3eer4JpI-10JhU,11430
72
70
  commonmeta/writers/ris_writer.py,sha256=CXd9MiSHOMLReeGmr1moqteiq4x8AtLNYVS60s-aq8I,2094
73
71
  commonmeta/writers/schema_org_writer.py,sha256=J2Y-krzyhgBZ6n__S_YvdjUtwiCm-RUtpGA_esFZUwg,5742
74
- commonmeta_py-0.105.dist-info/METADATA,sha256=Y7pAnOSva_poSErOjNJMNCiKLKB6gS8qLtTk9C_4RlM,7444
75
- commonmeta_py-0.105.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
76
- commonmeta_py-0.105.dist-info/entry_points.txt,sha256=U4w4BoRuS3rN5t5Y-uYSyOeU5Lh_VRVMS9OIDzIgw4w,50
77
- commonmeta_py-0.105.dist-info/licenses/LICENSE,sha256=wsIvxF9Q9GC9vA_s79zTWP3BkXJdfUNRmALlU8GbW1s,1074
78
- commonmeta_py-0.105.dist-info/RECORD,,
72
+ commonmeta_py-0.107.dist-info/METADATA,sha256=1jO_8bgd6pHyUSLCr_LKKRwEYy73kXIgJJaEBowdalw,7552
73
+ commonmeta_py-0.107.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
74
+ commonmeta_py-0.107.dist-info/entry_points.txt,sha256=U4w4BoRuS3rN5t5Y-uYSyOeU5Lh_VRVMS9OIDzIgw4w,50
75
+ commonmeta_py-0.107.dist-info/licenses/LICENSE,sha256=wsIvxF9Q9GC9vA_s79zTWP3BkXJdfUNRmALlU8GbW1s,1074
76
+ commonmeta_py-0.107.dist-info/RECORD,,