invenio-app-rdm 13.0.0b3.dev3__py2.py3-none-any.whl → 13.0.0b3.dev5__py2.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.
@@ -17,6 +17,6 @@
17
17
  #
18
18
  # See PEP 0440 for details - https://www.python.org/dev/peps/pep-0440
19
19
 
20
- __version__ = "13.0.0b3.dev3"
20
+ __version__ = "13.0.0b3.dev5"
21
21
 
22
22
  __all__ = ("__version__",)
@@ -11,58 +11,72 @@
11
11
 
12
12
  {% macro license_link(license) %}
13
13
  {% if license.link %}
14
- <a class="license-link" href="{{ license.link }}" target="_blank" title="{{ _('Opens in new tab') }}">{{ _('Read more') }}</a>
14
+ <a class="license-link" href="{{ license.link }}" target="_blank"
15
+ title="{{ _('Opens in new tab') }}">{{ _('Read more') }}</a>
15
16
  {% elif license.props and license.props.url %}
16
- <a class="license-link" href="{{ license.props.url }}" target="_blank" title="{{ _('Opens in new tab') }}">{{ _('Read more') }}</a>
17
+ <a class="license-link" href="{{ license.props.url }}" target="_blank"
18
+ title="{{ _('Opens in new tab') }}">{{ _('Read more') }}</a>
17
19
  {% endif %}
18
20
  {% endmacro %}
19
21
 
20
- {% set rights = record.ui.get('rights') %}
21
- {% if rights %}
22
+ {% set rights = record.ui.get('rights', []) %}
23
+ {% set copyrights = record.get('metadata', {}).get('copyright') %}
24
+ {% if rights or copyrights %}
22
25
  <div class="sidebar-container">
23
26
  <h2 class="ui medium top attached header mt-0">{{ _('Rights') }}</h2>
24
27
  <div id="licenses" class="ui segment bottom attached rdm-sidebar">
25
-
26
- <ul class="details-list m-0 p-0">
27
-
28
- {%- for license in rights%}
29
- <li id="license-{{license.id}}-{{loop.index}}" class="has-popup">
30
- <div id="title-{{license.id}}-{{loop.index}}"
31
- class="license clickable"
32
- tabindex="0"
33
- aria-haspopup="dialog"
34
- aria-expanded="false"
35
- role="button"
36
- aria-label="{{ license.title_l10n }}"
37
- >
38
- {% if license.icon %}
39
- {% set iconFile = 'icons/licenses/{}.svg'.format(license.icon) %}
40
- <span class="icon-wrap">
41
- <img class="icon" src="{{ url_for('static', filename=iconFile) }}" alt="{{ license.id }} icon"/>
28
+ {% if rights %}
29
+ <h4>License</h4>
30
+ <ul class="details-list m-0 p-0">
31
+ {%- for license in rights -%}
32
+ <li id="license-{{ license.id }}-{{ loop.index }}" class="has-popup">
33
+ <div id="title-{{ license.id }}-{{ loop.index }}"
34
+ class="license clickable"
35
+ tabindex="0"
36
+ aria-haspopup="dialog"
37
+ aria-expanded="false"
38
+ role="button"
39
+ aria-label="{{ license.title_l10n }}"
40
+ >
41
+ {% if license.icon %}
42
+ {% set iconFile = 'icons/licenses/{}.svg'.format(license.icon) %}
43
+ <span class="icon-wrap">
44
+ <img class="icon" src="{{ url_for('static', filename=iconFile) }}"
45
+ alt="{{ license.id }} icon"/>
42
46
  </span>
43
- {% endif %}
47
+ {% endif %}
44
48
 
45
- <span class="title-text">
49
+ <span class="title-text">
46
50
  {{ license.title_l10n }}
47
51
  </span>
48
- </div>
49
- <div id="description-{{license.id}}-{{loop.index}}"
50
- class="licenses-description ui flowing popup transition hidden"
51
- role="dialog"
52
- aria-labelledby="title-{{license.id}}-{{loop.index}}"
53
- >
54
- <i role="button" tabindex="0" class="close icon text-muted" aria-label="{{ _('Close') }}"></i>
52
+ </div>
53
+ <div id="description-{{ license.id }}-{{ loop.index }}"
54
+ class="licenses-description ui flowing popup transition hidden"
55
+ role="dialog"
56
+ aria-labelledby="title-{{ license.id }}-{{ loop.index }}"
57
+ >
58
+ <i role="button" tabindex="0" class="close icon text-muted"
59
+ aria-label="{{ _('Close') }}"></i>
55
60
 
56
- <div id="license-description-{{loop.index}}" class="description">
61
+ <div id="license-description-{{ loop.index }}" class="description">
57
62
  <span class="text-muted">
58
63
  {{ license.description_l10n or _('No further description.') }}
59
64
  </span>
60
- {{ license_link(license) }}
65
+ {{ license_link(license) }}
66
+ </div>
61
67
  </div>
62
- </div>
63
- </li>
64
- {% endfor %}
65
- </ul>
68
+ </li>
69
+ {% endfor %}
70
+
71
+ </ul>
72
+ {% endif %}
73
+ {% if copyrights %}
74
+ <h4>Copyrights</h4>
75
+ <div id="copyrights">
76
+ {{ copyrights }}
77
+ </div>
78
+ {% endif %}
66
79
  </div>
80
+
67
81
  </div>
68
82
  {% endif %}
@@ -23,7 +23,6 @@ from invenio_i18n.ext import current_i18n
23
23
  from invenio_rdm_records.proxies import current_rdm_records
24
24
  from invenio_rdm_records.records.api import get_files_quota
25
25
  from invenio_rdm_records.resources.serializers import UIJSONSerializer
26
- from invenio_rdm_records.services.components.pids import _get_optional_doi_transitions
27
26
  from invenio_rdm_records.services.schemas import RDMRecordSchema
28
27
  from invenio_rdm_records.services.schemas.utils import dump_empty
29
28
  from invenio_records_resources.services.errors import PermissionDeniedError
@@ -75,14 +74,15 @@ def get_form_pids_config(record=None):
75
74
  previous_published_record = (
76
75
  service.record_cls.get_latest_published_by_parent(record.parent)
77
76
  )
78
- optional_doi_transitions = _get_optional_doi_transitions(
79
- previous_published_record
77
+ validate_optional_doi = current_app.config["RDM_OPTIONAL_DOI_VALIDATOR"]
78
+ optional_doi_transitions = validate_optional_doi(
79
+ record, previous_published_record, errors=[]
80
80
  )
81
81
  if optional_doi_transitions:
82
82
  optional_doi_transitions["message"] = optional_doi_transitions.get(
83
83
  "message"
84
84
  ).format(sitename=sitename)
85
- if set(optional_doi_transitions.get("allowed_providers", [])) - set(
85
+ if set(optional_doi_transitions["allowed_providers"]) - set(
86
86
  ["external", "not_needed"]
87
87
  ):
88
88
  # In case we have locally managed provider as an allowed one, we need to
@@ -43,6 +43,7 @@ import { FundingField } from "@js/invenio_vocabularies";
43
43
  import { Card, Container, Grid, Ref, Sticky } from "semantic-ui-react";
44
44
  import PropTypes from "prop-types";
45
45
  import Overridable from "react-overridable";
46
+ import { CopyrightsField } from "@js/invenio_rdm_records/src/deposit/fields/CopyrightsField/CopyrightsField";
46
47
  import { ShareDraftButton } from "./ShareDraftButton";
47
48
  import { depositFormSectionsConfig, severityChecksConfig } from "./config";
48
49
 
@@ -351,6 +352,12 @@ export class RDMDepositForm extends Component {
351
352
  })}
352
353
  />
353
354
  </Overridable>
355
+ <Overridable
356
+ id="InvenioAppRdm.Deposit.CopyrightsField.container"
357
+ fieldPath="metadata.copyright"
358
+ >
359
+ <CopyrightsField fieldPath="metadata.copyright" />
360
+ </Overridable>
354
361
  <Overridable
355
362
  id="InvenioAppRdm.Deposit.AccordionFieldBasicInformation.extra"
356
363
  record={record}
@@ -98,7 +98,7 @@ export class AccessUsersGroups extends Component {
98
98
  <Grid.Column>
99
99
  <Item className="flex">
100
100
  <Image
101
- src={recOwner.links.avatar}
101
+ src={recOwner.links?.avatar}
102
102
  avatar
103
103
  className="rel-ml-1"
104
104
  alt=""
@@ -78,7 +78,7 @@ export class UserGroupAccessSearchResultItem extends Component {
78
78
  <Grid.Column>
79
79
  <Item className="flex" key={result.id}>
80
80
  <Image
81
- src={entity.links.avatar}
81
+ src={entity.links?.avatar}
82
82
  avatar
83
83
  className="rel-ml-1"
84
84
  alt=""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: invenio-app-rdm
3
- Version: 13.0.0b3.dev3
3
+ Version: 13.0.0b3.dev5
4
4
  Summary: Invenio Research Data Management.
5
5
  Home-page: https://github.com/inveniosoftware/invenio-app-rdm
6
6
  Author: CERN
@@ -97,6 +97,15 @@ https://inveniordm.docs.cern.ch
97
97
  Changes
98
98
  =======
99
99
 
100
+ Version v13.0.0b3.dev5 (released 2025-04-25)
101
+
102
+ - deposit: add copyright field
103
+ - landing page: bugfix for user avatars
104
+
105
+ Version v13.0.0b3.dev4 (released 2025-04-10)
106
+
107
+ - deposits: use optional doi validator method
108
+
100
109
  Version v13.0.0b3.dev3 (released 2025-04-04)
101
110
 
102
111
  - fix: Handle undefined record attributes in templates to avoid rendering errors (#2932)
@@ -1,4 +1,4 @@
1
- invenio_app_rdm/__init__.py,sha256=yiKPjNn5A2pHJKXTk9pcja1NSSxCvY2DZK4ELc1tyMA,699
1
+ invenio_app_rdm/__init__.py,sha256=nZGats5Z8q2BrxygVDy_X_sJZ2hM_mN8SDbdJgBFHao,699
2
2
  invenio_app_rdm/cli.py,sha256=G6QqNU2W6n6ICtTMnpeKFXIsdorncDmVXwwwsGH5F2k,2746
3
3
  invenio_app_rdm/config.py,sha256=Sv6Q8VEP-KYNuvC6kASLOYC-gYRByYN-hwPmbCxQWKc,50624
4
4
  invenio_app_rdm/ext.py,sha256=PkZhATGJDgYqBJQh41NdvBZWR83mgI3Eej6rj10UVJE,5278
@@ -67,7 +67,7 @@ invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details
67
67
  invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/export.html,sha256=DoDrQFd_OJcJzqBEQ2FRbcfJpD3TLRjESU68mBLWVyU,1392
68
68
  invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/external_resources.html,sha256=Ia92YMRlxuGRTMsWU4hQTLJDeRy8BX8bnSSaLXKst4Y,1934
69
69
  invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/keywords_subjects.html,sha256=LvsA6JiosfwSSwUUg6--3xx1OZepvN7mxQdIWyl9caE,708
70
- invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/licenses.html,sha256=iideMdvDM-TQGqehzRk5W5NmfUBHO-HKjJu_cnVeOps,2702
70
+ invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/licenses.html,sha256=ktAwgEUpB6X8uMk9-ThNEg0_CkyTqfBurTudXNd6mFo,3131
71
71
  invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/locations.html,sha256=i1EnmQrnmSAYfocoMYtneAB7JyUI309whyu3bZJTR6M,715
72
72
  invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/manage_menu.html,sha256=CiqcUTXKnbcZASIweFCHeqaRqO0M0k_wjM9Q-S9z0i4,1297
73
73
  invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/metrics.html,sha256=3OptZ6iQYaQ3GjNw5O-h9FloISUzFE0nSNTmazjTQgQ,520
@@ -82,7 +82,7 @@ invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/
82
82
  invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/version.html,sha256=eA8-n81XUezkwPXvcG5v2sgLPQNTgr7hB36-_Gr-tVI,758
83
83
  invenio_app_rdm/records_ui/views/__init__.py,sha256=fzRrhYImQg13KnHfxJgzDlJPe-DzE02GifP2j_Wt480,5726
84
84
  invenio_app_rdm/records_ui/views/decorators.py,sha256=XUSPpstYyh72IdNaIO4wz3sw1fjI_2DNGsKdUu3ueL4,15769
85
- invenio_app_rdm/records_ui/views/deposits.py,sha256=BZfkL9dIEtkab5FJ36UunGRS__YHfb7TMcDnRi8U5cA,21560
85
+ invenio_app_rdm/records_ui/views/deposits.py,sha256=KRR_fpl98EhNZie0Q-_uZtgG2QKsQAW2fhb-kvnQ4s4,21561
86
86
  invenio_app_rdm/records_ui/views/filters.py,sha256=Rm55fXJv97cqq8B_6KCe-3PxxHUH4VRu-jd9fTea6r4,6994
87
87
  invenio_app_rdm/records_ui/views/records.py,sha256=GdxG3JnXrV1QT0KxOqeYWoDGIiZRZ9w5poihPPd-wTo,16428
88
88
  invenio_app_rdm/redirector/__init__.py,sha256=AYCTGmfbmkHW3YJXMqXlWBXcBrUsta-QmL9ULX2bjwA,243
@@ -160,7 +160,7 @@ invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/CopyButto
160
160
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/DisplayPartOfCommunities.js,sha256=bSmhuwSWk4CW80mqa4ZZbjfa-_NsiJ1IxQ9veDy6sAM,2751
161
161
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/DisplayVerifiedCommunity.js,sha256=m3rT8jJ3440ZX22zZog8bHatWltYXwvmw_tu6tJUM9k,1506
162
162
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/RecordsResultsListItem.js,sha256=RTSQBlGQY7ww7fVGHDvDfWQNyJ07mnEoyboTGIcCgD4,6694
163
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/deposit/RDMDepositForm.js,sha256=Z9VF1-4Y9GDY42Jhz9Se9CvY0Ahx_HkqcW-fn97UwKw,31881
163
+ invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/deposit/RDMDepositForm.js,sha256=TRuglTvAn2Iz_vPewNpRp473VnYXzPgso1XkzG9u5gA,32282
164
164
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/deposit/ShareDraftButton.js,sha256=ICMV4Ixe-nTe6q7COZ0oyAQf2nVp2cez_-iUZobwUD0,1998
165
165
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/deposit/config.js,sha256=a9Im0S72ne6LGDzM8C-pP9fIhcMihIbOJ5Ez5SwSn9A,1456
166
166
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/deposit/index.js,sha256=gA0BaUFpaJr9nkmHSWoxuwKDfSD3JUTPcadj2TKHN24,1587
@@ -197,11 +197,11 @@ invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOp
197
197
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessLinks/LinksSearchResultContainer.js,sha256=xr5dfml-v7NU2PzCKIB2_BeYFnFghnsqwKMgLErONQI,6786
198
198
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessLinks/LinksTab.js,sha256=Ki1HN02B4_xFNy3YdPp3Mz2YLO-LxUhmNqRKKrvtVlQ,2883
199
199
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessRequests/AccessRequestsTab.js,sha256=tbSeqk7tnApZqLFi7NEegrwAGFKJ0sficF_3DB1Ld-0,8405
200
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessUsersGroups/AccessUsersGroups.js,sha256=NPKhCbPLU260vFTayQ0QA6x5JuIcEkLZkvvx8zxy5Iw,6885
200
+ invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessUsersGroups/AccessUsersGroups.js,sha256=tqUTVCNmfTZqY6aqDvZ3FOFl13EwT23AUWASpccdwMY,6886
201
201
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessUsersGroups/AddUserGroupAccessModal.js,sha256=qpaeKpIX2FUhztkBJtD03WlZ_YOziE0_1CF4cGwMb6Y,5839
202
202
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessUsersGroups/GroupsTab.js,sha256=ZqiuZjjr1SZnTs3cBhX7ZckixAVa2KErEZXKY00A3oE,2358
203
203
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessUsersGroups/PeopleTab.js,sha256=yk5anjYE7CNQ9_io3qIAgE_6oeFYvMn0hmc2McpEF_g,2348
204
- invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessUsersGroups/UserGroupAccessSearchResultItem.js,sha256=PRAouFDdR560x3-l6My5UjxG4L14wT76Xu5teAIRyDY,5749
204
+ invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessUsersGroups/UserGroupAccessSearchResultItem.js,sha256=TYluO2lRliHcIoJBiTnAy8H4B-sEsa5h2TZ6mC1Xb7I,5750
205
205
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/api/api.js,sha256=WpRWWdlN_8TqeaMdB7RV2rQJSluetA91qIuJcAddfLY,926
206
206
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/overridableRegistry/index.js,sha256=xktX9vqs7xPTrKmGD93T-faSmg07LNsmK3GepA9F6j0,424
207
207
  invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/overridableRegistry/mapping.js,sha256=kRIVYx1pkzq6kNry3M6Cn5hykDkNJAaG7sQ0BdwGSj8,434
@@ -469,7 +469,7 @@ invenio_app_rdm/users_ui/views/__init__.py,sha256=SMdY2NJj9GICfr3Xuok7qdNYVtA2bJ
469
469
  invenio_app_rdm/users_ui/views/dashboard.py,sha256=iUn2PrODAwb8ugmMosJKAjPhUzjCiWiAWoXQr9RUFuc,1793
470
470
  invenio_app_rdm/users_ui/views/ui.py,sha256=W_eXM8dLVIrNHQB2UEh37C9BYoHauft6RyvcDNFHovA,1742
471
471
  invenio_app_rdm/utils/files.py,sha256=CruDyO2gDVadSlWEJD-WHpWHeOQ0juh-Ei9jz3D9yjc,3923
472
- invenio_app_rdm-13.0.0b3.dev3.dist-info/licenses/LICENSE,sha256=AZXFHRrZa5s4m9DV7zZr4bPGTMUvcEPCodeV_AmFI8k,1204
472
+ invenio_app_rdm-13.0.0b3.dev5.dist-info/licenses/LICENSE,sha256=AZXFHRrZa5s4m9DV7zZr4bPGTMUvcEPCodeV_AmFI8k,1204
473
473
  tests/__init__.py,sha256=yKVf0yYRuxmXvyAtLjmfpHGVCsEkZOhs_FojAAM_w-8,244
474
474
  tests/conftest.py,sha256=6iR-l-DIpQDxN2LLMu6kbHnLsmAW1m8Lq-j8rNNucf8,8956
475
475
  tests/test_tasks.py,sha256=6l25lcMjL3ZuQr4hsxbAEjSTu_J1aKkOB3ZXqOZZIy0,3712
@@ -502,8 +502,8 @@ tests/ui/test_filters.py,sha256=Q90wsJffjMVir7wNX8taGf2KZleLtPbXZXHLTkBpzLA,284
502
502
  tests/ui/test_signposting_ui.py,sha256=KCSjQlMD2VKlwQCyZYDwYjtVNL35x3u-ZC4ceD5y21w,3847
503
503
  tests/ui/test_static.py,sha256=vO3OQAOhrQESJifnQfM1pw7JYz3J874O8BAb7Cc_PPA,868
504
504
  tests/ui/test_stats_ui.py,sha256=LHa_0hjvpYvliSk_jknWy-90CO82jVElUfK5Ua_ZmfA,3554
505
- invenio_app_rdm-13.0.0b3.dev3.dist-info/METADATA,sha256=WJL9g4h8pbpxi0Q34DNcIgxxxCgqT7MiqtqmqH5ciMY,12485
506
- invenio_app_rdm-13.0.0b3.dev3.dist-info/WHEEL,sha256=MAQBAzGbXNI3bUmkDsiV_duv8i-gcdnLzw7cfUFwqhU,109
507
- invenio_app_rdm-13.0.0b3.dev3.dist-info/entry_points.txt,sha256=r1vTqYNABeWqRMWitzyR9FnBsAy-KYZKZCp95IziyLY,2070
508
- invenio_app_rdm-13.0.0b3.dev3.dist-info/top_level.txt,sha256=NqTqrntInEAci7EXcNBvouXFMqwyjVQhEI0b7izYRBY,22
509
- invenio_app_rdm-13.0.0b3.dev3.dist-info/RECORD,,
505
+ invenio_app_rdm-13.0.0b3.dev5.dist-info/METADATA,sha256=6YT-pB8fpd-7ynabhsShq9rIO7ovbMsXWZVElMhDZr0,12696
506
+ invenio_app_rdm-13.0.0b3.dev5.dist-info/WHEEL,sha256=AeO2BvogYWm3eGaHCvhzmUYt8ia7KfURiHzO_1atlys,109
507
+ invenio_app_rdm-13.0.0b3.dev5.dist-info/entry_points.txt,sha256=r1vTqYNABeWqRMWitzyR9FnBsAy-KYZKZCp95IziyLY,2070
508
+ invenio_app_rdm-13.0.0b3.dev5.dist-info/top_level.txt,sha256=NqTqrntInEAci7EXcNBvouXFMqwyjVQhEI0b7izYRBY,22
509
+ invenio_app_rdm-13.0.0b3.dev5.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (78.1.0)
2
+ Generator: setuptools (79.0.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py2-none-any
5
5
  Tag: py3-none-any