commonmeta-py 0.52__tar.gz → 0.53__tar.gz

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 (75) hide show
  1. {commonmeta_py-0.52 → commonmeta_py-0.53}/PKG-INFO +1 -1
  2. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/__init__.py +1 -1
  3. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/readers/json_feed_reader.py +9 -4
  4. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/utils.py +51 -1
  5. {commonmeta_py-0.52 → commonmeta_py-0.53}/pyproject.toml +1 -1
  6. {commonmeta_py-0.52 → commonmeta_py-0.53}/LICENSE +0 -0
  7. {commonmeta_py-0.52 → commonmeta_py-0.53}/README.md +0 -0
  8. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/api_utils.py +0 -0
  9. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/author_utils.py +0 -0
  10. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/base_utils.py +0 -0
  11. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/cli.py +0 -0
  12. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/constants.py +0 -0
  13. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/crossref_utils.py +0 -0
  14. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/date_utils.py +0 -0
  15. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/doi_utils.py +0 -0
  16. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/metadata.py +0 -0
  17. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/readers/__init__.py +0 -0
  18. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/readers/bibtex_reader.py +0 -0
  19. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/readers/cff_reader.py +0 -0
  20. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/readers/codemeta_reader.py +0 -0
  21. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/readers/commonmeta_reader.py +0 -0
  22. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/readers/crossref_reader.py +0 -0
  23. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/readers/crossref_xml_reader.py +0 -0
  24. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/readers/csl_reader.py +0 -0
  25. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/readers/datacite_reader.py +0 -0
  26. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/readers/datacite_xml_reader.py +0 -0
  27. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/readers/inveniordm_reader.py +0 -0
  28. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/readers/kbase_reader.py +0 -0
  29. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/readers/ris_reader.py +0 -0
  30. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/readers/schema_org_reader.py +0 -0
  31. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/resources/cff_v1.2.0.json +0 -0
  32. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/resources/commonmeta_v0.12.json +0 -0
  33. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/resources/commonmeta_v0.13.json +0 -0
  34. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/resources/commonmeta_v0.14.json +0 -0
  35. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/resources/commonmeta_v0.15.json +0 -0
  36. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/resources/crossref/AccessIndicators.xsd +0 -0
  37. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/resources/crossref/JATS-journalpublishing1-3d2-mathml3-elements.xsd +0 -0
  38. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/resources/crossref/JATS-journalpublishing1-3d2-mathml3.xsd +0 -0
  39. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/resources/crossref/JATS-journalpublishing1-elements.xsd +0 -0
  40. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/resources/crossref/JATS-journalpublishing1-mathml3-elements.xsd +0 -0
  41. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/resources/crossref/JATS-journalpublishing1-mathml3.xsd +0 -0
  42. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/resources/crossref/JATS-journalpublishing1.xsd +0 -0
  43. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/resources/crossref/clinicaltrials.xsd +0 -0
  44. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/resources/crossref/common5.3.1.xsd +0 -0
  45. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/resources/crossref/crossref5.3.1.xsd +0 -0
  46. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/resources/crossref/crossref_query_output3.0.xsd +0 -0
  47. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/resources/crossref/fundref.xsd +0 -0
  48. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/resources/crossref/module-ali.xsd +0 -0
  49. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/resources/crossref/relations.xsd +0 -0
  50. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/resources/crossref-v0.2.json +0 -0
  51. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/resources/csl-data.json +0 -0
  52. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/resources/datacite-v4.5.json +0 -0
  53. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/resources/datacite-v4.5pr.json +0 -0
  54. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/resources/ietf-bcp-47.json +0 -0
  55. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/resources/iso-8601.json +0 -0
  56. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/resources/spdx/licenses.json +0 -0
  57. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/resources/spdx-schema.json +0 -0
  58. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/resources/styles/apa.csl +0 -0
  59. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/resources/styles/chicago-author-date.csl +0 -0
  60. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/resources/styles/harvard-cite-them-right.csl +0 -0
  61. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/resources/styles/ieee.csl +0 -0
  62. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/resources/styles/modern-language-association.csl +0 -0
  63. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/resources/styles/vancouver.csl +0 -0
  64. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/schema_utils.py +0 -0
  65. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/translators.py +0 -0
  66. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/writers/__init__.py +0 -0
  67. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/writers/bibtex_writer.py +0 -0
  68. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/writers/citation_writer.py +0 -0
  69. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/writers/commonmeta_writer.py +0 -0
  70. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/writers/crossref_xml_writer.py +0 -0
  71. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/writers/csl_writer.py +0 -0
  72. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/writers/datacite_writer.py +0 -0
  73. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/writers/inveniordm_writer.py +0 -0
  74. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/writers/ris_writer.py +0 -0
  75. {commonmeta_py-0.52 → commonmeta_py-0.53}/commonmeta/writers/schema_org_writer.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: commonmeta-py
3
- Version: 0.52
3
+ Version: 0.53
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
@@ -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.52"
13
+ __version__ = "0.53"
14
14
  __author__ = "Martin Fenner"
15
15
  __license__ = "MIT"
16
16
 
@@ -49,7 +49,7 @@ def read_json_feed_item(data: Optional[dict], **kwargs) -> Commonmeta:
49
49
  read_options = kwargs or {}
50
50
  url = None
51
51
  if py_.get(meta, "blog.status", None) == "active":
52
- url = normalize_url(meta.get("url", None))
52
+ url = normalize_url(meta.get("url", None))
53
53
  elif py_.get(meta, "blog.status", None) == "archived":
54
54
  url = normalize_url(meta.get("archive_url", None))
55
55
  _id = normalize_doi(read_options.get("doi", None) or meta.get("doi", None)) or url
@@ -189,9 +189,14 @@ def get_references(references: list) -> list:
189
189
  )
190
190
 
191
191
  else:
192
- return {
193
- "id": reference.get("id", None),
194
- }
192
+ id_ = normalize_url(reference.get("id", None))
193
+ if id_ is None:
194
+ return None
195
+ return compact(
196
+ {
197
+ "id": id_,
198
+ }
199
+ )
195
200
 
196
201
  def number_reference(reference: dict, index: int) -> dict:
197
202
  """number reference"""
@@ -183,12 +183,18 @@ def normalize_ids(ids: list, relation_type=None) -> list:
183
183
  return [format_id(i) for i in ids]
184
184
 
185
185
 
186
- def normalize_url(url: Optional[str], secure=False, lower=False) -> Optional[str]:
186
+ def normalize_url(
187
+ url: Optional[str], secure=False, fragments=False, lower=False
188
+ ) -> Optional[str]:
187
189
  """Normalize URL"""
188
190
  if url is None or not isinstance(url, str):
189
191
  return None
192
+ url = url.strip()
190
193
  if url.endswith("/"):
191
194
  url = url.strip("/")
195
+ scheme = urlparse(url).scheme
196
+ if not scheme or scheme not in ["http", "https"]:
197
+ return None
192
198
  if secure is True and url.startswith(HTTP_SCHEME):
193
199
  url = url.replace(HTTP_SCHEME, HTTPS_SCHEME)
194
200
  if lower is True:
@@ -196,6 +202,50 @@ def normalize_url(url: Optional[str], secure=False, lower=False) -> Optional[str
196
202
  return url
197
203
 
198
204
 
205
+ # def normalize_url(url: Optional[str], secure=False, fragments=False, lower=False) -> Optional[str]:
206
+ # """Normalize URL"""
207
+ # if url is None or not isinstance(url, str):
208
+ # return None
209
+ # try:
210
+ # f = furl(url.strip())
211
+ # f.path.normalize()
212
+
213
+ # # only allow http and https schemes
214
+ # if f.scheme not in ["http", "https"]:
215
+ # return None
216
+ # if secure and f.scheme == "http":
217
+ # f.set(scheme="https")
218
+
219
+ # # remove index.html
220
+ # if f.path.segments and f.path.segments[-1] in ["index.html"]:
221
+ # f.path.segments.pop(-1)
222
+
223
+ # # remove fragments
224
+ # if fragments:
225
+ # f.remove(fragment=True)
226
+
227
+ # # remove specific query parameters
228
+ # f.remove(
229
+ # [
230
+ # "origin",
231
+ # "ref",
232
+ # "referrer",
233
+ # "source",
234
+ # "utm_content",
235
+ # "utm_medium",
236
+ # "utm_campaign",
237
+ # "utm_source",
238
+ # ]
239
+ # )
240
+
241
+ # if lower:
242
+ # return f.url.lower().strip("/")
243
+ # return f.url.strip("/")
244
+ # except ValueError:
245
+ # print(f"Error normalizing url {url}")
246
+ # return None
247
+
248
+
199
249
  def normalize_cc_url(url: Optional[str]):
200
250
  """Normalize Creative Commons URL"""
201
251
  if url is None or not isinstance(url, str):
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name="commonmeta-py"
3
- version="0.52"
3
+ version="0.53"
4
4
  repository = "https://github.com/front-matter/commonmeta-py"
5
5
  homepage = "https://python.commonmeta.org"
6
6
  documentation = "https://python.commonmeta.org"
File without changes
File without changes