oarepo-runtime 1.5.92__py3-none-any.whl → 1.5.94__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.
@@ -1,3 +1,3 @@
1
- from .generators import RecordOwners, UserWithRole
1
+ from .generators import IfDraftType, RecordOwners, UserWithRole
2
2
 
3
- __all__ = ("RecordOwners", "UserWithRole")
3
+ __all__ = ("RecordOwners", "UserWithRole", "IfDraftType")
@@ -1,7 +1,14 @@
1
+ from typing import Literal
2
+
3
+ from flask import current_app
1
4
  from flask_principal import RoleNeed, UserNeed
2
- from invenio_records_permissions.generators import Generator
5
+ from invenio_records_permissions.generators import (
6
+ ConditionalGenerator,
7
+ Disable,
8
+ Generator,
9
+ )
3
10
  from invenio_search.engine import dsl
4
- from flask import current_app
11
+
5
12
 
6
13
  class RecordOwners(Generator):
7
14
  """Allows record owners."""
@@ -12,7 +19,7 @@ class RecordOwners(Generator):
12
19
  # 'record' is required, so if not passed we default to empty array,
13
20
  # i.e. superuser-access.
14
21
  return []
15
- if current_app.config.get('INVENIO_RDM_ENABLED', False):
22
+ if current_app.config.get("INVENIO_RDM_ENABLED", False):
16
23
  owners = getattr(record.parent.access, "owned_by", None)
17
24
  if owners is not None:
18
25
  owners_list = owners if isinstance(owners, list) else [owners]
@@ -27,11 +34,12 @@ class RecordOwners(Generator):
27
34
  """Filters for current identity as owner."""
28
35
  users = [n.value for n in identity.provides if n.method == "id"]
29
36
  if users:
30
- if current_app.config.get('INVENIO_RDM_ENABLED', False):
37
+ if current_app.config.get("INVENIO_RDM_ENABLED", False):
31
38
  return dsl.Q("terms", **{"parent.access.owned_by.user": users})
32
39
  else:
33
40
  return dsl.Q("terms", **{"parent.owners.user": users})
34
41
 
42
+
35
43
  class UserWithRole(Generator):
36
44
  def __init__(self, *roles):
37
45
  self.roles = roles
@@ -46,3 +54,49 @@ class UserWithRole(Generator):
46
54
  if provide.method == "role" and provide.value in self.roles:
47
55
  return dsl.Q("match_all")
48
56
  return dsl.Q("match_none")
57
+
58
+
59
+ class IfDraftType(ConditionalGenerator):
60
+ def __init__(
61
+ self,
62
+ draft_types: list[
63
+ Literal["initial"] | Literal["metadata"] | Literal["new_version"]
64
+ ]
65
+ | Literal["initial"]
66
+ | Literal["metadata"]
67
+ | Literal["new_version"],
68
+ then_=None,
69
+ else_=None,
70
+ ):
71
+ if not isinstance(draft_types, (list, tuple)):
72
+ draft_types = [draft_types]
73
+ self._draft_types = draft_types
74
+ if not then_:
75
+ then_ = [Disable()]
76
+ if not else_:
77
+ else_ = [Disable()]
78
+ if not isinstance(then_, (list, tuple)):
79
+ then_ = [then_]
80
+ if not isinstance(else_, (list, tuple)):
81
+ else_ = [else_]
82
+ super().__init__(then_, else_)
83
+
84
+ def _condition(self, record=None, **kwargs):
85
+ if not record:
86
+ return False
87
+
88
+ index = record.versions.index
89
+ is_latest = record.versions.is_latest
90
+ is_draft = record.is_draft
91
+
92
+ if not is_draft:
93
+ return False
94
+
95
+ if index == 1 and not is_latest:
96
+ draft_type = "initial"
97
+ elif index > 1 and not is_latest:
98
+ draft_type = "new_version"
99
+ else:
100
+ draft_type = "metadata"
101
+
102
+ return draft_type in self._draft_types
@@ -1,10 +1,12 @@
1
1
  import typing
2
2
 
3
- import marshmallow as ma
3
+ from invenio_rdm_records.services.schemas.record import RDMRecordSchema
4
4
  from invenio_records_resources.services.records.schema import (
5
5
  BaseRecordSchema as InvenioBaseRecordSchema,
6
6
  )
7
7
 
8
+ import marshmallow as ma
9
+
8
10
 
9
11
  class BaseRecordSchema(InvenioBaseRecordSchema):
10
12
  """Base record schema - in addition to invenio exposes $schema as well."""
@@ -12,6 +14,12 @@ class BaseRecordSchema(InvenioBaseRecordSchema):
12
14
  _schema = ma.fields.Str(attribute="$schema", data_key="$schema")
13
15
 
14
16
 
17
+ class RDMBaseRecordSchema(RDMRecordSchema):
18
+ """Base record schema - in addition to invenio exposes $schema as well."""
19
+
20
+ _schema = ma.fields.Str(attribute="$schema", data_key="$schema")
21
+
22
+
15
23
  class DictOnlySchema(ma.Schema):
16
24
  def get_attribute(self, obj: typing.Any, attr: str, default: typing.Any):
17
25
  if not isinstance(attr, int) and "." in attr:
@@ -5,6 +5,12 @@ import marshmallow as ma
5
5
  from babel.dates import format_date
6
6
  from babel_edtf import format_edtf
7
7
  from flask import current_app
8
+ from invenio_rdm_records.records.systemfields.access.field.record import (
9
+ AccessStatusEnum,
10
+ )
11
+ from invenio_rdm_records.resources.serializers.ui.fields import (
12
+ UIObjectAccessStatus as InvenioUIObjectAccessStatus,
13
+ )
8
14
  from marshmallow_utils.fields import (
9
15
  BabelGettextDictField,
10
16
  FormatDate,
@@ -15,6 +21,9 @@ from marshmallow_utils.fields import (
15
21
  from marshmallow_utils.fields.babel import BabelFormatField
16
22
 
17
23
  from oarepo_runtime.i18n import gettext
24
+ from oarepo_runtime.i18n import lazy_gettext as _
25
+
26
+ from .marshmallow import RDMBaseRecordSchema
18
27
 
19
28
 
20
29
  def current_default_locale():
@@ -131,3 +140,43 @@ class InvenioUISchema(ma.Schema):
131
140
  links = ma.fields.Raw(dump_only=True)
132
141
  revision_id = ma.fields.Integer(dump_only=True)
133
142
  expanded = ma.fields.Raw(dump_only=True)
143
+
144
+
145
+ # seems not possible to avoid, as they have this hardcoded in their object,
146
+ # and translation keys are i.e. open, which gets translated to otevret
147
+ class UIObjectAccessStatus(InvenioUIObjectAccessStatus):
148
+ @property
149
+ def title(self):
150
+ """Access status title."""
151
+ return {
152
+ AccessStatusEnum.OPEN: _("access.status.open"),
153
+ AccessStatusEnum.EMBARGOED: _("access.status.embargoed"),
154
+ AccessStatusEnum.RESTRICTED: _("access.status.restricted"),
155
+ AccessStatusEnum.METADATA_ONLY: _("access.status.metadata-only"),
156
+ }.get(self.access_status)
157
+
158
+
159
+ class AccessStatusField(ma.fields.Field):
160
+ """Record access status."""
161
+
162
+ def _serialize(self, value, attr, obj, **kwargs):
163
+ """Serialise access status."""
164
+ record_access_dict = obj.get("access")
165
+ _files = obj.get("files", {})
166
+ has_files = _files is not None and _files.get("enabled", False)
167
+ if record_access_dict:
168
+ record_access_status_ui = UIObjectAccessStatus(
169
+ record_access_dict, has_files
170
+ )
171
+ return {
172
+ "id": record_access_status_ui.id,
173
+ "title_l10n": record_access_status_ui.title,
174
+ "description_l10n": record_access_status_ui.description,
175
+ "icon": record_access_status_ui.icon,
176
+ "embargo_date_l10n": record_access_status_ui.embargo_date,
177
+ "message_class": record_access_status_ui.message_class,
178
+ }
179
+
180
+
181
+ class InvenioRDMUISchema(InvenioUISchema, RDMBaseRecordSchema):
182
+ is_draft = ma.fields.Boolean(dump_only=True)
@@ -2,11 +2,16 @@ import dataclasses
2
2
  import inspect
3
3
  from typing import List
4
4
 
5
+ from invenio_rdm_records.services.config import (
6
+ RDMSearchDraftsOptions as BaseRDMSearchDraftsOptions,
7
+ )
8
+ from invenio_rdm_records.services.config import RDMSearchOptions as BaseRDMSearchOptions
5
9
  from invenio_records_resources.proxies import current_service_registry
6
10
  from invenio_records_resources.services.records import (
7
11
  SearchOptions as InvenioSearchOptions,
8
12
  )
9
13
  from invenio_records_resources.services.records.params import (
14
+ FacetsParam,
10
15
  PaginationParam,
11
16
  QueryStrParam,
12
17
  SortParam,
@@ -17,9 +22,10 @@ from invenio_search.engine import dsl
17
22
  # TODO: integrate this to invenio_records_resources.services.records and remove SearchOptions class
18
23
  from oarepo_runtime.i18n import lazy_gettext as _
19
24
  from oarepo_runtime.records.systemfields.icu import ICUSuggestField
25
+ from oarepo_runtime.utils.functools import class_property
20
26
 
21
27
  from .facets.params import GroupedFacetsParam
22
- from invenio_rdm_records.services.config import RDMSearchOptions, RDMSearchDraftsOptions
28
+
23
29
  try:
24
30
  from invenio_i18n import get_locale
25
31
  except ImportError:
@@ -47,13 +53,16 @@ class FuzzySuggestQueryParser(SuggestQueryParser):
47
53
  return dsl.Q("bool", should=[multi_match_with_bool_prefix, multi_match_fuzzy])
48
54
 
49
55
 
50
- class SearchOptions(InvenioSearchOptions):
51
- params_interpreters_cls = [
52
- QueryStrParam,
53
- PaginationParam,
54
- SortParam,
55
- GroupedFacetsParam,
56
- ]
56
+ class SearchOptionsMixin:
57
+ @class_property
58
+ def params_interpreters_cls(cls):
59
+ """Replaces FacetsParam with GroupedFacetsParam."""
60
+ param_interpreters = [*super(SearchOptionsMixin, cls).params_interpreters_cls]
61
+ # replace FacetsParam with GroupedFacetsParam
62
+ for idx, interpreter in enumerate(param_interpreters):
63
+ if interpreter == FacetsParam:
64
+ param_interpreters[idx] = GroupedFacetsParam
65
+ return param_interpreters
57
66
 
58
67
  sort_options = {
59
68
  "title": dict(
@@ -75,6 +84,53 @@ class SearchOptions(InvenioSearchOptions):
75
84
  }
76
85
 
77
86
 
87
+ class SearchOptionsDraftMixin(SearchOptionsMixin):
88
+ sort_options = {
89
+ "bestmatch": dict(
90
+ title=_("Best match"),
91
+ fields=["_score"], # search defaults to desc on `_score` field
92
+ ),
93
+ "updated-desc": dict(
94
+ title=_("Recently updated"),
95
+ fields=["-updated"],
96
+ ),
97
+ "updated-asc": dict(
98
+ title=_("Least recently updated"),
99
+ fields=["updated"],
100
+ ),
101
+ "newest": dict(
102
+ title=_("Newest"),
103
+ fields=["-created"],
104
+ ),
105
+ "oldest": dict(
106
+ title=_("Oldest"),
107
+ fields=["created"],
108
+ ),
109
+ "version": dict(
110
+ title=_("Version"),
111
+ fields=["-versions.index"],
112
+ ),
113
+ }
114
+
115
+
116
+ class SearchOptions(SearchOptionsMixin, InvenioSearchOptions):
117
+ # TODO: should be changed
118
+ params_interpreters_cls = [
119
+ QueryStrParam,
120
+ PaginationParam,
121
+ SortParam,
122
+ GroupedFacetsParam,
123
+ ]
124
+
125
+
126
+ class RDMSearchOptions(SearchOptionsMixin, BaseRDMSearchOptions):
127
+ pass
128
+
129
+
130
+ class RDMSearchDraftsOptions(SearchOptionsDraftMixin, BaseRDMSearchDraftsOptions):
131
+ pass
132
+
133
+
78
134
  @dataclasses.dataclass
79
135
  class SuggestField:
80
136
  field: str
@@ -188,14 +244,17 @@ class ICUSortOptions:
188
244
  }
189
245
  return ret
190
246
 
247
+
191
248
  class I18nSearchOptions(SearchOptions):
192
249
  extra_sort_options = {}
193
250
  record_cls = None
194
251
 
252
+
195
253
  class I18nRDMSearchOptions(RDMSearchOptions):
196
254
  extra_sort_options = {}
197
255
  record_cls = None
198
256
 
257
+
199
258
  class I18nRDMDraftsSearchOptions(RDMSearchDraftsOptions):
200
259
  extra_sort_options = {}
201
260
  record_cls = None
@@ -51,3 +51,19 @@ msgstr "Ne"
51
51
  #, python-format
52
52
  msgid "Invalid value %(identifier)s of identifier type %(type)s"
53
53
  msgstr "%(type)s: Neplatná hodnota '%(identifier)s'"
54
+
55
+ #: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/ui.py:152
56
+ msgid "access.status.open"
57
+ msgstr "otevřený přístup"
58
+
59
+ #: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/ui.py:153
60
+ msgid "access.status.embargoed"
61
+ msgstr "odložené zpřístupnění"
62
+
63
+ #: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/ui.py:154
64
+ msgid "access.status.restricted"
65
+ msgstr "omezený přístup"
66
+
67
+ #: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/ui.py:155
68
+ msgid "access.status.metadata-only"
69
+ msgstr "pouze metadata"
@@ -50,3 +50,19 @@ msgstr ""
50
50
  #, python-format
51
51
  msgid "Invalid value %(identifier)s of identifier type %(type)s"
52
52
  msgstr ""
53
+
54
+ #: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/ui.py:152
55
+ msgid "access.status.open"
56
+ msgstr "open access"
57
+
58
+ #: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/ui.py:153
59
+ msgid "access.status.embargoed"
60
+ msgstr "embargoed access"
61
+
62
+ #: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/ui.py:154
63
+ msgid "access.status.restricted"
64
+ msgstr "restricted access"
65
+
66
+ #: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/ui.py:155
67
+ msgid "access.status.metadata-only"
68
+ msgstr "metadata only access"
@@ -1,56 +1,72 @@
1
1
  # Translations template for PROJECT.
2
- # Copyright (C) 2024 ORGANIZATION
2
+ # Copyright (C) 2025 ORGANIZATION
3
3
  # This file is distributed under the same license as the PROJECT project.
4
- # FIRST AUTHOR <EMAIL@ADDRESS>, 2024.
4
+ # FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
5
5
  #
6
6
  #, fuzzy
7
7
  msgid ""
8
8
  msgstr ""
9
9
  "Project-Id-Version: PROJECT VERSION\n"
10
10
  "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
11
- "POT-Creation-Date: 2024-11-28 10:16+0100\n"
11
+ "POT-Creation-Date: 2025-02-17 10:27+0100\n"
12
12
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13
13
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
14
  "Language-Team: LANGUAGE <LL@li.org>\n"
15
15
  "MIME-Version: 1.0\n"
16
16
  "Content-Type: text/plain; charset=utf-8\n"
17
17
  "Content-Transfer-Encoding: 8bit\n"
18
- "Generated-By: Babel 2.15.0\n"
18
+ "Generated-By: Babel 2.17.0\n"
19
19
 
20
- #: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/search.py:60
21
- #: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/search.py:146
20
+ #: /home/dusanst/Projects/oarepo-runtime/oarepo_runtime/services/search.py:71
21
+ #: /home/dusanst/Projects/oarepo-runtime/oarepo_runtime/services/search.py:175
22
22
  msgid "By Title"
23
23
  msgstr ""
24
24
 
25
- #: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/search.py:64
26
- #: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/translations/default_translations.py:5
25
+ #: /home/dusanst/Projects/oarepo-runtime/oarepo_runtime/services/search.py:75
26
+ #: /home/dusanst/Projects/oarepo-runtime/oarepo_runtime/translations/default_translations.py:5
27
27
  msgid "Best match"
28
28
  msgstr ""
29
29
 
30
- #: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/search.py:68
31
- #: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/translations/default_translations.py:3
30
+ #: /home/dusanst/Projects/oarepo-runtime/oarepo_runtime/services/search.py:79
31
+ #: /home/dusanst/Projects/oarepo-runtime/oarepo_runtime/translations/default_translations.py:3
32
32
  msgid "Newest"
33
33
  msgstr ""
34
34
 
35
- #: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/search.py:72
36
- #: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/translations/default_translations.py:4
35
+ #: /home/dusanst/Projects/oarepo-runtime/oarepo_runtime/services/search.py:83
36
+ #: /home/dusanst/Projects/oarepo-runtime/oarepo_runtime/translations/default_translations.py:4
37
37
  msgid "Oldest"
38
38
  msgstr ""
39
39
 
40
- #: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/ui.py:123
40
+ #: /home/dusanst/Projects/oarepo-runtime/oarepo_runtime/services/schema/ui.py:132
41
41
  msgid "True"
42
42
  msgstr ""
43
43
 
44
- #: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/ui.py:123
44
+ #: /home/dusanst/Projects/oarepo-runtime/oarepo_runtime/services/schema/ui.py:132
45
45
  msgid "False"
46
46
  msgstr ""
47
47
 
48
- #: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/validation.py:19
48
+ #: /home/dusanst/Projects/oarepo-runtime/oarepo_runtime/services/schema/ui.py:152
49
+ msgid "access.status.open"
50
+ msgstr ""
51
+
52
+ #: /home/dusanst/Projects/oarepo-runtime/oarepo_runtime/services/schema/ui.py:153
53
+ msgid "access.status.embargoed"
54
+ msgstr ""
55
+
56
+ #: /home/dusanst/Projects/oarepo-runtime/oarepo_runtime/services/schema/ui.py:154
57
+ msgid "access.status.restricted"
58
+ msgstr ""
59
+
60
+ #: /home/dusanst/Projects/oarepo-runtime/oarepo_runtime/services/schema/ui.py:155
61
+ msgid "access.status.metadata-only"
62
+ msgstr ""
63
+
64
+ #: /home/dusanst/Projects/oarepo-runtime/oarepo_runtime/services/schema/validation.py:31
49
65
  #, python-format
50
66
  msgid "Invalid value %(identifier)s of identifier type %(type)s"
51
67
  msgstr ""
52
68
 
53
- #: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/translations/default_translations.py:6
69
+ #: /home/dusanst/Projects/oarepo-runtime/oarepo_runtime/translations/default_translations.py:6
54
70
  msgid "Contact"
55
71
  msgstr ""
56
72
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: oarepo-runtime
3
- Version: 1.5.92
3
+ Version: 1.5.94
4
4
  Summary: A set of runtime extensions of Invenio repository
5
5
  Description-Content-Type: text/markdown
6
6
  License-File: LICENSE
@@ -76,7 +76,7 @@ oarepo_runtime/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG
76
76
  oarepo_runtime/services/components.py,sha256=h7oQNPueuPqBD6mCRCIr7ZuNvzeliXinHjOyVV3FBvw,10775
77
77
  oarepo_runtime/services/generators.py,sha256=j87HitHA_w2awsz0C5IAAJ0qjg9JMtvdO3dvh6FQyfg,250
78
78
  oarepo_runtime/services/results.py,sha256=Ap2mUJHl3V4BSduTrBWPuco0inQVq0QsuCbVhez48uY,5705
79
- oarepo_runtime/services/search.py,sha256=39HR4LB4Q-UiodoOMA4syQTt-q7NvceiL6sGQeIHVfc,6520
79
+ oarepo_runtime/services/search.py,sha256=mUycojDo26p54ZZPqXcXmdhUrzAP_eKCWls2XYJSM6c,8186
80
80
  oarepo_runtime/services/config/__init__.py,sha256=559w4vphVAipa420OwTsxGUP-b7idoqSIX13FSJyVz0,783
81
81
  oarepo_runtime/services/config/link_conditions.py,sha256=evPRd5XU76Ok4J-08bBfplbHZ019rl74FpJmO8iM5yg,3298
82
82
  oarepo_runtime/services/config/permissions_presets.py,sha256=YF99Vjh1fGqSEXNw7qIfcUQFvzpE54_BafqkO6wlYHk,6668
@@ -102,8 +102,8 @@ oarepo_runtime/services/facets/year_histogram.py,sha256=kdfwx1lgw4UmfjdaqqeElJCB
102
102
  oarepo_runtime/services/files/__init__.py,sha256=K8MStrEQf_BUhvzhwPTF93Hkhwrd1dtv35LDo7iZeTM,268
103
103
  oarepo_runtime/services/files/components.py,sha256=x6Wd-vvkqTqB1phj2a6h42DNQksN8PuR2XKaOGoNHfw,2400
104
104
  oarepo_runtime/services/files/service.py,sha256=8DH0Pefr9kilM2JnOb-UYsnqerE8Z1Mu4p6DOJ4j_ZU,608
105
- oarepo_runtime/services/permissions/__init__.py,sha256=Cgin2Zr1fpaYr-aZcUotdmv0hsrPTUJVQt8ouvU8tuU,95
106
- oarepo_runtime/services/permissions/generators.py,sha256=y_jptL-pHDU91xJsLMR0Bfva5EXcZv6JDLZ1x7XxzKQ,1919
105
+ oarepo_runtime/services/permissions/__init__.py,sha256=33zqKGgRQmRfNZI8kAhue1bFoT1deYiVVNinP8Bvv0I,123
106
+ oarepo_runtime/services/permissions/generators.py,sha256=fuG0zp940l5AcAQmjGnOcF8vnCPmGUGKHsPYMOpGsYY,3288
107
107
  oarepo_runtime/services/records/__init__.py,sha256=hIoa2fx1AkDr6c-MgY561U2oN9LFeUCtfbVnetpBUOg,78
108
108
  oarepo_runtime/services/records/links.py,sha256=gVe-_hGkLtX7pd6sS6jTbRIhBby2FTn9PXyYPy3yxzs,737
109
109
  oarepo_runtime/services/relations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -115,19 +115,19 @@ oarepo_runtime/services/schema/cf.py,sha256=-m9seIH5VYUdxDsJlPVXS0-8f7xkpN7YfW1q
115
115
  oarepo_runtime/services/schema/i18n.py,sha256=NACu0SqXWuuwKVpBZdz4K8tVfBaCEI9YpcCtC1l1YGI,1669
116
116
  oarepo_runtime/services/schema/i18n_ui.py,sha256=MnEDW0gcZPvEODbJ6XzldxNCJ2suhfmdHQ4wkcAG6zA,2179
117
117
  oarepo_runtime/services/schema/i18n_validation.py,sha256=fyMTi2Rw-KiHv7c7HN61zGxRVa9sAjAEEkAL5wUyKNo,236
118
- oarepo_runtime/services/schema/marshmallow.py,sha256=LmcSxvbZ9jIhkNHCqqxt1SA2UNijoDmIzqli1MkoTrE,1153
118
+ oarepo_runtime/services/schema/marshmallow.py,sha256=iAMMH5MlYs59qetXAHOROvERNScfVqY9TrEIJejHCuw,1421
119
119
  oarepo_runtime/services/schema/marshmallow_to_json_schema.py,sha256=VYLnVWHOoaxWCD_gqJO8-8u1SbaPEFBjDZ5HGgGr0Ow,2027
120
120
  oarepo_runtime/services/schema/oneofschema.py,sha256=GnWH4Or_G5M0NgSmCoqMI6PBrJg5AC9RHrcB5QDKRq0,6661
121
121
  oarepo_runtime/services/schema/polymorphic.py,sha256=bAbUoTIeDBiJPYPhpLEKKZekEdkHlpqkmNxk1hN3PDw,564
122
122
  oarepo_runtime/services/schema/rdm.py,sha256=4gi44LIMWS9kWcZfEoHaJSq585qfZfMuUYM5IvL1nQo,531
123
- oarepo_runtime/services/schema/ui.py,sha256=xQgW-zLyZoHldGw47uVtXQj-5LexVNKTholyq4MiBZo,3777
123
+ oarepo_runtime/services/schema/ui.py,sha256=IojPiCBz08tzzjSTMRtzKbA98ZNlFwZKhOQ-YJLcvXM,5717
124
124
  oarepo_runtime/services/schema/validation.py,sha256=VFOKSxQLHwFb7bW8BJAFXWe_iTAZFOfqOnb2Ko_Yxxc,2085
125
125
  oarepo_runtime/translations/default_translations.py,sha256=060GBlA1ghWxfeumo6NqxCCZDb-6OezOuF6pr-_GEOQ,104
126
- oarepo_runtime/translations/messages.pot,sha256=jyC7mRH5P9uwVVqz9ycvn-T8gcohr62x__O0sC6g2w4,1846
127
- oarepo_runtime/translations/cs/LC_MESSAGES/messages.mo,sha256=cSTRnVoi8DxfrXD-ImHYUmxdnNQMnxIn2yFRTObwRzI,801
128
- oarepo_runtime/translations/cs/LC_MESSAGES/messages.po,sha256=bzO7bZlnifHU0E7khXePmP12lGmzYXudjAWVDb87KrE,1508
129
- oarepo_runtime/translations/en/LC_MESSAGES/messages.mo,sha256=b4cLKr5VojJPSuCeQ9T1lJKYMM_o80IgiNNL-iQUL8E,445
130
- oarepo_runtime/translations/en/LC_MESSAGES/messages.po,sha256=akMJzNcvoZmF9j06Cd_oyQX-tMOfYjG1yRAP7tNDhGA,1370
126
+ oarepo_runtime/translations/messages.pot,sha256=wr1vDKjsngqS9e5zQmSAsF3qUAtpQ41SUXwzEKRCnWw,2406
127
+ oarepo_runtime/translations/cs/LC_MESSAGES/messages.mo,sha256=mhVcQhLPW0QG_l4sYDiaiKc67oEVWVVYlwBxeQyDZdY,1044
128
+ oarepo_runtime/translations/cs/LC_MESSAGES/messages.po,sha256=WZwTlVNrA9Ifr4NFL2c9X9mshltvy6ovRcj29i3kgeM,2067
129
+ oarepo_runtime/translations/en/LC_MESSAGES/messages.mo,sha256=tq5pTCpH7cuzdwrQlpTMjS1jlnoV0dWDlK9mGcKT338,673
130
+ oarepo_runtime/translations/en/LC_MESSAGES/messages.po,sha256=7-5S3iINOSFSI5gVdRvT5S2rbGScrheJiUJQH_fqXmY,1914
131
131
  oarepo_runtime/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
132
132
  oarepo_runtime/utils/functools.py,sha256=gKS9YZtlIYcDvdNA9cmYO00yjiXBYV1jg8VpcRUyQyg,1324
133
133
  oarepo_runtime/utils/path.py,sha256=V1NVyk3m12_YLbj7QHYvUpE1wScO78bYsX1LOLeXDkI,3108
@@ -135,9 +135,9 @@ tests/marshmallow_to_json/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
135
135
  tests/marshmallow_to_json/test_datacite_ui_schema.py,sha256=82iLj8nW45lZOUewpWbLX3mpSkpa9lxo-vK-Qtv_1bU,48552
136
136
  tests/marshmallow_to_json/test_simple_schema.py,sha256=izZN9p0v6kovtSZ6AdxBYmK_c6ZOti2_z_wPT_zXIr0,1500
137
137
  tests/pkg_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
138
- oarepo_runtime-1.5.92.dist-info/LICENSE,sha256=h2uWz0OaB3EN-J1ImdGJZzc7yvfQjvHVYdUhQ-H7ypY,1064
139
- oarepo_runtime-1.5.92.dist-info/METADATA,sha256=bDlBvtRuH1R-r1HPvL9teVUE_Z6a8grlHYKHLc4YaB8,4720
140
- oarepo_runtime-1.5.92.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
141
- oarepo_runtime-1.5.92.dist-info/entry_points.txt,sha256=k7O5LZUOGsVeSpB7ulU0txBUNp1CVQG7Q7TJIVTPbzU,491
142
- oarepo_runtime-1.5.92.dist-info/top_level.txt,sha256=bHhlkT1_RQC4IkfTQCqA3iN4KCB6cSFQlsXpQMSP-bE,21
143
- oarepo_runtime-1.5.92.dist-info/RECORD,,
138
+ oarepo_runtime-1.5.94.dist-info/LICENSE,sha256=h2uWz0OaB3EN-J1ImdGJZzc7yvfQjvHVYdUhQ-H7ypY,1064
139
+ oarepo_runtime-1.5.94.dist-info/METADATA,sha256=3TTLbgQ9tQhZPbpHWa0auG91xxAEDHTxt5itndxPWWQ,4720
140
+ oarepo_runtime-1.5.94.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
141
+ oarepo_runtime-1.5.94.dist-info/entry_points.txt,sha256=k7O5LZUOGsVeSpB7ulU0txBUNp1CVQG7Q7TJIVTPbzU,491
142
+ oarepo_runtime-1.5.94.dist-info/top_level.txt,sha256=bHhlkT1_RQC4IkfTQCqA3iN4KCB6cSFQlsXpQMSP-bE,21
143
+ oarepo_runtime-1.5.94.dist-info/RECORD,,