oarepo-runtime 1.5.26__py3-none-any.whl → 1.5.27__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,42 @@
1
1
  from .polymorphic import PolymorphicSchema
2
2
 
3
- __all__ = ("PolymorphicSchema",)
3
+
4
+ def consistent_resolution(*classes):
5
+ """
6
+ A helper function to solve resolution order of classes.
7
+ If the classes are in a correct mro order, it will return
8
+ them in the same order. Otherwise it will try to reorder
9
+ them and remove those that are already contained in mro
10
+ of others.
11
+ """
12
+
13
+ # remove classes that are already in mro of others
14
+ filtered_classes = []
15
+ for cls in classes:
16
+ for other_cls in classes:
17
+ if cls != other_cls and issubclass(other_cls, cls):
18
+ break
19
+ else:
20
+ if cls not in filtered_classes:
21
+ filtered_classes.append(cls)
22
+
23
+ name = [cls.__name__ for cls in filtered_classes]
24
+ name = "".join(name) + "ConsistentResolution"
25
+ try:
26
+ return type(name, tuple(filtered_classes), {})
27
+ except TypeError:
28
+ pass
29
+
30
+ filtered_classes.sort(key=lambda cls: -len(cls.mro()))
31
+ try:
32
+ return type(name, tuple(filtered_classes), {})
33
+ except TypeError:
34
+ pass
35
+
36
+ bases = ", ".join(cls.__name__ for cls in filtered_classes)
37
+ orig_bases = ", ".join(cls.__name__ for cls in classes)
38
+ raise TypeError(f"Cannot create a consistent method resolution order (MRO) "
39
+ f"for bases {orig_bases}, tried {bases}")
40
+
41
+
42
+ __all__ = ("PolymorphicSchema", "consistent_resolution")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: oarepo-runtime
3
- Version: 1.5.26
3
+ Version: 1.5.27
4
4
  Summary: A set of runtime extensions of Invenio repository
5
5
  Description-Content-Type: text/markdown
6
6
  License-File: LICENSE
@@ -94,7 +94,7 @@ oarepo_runtime/services/relations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeR
94
94
  oarepo_runtime/services/relations/components.py,sha256=3g0VdnGUM-2yYt50fPi-OADReBGJb4h05vmYHfh-QFs,592
95
95
  oarepo_runtime/services/relations/errors.py,sha256=VtlOKq9MEUeJ4IsiZhY7lWoshrusA_RL4SOHe2titno,552
96
96
  oarepo_runtime/services/relations/mapping.py,sha256=D7IYk83SXVgTv-0ohSnHOCzvCwbFLXJsayO1eQfQn0U,1285
97
- oarepo_runtime/services/schema/__init__.py,sha256=XGfNjYk7ha5JhVERuqjl-yDaI1O9dDQItZJEdMzDe4w,77
97
+ oarepo_runtime/services/schema/__init__.py,sha256=gD0II1Lz6fnW1Cgt4gtneZeyKWl_YZ47Wu0gmeKqtH8,1395
98
98
  oarepo_runtime/services/schema/cf.py,sha256=-m9seIH5VYUdxDsJlPVXS0-8f7xkpN7YfW1q9E1GacI,475
99
99
  oarepo_runtime/services/schema/i18n.py,sha256=myyg0tU8up0BmMt9IESKD91w5KC0V9v8Qa-9fF0ptIs,1341
100
100
  oarepo_runtime/services/schema/i18n_ui.py,sha256=18tA6uA067TP_wcit47hTel2M4hz88wYtwBgaeZDrew,1880
@@ -114,9 +114,9 @@ oarepo_runtime/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
114
114
  oarepo_runtime/utils/functools.py,sha256=gKS9YZtlIYcDvdNA9cmYO00yjiXBYV1jg8VpcRUyQyg,1324
115
115
  oarepo_runtime/utils/path.py,sha256=V1NVyk3m12_YLbj7QHYvUpE1wScO78bYsX1LOLeXDkI,3108
116
116
  tests/pkg_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
117
- oarepo_runtime-1.5.26.dist-info/LICENSE,sha256=h2uWz0OaB3EN-J1ImdGJZzc7yvfQjvHVYdUhQ-H7ypY,1064
118
- oarepo_runtime-1.5.26.dist-info/METADATA,sha256=P2aE9x8lip8a2G-51JG4-6fCo7sHsXIxsTQKcDBvqIA,4680
119
- oarepo_runtime-1.5.26.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
120
- oarepo_runtime-1.5.26.dist-info/entry_points.txt,sha256=QrlXAKuPDVBinaSh_v3yO9_Nb9ZNmJCJ0VFcCW-z0Jg,327
121
- oarepo_runtime-1.5.26.dist-info/top_level.txt,sha256=bHhlkT1_RQC4IkfTQCqA3iN4KCB6cSFQlsXpQMSP-bE,21
122
- oarepo_runtime-1.5.26.dist-info/RECORD,,
117
+ oarepo_runtime-1.5.27.dist-info/LICENSE,sha256=h2uWz0OaB3EN-J1ImdGJZzc7yvfQjvHVYdUhQ-H7ypY,1064
118
+ oarepo_runtime-1.5.27.dist-info/METADATA,sha256=eoNvUBPIChZDm5WvR3uWxNa8dnww3jjZqEHLOsZ11go,4680
119
+ oarepo_runtime-1.5.27.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
120
+ oarepo_runtime-1.5.27.dist-info/entry_points.txt,sha256=QrlXAKuPDVBinaSh_v3yO9_Nb9ZNmJCJ0VFcCW-z0Jg,327
121
+ oarepo_runtime-1.5.27.dist-info/top_level.txt,sha256=bHhlkT1_RQC4IkfTQCqA3iN4KCB6cSFQlsXpQMSP-bE,21
122
+ oarepo_runtime-1.5.27.dist-info/RECORD,,