commonmeta-py 0.73__py3-none-any.whl → 0.75__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- commonmeta/__init__.py +1 -1
- commonmeta/constants.py +12 -5
- commonmeta/crossref_utils.py +2 -2
- commonmeta/readers/crossref_reader.py +2 -1
- commonmeta/readers/crossref_xml_reader.py +3 -0
- commonmeta/readers/inveniordm_reader.py +3 -0
- commonmeta/readers/json_feed_reader.py +1 -1
- commonmeta/readers/schema_org_reader.py +1 -1
- commonmeta/resources/commonmeta_v0.15.json +1 -0
- commonmeta/utils.py +24 -4
- commonmeta/writers/datacite_writer.py +2 -0
- {commonmeta_py-0.73.dist-info → commonmeta_py-0.75.dist-info}/METADATA +1 -1
- {commonmeta_py-0.73.dist-info → commonmeta_py-0.75.dist-info}/RECORD +16 -16
- {commonmeta_py-0.73.dist-info → commonmeta_py-0.75.dist-info}/WHEEL +0 -0
- {commonmeta_py-0.73.dist-info → commonmeta_py-0.75.dist-info}/entry_points.txt +0 -0
- {commonmeta_py-0.73.dist-info → commonmeta_py-0.75.dist-info}/licenses/LICENSE +0 -0
commonmeta/__init__.py
CHANGED
commonmeta/constants.py
CHANGED
@@ -51,6 +51,7 @@ BIB_TO_CM_TRANSLATIONS = {
|
|
51
51
|
|
52
52
|
CM_TO_BIB_TRANSLATIONS = {
|
53
53
|
"Article": "article",
|
54
|
+
"BlogPost": "article",
|
54
55
|
"Book": "book",
|
55
56
|
"BookChapter": "inbook",
|
56
57
|
"Dissertation": "phdthesis",
|
@@ -97,7 +98,7 @@ CSL_TO_CM_TRANSLATIONS = {
|
|
97
98
|
"periodical": "Journal",
|
98
99
|
"personal_communication": "PersonalCommunication",
|
99
100
|
"post": "Post",
|
100
|
-
"post-weblog": "
|
101
|
+
"post-weblog": "BlogPost",
|
101
102
|
"regulation": "LegalDocument",
|
102
103
|
"report": "Report",
|
103
104
|
"review": "Review",
|
@@ -113,7 +114,7 @@ CSL_TO_CM_TRANSLATIONS = {
|
|
113
114
|
|
114
115
|
CM_TO_CSL_TRANSLATIONS = {
|
115
116
|
"Article": "article",
|
116
|
-
"
|
117
|
+
"BlogPost": "post-weblog",
|
117
118
|
"Book": "book",
|
118
119
|
"BookChapter": "chapter",
|
119
120
|
"Collection": "collection",
|
@@ -123,6 +124,7 @@ CM_TO_CSL_TRANSLATIONS = {
|
|
123
124
|
"Event": "event",
|
124
125
|
"Figure": "figure",
|
125
126
|
"Image": "graphic",
|
127
|
+
"JournalArticle": "article-journal",
|
126
128
|
"LegalDocument": "legal_case",
|
127
129
|
"Manuscript": "manuscript",
|
128
130
|
"Map": "map",
|
@@ -176,6 +178,7 @@ CR_TO_CM_TRANSLATIONS = {
|
|
176
178
|
|
177
179
|
CM_TO_CR_TRANSLATIONS = {
|
178
180
|
"Article": "PostedContent",
|
181
|
+
"BlogPost": "PostedContent",
|
179
182
|
"BookChapter": "BookChapter",
|
180
183
|
"BookSeries": "BookSeries",
|
181
184
|
"Book": "Book",
|
@@ -200,7 +203,7 @@ CM_TO_CR_TRANSLATIONS = {
|
|
200
203
|
# source: https://github.com/datacite/schema/blob/master/source/meta/kernel-4/include/datacite-resourceType-v4.xsd
|
201
204
|
DC_TO_CM_TRANSLATIONS = {
|
202
205
|
"Audiovisual": "Audiovisual",
|
203
|
-
"BlogPosting": "
|
206
|
+
"BlogPosting": "BlogPost",
|
204
207
|
"Book": "Book",
|
205
208
|
"BookChapter": "BookChapter",
|
206
209
|
"Collection": "Collection",
|
@@ -269,6 +272,7 @@ INVENIORDM_TO_CM_TRANSLATIONS = {
|
|
269
272
|
|
270
273
|
CM_TO_INVENIORDM_TRANSLATIONS = {
|
271
274
|
"Article": "publication-preprint",
|
275
|
+
"BlogPost": "publication-preprint",
|
272
276
|
"Book": "book",
|
273
277
|
"Dataset": "dataset",
|
274
278
|
"Image": "image-other",
|
@@ -281,6 +285,7 @@ CM_TO_INVENIORDM_TRANSLATIONS = {
|
|
281
285
|
CM_TO_DC_TRANSLATIONS = {
|
282
286
|
"Article": "Preprint",
|
283
287
|
"Audiovisual": "Audiovisual",
|
288
|
+
"BlogPost": "Preprint",
|
284
289
|
"Book": "Book",
|
285
290
|
"BookChapter": "BookChapter",
|
286
291
|
"Collection": "Collection",
|
@@ -317,7 +322,7 @@ RIS_TO_CM_TRANSLATIONS = {
|
|
317
322
|
"ANCIENT": "Text",
|
318
323
|
"ART": "Text",
|
319
324
|
"BILL": "Text",
|
320
|
-
"BLOG": "
|
325
|
+
"BLOG": "BlogPost",
|
321
326
|
"BOOK": "Book",
|
322
327
|
"CASE": "Text",
|
323
328
|
"CHAP": "BookChapter",
|
@@ -370,6 +375,7 @@ RIS_TO_CM_TRANSLATIONS = {
|
|
370
375
|
CM_TO_RIS_TRANSLATIONS = {
|
371
376
|
"Article": "JOUR",
|
372
377
|
"Audiovisual": "VIDEO",
|
378
|
+
"BlogPost": "BLOG",
|
373
379
|
"Book": "BOOK",
|
374
380
|
"BookChapter": "CHAP",
|
375
381
|
"Collection": "CTLG",
|
@@ -400,7 +406,7 @@ CM_TO_RIS_TRANSLATIONS = {
|
|
400
406
|
|
401
407
|
SO_TO_CM_TRANSLATIONS = {
|
402
408
|
"Article": "Article",
|
403
|
-
"BlogPosting": "
|
409
|
+
"BlogPosting": "BlogPost",
|
404
410
|
"Book": "Book",
|
405
411
|
"BookChapter": "BookChapter",
|
406
412
|
"CreativeWork": "Other",
|
@@ -439,6 +445,7 @@ OG_TO_SO_TRANSLATIONS = {
|
|
439
445
|
CM_TO_SO_TRANSLATIONS = {
|
440
446
|
"Article": "Article",
|
441
447
|
"Audiovisual": "CreativeWork",
|
448
|
+
"BlogPost": "BlogPosting",
|
442
449
|
"Book": "Book",
|
443
450
|
"BookChapter": "BookChapter",
|
444
451
|
"Collection": "CreativeWork",
|
commonmeta/crossref_utils.py
CHANGED
@@ -36,13 +36,13 @@ def generate_crossref_xml(metadata: Commonmeta) -> Optional[str]:
|
|
36
36
|
|
37
37
|
def insert_crossref_work(metadata, xml):
|
38
38
|
"""Insert crossref work"""
|
39
|
-
if metadata.type not in ["JournalArticle", "Article"]:
|
39
|
+
if metadata.type not in ["JournalArticle", "Article", "BlogPost"]:
|
40
40
|
return xml
|
41
41
|
if doi_from_url(metadata.id) is None or metadata.url is None:
|
42
42
|
return xml
|
43
43
|
if metadata.type == "JournalArticle":
|
44
44
|
xml = insert_journal(metadata, xml)
|
45
|
-
elif metadata.type
|
45
|
+
elif metadata.type in ["Article", "BlogPost"]:
|
46
46
|
xml = insert_posted_content(metadata, xml)
|
47
47
|
|
48
48
|
|
@@ -83,7 +83,8 @@ def read_crossref(data: Optional[dict], **kwargs) -> Commonmeta:
|
|
83
83
|
url = normalize_url(py_.get(meta, "resource.primary.URL"))
|
84
84
|
titles = get_titles(meta)
|
85
85
|
publisher = compact({"name": meta.get("publisher", None)})
|
86
|
-
|
86
|
+
if _type == "Article" and py_.get(publisher, "name") == "Front Matter":
|
87
|
+
_type = "BlogPost"
|
87
88
|
date = compact(
|
88
89
|
{
|
89
90
|
"published": py_.get(meta, "issued.date-time")
|
@@ -158,6 +158,9 @@ def read_crossref_xml(data: dict, **kwargs) -> Commonmeta:
|
|
158
158
|
or py_.get(bibmeta, "doi_data.doi")
|
159
159
|
)
|
160
160
|
_type = CR_TO_CM_TRANSLATIONS.get(resource_type, "Other")
|
161
|
+
if _type == "Article" and py_.get(publisher, "name") == "Front Matter":
|
162
|
+
_type = "BlogPost"
|
163
|
+
|
161
164
|
url = parse_attributes(py_.get(bibmeta, "doi_data.resource"))
|
162
165
|
url = normalize_url(url)
|
163
166
|
titles = crossref_titles(bibmeta)
|
@@ -57,6 +57,9 @@ def read_inveniordm(data: dict, **kwargs) -> Commonmeta:
|
|
57
57
|
publisher = meta.get("publisher", None) or py_.get(meta, "metadata.publisher")
|
58
58
|
if publisher:
|
59
59
|
publisher = {"name": publisher}
|
60
|
+
if _type == "Article" and py_.get(publisher, "name") == "Front Matter":
|
61
|
+
_type = "BlogPost"
|
62
|
+
|
60
63
|
title = py_.get(meta, "metadata.title")
|
61
64
|
titles = [{"title": sanitize(title)}] if title else None
|
62
65
|
additional_titles = py_.get(meta, "metadata.additional_titles")
|
@@ -54,7 +54,7 @@ def read_json_feed_item(data: Optional[dict], **kwargs) -> Commonmeta:
|
|
54
54
|
):
|
55
55
|
url = normalize_url(meta.get("archive_url", None))
|
56
56
|
_id = normalize_doi(read_options.get("doi", None) or meta.get("doi", None)) or url
|
57
|
-
_type = "
|
57
|
+
_type = "BlogPost"
|
58
58
|
|
59
59
|
# optionally generate a DOI if missing but a DOI prefix is provided
|
60
60
|
prefix = read_options.get("prefix", None) or py_.get(meta, "blog.prefix", None)
|
@@ -216,7 +216,7 @@ def read_schema_org(data: Optional[dict], **kwargs) -> Commonmeta:
|
|
216
216
|
"lastPage": meta.get("pageEnd", None),
|
217
217
|
}
|
218
218
|
)
|
219
|
-
elif _type
|
219
|
+
elif _type in ["Article", "BlogPost"]:
|
220
220
|
issn = py_.get(meta, "isPartOf.issn")
|
221
221
|
container_url = py_.get(meta, "publisher.url")
|
222
222
|
container = compact(
|
commonmeta/utils.py
CHANGED
@@ -1116,16 +1116,33 @@ def extract_curie(string: Optional[str]) -> Optional[str]:
|
|
1116
1116
|
"""Extract CURIE"""
|
1117
1117
|
if string is None:
|
1118
1118
|
return None
|
1119
|
-
match = re.search(
|
1119
|
+
match = re.search(
|
1120
|
+
r"((?:doi|DOI):\s?([\w.,@?^=%&:\/~+#-]*[\w@?^=%&\/~+#-]))", string
|
1121
|
+
)
|
1120
1122
|
if match is None:
|
1121
1123
|
return None
|
1122
1124
|
return doi_as_url(match.group(2))
|
1123
1125
|
|
1124
|
-
|
1126
|
+
|
1127
|
+
def replace_curie(string: Optional[str]) -> Optional[str]:
|
1128
|
+
"""Replace CURIE with DOI expressed as URL"""
|
1129
|
+
if string is None:
|
1130
|
+
return None
|
1131
|
+
match = re.sub(
|
1132
|
+
r"((?:doi|DOI):\s?([\w.,@?^=%&:\/~+#-]*[\w@?^=%&\/~+#-]))", r'https://doi.org/\2', string
|
1133
|
+
)
|
1134
|
+
if match is None:
|
1135
|
+
return None
|
1136
|
+
return match
|
1137
|
+
|
1138
|
+
|
1125
1139
|
def extract_url(string: str) -> list:
|
1126
1140
|
"""Extract urls from string, including markdown and html."""
|
1127
1141
|
|
1128
|
-
match = re.search(
|
1142
|
+
match = re.search(
|
1143
|
+
r"((?:http|https):\/\/(?:[\w_-]+(?:(?:\.[\w_-]+)+))(?:[\w.,@?^=%&:\/~+#-]*[\w@?^=%&\/~+#-]))",
|
1144
|
+
string,
|
1145
|
+
)
|
1129
1146
|
if match is None:
|
1130
1147
|
return None
|
1131
1148
|
return normalize_url(match.group(1))
|
@@ -1134,7 +1151,10 @@ def extract_url(string: str) -> list:
|
|
1134
1151
|
def extract_urls(string: str) -> list:
|
1135
1152
|
"""Extract urls from string, including markdown and html."""
|
1136
1153
|
|
1137
|
-
urls = re.findall(
|
1154
|
+
urls = re.findall(
|
1155
|
+
r"((?:http|https):\/\/(?:[\w_-]+(?:(?:\.[\w_-]+)+))(?:[\w.,@?^=%&:\/~+#-]*[\w@?^=%&\/~+#-]))",
|
1156
|
+
string,
|
1157
|
+
)
|
1138
1158
|
return py_.uniq(urls)
|
1139
1159
|
|
1140
1160
|
|
@@ -47,6 +47,8 @@ def write_datacite(metadata: Commonmeta) -> Optional[Union[str, dict]]:
|
|
47
47
|
|
48
48
|
resource__typegeneral = CM_TO_DC_TRANSLATIONS.get(metadata.type, "Other")
|
49
49
|
resource_type = CM_TO_CR_TRANSLATIONS.get(metadata.type, "Other")
|
50
|
+
if metadata.type == "BlogPost":
|
51
|
+
resource_type = "BlogPost"
|
50
52
|
if resource__typegeneral == resource_type or resource__typegeneral in [
|
51
53
|
"Dataset",
|
52
54
|
"JournalArticle",
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: commonmeta-py
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.75
|
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
|
@@ -1,36 +1,36 @@
|
|
1
|
-
commonmeta/__init__.py,sha256=
|
1
|
+
commonmeta/__init__.py,sha256=lNosYNS7L7Rqp2snKZHwRszSyam6_9kZyO0dR0PeyVg,1875
|
2
2
|
commonmeta/api_utils.py,sha256=-ZHGVZZhJqnjnsLtp4-PoeHYbDqL0cQme7W70BEjo4U,2677
|
3
3
|
commonmeta/author_utils.py,sha256=zBIPTgP5n7Zx57xomJ2h7x0dvC0AV8gJ2gPoYeDy5Lo,8348
|
4
4
|
commonmeta/base_utils.py,sha256=AsUElA5kT2fw_Osy7Uaj2F6MKeq9yB7d5f2V-h2lh7c,3750
|
5
5
|
commonmeta/cli.py,sha256=sOI9BJTePnljVcXcZ95N7TKXDT283XpjUaak7bMnbr0,6076
|
6
|
-
commonmeta/constants.py,sha256=
|
7
|
-
commonmeta/crossref_utils.py,sha256=
|
6
|
+
commonmeta/constants.py,sha256=T-kNocQBTuF3MXlMuPKywV3-viHVCWF_Kclkm-7G43s,18308
|
7
|
+
commonmeta/crossref_utils.py,sha256=ijcdAdV2HHUXP2twIKIQP9Ln2xsysU3n9nwQDg-ZAxU,22224
|
8
8
|
commonmeta/date_utils.py,sha256=rJRV4YmWKQWU__iAV8www3cqwaefC0iRKyHwvxrr_XY,6316
|
9
9
|
commonmeta/doi_utils.py,sha256=s2J95V9rWPbGsh5oNXht3yJkJ0NmVLRlOXDPXjnN-Ck,9152
|
10
10
|
commonmeta/metadata.py,sha256=cjvCcxW1FMtKCbNKan0zXX0FN6z5orHFGPYsgkp6fSI,12480
|
11
11
|
commonmeta/schema_utils.py,sha256=gg3l1jd_lFtRkQlO1DYGMVbC10nEmVTN4AWacxC4AAE,915
|
12
12
|
commonmeta/translators.py,sha256=RpGJtKNLjmz41VREZDY7KyyE2eXOi8j7m-da4jHmknI,1362
|
13
|
-
commonmeta/utils.py,sha256=
|
13
|
+
commonmeta/utils.py,sha256=nWSdkc1jNkhSnv46MKScExOUlD--wMP_QCRpy8Rnq_g,44989
|
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
16
|
commonmeta/readers/cff_reader.py,sha256=5HMFUvjE1zb-zfpQSNM8vtB0YunD0reom99hn8N0xKc,6144
|
17
17
|
commonmeta/readers/codemeta_reader.py,sha256=efv2V1WPfdrKLQNxgSvoripdWqS2M6CwXWSGiRuzRtU,3658
|
18
18
|
commonmeta/readers/commonmeta_reader.py,sha256=gNjdsJ-671-pXmBdzy1NybkQ29q9_qtorFoK2D-zStA,302
|
19
|
-
commonmeta/readers/crossref_reader.py,sha256=
|
20
|
-
commonmeta/readers/crossref_xml_reader.py,sha256=
|
19
|
+
commonmeta/readers/crossref_reader.py,sha256=msx127UIcu6ksFd8Wiay4YXK6dEKFO0kOFJS8_r9Nw0,12560
|
20
|
+
commonmeta/readers/crossref_xml_reader.py,sha256=yZOh66_4tVS5i0TdEyOa48ckpl7_cj69hfZnaA9pjM8,18723
|
21
21
|
commonmeta/readers/csl_reader.py,sha256=IO8uj-L_BzPFWgfRzYCF9VbK5rBPBzDqak7iBELgNNs,3164
|
22
22
|
commonmeta/readers/datacite_reader.py,sha256=CdOtxhthrakBoQMsLTdPx6sUCmqtEWo5ICYE6ZsWDdo,12026
|
23
23
|
commonmeta/readers/datacite_xml_reader.py,sha256=nhnO92fZihr1HZlbXjyem-HJXc9_DWLgJ2zeltuPMIg,13041
|
24
|
-
commonmeta/readers/inveniordm_reader.py,sha256=
|
25
|
-
commonmeta/readers/json_feed_reader.py,sha256=
|
24
|
+
commonmeta/readers/inveniordm_reader.py,sha256=uS92St68UkO4Adh3PsCu9ox81aO0kek3Y0vneBSDkts,7584
|
25
|
+
commonmeta/readers/json_feed_reader.py,sha256=xWOO5w8uOhK1u5IaqOeRL0-f8wtAgDzPjvtK5n6s-nY,13386
|
26
26
|
commonmeta/readers/kbase_reader.py,sha256=ehKXQsJyPCtaq2FmBxNb2Jb5Nktpx8pNscpmEM6N0A4,6763
|
27
27
|
commonmeta/readers/ris_reader.py,sha256=v6qOd-i2OcMTEFy5RGd3MlYthJcYSU6yzmZ5yHDzmII,3677
|
28
|
-
commonmeta/readers/schema_org_reader.py,sha256=
|
28
|
+
commonmeta/readers/schema_org_reader.py,sha256=Xv-VjZJkhz1vpC9tVbehI6y07iHvYq2MXWFo7q-wj4Y,17091
|
29
29
|
commonmeta/resources/cff_v1.2.0.json,sha256=MpfjDYgX7fN9PLiG54ISZ2uu9WItNqfh-yaRuTf6Ptg,46691
|
30
30
|
commonmeta/resources/commonmeta_v0.12.json,sha256=HUSNReXh2JN3Q6YWSt7CE69js8dh50OlpMYGTyU98oU,16762
|
31
31
|
commonmeta/resources/commonmeta_v0.13.json,sha256=2-WSZGijR13zVu97S_YHXr-cyeLW7hzHXYMlr6nIjdw,15787
|
32
32
|
commonmeta/resources/commonmeta_v0.14.json,sha256=nACmkTe4IrZkygd5AeJnAv9P4EWfzCwW9oL5AhubvnE,17657
|
33
|
-
commonmeta/resources/commonmeta_v0.15.json,sha256=
|
33
|
+
commonmeta/resources/commonmeta_v0.15.json,sha256=kC9xmtIwrGpl7V1vcXKWthWejYvtKfqOqenBCRSjANc,17753
|
34
34
|
commonmeta/resources/crossref-v0.2.json,sha256=THbFem4IDSE-TFNOtP1-NOmZhED2dlLBso9RdGMbGIY,1431
|
35
35
|
commonmeta/resources/csl-data.json,sha256=I7LAYtdSYGD0YxuwS0s7ojfkiEhCU-MnvQD6aRhhuBE,12222
|
36
36
|
commonmeta/resources/datacite-v4.5.json,sha256=ocpQNSbORPJf5Ogidy6M6EHundgv7DSgIqRco02KgM4,18970
|
@@ -65,12 +65,12 @@ commonmeta/writers/citation_writer.py,sha256=RjaNh9EALxq6gfODLRWVJxGxPArGd6ZiHUl
|
|
65
65
|
commonmeta/writers/commonmeta_writer.py,sha256=mu-yXQvQs_xdYM4MxbTTxxYB5n0lJA5BqiYfRPV562Q,1870
|
66
66
|
commonmeta/writers/crossref_xml_writer.py,sha256=0Ds494RnXfdfjWw5CLX1kwV2zP7gqffdVqO-X74Uc6c,492
|
67
67
|
commonmeta/writers/csl_writer.py,sha256=6N-93R1emcOsZrUTIhPBVd_Fv1C8Z5EAFYI0mYjoYaY,2797
|
68
|
-
commonmeta/writers/datacite_writer.py,sha256=
|
68
|
+
commonmeta/writers/datacite_writer.py,sha256=UpDp4Brg5xrmS5T3QYoNi6PPXKdRxAo254eTqnlmNyQ,6304
|
69
69
|
commonmeta/writers/inveniordm_writer.py,sha256=TctfZsiB8aiXWDLijJpxjMM77aKY6-hgKeAPDMfZoh4,11438
|
70
70
|
commonmeta/writers/ris_writer.py,sha256=AcnCszS3WY9lF594NbFBtLylsA8ownnYp_XLQJ84Ios,2093
|
71
71
|
commonmeta/writers/schema_org_writer.py,sha256=5j002uCNLdlScZMNQmPjodcVWqaBh2z38zL1H4lo2hY,5741
|
72
|
-
commonmeta_py-0.
|
73
|
-
commonmeta_py-0.
|
74
|
-
commonmeta_py-0.
|
75
|
-
commonmeta_py-0.
|
76
|
-
commonmeta_py-0.
|
72
|
+
commonmeta_py-0.75.dist-info/METADATA,sha256=mBeKmlKrFby8FJHM4SPhzxQP6epxsD9B4al_pSUewPA,7731
|
73
|
+
commonmeta_py-0.75.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
74
|
+
commonmeta_py-0.75.dist-info/entry_points.txt,sha256=U4w4BoRuS3rN5t5Y-uYSyOeU5Lh_VRVMS9OIDzIgw4w,50
|
75
|
+
commonmeta_py-0.75.dist-info/licenses/LICENSE,sha256=746hEF2wZCKkcckk5-_DcBLtHewfaEMS4iXTlA1PVwk,1074
|
76
|
+
commonmeta_py-0.75.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|