commonmeta-py 0.20__tar.gz → 0.21__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 (415) hide show
  1. {commonmeta_py-0.20 → commonmeta_py-0.21}/PKG-INFO +1 -1
  2. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/author_utils.py +2 -2
  3. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/constants.py +11 -0
  4. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/doi_utils.py +13 -0
  5. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/metadata.py +3 -0
  6. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/utils.py +28 -8
  7. commonmeta_py-0.21/commonmeta/writers/inveniordm_writer.py +94 -0
  8. {commonmeta_py-0.20 → commonmeta_py-0.21}/pyproject.toml +1 -1
  9. commonmeta_py-0.21/tests/cassettes/test-inveniordm_writer/test_from_json_feed.yaml +189 -0
  10. commonmeta_py-0.21/tests/cassettes/test-inveniordm_writer/test_journal_article.yaml +181 -0
  11. commonmeta_py-0.21/tests/cassettes/test-inveniordm_writer/test_publication.yaml +128 -0
  12. commonmeta_py-0.21/tests/cassettes/test-inveniordm_writer/test_rogue_scholar.yaml +152 -0
  13. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/test-doi_utils.py +9 -0
  14. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/test-inveniordm_reader.py +1 -0
  15. commonmeta_py-0.21/tests/test-inveniordm_writer.py +153 -0
  16. {commonmeta_py-0.20 → commonmeta_py-0.21}/uv.lock +18 -14
  17. {commonmeta_py-0.20 → commonmeta_py-0.21}/.gitattributes +0 -0
  18. {commonmeta_py-0.20 → commonmeta_py-0.21}/.github/FUNDING.yml +0 -0
  19. {commonmeta_py-0.20 → commonmeta_py-0.21}/.github/dependabot.yml +0 -0
  20. {commonmeta_py-0.20 → commonmeta_py-0.21}/.github/issue_template.md +0 -0
  21. {commonmeta_py-0.20 → commonmeta_py-0.21}/.github/pull_request_template.md +0 -0
  22. {commonmeta_py-0.20 → commonmeta_py-0.21}/.github/workflows/build.yml +0 -0
  23. {commonmeta_py-0.20 → commonmeta_py-0.21}/.github/workflows/publish.yml +0 -0
  24. {commonmeta_py-0.20 → commonmeta_py-0.21}/.gitignore +0 -0
  25. {commonmeta_py-0.20 → commonmeta_py-0.21}/.gitmodules +0 -0
  26. {commonmeta_py-0.20 → commonmeta_py-0.21}/.pylintrc +0 -0
  27. {commonmeta_py-0.20 → commonmeta_py-0.21}/CITATION.cff +0 -0
  28. {commonmeta_py-0.20 → commonmeta_py-0.21}/CODE_OF_CONDUCT.md +0 -0
  29. {commonmeta_py-0.20 → commonmeta_py-0.21}/LICENSE +0 -0
  30. {commonmeta_py-0.20 → commonmeta_py-0.21}/README.md +0 -0
  31. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/__init__.py +0 -0
  32. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/api_utils.py +0 -0
  33. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/base_utils.py +0 -0
  34. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/cli.py +0 -0
  35. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/crossref_utils.py +0 -0
  36. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/date_utils.py +0 -0
  37. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/readers/__init__.py +0 -0
  38. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/readers/bibtex_reader.py +0 -0
  39. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/readers/cff_reader.py +0 -0
  40. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/readers/codemeta_reader.py +0 -0
  41. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/readers/commonmeta_reader.py +0 -0
  42. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/readers/crossref_reader.py +0 -0
  43. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/readers/crossref_xml_reader.py +0 -0
  44. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/readers/csl_reader.py +0 -0
  45. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/readers/datacite_reader.py +0 -0
  46. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/readers/datacite_xml_reader.py +0 -0
  47. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/readers/inveniordm_reader.py +0 -0
  48. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/readers/json_feed_reader.py +0 -0
  49. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/readers/kbase_reader.py +0 -0
  50. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/readers/ris_reader.py +0 -0
  51. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/readers/schema_org_reader.py +0 -0
  52. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/resources/cff_v1.2.0.json +0 -0
  53. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/resources/commonmeta_v0.12.json +0 -0
  54. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/resources/commonmeta_v0.13.json +0 -0
  55. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/resources/commonmeta_v0.14.json +0 -0
  56. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/resources/crossref/AccessIndicators.xsd +0 -0
  57. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/resources/crossref/JATS-journalpublishing1-3d2-mathml3-elements.xsd +0 -0
  58. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/resources/crossref/JATS-journalpublishing1-3d2-mathml3.xsd +0 -0
  59. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/resources/crossref/JATS-journalpublishing1-elements.xsd +0 -0
  60. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/resources/crossref/JATS-journalpublishing1-mathml3-elements.xsd +0 -0
  61. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/resources/crossref/JATS-journalpublishing1-mathml3.xsd +0 -0
  62. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/resources/crossref/JATS-journalpublishing1.xsd +0 -0
  63. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/resources/crossref/clinicaltrials.xsd +0 -0
  64. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/resources/crossref/common5.3.1.xsd +0 -0
  65. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/resources/crossref/crossref5.3.1.xsd +0 -0
  66. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/resources/crossref/crossref_query_output3.0.xsd +0 -0
  67. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/resources/crossref/fundref.xsd +0 -0
  68. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/resources/crossref/module-ali.xsd +0 -0
  69. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/resources/crossref/relations.xsd +0 -0
  70. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/resources/crossref-v0.2.json +0 -0
  71. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/resources/csl-data.json +0 -0
  72. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/resources/datacite-v4.5.json +0 -0
  73. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/resources/datacite-v4.5pr.json +0 -0
  74. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/resources/ietf-bcp-47.json +0 -0
  75. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/resources/iso-8601.json +0 -0
  76. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/resources/spdx/licenses.json +0 -0
  77. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/resources/spdx-schema..json +0 -0
  78. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/resources/styles/apa.csl +0 -0
  79. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/resources/styles/chicago-author-date.csl +0 -0
  80. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/resources/styles/harvard-cite-them-right.csl +0 -0
  81. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/resources/styles/ieee.csl +0 -0
  82. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/resources/styles/modern-language-association.csl +0 -0
  83. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/resources/styles/vancouver.csl +0 -0
  84. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/schema_utils.py +0 -0
  85. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/translators.py +0 -0
  86. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/writers/__init__.py +0 -0
  87. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/writers/bibtex_writer.py +0 -0
  88. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/writers/citation_writer.py +0 -0
  89. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/writers/commonmeta_writer.py +0 -0
  90. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/writers/crossref_xml_writer.py +0 -0
  91. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/writers/csl_writer.py +0 -0
  92. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/writers/datacite_writer.py +0 -0
  93. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/writers/ris_writer.py +0 -0
  94. {commonmeta_py-0.20 → commonmeta_py-0.21}/commonmeta/writers/schema_org_writer.py +0 -0
  95. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.gitignore +0 -0
  96. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/_freeze/cli/execute-results/html.json +0 -0
  97. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/_freeze/index/execute-results/html.json +0 -0
  98. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/_freeze/site_libs/clipboard/clipboard.min.js +0 -0
  99. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/idx/cli.qmd.json +0 -0
  100. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/idx/index.qmd.json +0 -0
  101. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/idx/readers/cff_reader.ipynb.json +0 -0
  102. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/idx/readers/crossref_reader.ipynb.json +0 -0
  103. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/idx/readers/crossref_xml_reader.ipynb.json +0 -0
  104. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/idx/readers/datacite_reader.ipynb.json +0 -0
  105. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/idx/readers/schema_org_reader.ipynb.json +0 -0
  106. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/idx/writers/bibtex_writer.ipynb.json +0 -0
  107. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/idx/writers/citation_writer.ipynb.json +0 -0
  108. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/idx/writers/commonmeta_writer.ipynb.json +0 -0
  109. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/idx/writers/csl_writer.ipynb.json +0 -0
  110. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/idx/writers/ris_writer.ipynb.json +0 -0
  111. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/xref/07ee3f98 +0 -0
  112. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/xref/0a8010f6 +0 -0
  113. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/xref/1ada7a4d +0 -0
  114. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/xref/1e7679b5 +0 -0
  115. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/xref/1faeef3c +0 -0
  116. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/xref/215c909e +0 -0
  117. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/xref/37babf0c +0 -0
  118. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/xref/47758bac +0 -0
  119. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/xref/4f20cda4 +0 -0
  120. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/xref/5f0cb144 +0 -0
  121. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/xref/63a25eca +0 -0
  122. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/xref/681e249a +0 -0
  123. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/xref/69d5a287 +0 -0
  124. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/xref/74bdd512 +0 -0
  125. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/xref/8157fa69 +0 -0
  126. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/xref/84aea158 +0 -0
  127. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/xref/865bbcbf +0 -0
  128. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/xref/881794db +0 -0
  129. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/xref/8c405949 +0 -0
  130. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/xref/8dff600d +0 -0
  131. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/xref/8ffa3f9e +0 -0
  132. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/xref/93136bcf +0 -0
  133. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/xref/INDEX +0 -0
  134. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/xref/a0d81684 +0 -0
  135. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/xref/aec1232c +0 -0
  136. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/xref/c8bfb0af +0 -0
  137. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/xref/e04dc8d0 +0 -0
  138. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/xref/f812800f +0 -0
  139. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/.quarto/xref/fd09fdd3 +0 -0
  140. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/_freeze/cli/execute-results/html.json +0 -0
  141. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/_freeze/index/execute-results/html.json +0 -0
  142. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/_freeze/site_libs/clipboard/clipboard.min.js +0 -0
  143. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/_publish.yml +0 -0
  144. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/_quarto.yml +0 -0
  145. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/_site/cli.html +0 -0
  146. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/_site/favicon.ico +0 -0
  147. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/_site/images/icon.png +0 -0
  148. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/_site/index.html +0 -0
  149. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/_site/readers/cff_reader.html +0 -0
  150. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/_site/readers/crossref_reader.html +0 -0
  151. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/_site/readers/crossref_xml_reader.html +0 -0
  152. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/_site/readers/datacite_reader.html +0 -0
  153. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/_site/readers/schema_org_reader.html +0 -0
  154. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/_site/search.json +0 -0
  155. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/_site/site_libs/bootstrap/bootstrap-dark.min.css +0 -0
  156. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/_site/site_libs/bootstrap/bootstrap-icons.css +0 -0
  157. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/_site/site_libs/bootstrap/bootstrap-icons.woff +0 -0
  158. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/_site/site_libs/bootstrap/bootstrap.min.css +0 -0
  159. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/_site/site_libs/bootstrap/bootstrap.min.js +0 -0
  160. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/_site/site_libs/clipboard/clipboard.min.js +0 -0
  161. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/_site/site_libs/quarto-html/anchor.min.js +0 -0
  162. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/_site/site_libs/quarto-html/popper.min.js +0 -0
  163. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/_site/site_libs/quarto-html/quarto-syntax-highlighting-dark.css +0 -0
  164. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/_site/site_libs/quarto-html/quarto-syntax-highlighting.css +0 -0
  165. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/_site/site_libs/quarto-html/quarto.js +0 -0
  166. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/_site/site_libs/quarto-html/tippy.css +0 -0
  167. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/_site/site_libs/quarto-html/tippy.umd.min.js +0 -0
  168. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/_site/site_libs/quarto-nav/headroom.min.js +0 -0
  169. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/_site/site_libs/quarto-nav/quarto-nav.js +0 -0
  170. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/_site/site_libs/quarto-search/autocomplete.umd.js +0 -0
  171. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/_site/site_libs/quarto-search/fuse.min.js +0 -0
  172. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/_site/site_libs/quarto-search/quarto-search.js +0 -0
  173. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/_site/writers/bibtex_writer.html +0 -0
  174. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/_site/writers/citation_writer.html +0 -0
  175. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/_site/writers/commonmeta_writer.html +0 -0
  176. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/_site/writers/csl_writer.html +0 -0
  177. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/_site/writers/ris_writer.html +0 -0
  178. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/cli.qmd +0 -0
  179. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/favicon.ico +0 -0
  180. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/images/icon.png +0 -0
  181. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/index.qmd +0 -0
  182. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/readers/cff_reader.ipynb +0 -0
  183. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/readers/crossref_reader.ipynb +0 -0
  184. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/readers/crossref_xml_reader.ipynb +0 -0
  185. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/readers/datacite_reader.ipynb +0 -0
  186. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/readers/schema_org_reader.ipynb +0 -0
  187. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/theme.scss +0 -0
  188. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/writers/bibtex_writer.ipynb +0 -0
  189. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/writers/citation_writer.ipynb +0 -0
  190. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/writers/commonmeta_writer.ipynb +0 -0
  191. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/writers/csl_writer.ipynb +0 -0
  192. {commonmeta_py-0.20 → commonmeta_py-0.21}/docs/writers/ris_writer.ipynb +0 -0
  193. {commonmeta_py-0.20 → commonmeta_py-0.21}/mypy.ini +0 -0
  194. {commonmeta_py-0.20 → commonmeta_py-0.21}/objects.json +0 -0
  195. {commonmeta_py-0.20 → commonmeta_py-0.21}/pytest.ini +0 -0
  196. {commonmeta_py-0.20 → commonmeta_py-0.21}/setup.py +0 -0
  197. {commonmeta_py-0.20 → commonmeta_py-0.21}/sonar-project.properties +0 -0
  198. {commonmeta_py-0.20 → commonmeta_py-0.21}/src/commonmeta_py/__init__.py +0 -0
  199. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/__init__.py +0 -0
  200. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-bibtex_writer/test_article_dlib_magazine.yaml +0 -0
  201. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-bibtex_writer/test_article_with_pages.yaml +0 -0
  202. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-bibtex_writer/test_blog_post.yaml +0 -0
  203. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-bibtex_writer/test_book_chapter.yaml +0 -0
  204. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-bibtex_writer/test_conference_proceedings.yaml +0 -0
  205. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-bibtex_writer/test_doi_for_blog_post.yaml +0 -0
  206. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-bibtex_writer/test_doi_with_data_citation.yaml +0 -0
  207. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-bibtex_writer/test_inproceedings.yaml +0 -0
  208. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-bibtex_writer/test_inveniordm_dataset.yaml +0 -0
  209. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-bibtex_writer/test_inveniordm_preprint.yaml +0 -0
  210. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-bibtex_writer/test_inveniordm_presentation.yaml +0 -0
  211. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-bibtex_writer/test_inveniordm_publication.yaml +0 -0
  212. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-bibtex_writer/test_inveniordm_report.yaml +0 -0
  213. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-bibtex_writer/test_phd_thesis.yaml +0 -0
  214. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-bibtex_writer/test_post_without_doi.yaml +0 -0
  215. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-cff_reader/test_ruby_cff.yaml +0 -0
  216. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-citation_writer/test_journal_article.yaml +0 -0
  217. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-citation_writer/test_post_without_doi.yaml +0 -0
  218. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-cli/test_convert.yaml +0 -0
  219. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-cli/test_convert_citation.yaml +0 -0
  220. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-cli/test_convert_commonmeta_from_json_feed_no_doi.yaml +0 -0
  221. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-cli/test_convert_crossref_xml.yaml +0 -0
  222. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-cli/test_convert_crossref_xml_from_json_feed.yaml +0 -0
  223. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-cli/test_convert_crossref_xml_from_json_feed_no_doi.yaml +0 -0
  224. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-cli/test_convert_datacite.yaml +0 -0
  225. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-cli/test_convert_datacite_from_json_feed.yaml +0 -0
  226. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-cli/test_encode_by_id.yaml +0 -0
  227. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-cli/test_json_feed_blog_slug.yaml +0 -0
  228. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-commonmeta_writer/test_journal_article.yaml +0 -0
  229. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-crossref_reader/test_blog_post.yaml +0 -0
  230. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-crossref_reader/test_doi_with_data_citation.yaml +0 -0
  231. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-crossref_reader/test_get_crossref_list.yaml +0 -0
  232. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-crossref_reader/test_get_random_crossref_id.yaml +0 -0
  233. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-crossref_reader/test_multipe_titles.yaml +0 -0
  234. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-crossref_xml_reader/test_doi_with_data_citation.yaml +0 -0
  235. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-crossref_xml_writer/test_ghost_with_affiliations.yaml +0 -0
  236. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-crossref_xml_writer/test_json_feed_item_upstream_blog.yaml +0 -0
  237. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-crossref_xml_writer/test_json_feed_item_with_anonymous_author.yaml +0 -0
  238. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-crossref_xml_writer/test_json_feed_item_with_archived_content.yaml +0 -0
  239. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-crossref_xml_writer/test_json_feed_item_with_doi.yaml +0 -0
  240. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-crossref_xml_writer/test_json_feed_item_with_organizational_author.yaml +0 -0
  241. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-crossref_xml_writer/test_json_feed_item_with_references.yaml +0 -0
  242. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-crossref_xml_writer/test_json_feed_item_with_relations.yaml +0 -0
  243. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-crossref_xml_writer/test_json_feed_item_with_relations_and_funding.yaml +0 -0
  244. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-crossref_xml_writer/test_json_feed_item_without_doi.yaml +0 -0
  245. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-crossref_xml_writer/test_software.yaml +0 -0
  246. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-crossref_xml_writer/test_write_crossref_another_schema_org_front_matter.yaml +0 -0
  247. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-crossref_xml_writer/test_write_crossref_embedded_schema_org_front_matter.yaml +0 -0
  248. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-crossref_xml_writer/test_write_crossref_journal_article_from_datacite.yaml +0 -0
  249. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-crossref_xml_writer/test_write_crossref_schema_org_from_another_science_blog.yaml +0 -0
  250. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-crossref_xml_writer/test_write_crossref_schema_org_front_matter.yaml +0 -0
  251. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-crossref_xml_writer/test_write_crossref_schema_org_upstream_blog.yaml +0 -0
  252. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-crossref_xml_writer/test_write_crossref_xml_journal_article_plos.yaml +0 -0
  253. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-crossref_xml_writer/test_write_crossref_xml_posted_content.yaml +0 -0
  254. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-csl_writer/test_doi_with_data_citation.yaml +0 -0
  255. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-csl_writer/test_post_without_doi.yaml +0 -0
  256. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-datacite_reader/test_dataset.yaml +0 -0
  257. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-datacite_reader/test_date.yaml +0 -0
  258. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-datacite_reader/test_get_datacite.yaml +0 -0
  259. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-datacite_reader/test_multiple_identifiers.yaml +0 -0
  260. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-datacite_reader/test_read_datacite.yaml +0 -0
  261. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-datacite_reader/test_subject_scheme_for.yaml +0 -0
  262. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-datacite_writer/test_write_metadata_as_datacite_json.yaml +0 -0
  263. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-inveniordm_reader/test_dataset.yaml +0 -0
  264. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-inveniordm_reader/test_presentation.yaml +0 -0
  265. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-inveniordm_reader/test_publication.yaml +0 -0
  266. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-inveniordm_reader/test_rogue_scholar.yaml +0 -0
  267. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-json_feed_reader/test_ghost_with_affiliations.yaml +0 -0
  268. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-json_feed_reader/test_ghost_with_institutional_author.yaml +0 -0
  269. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-json_feed_reader/test_ghost_with_personal_name_parsing.yaml +0 -0
  270. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-json_feed_reader/test_medium_post_with_institutional_author.yaml +0 -0
  271. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-json_feed_reader/test_medium_post_with_multiple_authors.yaml +0 -0
  272. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-json_feed_reader/test_post_with_funding.yaml +0 -0
  273. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-json_feed_reader/test_post_with_funding_ror.yaml +0 -0
  274. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-json_feed_reader/test_post_with_more_funding.yaml +0 -0
  275. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-json_feed_reader/test_post_with_relationships.yaml +0 -0
  276. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-json_feed_reader/test_post_with_relationships_as_doi.yaml +0 -0
  277. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-json_feed_reader/test_wordpress_with_references.yaml +0 -0
  278. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-metadata/test_crossref_doi.yaml +0 -0
  279. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-metadata/test_crossref_doi_as_url.yaml +0 -0
  280. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-metadata/test_list_of_pids.yaml +0 -0
  281. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-ris_writer/test_journal_article.yaml +0 -0
  282. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-schema_org_reader/test_arxiv.yaml +0 -0
  283. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-schema_org_reader/test_blog_posting.yaml +0 -0
  284. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-schema_org_reader/test_dataverse.yaml +0 -0
  285. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-schema_org_reader/test_journal_page.yaml +0 -0
  286. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-schema_org_reader/test_orcid_blog.yaml +0 -0
  287. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-schema_org_reader/test_pangaea.yaml +0 -0
  288. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-schema_org_reader/test_pdf_file.yaml +0 -0
  289. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-schema_org_reader/test_zenodo.yaml +0 -0
  290. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-schema_org_writer/test_inveniordm_dataset.yaml +0 -0
  291. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-schema_org_writer/test_inveniordm_preprint.yaml +0 -0
  292. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-schema_org_writer/test_inveniordm_presentation.yaml +0 -0
  293. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-schema_org_writer/test_inveniordm_publication.yaml +0 -0
  294. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-schema_org_writer/test_inveniordm_report.yaml +0 -0
  295. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-schema_org_writer/test_journal_article.yaml +0 -0
  296. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/cassettes/test-schema_org_writer/test_json_feed_item_upstream_blog.yaml +0 -0
  297. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/10.25982_86723.65_1778009_kbcms.json +0 -0
  298. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/CITATION.cff +0 -0
  299. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/JDP_5fa4fb4647675a20c852c60b_kbcms.json +0 -0
  300. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/aida.json +0 -0
  301. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/arxiv.html +0 -0
  302. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/cgimp_package.json +0 -0
  303. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/cit_package.json +0 -0
  304. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/citeproc-no-author.json +0 -0
  305. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/citeproc-no-categories.json +0 -0
  306. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/citeproc.json +0 -0
  307. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/citeproc_missing_doi.json +0 -0
  308. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/codemeta.json +0 -0
  309. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/codemeta_v2.json +0 -0
  310. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/commonmeta-list.json +0 -0
  311. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/commonmeta.json +0 -0
  312. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/crosscite.json +0 -0
  313. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/crossref-list.json +0 -0
  314. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/crossref-list_missing_doi.json +0 -0
  315. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/crossref.bib +0 -0
  316. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/crossref.json +0 -0
  317. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/crossref.ris +0 -0
  318. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/crossref.xml +0 -0
  319. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/csl-list.json +0 -0
  320. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/datacite-dataset_v4.5.json +0 -0
  321. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/datacite-empty-sizes.xml +0 -0
  322. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/datacite-example-affiliation.xml +0 -0
  323. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/datacite-example-ancientdates-v4.3.xml +0 -0
  324. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/datacite-example-complicated-tba.xml +0 -0
  325. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/datacite-example-complicated-v3.0.xml +0 -0
  326. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/datacite-example-complicated-v4.0.xml +0 -0
  327. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/datacite-example-complicated-v4.1.xml +0 -0
  328. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/datacite-example-dissertation-v4.4.xml +0 -0
  329. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/datacite-example-escaped-text.xml +0 -0
  330. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/datacite-example-full-v4.4.xml +0 -0
  331. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/datacite-example-geolocation-2.xml +0 -0
  332. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/datacite-example-geolocation.xml +0 -0
  333. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/datacite-example-polygon-v4.1.xml +0 -0
  334. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/datacite-example-relateditems.xml +0 -0
  335. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/datacite-example-xs-string.xml +0 -0
  336. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/datacite-formats-with-xs.xml +0 -0
  337. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/datacite-funderIdentifier.xml +0 -0
  338. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/datacite-geolocation-empty.xml +0 -0
  339. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/datacite-geolocationpolygons-multiple.xml +0 -0
  340. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/datacite-instrument.json +0 -0
  341. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/datacite-metadata-sample-complicated-v2.2.xml +0 -0
  342. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/datacite-multiple-language.xml +0 -0
  343. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/datacite-multiple-rights.xml +0 -0
  344. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/datacite-schema-2.2.xml +0 -0
  345. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/datacite-seriesinformation.xml +0 -0
  346. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/datacite-space-in-sizes.xml +0 -0
  347. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/datacite-xml-lang.xml +0 -0
  348. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/datacite.html +0 -0
  349. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/datacite.json +0 -0
  350. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/datacite.xml +0 -0
  351. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/datacite_dataset.xml +0 -0
  352. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/datacite_malformed_creator.xml +0 -0
  353. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/datacite_missing_creator.xml +0 -0
  354. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/datacite_schema_3.xml +0 -0
  355. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/datacite_software.json +0 -0
  356. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/datacite_software_missing_comma.json +0 -0
  357. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/datacite_software_overlapping_keys.json +0 -0
  358. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/datacite_software_version.json +0 -0
  359. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/edam_package.json +0 -0
  360. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/funding_reference.xml +0 -0
  361. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/gtex.xml +0 -0
  362. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/inveniordm-software.json +0 -0
  363. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/journal_article.commonmeta.json +0 -0
  364. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/json_feed.json +0 -0
  365. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/json_feed_item.json +0 -0
  366. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/json_feed_item_no_id.json +0 -0
  367. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/json_feed_item_no_prefix.json +0 -0
  368. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/json_feed_no_doi.json +0 -0
  369. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/nist.xml +0 -0
  370. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/ns0.xml +0 -0
  371. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/pan.html +0 -0
  372. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/pure.bib +0 -0
  373. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/pure.ris +0 -0
  374. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/pure.xml +0 -0
  375. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/ris_bug.ris +0 -0
  376. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/schema_4.0.xml +0 -0
  377. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/schema_org.json +0 -0
  378. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/schema_org_front-matter.json +0 -0
  379. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/schema_org_geolocation.json +0 -0
  380. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/schema_org_geoshape.json +0 -0
  381. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/schema_org_gtex.json +0 -0
  382. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/schema_org_list.json +0 -0
  383. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/schema_org_tdl_iodp_invalid_authors.json +0 -0
  384. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/schema_org_topmed.json +0 -0
  385. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/schema_org_type_as_array.json +0 -0
  386. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/fixtures/vivli.xml +0 -0
  387. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/test-api_utils.py +0 -0
  388. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/test-author_utils.py +0 -0
  389. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/test-base_utils.py +0 -0
  390. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/test-bibtex_reader.py +0 -0
  391. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/test-bibtex_writer.py +0 -0
  392. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/test-cff_reader.py +0 -0
  393. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/test-citation_writer.py +0 -0
  394. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/test-cli.py +0 -0
  395. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/test-codemeta_reader.py +0 -0
  396. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/test-commonmeta_reader.py +0 -0
  397. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/test-commonmeta_writer.py +0 -0
  398. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/test-crossref_reader.py +0 -0
  399. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/test-crossref_xml_reader.py +0 -0
  400. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/test-crossref_xml_writer.py +0 -0
  401. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/test-csl_reader.py +0 -0
  402. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/test-csl_writer.py +0 -0
  403. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/test-datacite_reader.py +0 -0
  404. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/test-datacite_writer.py +0 -0
  405. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/test-datacite_xml_reader.py +0 -0
  406. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/test-date_utils.py +0 -0
  407. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/test-json_feed_reader.py +0 -0
  408. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/test-kbase_reader.py +0 -0
  409. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/test-metadata.py +0 -0
  410. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/test-ris_reader.py +0 -0
  411. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/test-ris_writer.py +0 -0
  412. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/test-schema_org_reader.py +0 -0
  413. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/test-schema_org_writer.py +0 -0
  414. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/test-translators.py +0 -0
  415. {commonmeta_py-0.20 → commonmeta_py-0.21}/tests/test-utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: commonmeta-py
3
- Version: 0.20
3
+ Version: 0.21
4
4
  Summary: Library for conversions to/from the Commonmeta scholarly metadata format
5
5
  Author-email: Martin Fenner <martin@front-matter.io>
6
6
  License-File: LICENSE
@@ -63,7 +63,7 @@ def get_one_author(author, **kwargs):
63
63
  ) or parse_attributes(
64
64
  author.get("contributorName", None), content="type", first=True
65
65
  )
66
-
66
+ print(author)
67
67
  # also handle Crossref, JSON Feed, or DataCite metadata
68
68
  _id = (
69
69
  author.get("id", None)
@@ -72,7 +72,7 @@ def get_one_author(author, **kwargs):
72
72
  or next(
73
73
  (
74
74
  format_name_identifier(i)
75
- for i in wrap(author.get("nameIdentifiers", None))
75
+ for i in wrap(author.get("nameIdentifiers", None or author.get("identifiers", None)))
76
76
  ),
77
77
  None,
78
78
  )
@@ -266,6 +266,17 @@ INVENIORDM_TO_CM_TRANSLATIONS = {
266
266
  "other": "Other",
267
267
  }
268
268
 
269
+ CM_TO_INVENIORDM_TRANSLATIONS = {
270
+ "Article": "publication-preprint",
271
+ "Book": "book",
272
+ "Dataset": "dataset",
273
+ "Image": "image-other",
274
+ "JournalArticle": "publication-article",
275
+ "Presentation": "presentation",
276
+ "Software": "software",
277
+ "Other": "other",
278
+ }
279
+
269
280
  CM_TO_DC_TRANSLATIONS = {
270
281
  "Article": "Preprint",
271
282
  "Audiovisual": "Audiovisual",
@@ -34,6 +34,19 @@ def validate_prefix(doi: Optional[str]) -> Optional[str]:
34
34
  return match.group(6)
35
35
 
36
36
 
37
+ def validate_suffix(doi: Optional[str]) -> Optional[str]:
38
+ """Validate a DOI suffix for a given DOI"""
39
+ if doi is None:
40
+ return None
41
+ match = re.search(
42
+ r"\A(?:(http|https):/(/)?(dx\.)?(doi\.org|handle\.stage\.datacite\.org|handle\.test\.datacite\.org)/)?(doi:)?(10\.\d{4,5})/(.+)\Z", # noqa: E501
43
+ doi,
44
+ )
45
+ if match is None:
46
+ return None
47
+ return match.group(7)
48
+
49
+
37
50
  def doi_from_url(url: Optional[str]) -> Optional[str]:
38
51
  """Return a DOI from a URL"""
39
52
  if url is None:
@@ -45,6 +45,7 @@ from .writers.csl_writer import write_csl, write_csl_list
45
45
  from .writers.ris_writer import write_ris, write_ris_list
46
46
  from .writers.schema_org_writer import write_schema_org
47
47
  from .writers.commonmeta_writer import write_commonmeta, write_commonmeta_list
48
+ from .writers.inveniordm_writer import write_inveniordm
48
49
  from .utils import normalize_id, find_from_format
49
50
  from .base_utils import parse_xml, wrap
50
51
  from .doi_utils import doi_from_url
@@ -216,6 +217,8 @@ class Metadata:
216
217
  return write_ris(self)
217
218
  elif to == "schema_org":
218
219
  return write_schema_org(self)
220
+ elif to == "inveniordm":
221
+ return write_inveniordm(self)
219
222
  elif to == "datacite":
220
223
  instance = json.loads(write_datacite(self))
221
224
  self.write_errors = json_schema_errors(instance, schema="datacite")
@@ -264,16 +264,20 @@ def format_name_identifier(ni):
264
264
  return None
265
265
  elif isinstance(ni, str):
266
266
  return normalize_orcid(ni) or normalize_ror(ni) or normalize_isni(ni)
267
- name_identifier = ni.get("nameIdentifier", None) or ni.get(
268
- "publisherIdentifier", None
267
+ name_identifier = (
268
+ ni.get("nameIdentifier", None)
269
+ or ni.get("identifier", None)
270
+ or ni.get("publisherIdentifier", None)
269
271
  )
270
- name_identifier_scheme = ni.get("nameIdentifierScheme", None) or ni.get(
271
- "publisherIdentifierScheme", None
272
+ name_identifier_scheme = (
273
+ ni.get("nameIdentifierScheme", None)
274
+ or ni.get("scheme", None)
275
+ or ni.get("publisherIdentifierScheme", None)
272
276
  )
273
277
  scheme_uri = ni.get("schemeURI", None) or ni.get("schemeUri", None)
274
278
  if name_identifier is None:
275
279
  return None
276
- elif name_identifier_scheme == "ORCID":
280
+ elif name_identifier_scheme in ["ORCID", "orcid"]:
277
281
  return normalize_orcid(name_identifier)
278
282
  elif name_identifier_scheme == "ISNI":
279
283
  return normalize_isni(name_identifier)
@@ -388,6 +392,22 @@ def from_inveniordm(elements: list) -> list:
388
392
  return [format_element(i) for i in elements]
389
393
 
390
394
 
395
+ def to_inveniordm(elements: list) -> list:
396
+ """Convert elements to InvenioRDM"""
397
+
398
+ def format_element(i):
399
+ """format element"""
400
+ element = {}
401
+ element["familyName"] = i.get("familyName", None)
402
+ element["givenName"] = i.get("givenName", None)
403
+ element["name"] = i.get("name", None)
404
+ element["type"] = i.get("type", None)
405
+ element["ORCID"] = i.get("ORCID", None)
406
+ return compact(element)
407
+
408
+ return [format_element(i) for i in elements]
409
+
410
+
391
411
  def from_crossref_xml(elements: list) -> list:
392
412
  """Convert from crossref_xml elements"""
393
413
 
@@ -1043,9 +1063,9 @@ def issn_as_url(issn: str) -> Optional[str]:
1043
1063
  return f"https://portal.issn.org/resource/ISSN/{issn}"
1044
1064
 
1045
1065
 
1046
- def get_language(lang: str, format: str="alpha_2") -> Optional[str]:
1066
+ def get_language(lang: str, format: str = "alpha_2") -> Optional[str]:
1047
1067
  """Provide a language string based on ISO 639, with either a name in English,
1048
- ISO 639-1, or ISO 639-3 code as input. Optionally format as alpha_2 (defaul),
1068
+ ISO 639-1, or ISO 639-3 code as input. Optionally format as alpha_2 (defaul),
1049
1069
  alpha_3, or name.
1050
1070
  """
1051
1071
  if not lang:
@@ -1056,7 +1076,7 @@ def get_language(lang: str, format: str="alpha_2") -> Optional[str]:
1056
1076
  language = pycountry.languages.get(alpha_3=lang)
1057
1077
  else:
1058
1078
  language = pycountry.languages.get(name=lang)
1059
-
1079
+
1060
1080
  if language is None:
1061
1081
  return None
1062
1082
  elif format == "name":
@@ -0,0 +1,94 @@
1
+ """InvenioRDM writer for commonmeta-py"""
2
+
3
+ import orjson as json
4
+
5
+ from ..utils import to_inveniordm
6
+ from ..base_utils import compact, wrap, presence, parse_attributes
7
+ from ..doi_utils import doi_from_url, validate_suffix
8
+ from ..constants import CM_TO_INVENIORDM_TRANSLATIONS
9
+ from ..utils import pages_as_string, get_language, validate_orcid
10
+
11
+
12
+ def write_inveniordm(metadata):
13
+ """Write inveniordm"""
14
+ if metadata is None or metadata.write_errors is not None:
15
+ return None
16
+ _type = CM_TO_INVENIORDM_TRANSLATIONS.get(metadata.type, "Other")
17
+ creators = [
18
+ to_inveniordm_creator(i)
19
+ for i in wrap(metadata.contributors)
20
+ if i.get("contributorRoles", None) == ["Author"]
21
+ ]
22
+ identifiers = [
23
+ {
24
+ "identifier": i.get("identifier", None),
25
+ "scheme": i.get("identifierType", None),
26
+ }
27
+ for i in wrap(metadata.identifiers)
28
+ if i.get("id", None) != metadata.id
29
+ ]
30
+ publisher = metadata.publisher or {}
31
+ data = compact(
32
+ {
33
+ "metadata": {
34
+ "resource_type": {"id": _type},
35
+ "doi": doi_from_url(metadata.id),
36
+ "creators": creators,
37
+ "title": parse_attributes(metadata.titles, content="title", first=True),
38
+ "publisher": publisher.get("name", None),
39
+ "publication_date": metadata.date.get("published")
40
+ if metadata.date.get("published", None)
41
+ else None,
42
+ "subjects": parse_attributes(
43
+ wrap(metadata.subjects), content="subject", first=False
44
+ ),
45
+ "contributors": to_inveniordm(wrap(metadata.contributors)),
46
+ "description": parse_attributes(
47
+ metadata.descriptions, content="description", first=True
48
+ ),
49
+ "license": metadata.license.get("id", None)
50
+ if metadata.license
51
+ else None,
52
+ "languages": [{"id": get_language(metadata.language, format="alpha_3")}]
53
+ if metadata.language
54
+ else None,
55
+ "identifiers": identifiers,
56
+ "version": metadata.version,
57
+ },
58
+ }
59
+ )
60
+ return json.dumps(data)
61
+
62
+
63
+ def to_inveniordm_creator(creator: dict) -> dict:
64
+ """Convert creators to inveniordm creators"""
65
+
66
+ def format_identifier(id):
67
+ identifier = validate_orcid(id)
68
+ if identifier:
69
+ return [
70
+ {
71
+ "identifier": identifier,
72
+ "scheme": "orcid",
73
+ }
74
+ ]
75
+ return None
76
+
77
+ _type = creator.get("type", None)
78
+ if creator.get("familyName", None):
79
+ name = ", ".join([creator.get("familyName", ""), creator.get("givenName", "")])
80
+ elif creator.get("name", None):
81
+ name = creator.get("name", None)
82
+
83
+ return {
84
+ "person_or_org": compact(
85
+ {
86
+ "name": name,
87
+ "given_name": creator.get("givenName", None),
88
+ "family_name": creator.get("familyName", None),
89
+ "type": _type.lower() + "al" if _type else None,
90
+ "identifiers": format_identifier(creator.get("id", None)),
91
+ "affiliation": creator.get("affiliations", None),
92
+ }
93
+ )
94
+ }
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "commonmeta-py"
3
- version="0.20"
3
+ version="0.21"
4
4
  repository = "https://github.com/front-matter/commonmeta-py"
5
5
  homepage = "https://python.commonmeta.org"
6
6
  documentation = "https://python.commonmeta.org"
@@ -0,0 +1,189 @@
1
+ interactions:
2
+ - request:
3
+ body: ''
4
+ headers:
5
+ accept:
6
+ - '*/*'
7
+ accept-encoding:
8
+ - gzip, deflate
9
+ connection:
10
+ - keep-alive
11
+ host:
12
+ - api.rogue-scholar.org
13
+ user-agent:
14
+ - python-httpx/0.27.2
15
+ method: GET
16
+ uri: https://api.rogue-scholar.org/posts/9e24e4be-1915-48cc-a6b0-c23da5bc2857
17
+ response:
18
+ body:
19
+ string: !!binary |
20
+ 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
163
+ headers:
164
+ content-encoding:
165
+ - gzip
166
+ content-type:
167
+ - application/json
168
+ date:
169
+ - Sun, 29 Sep 2024 12:09:52 GMT
170
+ fly-request-id:
171
+ - 01J8YTZTQG2Z0HE3V153FB4V24-cdg
172
+ ratelimit-limit:
173
+ - '15'
174
+ ratelimit-remaining:
175
+ - '14'
176
+ ratelimit-reset:
177
+ - '3'
178
+ server:
179
+ - Fly/a06ddcf9d (2024-09-27)
180
+ transfer-encoding:
181
+ - chunked
182
+ vary:
183
+ - Origin
184
+ via:
185
+ - 1.1 fly.io
186
+ status:
187
+ code: 200
188
+ message: ''
189
+ version: 1
@@ -0,0 +1,181 @@
1
+ interactions:
2
+ - request:
3
+ body: ''
4
+ headers:
5
+ accept:
6
+ - '*/*'
7
+ accept-encoding:
8
+ - gzip, deflate
9
+ connection:
10
+ - keep-alive
11
+ host:
12
+ - doi.org
13
+ user-agent:
14
+ - python-httpx/0.27.2
15
+ method: GET
16
+ uri: https://doi.org/ra/10.7554
17
+ response:
18
+ body:
19
+ string: !!binary |
20
+ H4sIAAAAAAAAA4vmUlCoBmIFBSUXf08lKwUlQwM9c1NTEyUdiGiQI0jQuSi/uLgoNU0JKFjLFQsA
21
+ 4VlVnTYAAAA=
22
+ headers:
23
+ CF-Cache-Status:
24
+ - DYNAMIC
25
+ CF-RAY:
26
+ - 8cad04074e2dc7f4-DUS
27
+ Connection:
28
+ - keep-alive
29
+ Content-Encoding:
30
+ - gzip
31
+ Content-Type:
32
+ - application/json;charset=UTF-8
33
+ Date:
34
+ - Sun, 29 Sep 2024 15:30:39 GMT
35
+ NEL:
36
+ - '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}'
37
+ Report-To:
38
+ - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v4?s=nzeor7BACYs8k9tQrbMnaPByRWn%2Bq6%2BxSQzZ7%2FAG1oj3GIu8eCud2%2BBarAW7jgi0iy1Yk28IzmpVRi0puKz51KioQvGmEvi2rMZjNb%2FuXiptf7mA2EY6eoW9VkULA8qBISaiq40%3D"}],"group":"cf-nel","max_age":604800}'
39
+ Server:
40
+ - cloudflare
41
+ Strict-Transport-Security:
42
+ - max-age=31536000; includeSubDomains; preload
43
+ Transfer-Encoding:
44
+ - chunked
45
+ permissions-policy:
46
+ - interest-cohort=(),browsing-topics=()
47
+ vary:
48
+ - Origin
49
+ status:
50
+ code: 200
51
+ message: OK
52
+ - request:
53
+ body: ''
54
+ headers:
55
+ accept:
56
+ - '*/*'
57
+ accept-encoding:
58
+ - gzip, deflate
59
+ connection:
60
+ - keep-alive
61
+ host:
62
+ - api.crossref.org
63
+ user-agent:
64
+ - python-httpx/0.27.2
65
+ method: GET
66
+ uri: https://api.crossref.org/works/10.7554/elife.01567
67
+ response:
68
+ body:
69
+ string: !!binary |
70
+ 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
143
+ tAY3kB8N2V77HsJ8+vr1fwAh+tClVTcAAA==
144
+ headers:
145
+ access-control-allow-headers:
146
+ - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language,
147
+ Accept-Ranges, Cache-Control
148
+ access-control-allow-origin:
149
+ - '*'
150
+ access-control-expose-headers:
151
+ - Link
152
+ connection:
153
+ - close
154
+ content-encoding:
155
+ - gzip
156
+ content-length:
157
+ - '4186'
158
+ content-type:
159
+ - application/json
160
+ date:
161
+ - Sun, 29 Sep 2024 15:30:40 GMT
162
+ permissions-policy:
163
+ - interest-cohort=()
164
+ server:
165
+ - Jetty(9.4.40.v20210413)
166
+ vary:
167
+ - Accept-Encoding
168
+ x-api-pool:
169
+ - public
170
+ x-rate-limit-interval:
171
+ - 1s
172
+ x-rate-limit-limit:
173
+ - '50'
174
+ x-ratelimit-interval:
175
+ - 1s
176
+ x-ratelimit-limit:
177
+ - '50'
178
+ status:
179
+ code: 200
180
+ message: OK
181
+ version: 1